xref: /reactos/dll/win32/shell32/CMakeLists.txt (revision 407c54ba)
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
15remove_definitions(-D_WIN32_WINNT=0x502)
16add_definitions(-D_WIN32_WINNT=0x600)
17
18add_definitions(
19    -D_SHELL32_
20    -D_WINE
21    -D_ATL_NO_EXCEPTIONS)
22
23include_directories(
24    ${REACTOS_SOURCE_DIR}/sdk/lib/atl
25    ${REACTOS_SOURCE_DIR})
26
27list(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    droptargets/CRecyclerDropTarget.cpp
61    shlexec.cpp
62    shlfileop.cpp
63    shlfolder.cpp
64    CFileSysBindData.cpp
65    CDefView.cpp
66    CDefViewDual.cpp
67    CDefViewBckgrndMenu.cpp
68    stubs.cpp
69    systray.cpp
70    CUserNotification.cpp
71    CDefaultContextMenu.cpp
72    COpenWithMenu.cpp
73    CNewMenu.cpp
74    CShellDispatch.cpp
75    CFolder.cpp
76    CFolderItems.cpp
77    CFolderItemVerbs.cpp
78    precomp.h)
79
80file(GLOB_RECURSE shell32_rc_deps res/*.*)
81list(APPEND shell32_rc_deps ${CMAKE_CURRENT_BINARY_DIR}/shell32_shldisp.tlb)
82add_rc_deps(shell32.rc ${shell32_rc_deps})
83
84add_library(shell32 SHARED
85    ${SOURCE}
86    wine/brsfolder.c
87    wine/changenotify.c
88    wine/classes.c
89    wine/clipboard.c
90    wine/control.c
91    wine/pidl.c
92    wine/shell32_main.c
93    wine/shellole.c
94    wine/shellord.c
95    wine/shellpath.c
96    wine/shellreg.c
97    wine/shellstring.c
98    wine/shlmenu.c
99    wine/shpolicy.c
100    vista.c
101    shell32.rc
102    ${CMAKE_CURRENT_BINARY_DIR}/shell32_stubs.c
103    ${CMAKE_CURRENT_BINARY_DIR}/shell32.def)
104
105
106add_typelib(shell32_shldisp.idl)
107set_source_files_properties(shell32.rc PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/shell32_shldisp.tlb)
108
109set_module_type(shell32 win32dll UNICODE)
110target_link_libraries(shell32 shellmenu shelldesktop atlnew wine uuid recyclebin)
111add_delay_importlibs(shell32 powrprof shdocvw devmgr winspool.drv winmm mpr uxtheme ole32 oleaut32 userenv browseui version fmifs)
112add_importlibs(shell32 advapi32 gdi32 user32 comctl32 comdlg32 shlwapi msvcrt kernel32 ntdll)
113add_dependencies(shell32 stdole2) # shell32_shldisp.tlb needs stdole2.tlb
114add_pch(shell32 precomp.h SOURCE)
115add_cd_file(TARGET shell32 DESTINATION reactos/system32 FOR all)
116