- Improved MSVC toolchain support, now working with WDK, as well
(Thanks to Amine for solving the problems)
- Add compiler specific macro set_subsystem
- add nativecui module type

svn path=/branches/cmake-bringup/; revision=48824
This commit is contained in:
Timo Kreuzer 2010-09-19 23:03:25 +00:00
parent 0ba3fa7266
commit aeead4620b
3 changed files with 46 additions and 3 deletions

View file

@ -37,6 +37,10 @@ macro(set_entrypoint MODULE ENTRYPOINT)
set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "-Wl,-entry,_${ENTRYPOINT}")
endmacro()
macro(set_subsystem MODULE SUBSYSTEM)
set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "-Wl,--subsystem:${SUBSYSTEM}")
endmacro()
macro(add_importlibs MODULE)
FOREACH(LIB ${ARGN})
target_link_libraries(${MODULE} ${LIB}.a)
@ -45,7 +49,12 @@ endmacro()
macro(set_module_type MODULE TYPE)
target_link_libraries(${MODULE} mingw_wmain mingw_common)
if(${TYPE} MATCHES nativecui)
set_subsystem(${MODULE} native)
set_entrypoint(${MODULE} NtProcessStartup@4)
endif()
if(${TYPE} MATCHES win32gui)
set_subsystem(${MODULE} windows)
set_entrypoint(${MODULE} wWinMainCRTStartup)
endif()
endmacro()

View file

@ -18,6 +18,10 @@ macro(set_entrypoint MODULE ENTRYPOINT)
set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "/ENTRY:${ENTRYPOINT}")
endmacro()
macro(set_subsystem MODULE SUBSYSTEM)
set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "/subsystem:${SUBSYSTEM}")
endmacro()
macro(add_importlibs MODULE)
FOREACH(LIB ${ARGN})
target_link_libraries(${MODULE} ${LIB}.LIB)
@ -25,9 +29,17 @@ macro(add_importlibs MODULE)
endmacro()
macro(set_module_type MODULE TYPE)
if(${TYPE} MATCHES nativecui)
set_subsystem(${MODULE} native)
add_importlibs(${MODULE} ntdll)
endif()
if (${TYPE} MATCHES win32gui)
set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "/subsystem:windows")
set_subsystem(${MODULE} windows)
endif ()
endmacro()
endif()
set(CMAKE_C_FLAGS_DEBUG_INIT "/D_DEBUG /MDd /Zi /Ob0 /Od")
SET(CMAKE_CXX_FLAGS_DEBUG_INIT "/D_DEBUG /MDd /Zi /Ob0 /Od")

View file

@ -1,7 +1,24 @@
if(NOT ARCH)
set(ARCH i386)
endif(NOT ARCH)
set(ARCH i386)
endif()
# WDK support
string(REPLACE * ${ARCH} ATL_LIB_PATH $ENV{ATL_LIB_PATH})
string(REPLACE * ${ARCH} CRT_LIB_PATH $ENV{CRT_LIB_PATH})
string(REPLACE * ${ARCH} DDK_LIB_PATH $ENV{DDK_LIB_PATH})
string(REPLACE * ${ARCH} KMDF_LIB_PATH $ENV{KMDF_LIB_PATH})
string(REPLACE * ${ARCH} MFC_LIB_PATH $ENV{MFC_LIB_PATH})
string(REPLACE * ${ARCH} SDK_LIB_PATH $ENV{SDK_LIB_PATH})
link_directories(
#${ATL_LIB_PATH}
${CRT_LIB_PATH}
${DDK_LIB_PATH}
# ${IFSKIT_LIB_PATH}
# ${KMDF_LIB_PATH}
# ${MFC_LIB_PATH}
${SDK_LIB_PATH})
# the name of the target operating system
set(CMAKE_SYSTEM_NAME Windows)
@ -16,7 +33,12 @@ SET(CMAKE_ASM_COMPILER ml)
SET(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <DEFINES> /I${REACTOS_SOURCE_DIR}/include/psdk /I${REACTOS_BINARY_DIR}/include/psdk /I${REACTOS_SOURCE_DIR}/include/ /I${REACTOS_SOURCE_DIR}/include/reactos /I${REACTOS_BINARY_DIR}/include/reactos /I${REACTOS_SOURCE_DIR}/include/reactos/wine /I${REACTOS_SOURCE_DIR}/include/crt /I${REACTOS_SOURCE_DIR}/include/crt/mingw32 /fo <OBJECT> <SOURCE>")
set(CMAKE_C_FLAGS_INIT "/DWIN32 /D_WINDOWS /W1 /Zm1000")
set(CMAKE_C_FLAGS_DEBUG_INIT "/D_DEBUG /MDd /Zi /Ob0 /Od")
SET(CMAKE_CXX_FLAGS_DEBUG_INIT "/D_DEBUG /MDd /Zi /Ob0 /Od")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
# Prevent from using run time checking when testing the compiler
set(CMAKE_BUILD_TYPE "RelwithDebInfo" CACHE STRING "Build Type")