diff --git a/CMakeLists.txt b/CMakeLists.txt index d5f93f863..b15d104aa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,91 @@ CMAKE_MINIMUM_REQUIRED( VERSION 2.6.2 ) PROJECT( MegaGlest ) #SET(CMAKE_VERBOSE_MAKEFILE ON) -SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/mk/cmake/Modules) + +# +# *NOTE: For now we assume some variation of GCC Compiler (or MingW for Windows binaries) +# VC++ users should not use CMake yet but rather the build-mg.bat file in mk/windoze +# + +# build type defaults to release +if(NOT DEFINED CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose build type: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.") +endif(NOT DEFINED CMAKE_BUILD_TYPE) + +# add additional CMake modules +list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/mk/cmake/Modules) + +MESSAGE(STATUS "Build type for this compile will be: ${CMAKE_BUILD_TYPE}") + +## Compiler flags +IF(CMAKE_COMPILER_IS_GNUCXX OR MINGW) + IF(CMAKE_COMPILER_IS_GNUCXX) + MESSAGE(STATUS "Detected GNUC Compiler...") + ELSEIF(MINGW) + MESSAGE(STATUS "Detected MINGW Compiler...") + ENDIF() + + # Default compiler flags + #SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s") ## Strip binary + ADD_DEFINITIONS("-fno-strict-aliasing -frounding-math -fsignaling-nans -mfpmath=sse -msse") + #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") + + # Debug compiler flags + SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3") + + # Release compiler flags + SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3") + SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -s") ## Strip binary + + # Release with debug info compiler flags + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -g3 -O3") + + # Release minimum size compiler flags + SET(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -O3") + SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL} -s") ## Strip binary + + # The stuff below gets SVN Global Revision # but ONLY when calling cmake! + # the FindSubversion.cmake module is part of the standard distribution + include(FindSubversion) + # extract working copy information for SOURCE_DIR into MY_XXX variables + Subversion_WC_INFO(${PROJECT_SOURCE_DIR} MG) + #add_definitions(-DSVNVERSION="${MG_WC_REVISION}") + SET(SVN_VERSION_CMD "-DSVNVERSION='\\\"${MG_WC_REVISION}\\\"'") + + IF(UNIX AND NOT APPLE) + # We do some funky character escaping to get the right stuff written out to + # the final Makefile so we get the SVN Global Revsion # + SET(SVN_VERSION_CMD "-DSVNVERSION='\\\"`svnversion -n ${PROJECT_SOURCE_DIR}`\\\"'") + ENDIF() + + SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${SVN_VERSION_CMD}") + SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${SVN_VERSION_CMD}") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${SVN_VERSION_CMD}") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} ${SVN_VERSION_CMD}") + # We do some funky character escaping to get the right stuff written out to + # the final Makefile so we get the SVN Global Revsion # + string(REPLACE "'" "\"" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") + string(REPLACE "'" "\"" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") + string(REPLACE "'" "\"" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") + string(REPLACE "'" "\"" CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL}") + + IF( CMAKE_BUILD_TYPE STREQUAL Debug ) + message("CMAKE_CXX_FLAGS_DEBUG: ${CMAKE_CXX_FLAGS_DEBUG}") + ELSEIF( CMAKE_BUILD_TYPE STREQUAL Release ) + message("CMAKE_CXX_FLAGS_RELEASE: ${CMAKE_CXX_FLAGS_RELEASE}") + ELSEIF( CMAKE_BUILD_TYPE STREQUAL RELWITHDEBINFO ) + message("CMAKE_CXX_FLAGS_RELWITHDEBINFO: ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") + ELSEIF( CMAKE_BUILD_TYPE STREQUAL MINSIZEREL ) + message("CMAKE_CXX_FLAGS_MINSIZEREL: ${CMAKE_CXX_FLAGS_MINSIZEREL}") + + ENDIF() + + # Win32 specific Compiler Flags + IF(WIN32) + ADD_DEFINITIONS("-D_WINDOWS -D_WIN32 -D_STDCALL_SUPPORTED -D_M_IX86 -DXML_LIBRARY -D_LIB -DUSE_STREFLOP -DSTREFLOP_SSE -DSTREFLOP_RANDOM_GEN_SIZE=32 -DLIBM_COMPILING_FLT32 -DCURL_STATICLIB") + ENDIF() + +ENDIF() IF(WIN32) SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} diff --git a/source/glest_game/CMakeLists.txt b/source/glest_game/CMakeLists.txt index 974f452bf..cd3c473d9 100644 --- a/source/glest_game/CMakeLists.txt +++ b/source/glest_game/CMakeLists.txt @@ -159,40 +159,44 @@ add_custom_target(run ALL ENDIF() # [RCL] FIXME: make it compiler-agnostic -SET(CMAKE_CXX_FLAGS "-O3 -fno-strict-aliasing -frounding-math -fsignaling-nans -mfpmath=sse -msse -DUSE_STREFLOP -DSTREFLOP_SSE") +#SET(CMAKE_CXX_FLAGS "-O3 -fno-strict-aliasing -frounding-math -fsignaling-nans -mfpmath=sse -msse -DUSE_STREFLOP -DSTREFLOP_SSE") -IF(WIN32) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_WINDOWS -D_WIN32 -D_STDCALL_SUPPORTED -D_M_IX86 -DXML_LIBRARY -DCURL_STATICLIB") -ENDIF() +#IF(WIN32) +# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_WINDOWS -D_WIN32 -D_STDCALL_SUPPORTED -D_M_IX86 -DXML_LIBRARY -DCURL_STATICLIB") +#ENDIF() # The stuff below gets SVN Global Revision # but ONLY when calling cmake! # the FindSubversion.cmake module is part of the standard distribution -include(FindSubversion) +#include(FindSubversion) # extract working copy information for SOURCE_DIR into MY_XXX variables -Subversion_WC_INFO(${PROJECT_SOURCE_DIR} MG) +#Subversion_WC_INFO(${PROJECT_SOURCE_DIR} MG) #add_definitions(-DSVNVERSION="${MG_WC_REVISION}") -SET(SVN_VERSION_CMD "-DSVNVERSION='\\\"${MG_WC_REVISION}\\\"'") +#SET(SVN_VERSION_CMD "-DSVNVERSION='\\\"${MG_WC_REVISION}\\\"'") -IF(UNIX AND NOT APPLE) +#IF(UNIX AND NOT APPLE) # We do some funky character escaping to get the right stuff written out to # the final Makefile so we get the SVN Global Revsion # - SET(SVN_VERSION_CMD "-DSVNVERSION='\\\"`svnversion -n ${PROJECT_SOURCE_DIR}`\\\"'") -ENDIF() +# SET(SVN_VERSION_CMD "-DSVNVERSION='\\\"`svnversion -n ${PROJECT_SOURCE_DIR}`\\\"'") +#ENDIF() -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SVN_VERSION_CMD}") +#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SVN_VERSION_CMD}") IF(WIN32) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-subsystem,console -mconsole") + SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wl,-subsystem,console -mconsole") + SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wl,-subsystem,console -mconsole") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -Wl,-subsystem,console -mconsole") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -Wl,-subsystem,console -mconsole") + ENDIF() #IF(UNIX AND NOT APPLE) # We do some funky character escaping to get the right stuff written out to # the final Makefile so we get the SVN Global Revsion # - string(REPLACE "'" "\"" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") -#ENDIF() +# string(REPLACE "'" "\"" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") +##ENDIF() -message("CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}") +#message("CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}") IF(WIN32) SET(TARGET_NAME "glest_game") diff --git a/source/shared_lib/CMakeLists.txt b/source/shared_lib/CMakeLists.txt index 0a1033730..d80361b3a 100644 --- a/source/shared_lib/CMakeLists.txt +++ b/source/shared_lib/CMakeLists.txt @@ -197,11 +197,11 @@ SET_SOURCE_FILES_PROPERTIES(${MG_INCLUDE_FILES} PROPERTIES HEADER_FILE_ONLY 1) # [RCL] FIXME: make it compiler-agnostic -SET(CMAKE_CXX_FLAGS "-O3 -fno-strict-aliasing -frounding-math -fsignaling-nans -mfpmath=sse -msse") +#SET(CMAKE_CXX_FLAGS "-O3 -fno-strict-aliasing -frounding-math -fsignaling-nans -mfpmath=sse -msse") -IF(WIN32) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_WINDOWS -D_WIN32 -D_STDCALL_SUPPORTED -D_M_IX86 -DXML_LIBRARY -D_LIB -DUSE_STREFLOP -DSTREFLOP_SSE -DSTREFLOP_RANDOM_GEN_SIZE=32 -DLIBM_COMPILING_FLT32 -DCURL_STATICLIB") -ENDIF() +#IF(WIN32) +# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_WINDOWS -D_WIN32 -D_STDCALL_SUPPORTED -D_M_IX86 -DXML_LIBRARY -D_LIB -DUSE_STREFLOP -DSTREFLOP_SSE -DSTREFLOP_RANDOM_GEN_SIZE=32 -DLIBM_COMPILING_FLT32 -DCURL_STATICLIB") +#ENDIF() #MESSAGE(STATUS "Source files: ${MG_SOURCE_FILES}") #MESSAGE(STATUS "Include files: ${MG_INCLUDE_FILES}")