From 17bd69e659e393546aea9d0b76671060dba3bff5 Mon Sep 17 00:00:00 2001 From: LuisAntonRebollo Date: Mon, 2 Jun 2014 02:15:55 +0200 Subject: [PATCH] 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 ###############################################################################