From 492f217330c586bf596dce527b2505a504e69719 Mon Sep 17 00:00:00 2001 From: LuisAntonRebollo Date: Mon, 2 Jun 2014 01:26:39 +0200 Subject: [PATCH 1/5] Move CMake library's files to libraries dir. --- Tools/CMake/CMakeLists.txt | 30 +++++++++---------- Tools/CMake/{ => libraries}/collada.cmake | 0 .../CMake/{ => libraries}/convexDecomp.cmake | 0 Tools/CMake/{ => libraries}/libogg.cmake | 0 Tools/CMake/{ => libraries}/libtheora.cmake | 0 Tools/CMake/{ => libraries}/libvorbis.cmake | 0 Tools/CMake/{ => libraries}/ljpeg.cmake | 0 Tools/CMake/{ => libraries}/lmng.cmake | 0 Tools/CMake/{ => libraries}/lpng.cmake | 0 Tools/CMake/{ => libraries}/lungif.cmake | 0 Tools/CMake/{ => libraries}/opcode.cmake | 0 Tools/CMake/{ => libraries}/pcre.cmake | 0 Tools/CMake/{ => libraries}/squish.cmake | 0 Tools/CMake/{ => libraries}/tinyxml.cmake | 0 Tools/CMake/{ => libraries}/zlib.cmake | 0 15 files changed, 15 insertions(+), 15 deletions(-) rename Tools/CMake/{ => libraries}/collada.cmake (100%) rename Tools/CMake/{ => libraries}/convexDecomp.cmake (100%) rename Tools/CMake/{ => libraries}/libogg.cmake (100%) rename Tools/CMake/{ => libraries}/libtheora.cmake (100%) rename Tools/CMake/{ => libraries}/libvorbis.cmake (100%) rename Tools/CMake/{ => libraries}/ljpeg.cmake (100%) rename Tools/CMake/{ => libraries}/lmng.cmake (100%) rename Tools/CMake/{ => libraries}/lpng.cmake (100%) rename Tools/CMake/{ => libraries}/lungif.cmake (100%) rename Tools/CMake/{ => libraries}/opcode.cmake (100%) rename Tools/CMake/{ => libraries}/pcre.cmake (100%) rename Tools/CMake/{ => libraries}/squish.cmake (100%) rename Tools/CMake/{ => libraries}/tinyxml.cmake (100%) rename Tools/CMake/{ => libraries}/zlib.cmake (100%) diff --git a/Tools/CMake/CMakeLists.txt b/Tools/CMake/CMakeLists.txt index 950d8cf99..6953e9385 100644 --- a/Tools/CMake/CMakeLists.txt +++ b/Tools/CMake/CMakeLists.txt @@ -3,26 +3,26 @@ include(basics.cmake) setupVersionNumbers() #the libs -include(lmng.cmake) -include(lpng.cmake) -include(lungif.cmake) -include(zlib.cmake) -include(ljpeg.cmake) -include(tinyxml.cmake) -include(opcode.cmake) -include(squish.cmake) -include(collada.cmake) -include(pcre.cmake) -include(convexDecomp.cmake) +include(libraries/lmng.cmake) +include(libraries/lpng.cmake) +include(libraries/lungif.cmake) +include(libraries/zlib.cmake) +include(libraries/ljpeg.cmake) +include(libraries/tinyxml.cmake) +include(libraries/opcode.cmake) +include(libraries/squish.cmake) +include(libraries/collada.cmake) +include(libraries/pcre.cmake) +include(libraries/convexDecomp.cmake) if(TORQUE_SFX_VORBIS) - include(libvorbis.cmake) - include(libogg.cmake) + include(libraries/libvorbis.cmake) + include(libraries/libogg.cmake) endif() if(TORQUE_THEORA) - include(libtheora.cmake) + include(libraries/libtheora.cmake) endif() # the main engine, should come last include(torque3d.cmake) -#setupPackaging() \ No newline at end of file +#setupPackaging() diff --git a/Tools/CMake/collada.cmake b/Tools/CMake/libraries/collada.cmake similarity index 100% rename from Tools/CMake/collada.cmake rename to Tools/CMake/libraries/collada.cmake diff --git a/Tools/CMake/convexDecomp.cmake b/Tools/CMake/libraries/convexDecomp.cmake similarity index 100% rename from Tools/CMake/convexDecomp.cmake rename to Tools/CMake/libraries/convexDecomp.cmake diff --git a/Tools/CMake/libogg.cmake b/Tools/CMake/libraries/libogg.cmake similarity index 100% rename from Tools/CMake/libogg.cmake rename to Tools/CMake/libraries/libogg.cmake diff --git a/Tools/CMake/libtheora.cmake b/Tools/CMake/libraries/libtheora.cmake similarity index 100% rename from Tools/CMake/libtheora.cmake rename to Tools/CMake/libraries/libtheora.cmake diff --git a/Tools/CMake/libvorbis.cmake b/Tools/CMake/libraries/libvorbis.cmake similarity index 100% rename from Tools/CMake/libvorbis.cmake rename to Tools/CMake/libraries/libvorbis.cmake diff --git a/Tools/CMake/ljpeg.cmake b/Tools/CMake/libraries/ljpeg.cmake similarity index 100% rename from Tools/CMake/ljpeg.cmake rename to Tools/CMake/libraries/ljpeg.cmake diff --git a/Tools/CMake/lmng.cmake b/Tools/CMake/libraries/lmng.cmake similarity index 100% rename from Tools/CMake/lmng.cmake rename to Tools/CMake/libraries/lmng.cmake diff --git a/Tools/CMake/lpng.cmake b/Tools/CMake/libraries/lpng.cmake similarity index 100% rename from Tools/CMake/lpng.cmake rename to Tools/CMake/libraries/lpng.cmake diff --git a/Tools/CMake/lungif.cmake b/Tools/CMake/libraries/lungif.cmake similarity index 100% rename from Tools/CMake/lungif.cmake rename to Tools/CMake/libraries/lungif.cmake diff --git a/Tools/CMake/opcode.cmake b/Tools/CMake/libraries/opcode.cmake similarity index 100% rename from Tools/CMake/opcode.cmake rename to Tools/CMake/libraries/opcode.cmake diff --git a/Tools/CMake/pcre.cmake b/Tools/CMake/libraries/pcre.cmake similarity index 100% rename from Tools/CMake/pcre.cmake rename to Tools/CMake/libraries/pcre.cmake diff --git a/Tools/CMake/squish.cmake b/Tools/CMake/libraries/squish.cmake similarity index 100% rename from Tools/CMake/squish.cmake rename to Tools/CMake/libraries/squish.cmake diff --git a/Tools/CMake/tinyxml.cmake b/Tools/CMake/libraries/tinyxml.cmake similarity index 100% rename from Tools/CMake/tinyxml.cmake rename to Tools/CMake/libraries/tinyxml.cmake diff --git a/Tools/CMake/zlib.cmake b/Tools/CMake/libraries/zlib.cmake similarity index 100% rename from Tools/CMake/zlib.cmake rename to Tools/CMake/libraries/zlib.cmake From 8a508950624830c39cfba3610d13b3a7e0cbc01a Mon Sep 17 00:00:00 2001 From: LuisAntonRebollo Date: Mon, 2 Jun 2014 01:35:06 +0200 Subject: [PATCH 2/5] Clean CMake files. --- Tools/CMake/CMakeLists.txt | 22 +- Tools/CMake/basics.cmake | 262 ++++++++++-------- Tools/CMake/cleanup-win.bat.in | 2 +- Tools/CMake/libraries/collada.cmake | 4 +- Tools/CMake/libraries/convexDecomp.cmake | 2 +- Tools/CMake/libraries/libogg.cmake | 6 +- Tools/CMake/libraries/libtheora.cmake | 4 +- Tools/CMake/libraries/libvorbis.cmake | 4 +- Tools/CMake/libraries/ljpeg.cmake | 2 +- Tools/CMake/libraries/lmng.cmake | 3 +- Tools/CMake/libraries/lpng.cmake | 4 +- Tools/CMake/libraries/lungif.cmake | 5 +- Tools/CMake/libraries/opcode.cmake | 4 +- Tools/CMake/libraries/pcre.cmake | 8 +- .../{library_recast.cmake => recast.cmake} | 12 +- Tools/CMake/libraries/squish.cmake | 2 +- Tools/CMake/libraries/tinyxml.cmake | 2 +- Tools/CMake/libraries/zlib.cmake | 2 +- Tools/CMake/modules/module_hydra.cmake | 2 +- Tools/CMake/modules/module_navigation.cmake | 15 +- Tools/CMake/modules/module_oculusVR.cmake | 8 +- Tools/CMake/template.cmake | 8 +- Tools/CMake/torque3d.cmake | 94 +++---- 23 files changed, 239 insertions(+), 238 deletions(-) rename Tools/CMake/libraries/{library_recast.cmake => recast.cmake} (50%) diff --git a/Tools/CMake/CMakeLists.txt b/Tools/CMake/CMakeLists.txt index 6953e9385..766c1c771 100644 --- a/Tools/CMake/CMakeLists.txt +++ b/Tools/CMake/CMakeLists.txt @@ -2,27 +2,7 @@ include(basics.cmake) setupVersionNumbers() -#the libs -include(libraries/lmng.cmake) -include(libraries/lpng.cmake) -include(libraries/lungif.cmake) -include(libraries/zlib.cmake) -include(libraries/ljpeg.cmake) -include(libraries/tinyxml.cmake) -include(libraries/opcode.cmake) -include(libraries/squish.cmake) -include(libraries/collada.cmake) -include(libraries/pcre.cmake) -include(libraries/convexDecomp.cmake) -if(TORQUE_SFX_VORBIS) - include(libraries/libvorbis.cmake) - include(libraries/libogg.cmake) -endif() -if(TORQUE_THEORA) - include(libraries/libtheora.cmake) -endif() - # the main engine, should come last include(torque3d.cmake) -#setupPackaging() +#setupPackaging() \ No newline at end of file diff --git a/Tools/CMake/basics.cmake b/Tools/CMake/basics.cmake index 1903efc2f..2b4ff0278 100644 --- a/Tools/CMake/basics.cmake +++ b/Tools/CMake/basics.cmake @@ -15,7 +15,6 @@ set(libDir "${CMAKE_SOURCE_DIR}/Engine/lib") set(srcDir "${CMAKE_SOURCE_DIR}/Engine/source") set(cmakeDir "${CMAKE_SOURCE_DIR}/Tools/CMake") - # hide some things mark_as_advanced(CMAKE_INSTALL_PREFIX) mark_as_advanced(CMAKE_CONFIGURATION_TYPES) @@ -25,18 +24,25 @@ mark_as_advanced(CMAKE_CONFIGURATION_TYPES) #set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${projectOutDir}/game) #set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${projectOutDir}/game) +############################################################################### +### Source File Handling +############################################################################### + # finds and adds sources files in a folder macro(addPath dir) - set(tmpa "") - file(GLOB tmpa + set(tmp_files "") + set(glob_config GLOB) + if(${ARGC} GREATER 1 AND "${ARGV1}" STREQUAL "REC") + set(glob_config GLOB_RECURSE) + endif() + file(${glob_config} tmp_files ${dir}/*.cpp ${dir}/*.c ${dir}/*.cc ${dir}/*.h) - LIST(APPEND ${PROJECT_NAME}_files "${tmpa}") + LIST(APPEND ${PROJECT_NAME}_files "${tmp_files}") LIST(APPEND ${PROJECT_NAME}_paths "${dir}") - #message(STATUS "addPath ${PROJECT_NAME} : ${tmpa}") - #set(t "${${t}};${tmpa}") + #message(STATUS "addPath ${PROJECT_NAME} : ${tmp_files}") endmacro() # adds a file to the sources @@ -47,111 +53,115 @@ endmacro() # finds and adds sources files in a folder recursively macro(addPathRec dir) - set(tmpa "") - file(GLOB_RECURSE tmpa - ${dir}/*.cpp - ${dir}/*.c - ${dir}/*.cc - ${dir}/*.h) - LIST(APPEND ${PROJECT_NAME}_files "${tmpa}") - LIST(APPEND ${PROJECT_NAME}_paths "${dir}") - #message(STATUS "addPathRec ${PROJECT_NAME} : ${tmpa}") + addPath("${dir}" "REC") endmacro() -# adds a definition +############################################################################### +### Definition Handling +############################################################################### +macro(__addDef def config) + # two possibilities: a) target already known, so add it directly, or b) target not yet known, so add it to its cache + if(TARGET ${PROJECT_NAME}) + #message(STATUS "directly applying defs: ${PROJECT_NAME} with config ${config}: ${def}") + if("${config}" STREQUAL "") + set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY COMPILE_DEFINITIONS "${def}") + else() + set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY COMPILE_DEFINITIONS_${config} "${def}") + endif() + else() + list(APPEND ${PROJECT_NAME}_defs_${config} ${def}) + #message(STATUS "added definition to cache: ${PROJECT_NAME}_defs_${config}: ${${PROJECT_NAME}_defs_${config}}") + endif() +endmacro() + +# adds a definition: argument 1: Nothing(for all), _DEBUG, _RELEASE, macro(addDef def) - set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY COMPILE_DEFINITIONS "${def}") -endmacro() -# adds a definition -macro(addDebugDef def) - set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG "${def}") + set(def_configs "") + if(${ARGC} GREATER 1) + foreach(config "${ARGV1}") + __addDef(${def} ${config}) + endforeach() + else() + __addDef(${def} "") + endif() endmacro() -# adds a required definition. Are processed on addExecutable or addStaticLib -macro(addRequiredDefinition def) - #message(STATUS "${PROJECT_NAME} : add def : ${def}") - LIST( APPEND ${PROJECT_NAME}_required_definition ${def} ) -endmacro() -# adds a required debug definition. Are processed on addExecutable or addStaticLib -macro(addRequiredDebugDefinition def) - #message(STATUS "${PROJECT_NAME} : add def : ${def}") - LIST( APPEND ${PROJECT_NAME}_required_debug_definition ${def} ) +# this applies cached definitions onto the target +macro(_process_defs) + if(DEFINED ${PROJECT_NAME}_defs_) + set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY COMPILE_DEFINITIONS "${${PROJECT_NAME}_defs_}") + #message(STATUS "applying defs to project ${PROJECT_NAME} on all configs: ${${PROJECT_NAME}_defs_}") + endif() + foreach(def_config ${CMAKE_CONFIGURATION_TYPES}) + string(TOUPPER "${def_config}" def_config) + if(DEFINED ${PROJECT_NAME}_defs_${def_config}) + set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY COMPILE_DEFINITIONS_${def_config} "${${PROJECT_NAME}_defs_${def_config}}") + #message(STATUS "applying defs to project ${PROJECT_NAME} on config ${def_config}: ${${PROJECT_NAME}_defs_${def_config}}") + endif() + endforeach() endmacro() -# add definitions to project -macro( _processProjectDefinition ) - foreach( def ${${PROJECT_NAME}_required_definition} ) - addDef( ${def} ) - endforeach() - - foreach( def ${${PROJECT_NAME}_required_debug_definition} ) - addDebugDef( ${def} ) +############################################################################### +### Source Library Handling +############################################################################### +macro(addLibSrc libPath) + set(cached_project_name ${PROJECT_NAME}) + include(${libPath}) + project(${cached_project_name}) +endmacro() + +############################################################################### +### Linked Library Handling +############################################################################### +macro(addLib libs) + foreach(lib ${libs}) + # check if we can build it ourselfs + if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/libraries/${lib}.cmake") + addLibSrc("${CMAKE_CURRENT_SOURCE_DIR}/libraries/${lib}.cmake") + endif() + # then link against it + # two possibilities: a) target already known, so add it directly, or b) target not yet known, so add it to its cache + if(TARGET ${PROJECT_NAME}) + target_link_libraries(${PROJECT_NAME} "${lib}") + else() + list(APPEND ${PROJECT_NAME}_libs ${lib}) + endif() endforeach() - - #clear required defs - set( ${PROJECT_NAME}_required_definition ) - set( ${PROJECT_NAME}_required_debug_definition ) endmacro() -# adds an include path +# this applies cached definitions onto the target +macro(_process_libs) + if(DEFINED ${PROJECT_NAME}_libs) + target_link_libraries(${PROJECT_NAME} "${${PROJECT_NAME}_libs}") + endif() +endmacro() + +############################################################################### +### Include Handling +############################################################################### macro(addInclude incPath) - #message(STATUS "${PROJECT_NAME} : add include path : ${incPath}") - set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY INCLUDE_DIRECTORIES "${incPath}") + if(TARGET ${PROJECT_NAME}) + set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY INCLUDE_DIRECTORIES "${incPath}") + else() + list(APPEND ${PROJECT_NAME}_includes ${incPath}) + endif() endmacro() -# adds a library to link against -macro(addLib lib) - #message(STATUS "${PROJECT_NAME} : add lib : ${lib}") - target_link_libraries(${PROJECT_NAME} "${lib}") +# this applies cached definitions onto the target +macro(_process_includes) + if(DEFINED ${PROJECT_NAME}_includes) + set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY INCLUDE_DIRECTORIES "${${PROJECT_NAME}_includes}") + endif() endmacro() -# adds a library dependency. Are processed on addExecutable or addStaticLib -macro(addRequiredLibrary lib) - #message(STATUS "${PROJECT_NAME} : add lib : ${lib}") - LIST( APPEND ${PROJECT_NAME}_required_library ${lib} ) -endmacro() +############################################################################### -# adds a link dependency. Are processed on addExecutable or addStaticLib -macro(addRequiredLink lib) - #message(STATUS "${PROJECT_NAME} : add lib : ${lib}") - LIST( APPEND ${PROJECT_NAME}_required_link ${lib} ) +macro(_postTargetProcess) + _process_includes() + _process_defs() + _process_libs() endmacro() -macro( _processProjectLibrary ) - # Append currect project to PROJECT_STACK - LIST( APPEND PROJECT_STACK "${PROJECT_NAME}" ) - - foreach( lib ${${PROJECT_NAME}_required_library} ) - #message( "adding library dependency: ${lib}" ) - include( ${lib} ) - endforeach() - - #clear required libraries - set( ${PROJECT_NAME}_required_library ) - - # pop currect project form PROJECT_STACK - LIST(REMOVE_AT PROJECT_STACK -1) - - # get currect project form stack - if( PROJECT_STACK ) - LIST(GET PROJECT_STACK -1 TEMP_PROJECT) - project( ${TEMP_PROJECT} ) - endif() - - -endmacro() - -macro( _processProjectLinks ) - #message( "_processProjectLinks: ${PROJECT_NAME}" ) - foreach( lib ${${PROJECT_NAME}_required_link} ) - addLib( ${lib} ) - endforeach() - - #clear required libraries - set( ${PROJECT_NAME}_required_link ) -endmacro() - - # adds a path to search for libs macro(addLibPath dir) link_directories(${dir}) @@ -163,7 +173,7 @@ macro(generateFilters relDir) # Get the path of the file relative to ${DIRECTORY}, # then alter it (not compulsory) file(RELATIVE_PATH SRCGR ${relDir} ${f}) - set(SRCGR "${PROJECT_NAME}/${SRCGR}") + set(SRCGR "${PROJECT_NAME}/${SRCGR}") # Extract the folder, ie remove the filename part string(REGEX REPLACE "(.*)(/[^/]*)$" "\\1" SRCGR ${SRCGR}) # do not have any ../ dirs @@ -182,7 +192,7 @@ macro(generateFiltersSpecial relDir) # Get the path of the file relative to ${DIRECTORY}, # then alter it (not compulsory) file(RELATIVE_PATH SRCGR ${relDir} ${f}) - set(SRCGR "torque3d/${SRCGR}") + set(SRCGR "torque3d/${SRCGR}") # Extract the folder, ie remove the filename part string(REGEX REPLACE "(.*)(/[^/]*)$" "\\1" SRCGR ${SRCGR}) # do not have any ../ dirs @@ -200,8 +210,9 @@ macro(generateFiltersSpecial relDir) endif() endforeach() endmacro() + # macro to add a static library -macro(addStaticLib) +macro(finishLibrary) # more paths? if(${ARGC} GREATER 0) foreach(dir ${ARGV0}) @@ -216,23 +227,30 @@ macro(addStaticLib) endif() endforeach() generateFilters("${firstDir}") + + # set per target compile flags + if(TORQUE_CXX_FLAGS_${PROJECT_NAME}) + set_source_files_properties(${${PROJECT_NAME}_files} PROPERTIES COMPILE_FLAGS "${TORQUE_CXX_FLAGS_${PROJECT_NAME}}") + else() + set_source_files_properties(${${PROJECT_NAME}_files} PROPERTIES COMPILE_FLAGS "${TORQUE_CXX_FLAGS_LIBS}") + 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 + + # omg - only use the first folder ... otherwise we get lots of header name collisions #foreach(dir ${${PROJECT_NAME}_paths}) addInclude("${firstDir}") #endforeach() - - _processProjectLinks() - _processProjectLibrary() - _processProjectDefinition() + + _postTargetProcess() endmacro() # macro to add an executable -macro(addExecutable) +macro(finishExecutable) # now inspect the paths we got set(firstDir "") foreach(dir ${${PROJECT_NAME}_paths}) @@ -241,13 +259,18 @@ macro(addExecutable) endif() endforeach() generateFiltersSpecial("${firstDir}") + + # set per target compile flags + if(TORQUE_CXX_FLAGS_${PROJECT_NAME}) + set_source_files_properties(${${PROJECT_NAME}_files} PROPERTIES COMPILE_FLAGS "${TORQUE_CXX_FLAGS_${PROJECT_NAME}}") + else() + set_source_files_properties(${${PROJECT_NAME}_files} PROPERTIES COMPILE_FLAGS "${TORQUE_CXX_FLAGS_EXECUTABLES}") + endif() + add_executable("${PROJECT_NAME}" WIN32 ${${PROJECT_NAME}_files}) - # omg - only use the first folder ... otehrwise we get lots of header name collisions addInclude("${firstDir}") - - _processProjectLinks() - _processProjectLibrary() - _processProjectDefinition() + + _postTargetProcess() endmacro() macro(setupVersionNumbers) @@ -287,13 +310,20 @@ set(TORQUE_STATIC ON) #option(TORQUE_STATIC "enables or disable static" OFF) if(WIN32) - 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(TORQUE_CXX_FLAGS_EXECUTABLES "/wd4018 /wd4100 /wd4121 /wd4127 /wd4130 /wd4244 /wd4245 /wd4389 /wd4511 /wd4512 /wd4800 /wd4995 " CACHE TYPE STRING) + mark_as_advanced(TORQUE_CXX_FLAGS_EXECUTABLES) + + set(TORQUE_CXX_FLAGS_LIBS "/W0" CACHE TYPE STRING) + mark_as_advanced(TORQUE_CXX_FLAGS_LIBS) + + set(TORQUE_CXX_FLAGS_COMMON "-DUNICODE -D_UNICODE /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- /D_CRT_SECURE_NO_WARNINGS" CACHE TYPE STRING) + mark_as_advanced(TORQUE_CXX_FLAGS_COMMON) + + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORQUE_CXX_FLAGS_COMMON}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS "/LARGEADDRESSAWARE") #set(STATIC_LIBRARY_FLAGS "/OPT:NOREF") - + # Force static runtime libraries if(TORQUE_STATIC) FOREACH(flag @@ -309,6 +339,16 @@ if(WIN32) SET("${flag}" "${${flag}} /EHsc") ENDFOREACH() endif() +else() + # TODO: improve default settings on other platforms + set(TORQUE_CXX_FLAGS_EXECUTABLES "" CACHE TYPE STRING) + mark_as_advanced(TORQUE_CXX_FLAGS_EXECUTABLES) + set(TORQUE_CXX_FLAGS_LIBS "" CACHE TYPE STRING) + mark_as_advanced(TORQUE_CXX_FLAGS_LIBS) + set(TORQUE_CXX_FLAGS_COMMON "" 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}") endif() diff --git a/Tools/CMake/cleanup-win.bat.in b/Tools/CMake/cleanup-win.bat.in index 0e9906dd8..c8c3a4fad 100644 --- a/Tools/CMake/cleanup-win.bat.in +++ b/Tools/CMake/cleanup-win.bat.in @@ -44,4 +44,4 @@ IF EXIST "banlist.cs" del /s banlist.cs :: logs echo logs IF EXIST "torque3d.log" del /s torque3d.log -echo DONE! \ No newline at end of file +echo DONE! diff --git a/Tools/CMake/libraries/collada.cmake b/Tools/CMake/libraries/collada.cmake index a875643d8..00fa94197 100644 --- a/Tools/CMake/libraries/collada.cmake +++ b/Tools/CMake/libraries/collada.cmake @@ -6,8 +6,6 @@ addPath("${libDir}/collada/src/modules/LIBXMLPlugin") addPath("${libDir}/collada/src/modules/stdErrPlugin") addPath("${libDir}/collada/src/modules/STLDatabase") -addStaticLib() - addDef(DOM_INCLUDE_TINYXML) addDef(PCRE_STATIC) @@ -15,3 +13,5 @@ addInclude(${libDir}/collada/include) addInclude(${libDir}/collada/include/1.4) addInclude(${libDir}/pcre) addInclude(${libDir}/tinyxml) + +finishLibrary() diff --git a/Tools/CMake/libraries/convexDecomp.cmake b/Tools/CMake/libraries/convexDecomp.cmake index eb98a6144..3b02db6df 100644 --- a/Tools/CMake/libraries/convexDecomp.cmake +++ b/Tools/CMake/libraries/convexDecomp.cmake @@ -1,3 +1,3 @@ project(convexDecomp) -addStaticLib("${libDir}/convexDecomp") +finishLibrary("${libDir}/convexDecomp") diff --git a/Tools/CMake/libraries/libogg.cmake b/Tools/CMake/libraries/libogg.cmake index fc83fd957..1b3fdf37f 100644 --- a/Tools/CMake/libraries/libogg.cmake +++ b/Tools/CMake/libraries/libogg.cmake @@ -1,7 +1,7 @@ project(libogg) -addPathRec("${libDir}/libogg") - -addStaticLib() +addPath("${libDir}/libogg" REC) addInclude(${libDir}/libogg/include) + +finishLibrary() diff --git a/Tools/CMake/libraries/libtheora.cmake b/Tools/CMake/libraries/libtheora.cmake index 0e6dda65d..023176aa4 100644 --- a/Tools/CMake/libraries/libtheora.cmake +++ b/Tools/CMake/libraries/libtheora.cmake @@ -2,9 +2,9 @@ project(libtheora) addPathRec("${libDir}/libtheora") -addStaticLib() - addDef(TORQUE_OGGTHEORA) addDef(TORQUE_OGGVORIBS) addInclude(${libDir}/libogg/include) addInclude(${libDir}/libtheora/include) + +finishLibrary() diff --git a/Tools/CMake/libraries/libvorbis.cmake b/Tools/CMake/libraries/libvorbis.cmake index 9f1e2eb4a..5fe0248af 100644 --- a/Tools/CMake/libraries/libvorbis.cmake +++ b/Tools/CMake/libraries/libvorbis.cmake @@ -2,8 +2,8 @@ project(libvorbis) addPathRec("${libDir}/libvorbis") -addStaticLib() - addDef(TORQUE_OGGVORBIS) addInclude(${libDir}/libvorbis/include) addInclude(${libDir}/libogg/include) + +finishLibrary() diff --git a/Tools/CMake/libraries/ljpeg.cmake b/Tools/CMake/libraries/ljpeg.cmake index d518cb504..74ea3d8fb 100644 --- a/Tools/CMake/libraries/ljpeg.cmake +++ b/Tools/CMake/libraries/ljpeg.cmake @@ -1,3 +1,3 @@ project(ljpeg) -addStaticLib("${libDir}/ljpeg") +finishLibrary("${libDir}/ljpeg") diff --git a/Tools/CMake/libraries/lmng.cmake b/Tools/CMake/libraries/lmng.cmake index 27da5444f..c526d50c9 100644 --- a/Tools/CMake/libraries/lmng.cmake +++ b/Tools/CMake/libraries/lmng.cmake @@ -1,9 +1,10 @@ project(lmng) -addStaticLib("${libDir}/${PROJECT_NAME}") addDef(MNG_OPTIMIZE_OBJCLEANUP) addInclude(${libDir}/lpng) addInclude(${libDir}/zlib) addInclude(${libDir}/ljpeg) + +finishLibrary("${libDir}/${PROJECT_NAME}") diff --git a/Tools/CMake/libraries/lpng.cmake b/Tools/CMake/libraries/lpng.cmake index 0dbb15501..a62c98bee 100644 --- a/Tools/CMake/libraries/lpng.cmake +++ b/Tools/CMake/libraries/lpng.cmake @@ -1,7 +1,7 @@ project(lpng) -addStaticLib("${libDir}/${PROJECT_NAME}") - # addDef(PNG_NO_ASSEMBLER_CODE) addInclude(${libDir}/zlib) + +finishLibrary("${libDir}/${PROJECT_NAME}") diff --git a/Tools/CMake/libraries/lungif.cmake b/Tools/CMake/libraries/lungif.cmake index 2ede4dd3a..a3db81c93 100644 --- a/Tools/CMake/libraries/lungif.cmake +++ b/Tools/CMake/libraries/lungif.cmake @@ -1,5 +1,6 @@ project(lungif) -addStaticLib("${libDir}/${PROJECT_NAME}") - addDef(_GBA_NO_FILEIO) + + +finishLibrary("${libDir}/${PROJECT_NAME}") diff --git a/Tools/CMake/libraries/opcode.cmake b/Tools/CMake/libraries/opcode.cmake index df94b0c7f..1b2a54e03 100644 --- a/Tools/CMake/libraries/opcode.cmake +++ b/Tools/CMake/libraries/opcode.cmake @@ -3,7 +3,7 @@ project(opcode) addPath("${libDir}/${PROJECT_NAME}") addPath("${libDir}/${PROJECT_NAME}/Ice") -addStaticLib() - addDef(TORQUE_OPCODE) addDef(ICE_NO_DLL) + +finishLibrary() diff --git a/Tools/CMake/libraries/pcre.cmake b/Tools/CMake/libraries/pcre.cmake index 0f86b50b2..c060fbdec 100644 --- a/Tools/CMake/libraries/pcre.cmake +++ b/Tools/CMake/libraries/pcre.cmake @@ -1,8 +1,10 @@ project(pcre) -addStaticLib("${libDir}/pcre") - addDef(PCRE_STATIC) addDef(HAVE_CONFIG_H) -set_property(TARGET pcre PROPERTY COMPILE_FLAGS /TP) #/TP = compile as C++ +finishLibrary("${libDir}/pcre") + +if(WIN32) + set_property(TARGET pcre PROPERTY COMPILE_FLAGS /TP) #/TP = compile as C++ +endif() \ No newline at end of file diff --git a/Tools/CMake/libraries/library_recast.cmake b/Tools/CMake/libraries/recast.cmake similarity index 50% rename from Tools/CMake/libraries/library_recast.cmake rename to Tools/CMake/libraries/recast.cmake index 677459606..cf0f4ff96 100644 --- a/Tools/CMake/libraries/library_recast.cmake +++ b/Tools/CMake/libraries/recast.cmake @@ -9,10 +9,10 @@ addPathRec( "${libDir}/recast/DetourCrowd/Source" ) addPathRec( "${libDir}/recast/DetourTileCache/Source" ) # Additional includes -include_directories( "${libDir}/recast/DebugUtils/Include" ) -include_directories( "${libDir}/recast/Recast/Include" ) -include_directories( "${libDir}/recast/Detour/Include" ) -include_directories( "${libDir}/recast/DetourTileCache/Include" ) -include_directories( "${libDir}/recast/DetourCrowd/Include" ) +addInclude( "${libDir}/recast/DebugUtils/Include" ) +addInclude( "${libDir}/recast/Recast/Include" ) +addInclude( "${libDir}/recast/Detour/Include" ) +addInclude( "${libDir}/recast/DetourTileCache/Include" ) +addInclude( "${libDir}/recast/DetourCrowd/Include" ) -addStaticLib() \ No newline at end of file +finishLibrary() \ No newline at end of file diff --git a/Tools/CMake/libraries/squish.cmake b/Tools/CMake/libraries/squish.cmake index acc3332bc..5b38bd8e7 100644 --- a/Tools/CMake/libraries/squish.cmake +++ b/Tools/CMake/libraries/squish.cmake @@ -1,3 +1,3 @@ project(squish) -addStaticLib("${libDir}/${PROJECT_NAME}") +finishLibrary("${libDir}/${PROJECT_NAME}") diff --git a/Tools/CMake/libraries/tinyxml.cmake b/Tools/CMake/libraries/tinyxml.cmake index c17dfbba1..1b59d54a8 100644 --- a/Tools/CMake/libraries/tinyxml.cmake +++ b/Tools/CMake/libraries/tinyxml.cmake @@ -1,3 +1,3 @@ project(tinyxml) -addStaticLib("${libDir}/${PROJECT_NAME}") +finishLibrary("${libDir}/${PROJECT_NAME}") diff --git a/Tools/CMake/libraries/zlib.cmake b/Tools/CMake/libraries/zlib.cmake index 6df47de04..7c5397b09 100644 --- a/Tools/CMake/libraries/zlib.cmake +++ b/Tools/CMake/libraries/zlib.cmake @@ -1,3 +1,3 @@ project(zlib) -addStaticLib("${libDir}/${PROJECT_NAME}") +finishLibrary("${libDir}/${PROJECT_NAME}") diff --git a/Tools/CMake/modules/module_hydra.cmake b/Tools/CMake/modules/module_hydra.cmake index a3139e6c2..2ef5c97bd 100644 --- a/Tools/CMake/modules/module_hydra.cmake +++ b/Tools/CMake/modules/module_hydra.cmake @@ -4,7 +4,7 @@ addPathRec( "${srcDir}/platform/input/razerHydra" ) # Includes -include_directories( "${TORQUE_RAZERHYDRA_SDK_PATH}/include" ) +addInclude( "${TORQUE_RAZERHYDRA_SDK_PATH}/include" ) # Install if( WIN32 ) diff --git a/Tools/CMake/modules/module_navigation.cmake b/Tools/CMake/modules/module_navigation.cmake index 512ed42f3..d25d7adad 100644 --- a/Tools/CMake/modules/module_navigation.cmake +++ b/Tools/CMake/modules/module_navigation.cmake @@ -1,16 +1,15 @@ # Navigation module -addRequiredDefinition( "TORQUE_NAVIGATION_ENABLED" ) -addRequiredLibrary( "libraries/library_recast.cmake" ) -addRequiredLink( "recast" ) +addDef( "TORQUE_NAVIGATION_ENABLED" ) +addLib( "recast" ) # files addPathRec( "${srcDir}/navigation" ) # include paths -include_directories( "${libDir}/recast/DebugUtils/Include" ) -include_directories( "${libDir}/recast/Recast/Include" ) -include_directories( "${libDir}/recast/Detour/Include" ) -include_directories( "${libDir}/recast/DetourTileCache/Include" ) -include_directories( "${libDir}/recast/DetourCrowd/Include" ) +addInclude( "${libDir}/recast/DebugUtils/Include" ) +addInclude( "${libDir}/recast/Recast/Include" ) +addInclude( "${libDir}/recast/Detour/Include" ) +addInclude( "${libDir}/recast/DetourTileCache/Include" ) +addInclude( "${libDir}/recast/DetourCrowd/Include" ) diff --git a/Tools/CMake/modules/module_oculusVR.cmake b/Tools/CMake/modules/module_oculusVR.cmake index 044154f7c..45f9b780f 100644 --- a/Tools/CMake/modules/module_oculusVR.cmake +++ b/Tools/CMake/modules/module_oculusVR.cmake @@ -4,12 +4,12 @@ addPathRec( "${srcDir}/platform/input/oculusVR" ) # Includes -include_directories( "${TORQUE_OCULUSVR_SDK_PATH}/LibOVR/Include" ) -include_directories( "${TORQUE_OCULUSVR_SDK_PATH}/LibOVR/Src" ) +addInclude( "${TORQUE_OCULUSVR_SDK_PATH}/LibOVR/Include" ) +addInclude( "${TORQUE_OCULUSVR_SDK_PATH}/LibOVR/Src" ) # Libs if( WIN32 ) link_directories( "${TORQUE_OCULUSVR_SDK_PATH}/LibOVR/Lib/Win32" ) - addRequiredLink( "libovr.lib" ) - addRequiredLink( "libovrd.lib" ) + addLib( "libovr" ) + addLib( "libovrd" ) endif() \ No newline at end of file diff --git a/Tools/CMake/template.cmake b/Tools/CMake/template.cmake index 8040cddb0..52faefe0e 100644 --- a/Tools/CMake/template.cmake +++ b/Tools/CMake/template.cmake @@ -4,14 +4,11 @@ # 1st thing: the project name project(pcre) -# 2nd: add the paths where the source code is +# add the paths where the source code is addPath("${libDir}/pcre") addPathRec("${libDir}/pcre") -# 3rd: add addStaticLib() -addStaticLib() - # then add definitions addDef(PCRE_STATIC) addDef(HAVE_CONFIG_H) @@ -19,3 +16,6 @@ addDef(HAVE_CONFIG_H) # and maybe more include paths addInclude(${libDir}/libvorbis/include) addInclude(${libDir}/libogg/include) + +# finally: add finishLibrary() +finishLibrary() diff --git a/Tools/CMake/torque3d.cmake b/Tools/CMake/torque3d.cmake index 1e9fb9bf6..fcc24bad5 100644 --- a/Tools/CMake/torque3d.cmake +++ b/Tools/CMake/torque3d.cmake @@ -7,12 +7,12 @@ project(${TORQUE_APP_NAME}) ############################################################################### option(TORQUE_SFX_VORBIS "Vorbis Sound" ON) mark_as_advanced(TORQUE_SFX_VORBIS) +option(TORQUE_THEORA "Theora Video Support" ON) +mark_as_advanced(TORQUE_THEORA) option(TORQUE_ADVANCED_LIGHTING "Advanced Lighting" ON) mark_as_advanced(TORQUE_ADVANCED_LIGHTING) option(TORQUE_BASIC_LIGHTING "Basic Lighting" ON) mark_as_advanced(TORQUE_BASIC_LIGHTING) -option(TORQUE_THEORA "Theora Video Support" ON) -mark_as_advanced(TORQUE_THEORA) option(TORQUE_SFX_DirectX "DirectX Sound" ON) mark_as_advanced(TORQUE_SFX_DirectX) option(TORQUE_SFX_OPENAL "OpenAL Sound" ON) @@ -199,14 +199,17 @@ if(TORQUE_ADVANCED_LIGHTING) addPathRec("${srcDir}/lighting/shadowMap") addPathRec("${srcDir}/lighting/advanced/hlsl") #addPathRec("${srcDir}/lighting/advanced/glsl") + addDef(TORQUE_ADVANCED_LIGHTING) endif() if(TORQUE_BASIC_LIGHTING) addPathRec("${srcDir}/lighting/basic") addPathRec("${srcDir}/lighting/shadowMap") + addDef(TORQUE_BASIC_LIGHTING) endif() # DirectX Sound if(TORQUE_SFX_DirectX) + addLib(x3daudio.lib) addPathRec("${srcDir}/sfx/dsound") addPathRec("${srcDir}/sfx/xaudio") endif() @@ -216,6 +219,15 @@ if(TORQUE_SFX_OPENAL) addPath("${srcDir}/sfx/openal") #addPath("${srcDir}/sfx/openal/mac") addPath("${srcDir}/sfx/openal/win32") + addInclude("${libDir}/openal/win32") +endif() + +# Vorbis +if(TORQUE_SFX_VORBIS) + addInclude(${libDir}/libvorbis/include) + addDef(TORQUE_OGGVORBIS) + addLib(libvorbis) + addLib(libogg) endif() # Theora @@ -223,6 +235,11 @@ if(TORQUE_THEORA) addPath("${srcDir}/core/ogg") addPath("${srcDir}/gfx/video") addPath("${srcDir}/gui/theora") + + addDef(TORQUE_OGGTHEORA) + addDef(TORQUE_OGGVORIBS) + addInclude(${libDir}/libtheora/include) + addLib(libtheora) endif() # Include tools for non-tool builds (or define player if a tool build) @@ -236,10 +253,12 @@ endif() if(TORQUE_HIFI) addPath("${srcDir}/T3D/gameBase/hifi") + addDef(TORQUE_HIFI_NET) endif() if(TORQUE_EXTENDED_MOVE) addPath("${srcDir}/T3D/gameBase/extended") + addDef(TORQUE_EXTENDED_MOVE) else() addPath("${srcDir}/T3D/gameBase/std") endif() @@ -337,7 +356,7 @@ endif() ############################################################################### ############################################################################### -addExecutable() +finishExecutable() ############################################################################### ############################################################################### @@ -356,15 +375,15 @@ if(EXISTS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/main.cs.in" AND CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/main.cs.in" "${projectOutDir}/main.cs") endif() if(WIN32) - if(NOT EXISTS "${projectSrcDir}/torque.rc") - CONFIGURE_FILE("${cmakeDir}/torque-win.rc.in" "${projectSrcDir}/torque.rc") - endif() - if(NOT EXISTS "${projectOutDir}/${PROJECT_NAME}-debug.bat") - CONFIGURE_FILE("${cmakeDir}/app-debug-win.bat.in" "${projectOutDir}/${PROJECT_NAME}-debug.bat") - endif() - if(NOT EXISTS "${projectOutDir}/cleanup.bat") - CONFIGURE_FILE("${cmakeDir}/cleanup-win.bat.in" "${projectOutDir}/cleanup.bat") - endif() + if(NOT EXISTS "${projectSrcDir}/torque.rc") + CONFIGURE_FILE("${cmakeDir}/torque-win.rc.in" "${projectSrcDir}/torque.rc") + endif() + if(NOT EXISTS "${projectOutDir}/${PROJECT_NAME}-debug.bat") + CONFIGURE_FILE("${cmakeDir}/app-debug-win.bat.in" "${projectOutDir}/${PROJECT_NAME}-debug.bat") + endif() + if(NOT EXISTS "${projectOutDir}/cleanup.bat") + CONFIGURE_FILE("${cmakeDir}/cleanup-win.bat.in" "${projectOutDir}/cleanup.bat") + endif() endif() ############################################################################### @@ -384,18 +403,17 @@ addLib(convexDecomp) if(WIN32) # copy pasted from T3D build system, some might not be needed - set(TORQUE_EXTERNAL_LIBS "COMCTL32.LIB;COMDLG32.LIB;USER32.LIB;ADVAPI32.LIB;GDI32.LIB;WINMM.LIB;WSOCK32.LIB;vfw32.lib;Imm32.lib;d3d9.lib;d3dx9.lib;DxErr.lib;ole32.lib;shell32.lib;oleaut32.lib;version.lib" CACHE STRING "external libs to link against") - mark_as_advanced(TORQUE_EXTERNAL_LIBS) + set(TORQUE_EXTERNAL_LIBS "COMCTL32.LIB;COMDLG32.LIB;USER32.LIB;ADVAPI32.LIB;GDI32.LIB;WINMM.LIB;WSOCK32.LIB;vfw32.lib;Imm32.lib;d3d9.lib;d3dx9.lib;DxErr.lib;ole32.lib;shell32.lib;oleaut32.lib;version.lib" CACHE STRING "external libs to link against") + mark_as_advanced(TORQUE_EXTERNAL_LIBS) addLib("${TORQUE_EXTERNAL_LIBS}") endif() ############################################################################### # Always enabled Definitions ############################################################################### -addDebugDef(TORQUE_DEBUG) -addDebugDef(TORQUE_ENABLE_ASSERTS) -addDebugDef(TORQUE_DEBUG_GFX_MODE) - +addDef(TORQUE_DEBUG DEBUG) +addDef(TORQUE_ENABLE_ASSERTS "DEBUG;RelWithDebInfo") +addDef(TORQUE_DEBUG_GFX_MODE "RelWithDebInfo") addDef(TORQUE_SHADERGEN) addDef(INITGUID) addDef(NTORQUE_SHARED) @@ -413,46 +431,6 @@ addDef(PCRE_STATIC) addDef(_CRT_SECURE_NO_WARNINGS) addDef(_CRT_SECURE_NO_DEPRECATE) - -############################################################################### -# Modules -############################################################################### -if(TORQUE_SFX_DirectX) - addLib(x3daudio.lib) -endif() - -if(TORQUE_ADVANCED_LIGHTING) - addDef(TORQUE_ADVANCED_LIGHTING) -endif() -if(TORQUE_BASIC_LIGHTING) - addDef(TORQUE_BASIC_LIGHTING) -endif() - -if(TORQUE_SFX_OPENAL) - addInclude("${libDir}/openal/win32") -endif() - -if(TORQUE_SFX_VORBIS) - addInclude(${libDir}/libvorbis/include) - addDef(TORQUE_OGGVORBIS) - addLib(libvorbis) - addLib(libogg) -endif() - -if(TORQUE_THEORA) - addDef(TORQUE_OGGTHEORA) - addDef(TORQUE_OGGVORIBS) - addInclude(${libDir}/libtheora/include) - addLib(libtheora) -endif() - -if(TORQUE_HIFI) - addDef(TORQUE_HIFI_NET) -endif() -if(TORQUE_EXTENDED_MOVE) - addDef(TORQUE_EXTENDED_MOVE) -endif() - ############################################################################### # Include Paths ############################################################################### From 17bd69e659e393546aea9d0b76671060dba3bff5 Mon Sep 17 00:00:00 2001 From: LuisAntonRebollo Date: Mon, 2 Jun 2014 02:15:55 +0200 Subject: [PATCH 3/5] CMake changes for dedicated builds. --- Tools/CMake/basics.cmake | 9 +- Tools/CMake/libraries/convexDecomp.cmake | 4 + Tools/CMake/libraries/libtheora.cmake | 14 ++- Tools/CMake/libraries/libvorbis.cmake | 4 + Tools/CMake/torque3d.cmake | 128 +++++++++++++++++++---- 5 files changed, 138 insertions(+), 21 deletions(-) diff --git a/Tools/CMake/basics.cmake b/Tools/CMake/basics.cmake index 2b4ff0278..f1da3e2bf 100644 --- a/Tools/CMake/basics.cmake +++ b/Tools/CMake/basics.cmake @@ -39,7 +39,8 @@ macro(addPath dir) ${dir}/*.cpp ${dir}/*.c ${dir}/*.cc - ${dir}/*.h) + ${dir}/*.h + ${dir}/*.asm) LIST(APPEND ${PROJECT_NAME}_files "${tmp_files}") LIST(APPEND ${PROJECT_NAME}_paths "${dir}") #message(STATUS "addPath ${PROJECT_NAME} : ${tmp_files}") @@ -351,6 +352,12 @@ else() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS}") endif() +if(UNIX) + SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${projectOutDir}") + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${projectOutDir}") + SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${projectOutDir}") + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${projectOutDir}") +endif() # fix the debug/release subfolders on windows if(MSVC) diff --git a/Tools/CMake/libraries/convexDecomp.cmake b/Tools/CMake/libraries/convexDecomp.cmake index 3b02db6df..3cb4c2950 100644 --- a/Tools/CMake/libraries/convexDecomp.cmake +++ b/Tools/CMake/libraries/convexDecomp.cmake @@ -1,3 +1,7 @@ project(convexDecomp) +if(UNIX) + addDef(LINUX) +endif() + finishLibrary("${libDir}/convexDecomp") diff --git a/Tools/CMake/libraries/libtheora.cmake b/Tools/CMake/libraries/libtheora.cmake index 023176aa4..3a95275dd 100644 --- a/Tools/CMake/libraries/libtheora.cmake +++ b/Tools/CMake/libraries/libtheora.cmake @@ -1,6 +1,18 @@ project(libtheora) -addPathRec("${libDir}/libtheora") +addPath( "${libDir}/libtheora" ) +addPathRec( "${libDir}/libtheora/include" ) +addPath( "${libDir}/libtheora/lib" ) +addPath( "${libDir}/libtheora/lib/dec" ) +addPath( "${libDir}/libtheora/lib/enc" ) + +if(WIN32) + addPath( "${libDir}/libtheora/lib/dec/x86_vc" ) + addPath( "${libDir}/libtheora/lib/enc/x86_32_vs" ) +else() + addPath( "${libDir}/libtheora/lib/dec/x86" ) + addPath( "${libDir}/libtheora/lib/enc/x86_32" ) +endif() addDef(TORQUE_OGGTHEORA) addDef(TORQUE_OGGVORIBS) diff --git a/Tools/CMake/libraries/libvorbis.cmake b/Tools/CMake/libraries/libvorbis.cmake index 5fe0248af..01d71a675 100644 --- a/Tools/CMake/libraries/libvorbis.cmake +++ b/Tools/CMake/libraries/libvorbis.cmake @@ -6,4 +6,8 @@ addDef(TORQUE_OGGVORBIS) addInclude(${libDir}/libvorbis/include) addInclude(${libDir}/libogg/include) +if(UNIX) + addInclude(${libDir}/libvorbis/lib) +endif() + finishLibrary() diff --git a/Tools/CMake/torque3d.cmake b/Tools/CMake/torque3d.cmake index fcc24bad5..c17009c1d 100644 --- a/Tools/CMake/torque3d.cmake +++ b/Tools/CMake/torque3d.cmake @@ -1,5 +1,16 @@ project(${TORQUE_APP_NAME}) +if(UNIX) + # default compiler flags + # force compile 32 bit + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32 -Wall -Wundef -msse -pipe -Wfatal-errors ${TORQUE_ADDITIONAL_LINKER_FLAGS}") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32 -Wall -Wundef -msse -pipe -Wfatal-errors ${TORQUE_ADDITIONAL_LINKER_FLAGS}") + + # for asm files + SET (CMAKE_ASM_NASM_OBJECT_FORMAT "elf") + ENABLE_LANGUAGE (ASM_NASM) +endif() + # TODO: fmod support ############################################################################### @@ -13,8 +24,12 @@ option(TORQUE_ADVANCED_LIGHTING "Advanced Lighting" ON) mark_as_advanced(TORQUE_ADVANCED_LIGHTING) option(TORQUE_BASIC_LIGHTING "Basic Lighting" ON) mark_as_advanced(TORQUE_BASIC_LIGHTING) -option(TORQUE_SFX_DirectX "DirectX Sound" ON) -mark_as_advanced(TORQUE_SFX_DirectX) +if(WIN32) + option(TORQUE_SFX_DirectX "DirectX Sound" ON) + mark_as_advanced(TORQUE_SFX_DirectX) +else() + set(TORQUE_SFX_DirectX OFF) +endif() option(TORQUE_SFX_OPENAL "OpenAL Sound" ON) mark_as_advanced(TORQUE_SFX_OPENAL) option(TORQUE_HIFI "HIFI? support" OFF) @@ -23,6 +38,13 @@ option(TORQUE_EXTENDED_MOVE "Extended move support" OFF) mark_as_advanced(TORQUE_EXTENDED_MOVE) option(TORQUE_NAVIGATION "Enable Navigation module" OFF) #mark_as_advanced(TORQUE_NAVIGATION) +if(WIN32) + option(TORQUE_OPENGL "Allow OpenGL render" OFF) + #mark_as_advanced(TORQUE_OPENGL) +else() + set(TORQUE_OPENGL ON) # we need OpenGL to render on Linux/Mac + option(TORQUE_DEDICATED "Torque dedicated" OFF) +endif() #Oculus VR option(TORQUE_OCULUSVR "Enable OCULUSVR module" OFF) @@ -45,10 +67,18 @@ endif() ############################################################################### # options ############################################################################### +if(NOT MSVC) # handle single-configuration generator + set(TORQUE_BUILD_TYPE "Debug" CACHE STRING "Select one of Debug, Release and RelWithDebInfo") + set_property(CACHE TORQUE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo") + + set(TORQUE_ADDITIONAL_LINKER_FLAGS "" CACHE STRING "Additional linker flags") + mark_as_advanced(TORQUE_ADDITIONAL_LINKER_FLAGS) +endif() + option(TORQUE_MULTITHREAD "Multi Threading" ON) mark_as_advanced(TORQUE_MULTITHREAD) -option(TORQUE_DISABLE_MEMORY_MANAGER "Disable memory manager" OFF) +option(TORQUE_DISABLE_MEMORY_MANAGER "Disable memory manager" ON) mark_as_advanced(TORQUE_DISABLE_MEMORY_MANAGER) option(TORQUE_DISABLE_VIRTUAL_MOUNT_SYSTEM "Disable virtual mount system" OFF) @@ -130,7 +160,9 @@ addPath("${srcDir}/math/test") addPath("${srcDir}/platform") addPath("${srcDir}/cinterface") addPath("${srcDir}/platform/nativeDialogs") -addPath("${srcDir}/platform/menus") +if( NOT TORQUE_DEDICATED ) + addPath("${srcDir}/platform/menus") +endif() addPath("${srcDir}/platform/test") addPath("${srcDir}/platform/threads") addPath("${srcDir}/platform/async") @@ -197,8 +229,12 @@ addPathRec("${projectSrcDir}") if(TORQUE_ADVANCED_LIGHTING) addPath("${srcDir}/lighting/advanced") addPathRec("${srcDir}/lighting/shadowMap") - addPathRec("${srcDir}/lighting/advanced/hlsl") - #addPathRec("${srcDir}/lighting/advanced/glsl") + if(WIN32) + addPathRec("${srcDir}/lighting/advanced/hlsl") + endif() + if(TORQUE_OPENGL) + addPathRec("${srcDir}/lighting/advanced/glsl") + endif() addDef(TORQUE_ADVANCED_LIGHTING) endif() if(TORQUE_BASIC_LIGHTING) @@ -215,11 +251,17 @@ if(TORQUE_SFX_DirectX) endif() # OpenAL -if(TORQUE_SFX_OPENAL) +if(TORQUE_SFX_OPENAL AND NOT TORQUE_DEDICATED) addPath("${srcDir}/sfx/openal") #addPath("${srcDir}/sfx/openal/mac") - addPath("${srcDir}/sfx/openal/win32") - addInclude("${libDir}/openal/win32") + if(WIN32) + addPath("${srcDir}/sfx/openal/win32") + addInclude("${libDir}/openal/win32") + endif() + if(UNIX) + addPath("${srcDir}/sfx/openal/linux") + endif() + endif() # Vorbis @@ -275,6 +317,15 @@ if(TORQUE_HYDRA) include( "modules/module_hydra.cmake" ) endif() +if(TORQUE_DISABLE_MEMORY_MANAGER) + addDef(TORQUE_DISABLE_MEMORY_MANAGER) +endif() + +if(TORQUE_DEDICATED) + addDef(TORQUE_DEDICATED) +endif() + + ############################################################################### # platform specific things ############################################################################### @@ -339,19 +390,40 @@ if(PS3) endif() if(UNIX) - # linux_dedicated - addPath("${srcDir}/windowManager/dedicated") - # linux - addPath("${srcDir}/platformX86UNIX") + if(TORQUE_DEDICATED) + addPath("${srcDir}/windowManager/dedicated") + # ${srcDir}/platformX86UNIX/*.client.* files are not needed + # @todo: move to separate file + file( GLOB tmp_files + ${srcDir}/platformX86UNIX/*.cpp + ${srcDir}/platformX86UNIX/*.c + ${srcDir}/platformX86UNIX/*.cc + ${srcDir}/platformX86UNIX/*.h ) + file( GLOB tmp_remove_files ${srcDir}/platformX86UNIX/*client.* ) + LIST( REMOVE_ITEM tmp_files ${tmp_remove_files} ) + foreach( f ${tmp_files} ) + addFile( ${f} ) + endforeach() + else() + addPath("${srcDir}/platformX86UNIX") + endif() + addPath("${srcDir}/platformX86UNIX/threads") addPath("${srcDir}/platformPOSIX") - addPath("${srcDir}/gfx/gl") - addPath("${srcDir}/gfx/gl/ggl") - addPath("${srcDir}/gfx/gl/ggl/x11") # This one is not yet implemented! - addPath("${srcDir}/gfx/gl/ggl/generated") +endif() + +if( TORQUE_OPENGL ) addPath("${srcDir}/shaderGen/GLSL") - addPath("${srcDir}/terrain/glsl") - addPath("${srcDir}/forest/glsl") + if( TORQUE_OPENGL AND NOT TORQUE_DEDICATED ) + addPath("${srcDir}/gfx/gl") + addPath("${srcDir}/gfx/gl/tGL") + addPath("${srcDir}/terrain/glsl") + addPath("${srcDir}/forest/glsl") + endif() + + if(WIN32 AND NOT TORQUE_SDL) + addPath("${srcDir}/gfx/gl/win32") + endif() endif() ############################################################################### @@ -408,6 +480,15 @@ if(WIN32) addLib("${TORQUE_EXTERNAL_LIBS}") endif() +if(UNIX) + # copy pasted from T3D build system, some might not be needed + set(TORQUE_EXTERNAL_LIBS "dl Xxf86vm Xext X11 Xft stdc++ pthread GL" CACHE STRING "external libs to link against") + mark_as_advanced(TORQUE_EXTERNAL_LIBS) + + string(REPLACE " " ";" TORQUE_EXTERNAL_LIBS_LIST ${TORQUE_EXTERNAL_LIBS}) + addLib( "${TORQUE_EXTERNAL_LIBS_LIST}" ) +endif() + ############################################################################### # Always enabled Definitions ############################################################################### @@ -431,6 +512,10 @@ addDef(PCRE_STATIC) addDef(_CRT_SECURE_NO_WARNINGS) addDef(_CRT_SECURE_NO_DEPRECATE) +if(UNIX) + addDef(LINUX) +endif() + ############################################################################### # Include Paths ############################################################################### @@ -455,6 +540,11 @@ if(WIN32) set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY INCLUDE_DIRECTORIES $ENV{DXSDK_DIR}/Include) endif() +if(UNIX) + addInclude("/usr/include/freetype2/freetype") + addInclude("/usr/include/freetype2") +endif() + ############################################################################### # Installation ############################################################################### From 82bb19e1b51456953cd0f815bca959676f0ebbbf Mon Sep 17 00:00:00 2001 From: LuisAntonRebollo Date: Mon, 5 May 2014 19:57:04 +0200 Subject: [PATCH 4/5] Fix for error on Clang compiler: reinterpret_cast from 'const void *' to 'FunctionType *' (aka 'void (*)(EngineObject *, const char *, const char *)') casts away qualifiers return R( reinterpret_cast< FunctionType const* >( /*const_cast*/(mFn) )( mThis, a, b ) ); --- Engine/source/console/engineAPI.h | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Engine/source/console/engineAPI.h b/Engine/source/console/engineAPI.h index d8b27ea82..2923c8bb4 100644 --- a/Engine/source/console/engineAPI.h +++ b/Engine/source/console/engineAPI.h @@ -2533,79 +2533,79 @@ struct _EngineCallbackHelper R call() const { typedef R( FunctionType )( EngineObject* ); - return R( reinterpret_cast< FunctionType* >( mFn )( mThis ) ); + return R( reinterpret_cast< FunctionType* >( const_cast(mFn) )( mThis ) ); } template< typename R, typename A > R call( A a ) const { typedef R( FunctionType )( EngineObject*, A ); - return R( reinterpret_cast< FunctionType* >( mFn )( mThis, a ) ); + return R( reinterpret_cast< FunctionType* >( const_cast(mFn) )( mThis, a ) ); } template< typename R, typename A, typename B > R call( A a, B b ) const { typedef R( FunctionType )( EngineObject*, A, B ); - return R( reinterpret_cast< FunctionType* >( mFn )( mThis, a, b ) ); + return R( reinterpret_cast< FunctionType* >( const_cast(mFn) )( mThis, a, b ) ); } template< typename R, typename A, typename B, typename C > R call( A a, B b, C c ) const { typedef R( FunctionType )( EngineObject*, A, B, C ); - return R( reinterpret_cast< FunctionType* >( mFn )( mThis, a, b, c ) ); + return R( reinterpret_cast< FunctionType* >( const_cast(mFn) )( mThis, a, b, c ) ); } template< typename R, typename A, typename B, typename C, typename D > R call( A a, B b, C c, D d ) const { typedef R( FunctionType )( EngineObject*, A, B, C, D ); - return R( reinterpret_cast< FunctionType* >( mFn )( mThis, a, b, c, d ) ); + return R( reinterpret_cast< FunctionType* >( const_cast(mFn) )( mThis, a, b, c, d ) ); } template< typename R, typename A, typename B, typename C, typename D, typename E > R call( A a, B b, C c, D d, E e ) const { typedef R( FunctionType )( EngineObject*, A, B, C, D, E ); - return R( reinterpret_cast< FunctionType* >( mFn )( mThis, a, b, c, d, e ) ); + return R( reinterpret_cast< FunctionType* >( const_cast(mFn) )( mThis, a, b, c, d, e ) ); } template< typename R, typename A, typename B, typename C, typename D, typename E, typename F > R call( A a, B b, C c, D d, E e, F f ) const { typedef R( FunctionType )( EngineObject*, A, B, C, D, E, F ); - return R( reinterpret_cast< FunctionType* >( mFn )( mThis, a, b, c, d, e, f ) ); + return R( reinterpret_cast< FunctionType* >( const_cast(mFn) )( mThis, a, b, c, d, e, f ) ); } template< typename R, typename A, typename B, typename C, typename D, typename E, typename F, typename G > R call( A a, B b, C c, D d, E e, F f, G g ) const { typedef R( FunctionType )( EngineObject*, A, B, C, D, E, F, G ); - return R( reinterpret_cast< FunctionType* >( mFn )( mThis, a, b, c, d, e, f, g ) ); + return R( reinterpret_cast< FunctionType* >( const_cast(mFn) )( mThis, a, b, c, d, e, f, g ) ); } template< typename R, typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H > R call( A a, B b, C c, D d, E e, F f, G g, H h ) const { typedef R( FunctionType )( EngineObject*, A, B, C, D, E, F, G, H ); - return R( reinterpret_cast< FunctionType* >( mFn )( mThis, a, b, c, d, e, f, g, h ) ); + return R( reinterpret_cast< FunctionType* >( const_cast(mFn) )( mThis, a, b, c, d, e, f, g, h ) ); } template< typename R, typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I > R call( A a, B b, C c, D d, E e, F f, G g, H h, I i ) const { typedef R( FunctionType )( EngineObject*, A, B, C, D, E, F, G, H, I ); - return R( reinterpret_cast< FunctionType* >( mFn )( mThis, a, b, c, d, e, f, g, h, i ) ); + return R( reinterpret_cast< FunctionType* >( const_cast(mFn) )( mThis, a, b, c, d, e, f, g, h, i ) ); } template< typename R, typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I, typename J > R call( A a, B b, C c, D d, E e, F f, G g, H h, I i, J j ) const { typedef R( FunctionType )( EngineObject*, A, B, C, D, E, F, G, H, I, J ); - return R( reinterpret_cast< FunctionType* >( mFn )( mThis, a, b, c, d, e, f, g, h, i, j ) ); + return R( reinterpret_cast< FunctionType* >( const_cast(mFn) )( mThis, a, b, c, d, e, f, g, h, i, j ) ); } template< typename R, typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I, typename J, typename K > R call( A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k ) const { typedef R( FunctionType )( EngineObject*, A, B, C, D, E, F, G, H, I, J, K ); - return R( reinterpret_cast< FunctionType* >( mFn )( mThis, a, b, c, d, e, f, g, h, i, j, k ) ); + return R( reinterpret_cast< FunctionType* >( const_cast(mFn) )( mThis, a, b, c, d, e, f, g, h, i, j, k ) ); } template< typename R, typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I, typename J, typename K, typename L > R call( A a, B b, C c, D d, E e, F f, G g, H h, I i, J j, K k, L l ) const { typedef R( FunctionType )( EngineObject*, A, B, C, D, E, F, G, H, I, J, K, L l ); - return R( reinterpret_cast< FunctionType* >( mFn )( mThis, a, b, c, d, e, f, g, h, i, j, k, l ) ); + return R( reinterpret_cast< FunctionType* >( const_cast(mFn) )( mThis, a, b, c, d, e, f, g, h, i, j, k, l ) ); } }; From 1f085a8cd210dd5337922f68739a07f21878e226 Mon Sep 17 00:00:00 2001 From: LuisAntonRebollo Date: Mon, 5 May 2014 19:58:55 +0200 Subject: [PATCH 5/5] Fix error on Clang compiler: 'ival' is a protected member of 'Dictionary::Entry' --- Engine/source/console/consoleInternal.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Engine/source/console/consoleInternal.h b/Engine/source/console/consoleInternal.h index 0a9c9060e..07c336d98 100644 --- a/Engine/source/console/consoleInternal.h +++ b/Engine/source/console/consoleInternal.h @@ -311,6 +311,8 @@ public: // NOTE: This is protected to ensure no one outside // of this structure is messing with it. + friend class Dictionary; + #pragma warning( push ) #pragma warning( disable : 4201 ) // warning C4201: nonstandard extension used : nameless struct/union