diff --git a/gcc.cmake b/gcc.cmake index 4c3ec594a48..267ec93e769 100644 --- a/gcc.cmake +++ b/gcc.cmake @@ -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() diff --git a/msc.cmake b/msc.cmake index f89f181d72a..f1941d774cf 100644 --- a/msc.cmake +++ b/msc.cmake @@ -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") + diff --git a/toolchain-msvc.cmake b/toolchain-msvc.cmake index 2a12282d562..a86624793ce 100644 --- a/toolchain-msvc.cmake +++ b/toolchain-msvc.cmake @@ -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 " /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 ") 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")