From: Timo Kreuzer Date: Mon, 14 Feb 2011 11:09:48 +0000 (+0000) Subject: [CMAKE] X-Git-Tag: backups/GSoC_2011/GSoC_Themes@51550~102 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=58541489dba38a84051178680438b0aaf255a3a7 [CMAKE] - Drop support for MSVC versions below 1300 - use the same flags for WDK / host as normal - Disable optimization on Debug builds, its incompatible with /ZI svn path=/branches/cmake-bringup/; revision=50689 --- diff --git a/cmake/Platform/Windows-cl.cmake b/cmake/Platform/Windows-cl.cmake index a14ee48ed12..6d1cbd29442 100644 --- a/cmake/Platform/Windows-cl.cmake +++ b/cmake/Platform/Windows-cl.cmake @@ -19,44 +19,43 @@ IF($ENV{DDKBUILDENV} MATCHES "fre") SET(CMAKE_USE_WDK_ENV 1) ENDIF() -IF(CMAKE_USE_WDK_ENV) +if(CMAKE_USE_WDK_ENV) - # Detect output architecture - IF(NOT ARCH) - IF($ENV{AMD64} MATCHES 1) - SET(ARCH amd64) - ELSE() - SET(ARCH i386) - ENDIF() - ENDIF() - - # Add library directories - 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}) - - # Add environment variables - IF(NOT CMAKE_CROSSCOMPILING) - SET(ENV{INCLUDE} "$ENV{CRT_INC_PATH};$ENV{SDK_INC_PATH};$ENV{SDK_INC_PATH}\\crt\\stl60") - include_directories($ENV{INCLUDE}) - SET(ENV{LIBPATH} "${CRT_LIB_PATH};${SDK_LIB_PATH}") + # Detect output architecture + if(NOT ARCH) + if($ENV{AMD64} MATCHES 1) + set(ARCH amd64) + set(MSVC_C_ARCHITECTURE_ID 64) + else() + set(ARCH i386) + endif() + endif() - SET(ENV{USE_MSVCRT} 1) - SET(ENV{USE_STL} 1) - SET(ENV{STL_VER} 60) + # Add library directories + 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}) - ENDIF() -ENDIF() + # Add environment variables + if(NOT CMAKE_CROSSCOMPILING) + set(ENV{INCLUDE} "$ENV{CRT_INC_PATH};$ENV{SDK_INC_PATH};$ENV{SDK_INC_PATH}\\crt\\stl60") + include_directories($ENV{INCLUDE}) + set(ENV{LIBPATH} "${CRT_LIB_PATH};${SDK_LIB_PATH}") + set(ENV{USE_MSVCRT} 1) + set(ENV{USE_STL} 1) + set(ENV{STL_VER} 60) + endif() +endif() ############ @@ -193,68 +192,34 @@ IF("${MSVC_VERSION}" GREATER 1599) SET(MSVC_INCREMENTAL_DEFAULT ON) ENDIF() -# default to Debug builds -if(MSVC_VERSION GREATER 1310) - # for 2005 make sure the manifest is put in the dll with mt -# SET(CMAKE_CXX_CREATE_SHARED_LIBRARY " -E vs_link_dll ${CMAKE_CXX_CREATE_SHARED_LIBRARY}") -# SET(CMAKE_CXX_CREATE_SHARED_MODULE " -E vs_link_dll ${CMAKE_CXX_CREATE_SHARED_MODULE}") - # create a C shared library -# SET(CMAKE_C_CREATE_SHARED_LIBRARY "${CMAKE_CXX_CREATE_SHARED_LIBRARY}") - # create a C shared module just copy the shared library rule -# SET(CMAKE_C_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_MODULE}") -# SET(CMAKE_CXX_LINK_EXECUTABLE " -E vs_link_exe ${CMAKE_CXX_LINK_EXECUTABLE}") -# SET(CMAKE_C_LINK_EXECUTABLE " -E vs_link_exe ${CMAKE_C_LINK_EXECUTABLE}") - - set(CMAKE_BUILD_TYPE_INIT Debug) - - if(ENV{DDKBUILDENV} OR NOT CMAKE_CROSSCOMPILING) - set(CMAKE_CXX_FLAGS_DEBUG_INIT "/D_DEBUG /MTd /ZI /Ob0 /Od") - set(CMAKE_C_FLAGS_DEBUG_INIT "/D_DEBUG /ZI /Ob0 /Od") - else() - set(CMAKE_CXX_FLAGS_DEBUG_INIT "/D_DEBUG /ZI /Ob0 /Od") - set(CMAKE_C_FLAGS_DEBUG_INIT "/D_DEBUG /ZI /Ob0 /Od") - endif() +# No support for old versions +if(MSVC_VERSION LESS 1310) +message(FATAL_ERROR "Your compiler is too old. Get a newer version!") +endif() - SET (CMAKE_CXX_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000 /EHsc") - SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "/O1 /Ob1 /D NDEBUG") - SET (CMAKE_CXX_FLAGS_RELEASE_INIT "/O2 /Ob2 /D NDEBUG") - SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "/Zi /O2 /Ob1") - SET (CMAKE_C_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000") - SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "/O1 /Ob1 /D NDEBUG") - SET (CMAKE_C_FLAGS_RELEASE_INIT "/O2 /Ob2 /D NDEBUG") - SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/Zi /O2 /Ob1") - SET (CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib ") - SET (CMAKE_EXE_LINKER_FLAGS_INIT "${CMAKE_EXE_LINKER_FLAGS_INIT}") -ELSE(MSVC_VERSION GREATER 1310) - IF(CMAKE_USING_VC_FREE_TOOLS) - MESSAGE(STATUS "Using FREE VC TOOLS, NO DEBUG available") - SET(CMAKE_BUILD_TYPE_INIT Release) - SET (CMAKE_CXX_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000 /GX") - SET (CMAKE_CXX_FLAGS_DEBUG_INIT "/D_DEBUG /MTd /Zi /Ob0 /Od /GZ") - SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "/MT /O1 /Ob1 /D NDEBUG") - SET (CMAKE_CXX_FLAGS_RELEASE_INIT "/MT /O2 /Ob2 /D NDEBUG") - SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "/MT /Zi /O2 /Ob1 /D NDEBUG") - SET (CMAKE_C_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000") - SET (CMAKE_C_FLAGS_DEBUG_INIT "/D_DEBUG /MTd /Zi /Ob0 /Od /GZ") - SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "/MT /O1 /Ob1 /D NDEBUG") - SET (CMAKE_C_FLAGS_RELEASE_INIT "/MT /O2 /Ob2 /D NDEBUG") - SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/MT /Zi /O2 /Ob1 /D NDEBUG") - ELSE(CMAKE_USING_VC_FREE_TOOLS) - SET(CMAKE_BUILD_TYPE_INIT Debug) - SET (CMAKE_CXX_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000 /GX") - SET (CMAKE_CXX_FLAGS_DEBUG_INIT "/D_DEBUG /MTd /Zi /Ob0 /Od /GZ") - SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "/O1 /Ob1 /D NDEBUG") - SET (CMAKE_CXX_FLAGS_RELEASE_INIT "/O2 /Ob2 /D NDEBUG") - SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "/Zi /O2 /Ob1 /D NDEBUG") - SET (CMAKE_C_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000") - SET (CMAKE_C_FLAGS_DEBUG_INIT "/D_DEBUG /Zi /Ob0 /Od /GZ") - SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "/O1 /Ob1 /D NDEBUG") - SET (CMAKE_C_FLAGS_RELEASE_INIT "/O2 /Ob2 /D NDEBUG") - SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/Zi /O2 /Ob1 /D NDEBUG") - ENDIF(CMAKE_USING_VC_FREE_TOOLS) - SET (CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib") -ENDIF(MSVC_VERSION GREATER 1310) +# for 2005 make sure the manifest is put in the dll with mt +#SET(CMAKE_CXX_CREATE_SHARED_LIBRARY " -E vs_link_dll ${CMAKE_CXX_CREATE_SHARED_LIBRARY}") +#SET(CMAKE_CXX_CREATE_SHARED_MODULE " -E vs_link_dll ${CMAKE_CXX_CREATE_SHARED_MODULE}") +# create a C shared library +#SET(CMAKE_C_CREATE_SHARED_LIBRARY "${CMAKE_CXX_CREATE_SHARED_LIBRARY}") +# create a C shared module just copy the shared library rule +#SET(CMAKE_C_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_MODULE}") +#SET(CMAKE_CXX_LINK_EXECUTABLE " -E vs_link_exe ${CMAKE_CXX_LINK_EXECUTABLE}") +#SET(CMAKE_C_LINK_EXECUTABLE " -E vs_link_exe ${CMAKE_C_LINK_EXECUTABLE}") +SET(CMAKE_BUILD_TYPE_INIT Debug) +SET(CMAKE_CXX_FLAGS_DEBUG_INIT "/D_DEBUG /ZI /Ob0 /Od") +SET(CMAKE_C_FLAGS_DEBUG_INIT "/D_DEBUG /ZI /Ob0 /Od") +SET(CMAKE_CXX_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000 /EHsc") +SET(CMAKE_CXX_FLAGS_MINSIZEREL_INIT "/O1 /Ob1 /D NDEBUG") +SET(CMAKE_CXX_FLAGS_RELEASE_INIT "/O2 /Ob2 /D NDEBUG") +SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "/Zi /O2 /Ob1") +SET(CMAKE_C_FLAGS_INIT "/DWIN32 /D_WINDOWS /W3 /Zm1000") +SET(CMAKE_C_FLAGS_MINSIZEREL_INIT "/O1 /Ob1 /D NDEBUG") +SET(CMAKE_C_FLAGS_RELEASE_INIT "/O2 /Ob2 /D NDEBUG") +SET(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "/Zi /O2 /Ob1") +SET(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib ") +SET(CMAKE_EXE_LINKER_FLAGS_INIT "${CMAKE_EXE_LINKER_FLAGS_INIT}") SET(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}") # executable linker flags diff --git a/msc.cmake b/msc.cmake index b0c37502722..558fdf78fc4 100644 --- a/msc.cmake +++ b/msc.cmake @@ -1,6 +1,7 @@ -if(0) # Fixme redefinition warning -if(OPTIMIZE STREQUAL "1") +if(${CMAKE_BUILD_TYPE} MATCHES Debug) + # no optimitation +elseif(OPTIMIZE STREQUAL "1") add_definitions(/O1) elseif(OPTIMIZE STREQUAL "2") add_definitions(/O2) @@ -11,7 +12,6 @@ elseif(OPTIMIZE STREQUAL "4") elseif(OPTIMIZE STREQUAL "5") add_definitions(/GF /Gy /Ob2 /Os /Ox /GS-) endif() -endif() add_definitions(/X /GR- /GS- /Zl) add_definitions(-Dinline=__inline -D__STDC__=1) diff --git a/toolchain-msvc.cmake b/toolchain-msvc.cmake index 6687fba71ba..506fda90155 100644 --- a/toolchain-msvc.cmake +++ b/toolchain-msvc.cmake @@ -19,8 +19,6 @@ set(CMAKE_ASM_COMPILE_OBJECT " /nologo /X /I${REACTOS_SOURCE_DIR}/include/asm /I${REACTOS_BINARY_DIR}/include/asm /D__ASM__ /D_USE_ML /EP /c > .tmp" " /nologo /Cp /Fo /c /Ta .tmp") -set(CMAKE_C_FLAGS_INIT "/DWIN32 /D_WINDOWS /W1 /Zm1000") - set(CMAKE_C_STANDARD_LIBRARIES "" CACHE INTERNAL "") if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86")