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