[ATL][SHELL32] Add basic support for _ATL_NO_EXCEPTIONS in CString, use it in shell32...
[reactos.git] / reactos / dll / win32 / shell32 / CMakeLists.txt
1 PROJECT(SHELL)
2
3 add_subdirectory(shelldesktop)
4 add_subdirectory(shellmenu)
5 add_subdirectory(shellrecyclebin)
6
7 set_cpp(WITH_RUNTIME)
8 spec2def(shell32.dll shell32.spec ADD_IMPORTLIB)
9
10 if(NOT MSVC)
11 # HACK: this should be enabled globally!
12 add_compile_flags_language("-std=c++11" "CXX")
13 endif()
14
15 remove_definitions(-D_WIN32_WINNT=0x502)
16 add_definitions(-D_WIN32_WINNT=0x600)
17
18 add_definitions(
19 -D_SHELL32_
20 -D_WINE
21 -D_ATL_NO_EXCEPTIONS)
22
23 include_directories(
24 ${REACTOS_SOURCE_DIR}/sdk/lib/atl
25 ${REACTOS_SOURCE_DIR})
26
27 list(APPEND SOURCE
28 CIDLDataObj.cpp
29 CQueryAssociations.cpp
30 debughlp.cpp
31 dialogs/dialogs.cpp
32 dialogs/drive.cpp
33 dialogs/drvdefext.cpp
34 dialogs/folder_options.cpp
35 dialogs/filedefext.cpp
36 dialogs/fprop.cpp
37 dialogs/recycler_prop.cpp
38 CDropTargetHelper.cpp
39 CEnumIDListBase.cpp
40 CExtractIcon.cpp
41 folders.cpp
42 iconcache.cpp
43 shell32.cpp
44 CShellItem.cpp
45 CShellLink.cpp
46 CFolderOptions.cpp
47 folders/CDesktopFolder.cpp
48 folders/CFSFolder.cpp
49 folders/CDrivesFolder.cpp
50 folders/CMyDocsFolder.cpp
51 folders/CPrinterFolder.cpp
52 folders/CAdminToolsFolder.cpp
53 folders/CNetFolder.cpp
54 folders/CFontsFolder.cpp
55 folders/CControlPanelFolder.cpp
56 folders/CRecycleBin.cpp
57 folders/CRegFolder.cpp
58 droptargets/CexeDropHandler.cpp
59 droptargets/CFSDropTarget.cpp
60 shlexec.cpp
61 shlfileop.cpp
62 shlfolder.cpp
63 CFileSysBindData.cpp
64 CDefView.cpp
65 CDefViewDual.cpp
66 stubs.cpp
67 systray.cpp
68 CDefaultContextMenu.cpp
69 COpenWithMenu.cpp
70 CNewMenu.cpp
71 CShellDispatch.cpp
72 CFolder.cpp
73 CFolderItems.cpp
74 CFolderItemVerbs.cpp
75 precomp.h)
76
77 file(GLOB_RECURSE shell32_rc_deps res/*.*)
78 list(APPEND shell32_rc_deps ${CMAKE_CURRENT_BINARY_DIR}/shell32_shldisp.tlb)
79 add_rc_deps(shell32.rc ${shell32_rc_deps})
80
81 add_library(shell32 SHARED
82 ${SOURCE}
83 wine/brsfolder.c
84 wine/changenotify.c
85 wine/classes.c
86 wine/clipboard.c
87 wine/control.c
88 wine/pidl.c
89 wine/shell32_main.c
90 wine/shellole.c
91 wine/shellord.c
92 wine/shellpath.c
93 wine/shellreg.c
94 wine/shellstring.c
95 wine/shlmenu.c
96 wine/shpolicy.c
97 vista.c
98 shell32.rc
99 ${CMAKE_CURRENT_BINARY_DIR}/shell32_stubs.c
100 ${CMAKE_CURRENT_BINARY_DIR}/shell32.def)
101
102
103 add_typelib(shell32_shldisp.idl)
104 set_source_files_properties(shell32.rc PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/shell32_shldisp.tlb)
105
106 set_module_type(shell32 win32dll UNICODE)
107 target_link_libraries(shell32 shellmenu shelldesktop atlnew wine uuid recyclebin)
108 add_delay_importlibs(shell32 uxtheme ole32 oleaut32 userenv version fmifs)
109 add_importlibs(shell32 advapi32 browseui gdi32 user32 powrprof comctl32 comdlg32 shdocvw shlwapi devmgr winspool winmm mpr msvcrt kernel32 ntdll)
110 add_dependencies(shell32 stdole2) # shell32_shldisp.tlb needs stdole2.tlb
111 add_pch(shell32 precomp.h SOURCE)
112 add_cd_file(TARGET shell32 DESTINATION reactos/system32 FOR all)