Browse Source

CMake changes for dedicated builds.

LuisAntonRebollo 11 years ago
parent
commit
17bd69e659

+ 8 - 1
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)

+ 4 - 0
Tools/CMake/libraries/convexDecomp.cmake

@@ -1,3 +1,7 @@
 project(convexDecomp)
 
+if(UNIX)
+	addDef(LINUX)
+endif()
+
 finishLibrary("${libDir}/convexDecomp")

+ 13 - 1
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)

+ 4 - 0
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()

+ 109 - 19
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
 ###############################################################################