[CMAKE] Use modules instead of shared libraries
[reactos.git] / 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 CActiveDesktop.cpp
29 CActiveDesktop.h
30 CIDLDataObj.cpp
31 CQueryAssociations.cpp
32 debughlp.cpp
33 dialogs/dialogs.cpp
34 dialogs/drive.cpp
35 dialogs/drvdefext.cpp
36 dialogs/filedefext.cpp
37 dialogs/filetypes.cpp
38 dialogs/folder_options.cpp
39 dialogs/fprop.cpp
40 dialogs/general.cpp
41 dialogs/recycler_prop.cpp
42 dialogs/view.cpp
43 CDropTargetHelper.cpp
44 CEnumIDListBase.cpp
45 CExtractIcon.cpp
46 folders.cpp
47 iconcache.cpp
48 shell32.cpp
49 CShellItem.cpp
50 CShellLink.cpp
51 CFolderOptions.cpp
52 folders/CDesktopFolder.cpp
53 folders/CFSFolder.cpp
54 folders/CDrivesFolder.cpp
55 folders/CMyDocsFolder.cpp
56 folders/CPrinterFolder.cpp
57 folders/CAdminToolsFolder.cpp
58 folders/CNetFolder.cpp
59 folders/CFontsFolder.cpp
60 folders/CControlPanelFolder.cpp
61 folders/CRecycleBin.cpp
62 folders/CRegFolder.cpp
63 droptargets/CexeDropHandler.cpp
64 droptargets/CFSDropTarget.cpp
65 droptargets/CRecyclerDropTarget.cpp
66 shlexec.cpp
67 shlfileop.cpp
68 shlfolder.cpp
69 CFileSysBindData.cpp
70 CDefView.cpp
71 CDefViewDual.cpp
72 CDefViewBckgrndMenu.cpp
73 stubs.cpp
74 systray.cpp
75 CUserNotification.cpp
76 CDefaultContextMenu.cpp
77 COpenWithMenu.cpp
78 CNewMenu.cpp
79 CShellDispatch.cpp
80 CFolder.cpp
81 CFolderItems.cpp
82 CFolderItemVerbs.cpp
83 precomp.h)
84
85 file(GLOB_RECURSE shell32_rc_deps res/*.*)
86 list(APPEND shell32_rc_deps ${CMAKE_CURRENT_BINARY_DIR}/shell32_shldisp.tlb)
87 add_rc_deps(shell32.rc ${shell32_rc_deps})
88
89 add_library(shell32 MODULE
90 ${SOURCE}
91 wine/brsfolder.c
92 wine/changenotify.c
93 wine/classes.c
94 wine/clipboard.c
95 wine/control.c
96 wine/pidl.c
97 wine/shell32_main.c
98 wine/shellole.c
99 wine/shellord.c
100 wine/shellpath.c
101 wine/shellreg.c
102 wine/shellstring.c
103 wine/shlmenu.c
104 wine/shpolicy.c
105 vista.c
106 shell32.rc
107 ${CMAKE_CURRENT_BINARY_DIR}/shell32_stubs.c
108 ${CMAKE_CURRENT_BINARY_DIR}/shell32.def)
109
110
111 add_typelib(shell32_shldisp.idl)
112 set_source_files_properties(shell32.rc PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/shell32_shldisp.tlb)
113
114 set_module_type(shell32 win32dll UNICODE)
115 target_link_libraries(shell32 shellmenu shelldesktop atlnew wine uuid recyclebin)
116 add_delay_importlibs(shell32 powrprof shdocvw devmgr winspool.drv winmm mpr uxtheme ole32 oleaut32 userenv browseui version fmifs)
117 add_importlibs(shell32 advapi32 gdi32 user32 comctl32 comdlg32 shlwapi msvcrt kernel32 ntdll)
118 add_dependencies(shell32 stdole2) # shell32_shldisp.tlb needs stdole2.tlb
119 add_pch(shell32 precomp.h SOURCE)
120 add_cd_file(TARGET shell32 DESTINATION reactos/system32 FOR all)