X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=msc.cmake;h=06619f3497720e7bb42f1204b5c9a5b6df71e29c;hp=a256263af5e8496b771aa6a91a35bc17495d01bd;hb=26718d757ee78b38e51f0036c07d20348d4c5164;hpb=822496fa61037730f5e6520a02e33a59a84c51d1 diff --git a/msc.cmake b/msc.cmake index a256263af5e..06619f34977 100644 --- a/msc.cmake +++ b/msc.cmake @@ -23,6 +23,18 @@ link_directories("${REACTOS_BINARY_DIR}/importlibs" ${REACTOS_BINARY_DIR}/lib/3r set(CMAKE_RC_CREATE_SHARED_LIBRARY " -o ") +MACRO(add_pch _target_name _header_filename _src_list) + get_filename_component(FILE ${_header_filename} NAME) + set(_gch_filename "${_target_name}_${FILE}.gch") + list(APPEND ${_src_list} ${_gch_filename}) + _PCH_GET_COMPILE_FLAGS(${_target_name} _args ${_header_filename}) + file(REMOVE ${_gch_filename}) + add_custom_command( + OUTPUT ${_gch_filename} + COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_ARG1} ${_args} + DEPENDS ${_header_filename}) +ENDMACRO(add_pch _target_name _header_filename _src_list) + macro(add_linkerflag MODULE _flag) set(NEW_LINKER_FLAGS ${_flag}) get_target_property(LINKER_FLAGS ${MODULE} LINK_FLAGS) @@ -52,17 +64,27 @@ macro(set_module_type MODULE TYPE) add_dependencies(${MODULE} psdk buildno_header) if(${TYPE} MATCHES nativecui) set_subsystem(${MODULE} native) - add_importlibs(${MODULE} ntdll) + set_entrypoint(${MODULE} NtProcessStartup@4) endif() if (${TYPE} MATCHES win32gui) set_subsystem(${MODULE} windows) set_entrypoint(${MODULE} WinMainCRTStartup) - target_link_libraries(${MODULE} mingw_common mingw_wmain) + if(IS_UNICODE) + target_link_libraries(${MODULE} mingw_wmain) + else() + target_link_libraries(${MODULE} mingw_main) + endif() + target_link_libraries(${MODULE} mingw_common) endif () if (${TYPE} MATCHES win32cui) set_subsystem(${MODULE} console) set_entrypoint(${MODULE} mainCRTStartup) - target_link_libraries(${MODULE} mingw_common mingw_wmain) + if(IS_UNICODE) + target_link_libraries(${MODULE} mingw_wmain) + else() + target_link_libraries(${MODULE} mingw_main) + endif() + target_link_libraries(${MODULE} mingw_common) endif () if(${TYPE} MATCHES win32dll) # Need this only because mingw library is broken @@ -74,6 +96,14 @@ macro(set_module_type MODULE TYPE) endif() target_link_libraries(${MODULE} mingw_common mingw_dllmain) add_linkerflag(${MODULE} "/DLL") + endif() + if(${TYPE} MATCHES win32ocx) + set_entrypoint(${MODULE} DllMain@12) + set_target_properties(${MODULE} PROPERTIES SUFFIX ".ocx") + endif() + if(${TYPE} MATCHES cpl) + set_entrypoint(${MODULE} DllMain@12) + set_target_properties(${MODULE} PROPERTIES SUFFIX ".cpl") endif() if(${TYPE} MATCHES kernelmodedriver) set_target_properties(${MODULE} PROPERTIES SUFFIX ".sys") @@ -86,7 +116,8 @@ macro(set_module_type MODULE TYPE) endmacro() macro(set_unicode) - add_definitions(-DUNICODE -D_UNICODE) + add_definitions(-DUNICODE -D_UNICODE) + set(IS_UNICODE 1) endmacro() set(CMAKE_C_FLAGS_DEBUG_INIT "/D_DEBUG /MDd /Zi /Ob0 /Od")