Sfoglia il codice sorgente

Merge pull request #672 from BeamNG/cmake_improvements

Cmake improvements
Thomas Fischer 11 anni fa
parent
commit
437d968cb2
1 ha cambiato i file con 75 aggiunte e 70 eliminazioni
  1. 75 70
      Tools/CMake/basics.cmake

+ 75 - 70
Tools/CMake/basics.cmake

@@ -2,9 +2,15 @@ project("Torque3DEngine")
 
 set(TORQUE_TEMPLATE "Full" CACHE STRING "the template to use")
 
-set(projectDir    "${CMAKE_SOURCE_DIR}/My Projects/${TORQUE_APP_NAME}")
-set(projectOutDir "${projectDir}/game")
-set(projectSrcDir "${projectDir}/source")
+if(NOT projectDir)
+    set(projectDir    "${CMAKE_SOURCE_DIR}/My Projects/${TORQUE_APP_NAME}")
+endif()
+if(NOT projectOutDir)
+    set(projectOutDir "${projectDir}/game")
+endif()
+if(NOT projectSrcDir)
+    set(projectSrcDir "${projectDir}/source")
+endif()
 set(libDir        "${CMAKE_SOURCE_DIR}/Engine/lib")
 set(srcDir        "${CMAKE_SOURCE_DIR}/Engine/source")
 set(cmakeDir      "${CMAKE_SOURCE_DIR}/Tools/CMake")
@@ -29,14 +35,14 @@ macro(addPath dir)
              ${dir}/*.h)
     LIST(APPEND ${PROJECT_NAME}_files "${tmpa}")
     LIST(APPEND ${PROJECT_NAME}_paths "${dir}")
-	#message(STATUS "addPath ${PROJECT_NAME} : ${tmpa}")
+    #message(STATUS "addPath ${PROJECT_NAME} : ${tmpa}")
     #set(t "${${t}};${tmpa}")
 endmacro()
 
 # adds a file to the sources
 macro(addFile filename)
     LIST(APPEND ${PROJECT_NAME}_files "${filename}")
-	#message(STATUS "addFile ${PROJECT_NAME} : ${filename}")
+    #message(STATUS "addFile ${PROJECT_NAME} : ${filename}")
 endmacro()
 
 # finds and adds sources files in a folder recursively
@@ -49,7 +55,7 @@ macro(addPathRec dir)
              ${dir}/*.h)
     LIST(APPEND ${PROJECT_NAME}_files "${tmpa}")
     LIST(APPEND ${PROJECT_NAME}_paths "${dir}")
-	#message(STATUS "addPathRec ${PROJECT_NAME} : ${tmpa}")
+    #message(STATUS "addPathRec ${PROJECT_NAME} : ${tmpa}")
 endmacro()
 
 # adds a definition
@@ -181,17 +187,17 @@ macro(generateFiltersSpecial relDir)
         string(REGEX REPLACE "(.*)(/[^/]*)$" "\\1" SRCGR ${SRCGR})
         # do not have any ../ dirs
         string(REPLACE "../" "" SRCGR ${SRCGR})
-		IF("${SRCGR}" MATCHES "^torque3d/My Projects/.*$")
-			string(REPLACE "torque3d/My Projects/${PROJECT_NAME}/" "" SRCGR ${SRCGR})
-			string(REPLACE "/source" "" SRCGR ${SRCGR})
-		endif()
+        IF("${SRCGR}" MATCHES "^torque3d/My Projects/.*$")
+            string(REPLACE "torque3d/My Projects/${PROJECT_NAME}/" "" SRCGR ${SRCGR})
+            string(REPLACE "/source" "" SRCGR ${SRCGR})
+        endif()
         # Source_group expects \\ (double antislash), not / (slash)
         string(REPLACE / \\ SRCGR ${SRCGR})
         #STRING(REPLACE "//" "/" SRCGR ${SRCGR})
-		IF(EXISTS "${f}" AND NOT IS_DIRECTORY "${f}")
-			#message(STATUS "FILE: ${f} -> ${SRCGR}")
-			source_group("${SRCGR}" FILES ${f})
-		endif()
+        IF(EXISTS "${f}" AND NOT IS_DIRECTORY "${f}")
+            #message(STATUS "FILE: ${f} -> ${SRCGR}")
+            source_group("${SRCGR}" FILES ${f})
+        endif()
     endforeach()
 endmacro()
 # macro to add a static library
@@ -210,11 +216,11 @@ macro(addStaticLib)
         endif()
     endforeach()
     generateFilters("${firstDir}")
-	if(TORQUE_STATIC)
-		add_library("${PROJECT_NAME}" STATIC ${${PROJECT_NAME}_files})
-	else()
-		add_library("${PROJECT_NAME}" SHARED ${${PROJECT_NAME}_files})
-	endif()
+    if(TORQUE_STATIC)
+        add_library("${PROJECT_NAME}" STATIC ${${PROJECT_NAME}_files})
+    else()
+        add_library("${PROJECT_NAME}" SHARED ${${PROJECT_NAME}_files})
+    endif()
     # omg - only use the first folder ... otehrwise we get lots of header name collisions
     #foreach(dir ${${PROJECT_NAME}_paths})
     addInclude("${firstDir}")
@@ -245,74 +251,73 @@ macro(addExecutable)
 endmacro()
 
 macro(setupVersionNumbers)
-	set(TORQUE_APP_VERSION_MAJOR 1 CACHE INTEGER "")
-	set(TORQUE_APP_VERSION_MINOR 0 CACHE INTEGER "")
-	set(TORQUE_APP_VERSION_PATCH 0 CACHE INTEGER "")
-	set(TORQUE_APP_VERSION_TWEAK 0 CACHE INTEGER "")
-	mark_as_advanced(TORQUE_APP_VERSION_TWEAK)
-	MATH(EXPR TORQUE_APP_VERSION "${TORQUE_APP_VERSION_MAJOR} * 1000 + ${TORQUE_APP_VERSION_MINOR} * 100 + ${TORQUE_APP_VERSION_PATCH} * 10 + ${TORQUE_APP_VERSION_TWEAK}")
-	set(TORQUE_APP_VERSION_STRING "${TORQUE_APP_VERSION_MAJOR}.${TORQUE_APP_VERSION_MINOR}.${TORQUE_APP_VERSION_PATCH}.${TORQUE_APP_VERSION_TWEAK}")
-	#message(STATUS "version numbers: ${TORQUE_APP_VERSION} / ${TORQUE_APP_VERSION_STRING}")
+    set(TORQUE_APP_VERSION_MAJOR 1 CACHE INTEGER "")
+    set(TORQUE_APP_VERSION_MINOR 0 CACHE INTEGER "")
+    set(TORQUE_APP_VERSION_PATCH 0 CACHE INTEGER "")
+    set(TORQUE_APP_VERSION_TWEAK 0 CACHE INTEGER "")
+    mark_as_advanced(TORQUE_APP_VERSION_TWEAK)
+    MATH(EXPR TORQUE_APP_VERSION "${TORQUE_APP_VERSION_MAJOR} * 1000 + ${TORQUE_APP_VERSION_MINOR} * 100 + ${TORQUE_APP_VERSION_PATCH} * 10 + ${TORQUE_APP_VERSION_TWEAK}")
+    set(TORQUE_APP_VERSION_STRING "${TORQUE_APP_VERSION_MAJOR}.${TORQUE_APP_VERSION_MINOR}.${TORQUE_APP_VERSION_PATCH}.${TORQUE_APP_VERSION_TWEAK}")
+    #message(STATUS "version numbers: ${TORQUE_APP_VERSION} / ${TORQUE_APP_VERSION_STRING}")
 endmacro()
 
 macro(setupPackaging)
-	INCLUDE(CPack)
-	# only enable zips for now
-	set(CPACK_BINARY_NSIS OFF CACHE INTERNAL "" FORCE)
-	set(CPACK_BINARY_ZIP   ON CACHE INTERNAL "" FORCE)
-	set(CPACK_SOURCE_ZIP  OFF CACHE INTERNAL "" FORCE)
-	SET(CPACK_GENERATOR "ZIP")
-	SET(CPACK_PACKAGE_VENDOR "${PROJECT_NAME}")
-	SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_NAME}")
-	SET(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 1)
-	SET(CPACK_OUTPUT_FILE_PREFIX "${projectDir}/packages/${PROJECT_NAME}")
-	SET(CPACK_PACKAGE_INSTALL_DIRECTORY "")
-	#SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
-	#SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt")
-	SET(CPACK_PACKAGE_VERSION_MAJOR "${TORQUE_APP_VERSION_MAJOR}")
-	SET(CPACK_PACKAGE_VERSION_MINOR "${TORQUE_APP_VERSION_MINOR}")
-	SET(CPACK_PACKAGE_VERSION_PATCH "${TORQUE_APP_VERSION_PATCH}")
-	#SET(CPACK_PACKAGE_EXECUTABLES "${PROJECT_NAME}" "${PROJECT_NAME}")
-	SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${TORQUE_APP_VERSION_STRING}")
-	#SET(CPACK_SOURCE_STRIP_FILES "")
+    INCLUDE(CPack)
+    # only enable zips for now
+    set(CPACK_BINARY_NSIS OFF CACHE INTERNAL "" FORCE)
+    set(CPACK_BINARY_ZIP   ON CACHE INTERNAL "" FORCE)
+    set(CPACK_SOURCE_ZIP  OFF CACHE INTERNAL "" FORCE)
+    SET(CPACK_GENERATOR "ZIP")
+    SET(CPACK_PACKAGE_VENDOR "${PROJECT_NAME}")
+    SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_NAME}")
+    SET(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 1)
+    SET(CPACK_OUTPUT_FILE_PREFIX "${projectDir}/packages/${PROJECT_NAME}")
+    SET(CPACK_PACKAGE_INSTALL_DIRECTORY "")
+    #SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
+    #SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt")
+    SET(CPACK_PACKAGE_VERSION_MAJOR "${TORQUE_APP_VERSION_MAJOR}")
+    SET(CPACK_PACKAGE_VERSION_MINOR "${TORQUE_APP_VERSION_MINOR}")
+    SET(CPACK_PACKAGE_VERSION_PATCH "${TORQUE_APP_VERSION_PATCH}")
+    #SET(CPACK_PACKAGE_EXECUTABLES "${PROJECT_NAME}" "${PROJECT_NAME}")
+    SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${TORQUE_APP_VERSION_STRING}")
+    #SET(CPACK_SOURCE_STRIP_FILES "")
 endmacro()
 # always static for now
 set(TORQUE_STATIC ON)
 #option(TORQUE_STATIC "enables or disable static" OFF)
 
 if(WIN32)
-    # default disabled warnings: 4018;4100;4121;4127;4130;4244;4245;4389;4511;4512;4800;
-	set(TORQUE_CXX_FLAGS "/MP /O2 /Ob2 /Oi /Ot /Oy /GT /Zi /W4 /nologo /GF /EHsc /GS- /Gy- /Qpar- /arch:SSE2 /fp:fast /fp:except- /GR /Zc:wchar_t-" CACHE TYPE STRING)
-	mark_as_advanced(TORQUE_CXX_FLAGS)
+    set(TORQUE_CXX_FLAGS "/MP /O2 /Ob2 /Oi /Ot /Oy /GT /Zi /W4 /nologo /GF /EHsc /GS- /Gy- /Qpar- /arch:SSE2 /fp:fast /fp:except- /GR /Zc:wchar_t- /wd4018 /wd4100 /wd4121 /wd4127 /wd4130 /wd4244 /wd4245 /wd4389 /wd4511 /wd4512 /wd4800 /wd4995 /D_CRT_SECURE_NO_WARNINGS " CACHE TYPE STRING)
+    mark_as_advanced(TORQUE_CXX_FLAGS)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORQUE_CXX_FLAGS}")
     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS}")
-    #set(CMAKE_EXE_LINKER_FLAGS "/OPT:NOREF")
+    set(CMAKE_EXE_LINKER_FLAGS "/LARGEADDRESSAWARE")
     #set(STATIC_LIBRARY_FLAGS "/OPT:NOREF")
     
     # Force static runtime libraries
-	if(TORQUE_STATIC)
-		FOREACH(flag
-			CMAKE_C_FLAGS_RELEASE
-			CMAKE_C_FLAGS_RELWITHDEBINFO
-			CMAKE_C_FLAGS_DEBUG
-			CMAKE_C_FLAGS_DEBUG_INIT
-			CMAKE_CXX_FLAGS_RELEASE
-			CMAKE_CXX_FLAGS_RELWITHDEBINFO
-			CMAKE_CXX_FLAGS_DEBUG
-			CMAKE_CXX_FLAGS_DEBUG_INIT)
-			STRING(REPLACE "/MD"  "/MT" "${flag}" "${${flag}}")
-			SET("${flag}" "${${flag}} /EHsc")
-		ENDFOREACH()
-	endif()
+    if(TORQUE_STATIC)
+        FOREACH(flag
+            CMAKE_C_FLAGS_RELEASE
+            CMAKE_C_FLAGS_RELWITHDEBINFO
+            CMAKE_C_FLAGS_DEBUG
+            CMAKE_C_FLAGS_DEBUG_INIT
+            CMAKE_CXX_FLAGS_RELEASE
+            CMAKE_CXX_FLAGS_RELWITHDEBINFO
+            CMAKE_CXX_FLAGS_DEBUG
+            CMAKE_CXX_FLAGS_DEBUG_INIT)
+            STRING(REPLACE "/MD"  "/MT" "${flag}" "${${flag}}")
+            SET("${flag}" "${${flag}} /EHsc")
+        ENDFOREACH()
+    endif()
 endif()
 
 
 # fix the debug/release subfolders on windows
 if(MSVC)
-	FOREACH(CONF ${CMAKE_CONFIGURATION_TYPES})
-		# Go uppercase (DEBUG, RELEASE...)
-		STRING(TOUPPER "${CONF}" CONF)
-		#SET("CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONF}" "${projectOutDir}")
-		SET("CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONF}" "${projectOutDir}")
-	ENDFOREACH()
+    FOREACH(CONF ${CMAKE_CONFIGURATION_TYPES})
+        # Go uppercase (DEBUG, RELEASE...)
+        STRING(TOUPPER "${CONF}" CONF)
+        #SET("CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${CONF}" "${projectOutDir}")
+        SET("CMAKE_RUNTIME_OUTPUT_DIRECTORY_${CONF}" "${projectOutDir}")
+    ENDFOREACH()
 endif()