reactos/dll/win32/shell32/CMakeLists.txt
Jérôme Gardou 23373acbb9 [CMAKE] Use modules instead of shared libraries
There is no need to compile our DLLs as shared libraries since we are
managing symbols exports and imports through spec files.

On my system, this reduces the configure-time by a factor of two.
2019-04-06 17:43:38 +02:00

121 lines
3.1 KiB
CMake

PROJECT(SHELL)
add_subdirectory(shelldesktop)
add_subdirectory(shellmenu)
add_subdirectory(shellrecyclebin)
set_cpp(WITH_RUNTIME)
spec2def(shell32.dll shell32.spec ADD_IMPORTLIB)
if(NOT MSVC)
# HACK: this should be enabled globally!
add_compile_flags_language("-std=c++11" "CXX")
endif()
remove_definitions(-D_WIN32_WINNT=0x502)
add_definitions(-D_WIN32_WINNT=0x600)
add_definitions(
-D_SHELL32_
-D_WINE
-D_ATL_NO_EXCEPTIONS)
include_directories(
${REACTOS_SOURCE_DIR}/sdk/lib/atl
${REACTOS_SOURCE_DIR})
list(APPEND SOURCE
CActiveDesktop.cpp
CActiveDesktop.h
CIDLDataObj.cpp
CQueryAssociations.cpp
debughlp.cpp
dialogs/dialogs.cpp
dialogs/drive.cpp
dialogs/drvdefext.cpp
dialogs/filedefext.cpp
dialogs/filetypes.cpp
dialogs/folder_options.cpp
dialogs/fprop.cpp
dialogs/general.cpp
dialogs/recycler_prop.cpp
dialogs/view.cpp
CDropTargetHelper.cpp
CEnumIDListBase.cpp
CExtractIcon.cpp
folders.cpp
iconcache.cpp
shell32.cpp
CShellItem.cpp
CShellLink.cpp
CFolderOptions.cpp
folders/CDesktopFolder.cpp
folders/CFSFolder.cpp
folders/CDrivesFolder.cpp
folders/CMyDocsFolder.cpp
folders/CPrinterFolder.cpp
folders/CAdminToolsFolder.cpp
folders/CNetFolder.cpp
folders/CFontsFolder.cpp
folders/CControlPanelFolder.cpp
folders/CRecycleBin.cpp
folders/CRegFolder.cpp
droptargets/CexeDropHandler.cpp
droptargets/CFSDropTarget.cpp
droptargets/CRecyclerDropTarget.cpp
shlexec.cpp
shlfileop.cpp
shlfolder.cpp
CFileSysBindData.cpp
CDefView.cpp
CDefViewDual.cpp
CDefViewBckgrndMenu.cpp
stubs.cpp
systray.cpp
CUserNotification.cpp
CDefaultContextMenu.cpp
COpenWithMenu.cpp
CNewMenu.cpp
CShellDispatch.cpp
CFolder.cpp
CFolderItems.cpp
CFolderItemVerbs.cpp
precomp.h)
file(GLOB_RECURSE shell32_rc_deps res/*.*)
list(APPEND shell32_rc_deps ${CMAKE_CURRENT_BINARY_DIR}/shell32_shldisp.tlb)
add_rc_deps(shell32.rc ${shell32_rc_deps})
add_library(shell32 MODULE
${SOURCE}
wine/brsfolder.c
wine/changenotify.c
wine/classes.c
wine/clipboard.c
wine/control.c
wine/pidl.c
wine/shell32_main.c
wine/shellole.c
wine/shellord.c
wine/shellpath.c
wine/shellreg.c
wine/shellstring.c
wine/shlmenu.c
wine/shpolicy.c
vista.c
shell32.rc
${CMAKE_CURRENT_BINARY_DIR}/shell32_stubs.c
${CMAKE_CURRENT_BINARY_DIR}/shell32.def)
add_typelib(shell32_shldisp.idl)
set_source_files_properties(shell32.rc PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/shell32_shldisp.tlb)
set_module_type(shell32 win32dll UNICODE)
target_link_libraries(shell32 shellmenu shelldesktop atlnew wine uuid recyclebin)
add_delay_importlibs(shell32 powrprof shdocvw devmgr winspool.drv winmm mpr uxtheme ole32 oleaut32 userenv browseui version fmifs)
add_importlibs(shell32 advapi32 gdi32 user32 comctl32 comdlg32 shlwapi msvcrt kernel32 ntdll)
add_dependencies(shell32 stdole2) # shell32_shldisp.tlb needs stdole2.tlb
add_pch(shell32 precomp.h SOURCE)
add_cd_file(TARGET shell32 DESTINATION reactos/system32 FOR all)