From 82a36d8a323e51c2e665f8fa13e17cfbbee32330 Mon Sep 17 00:00:00 2001 From: LuisAntonRebollo Date: Mon, 19 May 2014 20:23:31 +0200 Subject: [PATCH 1/7] Add support for modules and libraries to CMake. --- Tools/CMake/basics.cmake | 53 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/Tools/CMake/basics.cmake b/Tools/CMake/basics.cmake index 16e7ed27c..7c1df5d8c 100644 --- a/Tools/CMake/basics.cmake +++ b/Tools/CMake/basics.cmake @@ -73,6 +73,53 @@ macro(addLib lib) target_link_libraries(${PROJECT_NAME} "${lib}") 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} ) +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}) @@ -146,6 +193,9 @@ macro(addStaticLib) #foreach(dir ${${PROJECT_NAME}_paths}) addInclude("${firstDir}") #endforeach() + + _processProjectLinks() + _processProjectLibrary() endmacro() # macro to add an executable @@ -161,6 +211,9 @@ macro(addExecutable) 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() endmacro() macro(setupVersionNumbers) From dca11afded13d593ff90b068cff799a14c74afe2 Mon Sep 17 00:00:00 2001 From: LuisAntonRebollo Date: Mon, 19 May 2014 22:15:22 +0200 Subject: [PATCH 2/7] Add support for CMake "required definitions" to modules and libraries. --- Tools/CMake/basics.cmake | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/Tools/CMake/basics.cmake b/Tools/CMake/basics.cmake index 7c1df5d8c..7dc4a5d81 100644 --- a/Tools/CMake/basics.cmake +++ b/Tools/CMake/basics.cmake @@ -61,6 +61,32 @@ macro(addDebugDef def) set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG "${def}") 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} ) +endmacro() + +# add definitions to project +macro( _processProjectDefinition ) + foreach( def ${${PROJECT_NAME}_required_definition} ) + addDef( ${def} ) + endforeach() + + foreach( def ${${PROJECT_NAME}_required_debug_definition} ) + addDef( ${def} ) + endforeach() + + #clear required defs + set( ${PROJECT_NAME}_required_definition ) + set( ${PROJECT_NAME}_required_debug_definition ) +endmacro() + # adds an include path macro(addInclude incPath) #message(STATUS "${PROJECT_NAME} : add include path : ${incPath}") @@ -196,6 +222,7 @@ macro(addStaticLib) _processProjectLinks() _processProjectLibrary() + _processProjectDefinition() endmacro() # macro to add an executable @@ -214,6 +241,7 @@ macro(addExecutable) _processProjectLinks() _processProjectLibrary() + _processProjectDefinition() endmacro() macro(setupVersionNumbers) From 9ba72e13d479a392613899d89b8cf5d54e919805 Mon Sep 17 00:00:00 2001 From: LuisAntonRebollo Date: Mon, 19 May 2014 22:15:44 +0200 Subject: [PATCH 3/7] CMake Navigation module. --- Tools/CMake/libraries/library_recast.cmake | 18 ++++++++++++++++++ Tools/CMake/modules/module_navigation.cmake | 15 +++++++++++++++ Tools/CMake/torque3d.cmake | 6 ++++++ 3 files changed, 39 insertions(+) create mode 100644 Tools/CMake/libraries/library_recast.cmake create mode 100644 Tools/CMake/modules/module_navigation.cmake diff --git a/Tools/CMake/libraries/library_recast.cmake b/Tools/CMake/libraries/library_recast.cmake new file mode 100644 index 000000000..677459606 --- /dev/null +++ b/Tools/CMake/libraries/library_recast.cmake @@ -0,0 +1,18 @@ +# Recast library +project(recast) + +# Source +addPathRec( "${libDir}/recast/DebugUtils/Source" ) +addPathRec( "${libDir}/recast/Recast/Source" ) +addPathRec( "${libDir}/recast/Detour/Source" ) +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" ) + +addStaticLib() \ No newline at end of file diff --git a/Tools/CMake/modules/module_navigation.cmake b/Tools/CMake/modules/module_navigation.cmake new file mode 100644 index 000000000..57c92ae77 --- /dev/null +++ b/Tools/CMake/modules/module_navigation.cmake @@ -0,0 +1,15 @@ +# Navigation module + +addRequiredDefinition( "TORQUE_NAVIGATION_ENABLED" ) +addRequiredLibrary( "libraries/library_recast.cmake" ) + +# 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" ) + diff --git a/Tools/CMake/torque3d.cmake b/Tools/CMake/torque3d.cmake index 06845ee22..72a876f06 100644 --- a/Tools/CMake/torque3d.cmake +++ b/Tools/CMake/torque3d.cmake @@ -21,6 +21,8 @@ option(TORQUE_HIFI "HIFI? support" OFF) mark_as_advanced(TORQUE_HIFI) 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) ############################################################################### # options @@ -224,6 +226,10 @@ else() addPath("${srcDir}/T3D/gameBase/std") endif() +if(TORQUE_NAVIGATION) + include( "modules/module_navigation.cmake" ) +endif() + ############################################################################### # platform specific things ############################################################################### From 80f31c0068ba56336d86806d9000619ae40a6f6f Mon Sep 17 00:00:00 2001 From: LuisAntonRebollo Date: Mon, 19 May 2014 22:43:48 +0200 Subject: [PATCH 4/7] CMake Oculus VR module. --- Tools/CMake/modules/module_oculusVR.cmake | 15 +++++++++++++++ Tools/CMake/torque3d.cmake | 13 +++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 Tools/CMake/modules/module_oculusVR.cmake diff --git a/Tools/CMake/modules/module_oculusVR.cmake b/Tools/CMake/modules/module_oculusVR.cmake new file mode 100644 index 000000000..044154f7c --- /dev/null +++ b/Tools/CMake/modules/module_oculusVR.cmake @@ -0,0 +1,15 @@ +# module OculusVR + +# Source +addPathRec( "${srcDir}/platform/input/oculusVR" ) + +# Includes +include_directories( "${TORQUE_OCULUSVR_SDK_PATH}/LibOVR/Include" ) +include_directories( "${TORQUE_OCULUSVR_SDK_PATH}/LibOVR/Src" ) + +# Libs +if( WIN32 ) + link_directories( "${TORQUE_OCULUSVR_SDK_PATH}/LibOVR/Lib/Win32" ) + addRequiredLink( "libovr.lib" ) + addRequiredLink( "libovrd.lib" ) +endif() \ No newline at end of file diff --git a/Tools/CMake/torque3d.cmake b/Tools/CMake/torque3d.cmake index 72a876f06..4b8cb3ffa 100644 --- a/Tools/CMake/torque3d.cmake +++ b/Tools/CMake/torque3d.cmake @@ -24,6 +24,15 @@ mark_as_advanced(TORQUE_EXTENDED_MOVE) option(TORQUE_NAVIGATION "Enable Navigation module" OFF) #mark_as_advanced(TORQUE_NAVIGATION) +#Oculus VR +option(TORQUE_OCULUSVR "Enable OCULUSVR module" OFF) +mark_as_advanced(TORQUE_OCULUSVR) +if(TORQUE_OCULUSVR) + set(TORQUE_OCULUSVR_SDK_PATH "" CACHE PATH "OCULUSVR library path" FORCE) +else() # hide variable + set(TORQUE_OCULUSVR_SDK_PATH "" CACHE INTERNAL "" FORCE) +endif() + ############################################################################### # options ############################################################################### @@ -230,6 +239,10 @@ if(TORQUE_NAVIGATION) include( "modules/module_navigation.cmake" ) endif() +if(TORQUE_OCULUSVR) + include( "modules/module_oculusVR.cmake" ) +endif() + ############################################################################### # platform specific things ############################################################################### From 2f7e5bfb7356b14d4152b366ea1a06021e95aae3 Mon Sep 17 00:00:00 2001 From: LuisAntonRebollo Date: Mon, 19 May 2014 22:55:38 +0200 Subject: [PATCH 5/7] CMake Razor Hydra module. --- Tools/CMake/modules/module_hydra.cmake | 19 +++++++++++++++++++ Tools/CMake/torque3d.cmake | 13 +++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 Tools/CMake/modules/module_hydra.cmake diff --git a/Tools/CMake/modules/module_hydra.cmake b/Tools/CMake/modules/module_hydra.cmake new file mode 100644 index 000000000..a3139e6c2 --- /dev/null +++ b/Tools/CMake/modules/module_hydra.cmake @@ -0,0 +1,19 @@ +# module OculusVR + +# Source +addPathRec( "${srcDir}/platform/input/razerHydra" ) + +# Includes +include_directories( "${TORQUE_RAZERHYDRA_SDK_PATH}/include" ) + +# Install +if( WIN32 ) + # File Copy for Release + INSTALL(FILES "${TORQUE_RAZERHYDRA_SDK_PATH}/bin/win32/release_dll/sixense.dll" DESTINATION "${projectOutDir}") + + # File Copy for Debug + INSTALL(FILES "${TORQUE_RAZERHYDRA_SDK_PATH}/bin/win32/debug_dll/sixensed.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS "Debug" ) + # Only needed by the debug sixense library + INSTALL(FILES "${TORQUE_RAZERHYDRA_SDK_PATH}/samples/win32/sixense_simple3d/DeviceDLL.dll" DESTINATION "${projectOutDir}" CONFIGURATIONS "Debug" ) +endif() + diff --git a/Tools/CMake/torque3d.cmake b/Tools/CMake/torque3d.cmake index 4b8cb3ffa..65ff16a4a 100644 --- a/Tools/CMake/torque3d.cmake +++ b/Tools/CMake/torque3d.cmake @@ -33,6 +33,15 @@ else() # hide variable set(TORQUE_OCULUSVR_SDK_PATH "" CACHE INTERNAL "" FORCE) endif() +#Hydra +option(TORQUE_HYDRA "Enable HYDRA module" OFF) +mark_as_advanced(TORQUE_HYDRA) +if(TORQUE_HYDRA) + set(TORQUE_HYDRA_SDK_PATH "" CACHE PATH "HYDRA library path" FORCE) +else() # hide variable + set(TORQUE_HYDRA_SDK_PATH "" CACHE INTERNAL "" FORCE) +endif() + ############################################################################### # options ############################################################################### @@ -243,6 +252,10 @@ if(TORQUE_OCULUSVR) include( "modules/module_oculusVR.cmake" ) endif() +if(TORQUE_HYDRA) + include( "modules/module_hydra.cmake" ) +endif() + ############################################################################### # platform specific things ############################################################################### From 7240c121fc7edce45696aa79e2290758d9b40c21 Mon Sep 17 00:00:00 2001 From: LuisAntonRebollo Date: Tue, 20 May 2014 00:12:31 +0200 Subject: [PATCH 6/7] Fix CMake Navigation module. --- Tools/CMake/modules/module_navigation.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/Tools/CMake/modules/module_navigation.cmake b/Tools/CMake/modules/module_navigation.cmake index 57c92ae77..512ed42f3 100644 --- a/Tools/CMake/modules/module_navigation.cmake +++ b/Tools/CMake/modules/module_navigation.cmake @@ -2,6 +2,7 @@ addRequiredDefinition( "TORQUE_NAVIGATION_ENABLED" ) addRequiredLibrary( "libraries/library_recast.cmake" ) +addRequiredLink( "recast" ) # files addPathRec( "${srcDir}/navigation" ) From 62fc2a7e022ccfebd43f39bf936e7efa4afece3a Mon Sep 17 00:00:00 2001 From: LuisAntonRebollo Date: Tue, 20 May 2014 23:24:08 +0200 Subject: [PATCH 7/7] Small fixes for CMake modules/libraries. --- Tools/CMake/basics.cmake | 2 +- Tools/CMake/torque3d.cmake | 16 ++++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Tools/CMake/basics.cmake b/Tools/CMake/basics.cmake index 7dc4a5d81..aa829fafa 100644 --- a/Tools/CMake/basics.cmake +++ b/Tools/CMake/basics.cmake @@ -79,7 +79,7 @@ macro( _processProjectDefinition ) endforeach() foreach( def ${${PROJECT_NAME}_required_debug_definition} ) - addDef( ${def} ) + addDebugDef( ${def} ) endforeach() #clear required defs diff --git a/Tools/CMake/torque3d.cmake b/Tools/CMake/torque3d.cmake index 65ff16a4a..0f8b99435 100644 --- a/Tools/CMake/torque3d.cmake +++ b/Tools/CMake/torque3d.cmake @@ -480,10 +480,14 @@ endif() ############################################################################### # Installation ############################################################################### -INSTALL(DIRECTORY "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game" DESTINATION "${projectDir}") -if(WIN32) - INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/cleanShaders.bat" DESTINATION "${projectDir}") - INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteCachedDTSs.bat" DESTINATION "${projectDir}") - INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteDSOs.bat" DESTINATION "${projectDir}") - INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeletePrefs.bat" DESTINATION "${projectDir}") + +if(TORQUE_TEMPLATE) + message("Prepare Template(${TORQUE_TEMPLATE}) install...") + INSTALL(DIRECTORY "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game" DESTINATION "${projectDir}") + if(WIN32) + INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/cleanShaders.bat" DESTINATION "${projectDir}") + INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteCachedDTSs.bat" DESTINATION "${projectDir}") + INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteDSOs.bat" DESTINATION "${projectDir}") + INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeletePrefs.bat" DESTINATION "${projectDir}") + endif() endif()