2014-07-18 22:07:38 +02:00
# -----------------------------------------------------------------------------
# Copyright (c) 2014 GarageGames, LLC
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
# -----------------------------------------------------------------------------
2014-03-19 18:17:35 +01:00
project ( ${ TORQUE_APP_NAME } )
2014-03-18 20:12:13 +01:00
2014-06-02 02:15:55 +02:00
if ( UNIX )
2015-01-24 23:28:12 +01:00
if ( NOT CXX_FLAG32 )
set ( CXX_FLAG32 "" )
endif ( )
2015-01-24 22:08:26 +01:00
#set(CXX_FLAG32 "-m32") #uncomment for build x32 on OSx64
2014-06-02 02:15:55 +02:00
# default compiler flags
2015-08-03 17:09:53 -05:00
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_FLAG32} -Wundef -msse -pipe -Wfatal-errors ${TORQUE_ADDITIONAL_LINKER_FLAGS} -Wl,-rpath,'$$ORIGIN'" )
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CXX_FLAG32} -Wundef -msse -pipe -Wfatal-errors ${TORQUE_ADDITIONAL_LINKER_FLAGS} -Wl,-rpath,'$$ORIGIN'" )
2014-06-02 02:15:55 +02:00
# for asm files
SET ( CMAKE_ASM_NASM_OBJECT_FORMAT "elf" )
ENABLE_LANGUAGE ( ASM_NASM )
2016-05-29 00:58:02 -05:00
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" )
2014-06-02 02:15:55 +02:00
endif ( )
2014-03-18 13:27:25 +01:00
# TODO: fmod support
2014-03-18 20:12:13 +01:00
###############################################################################
# modules
###############################################################################
option ( TORQUE_SFX_VORBIS "Vorbis Sound" ON )
2014-03-19 02:41:06 +01:00
mark_as_advanced ( TORQUE_SFX_VORBIS )
2014-06-02 01:35:06 +02:00
option ( TORQUE_THEORA "Theora Video Support" ON )
mark_as_advanced ( TORQUE_THEORA )
2014-03-18 20:12:13 +01:00
option ( TORQUE_ADVANCED_LIGHTING "Advanced Lighting" ON )
2014-03-19 02:41:06 +01:00
mark_as_advanced ( TORQUE_ADVANCED_LIGHTING )
2014-03-18 20:12:13 +01:00
option ( TORQUE_BASIC_LIGHTING "Basic Lighting" ON )
2014-03-19 02:41:06 +01:00
mark_as_advanced ( TORQUE_BASIC_LIGHTING )
2014-06-02 02:15:55 +02:00
if ( WIN32 )
option ( TORQUE_SFX_DirectX "DirectX Sound" ON )
mark_as_advanced ( TORQUE_SFX_DirectX )
else ( )
set ( TORQUE_SFX_DirectX OFF )
endif ( )
2014-03-18 20:12:13 +01:00
option ( TORQUE_SFX_OPENAL "OpenAL Sound" ON )
2014-03-19 02:41:06 +01:00
mark_as_advanced ( TORQUE_SFX_OPENAL )
2014-03-18 20:12:13 +01:00
option ( TORQUE_HIFI "HIFI? support" OFF )
2014-03-19 02:41:06 +01:00
mark_as_advanced ( TORQUE_HIFI )
2014-03-18 20:12:13 +01:00
option ( TORQUE_EXTENDED_MOVE "Extended move support" OFF )
2014-03-19 02:41:06 +01:00
mark_as_advanced ( TORQUE_EXTENDED_MOVE )
2015-01-16 20:37:16 +01:00
if ( WIN32 )
option ( TORQUE_SDL "Use SDL for window and input" OFF )
else ( )
set ( TORQUE_SDL ON ) # we need sdl to work on Linux/Mac
endif ( )
2014-11-08 17:41:17 +01:00
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
endif ( )
2014-10-10 23:50:05 -07:00
2014-06-02 02:15:55 +02:00
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 ( )
2014-03-18 13:27:25 +01:00
2016-03-20 21:55:40 +10:00
if ( WIN32 )
option ( TORQUE_D3D11 "Allow Direct3D 11 render" OFF )
endif ( )
2016-05-15 10:11:46 -05:00
option ( TORQUE_EXPERIMENTAL_EC "Experimental Entity/Component systems" OFF )
mark_as_advanced ( TORQUE_EXPERIMENTAL_EC )
2014-03-18 20:12:13 +01:00
###############################################################################
# options
###############################################################################
2014-06-02 02:15:55 +02:00
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 ( )
2014-03-18 13:27:25 +01:00
option ( TORQUE_MULTITHREAD "Multi Threading" ON )
2014-03-19 02:41:06 +01:00
mark_as_advanced ( TORQUE_MULTITHREAD )
2014-06-02 02:15:55 +02:00
option ( TORQUE_DISABLE_MEMORY_MANAGER "Disable memory manager" ON )
2014-03-19 02:41:06 +01:00
mark_as_advanced ( TORQUE_DISABLE_MEMORY_MANAGER )
2014-03-18 13:27:25 +01:00
option ( TORQUE_DISABLE_VIRTUAL_MOUNT_SYSTEM "Disable virtual mount system" OFF )
2014-03-19 02:41:06 +01:00
mark_as_advanced ( TORQUE_DISABLE_VIRTUAL_MOUNT_SYSTEM )
2014-03-18 13:27:25 +01:00
option ( TORQUE_PLAYER "Playback only?" OFF )
2014-03-19 02:41:06 +01:00
mark_as_advanced ( TORQUE_PLAYER )
2014-03-18 13:27:25 +01:00
option ( TORQUE_TOOLS "Enable or disable the tools" ON )
2014-03-19 02:41:06 +01:00
mark_as_advanced ( TORQUE_TOOLS )
2014-03-18 13:27:25 +01:00
option ( TORQUE_ENABLE_PROFILER "Enable or disable the profiler" OFF )
2014-03-19 02:41:06 +01:00
mark_as_advanced ( TORQUE_ENABLE_PROFILER )
2014-03-18 13:27:25 +01:00
option ( TORQUE_DEBUG "T3D Debug mode" OFF )
2014-03-19 02:41:06 +01:00
mark_as_advanced ( TORQUE_DEBUG )
2014-03-18 13:27:25 +01:00
option ( TORQUE_SHIPPING "T3D Shipping build?" OFF )
2014-03-19 02:41:06 +01:00
mark_as_advanced ( TORQUE_SHIPPING )
2014-03-18 13:27:25 +01:00
option ( TORQUE_DEBUG_NET "debug network" OFF )
2014-03-19 02:41:06 +01:00
mark_as_advanced ( TORQUE_DEBUG_NET )
2014-03-18 13:27:25 +01:00
option ( TORQUE_DEBUG_NET_MOVES "debug network moves" OFF )
2014-03-19 02:41:06 +01:00
mark_as_advanced ( TORQUE_DEBUG_NET_MOVES )
2014-03-18 20:12:13 +01:00
option ( TORQUE_ENABLE_ASSERTS "enables or disable asserts" OFF )
2014-03-19 02:41:06 +01:00
mark_as_advanced ( TORQUE_ENABLE_ASSERTS )
option ( TORQUE_DEBUG_GFX_MODE "triggers graphics debug mode" OFF )
mark_as_advanced ( TORQUE_DEBUG_GFX_MODE )
2014-03-18 13:27:25 +01:00
2014-03-18 20:12:13 +01:00
#option(DEBUG_SPEW "more debug" OFF)
2014-03-18 13:27:25 +01:00
set ( TORQUE_NO_DSO_GENERATION ON )
2014-03-18 20:12:13 +01:00
if ( WIN32 )
2014-05-24 15:01:46 +02:00
# warning C4800: 'XXX' : forcing value to bool 'true' or 'false' (performance warning)
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4800" )
# warning C4018: '<' : signed/unsigned mismatch
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4018" )
# warning C4244: 'initializing' : conversion from 'XXX' to 'XXX', possible loss of data
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4244" )
2014-09-14 21:42:08 +02:00
if ( TORQUE_CPU_X64 )
link_directories ( $ENV{ DXSDK_DIR } /Lib/x64 )
else ( )
link_directories ( $ENV{ DXSDK_DIR } /Lib/x86 )
endif ( )
2014-03-18 20:12:13 +01:00
endif ( )
2014-03-18 13:27:25 +01:00
2015-01-24 22:08:26 +01:00
# build types
if ( NOT MSVC ) # handle single-configuration generator
set ( CMAKE_BUILD_TYPE ${ TORQUE_BUILD_TYPE } )
if ( CMAKE_BUILD_TYPE STREQUAL "Debug" )
set ( TORQUE_DEBUG TRUE )
elseif ( CMAKE_BUILD_TYPE STREQUAL "Release" )
set ( TORQUE_RELEASE TRUE )
elseif ( CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo" )
set ( TORQUE_RELEASE TRUE )
else ( )
message ( FATAL_ERROR "Please select Debug, Release or RelWithDebInfo for TORQUE_BUILD_TYPE" )
endif ( )
endif ( )
2014-03-18 20:12:13 +01:00
###############################################################################
# Always enabled paths first
###############################################################################
addPath ( "${srcDir}/" ) # must come first :)
addPathRec ( "${srcDir}/app" )
addPath ( "${srcDir}/sfx/media" )
addPath ( "${srcDir}/sfx/null" )
addPath ( "${srcDir}/sfx" )
addPath ( "${srcDir}/console" )
addPath ( "${srcDir}/core" )
addPath ( "${srcDir}/core/stream" )
addPath ( "${srcDir}/core/strings" )
addPath ( "${srcDir}/core/util" )
addPath ( "${srcDir}/core/util/test" )
addPath ( "${srcDir}/core/util/journal" )
addPath ( "${srcDir}/core/util/journal/test" )
addPath ( "${srcDir}/core/util/zip" )
2014-09-28 16:30:16 +10:00
addPath ( "${srcDir}/core/util/zip/test" )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/core/util/zip/compressors" )
addPath ( "${srcDir}/i18n" )
addPath ( "${srcDir}/sim" )
addPath ( "${srcDir}/util" )
addPath ( "${srcDir}/windowManager" )
addPath ( "${srcDir}/windowManager/torque" )
addPath ( "${srcDir}/windowManager/test" )
addPath ( "${srcDir}/math" )
addPath ( "${srcDir}/math/util" )
addPath ( "${srcDir}/math/test" )
2016-04-30 15:48:33 -05:00
2016-05-05 22:59:17 -05:00
addPath ( "${srcDir}/platform" )
2016-04-30 15:48:33 -05:00
if ( NOT TORQUE_SDL )
set ( BLACKLIST "fileDialog.cpp" )
endif ( )
2016-05-05 22:59:17 -05:00
addPath ( "${srcDir}/platform/nativeDialogs" )
2016-04-30 15:48:33 -05:00
set ( BLACKLIST "" )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/cinterface" )
2016-05-05 22:59:17 -05:00
2014-06-02 02:15:55 +02:00
if ( NOT TORQUE_DEDICATED )
addPath ( "${srcDir}/platform/menus" )
endif ( )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/platform/test" )
addPath ( "${srcDir}/platform/threads" )
2015-07-05 14:11:58 +10:00
addPath ( "${srcDir}/platform/threads/test" )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/platform/async" )
2014-09-28 19:08:43 +10:00
addPath ( "${srcDir}/platform/async/test" )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/platform/input" )
addPath ( "${srcDir}/platform/output" )
addPath ( "${srcDir}/app" )
addPath ( "${srcDir}/app/net" )
addPath ( "${srcDir}/util/messaging" )
addPath ( "${srcDir}/gfx/Null" )
addPath ( "${srcDir}/gfx/test" )
addPath ( "${srcDir}/gfx/bitmap" )
addPath ( "${srcDir}/gfx/bitmap/loaders" )
addPath ( "${srcDir}/gfx/util" )
addPath ( "${srcDir}/gfx/video" )
addPath ( "${srcDir}/gfx" )
addPath ( "${srcDir}/shaderGen" )
addPath ( "${srcDir}/gfx/sim" )
addPath ( "${srcDir}/gui/buttons" )
addPath ( "${srcDir}/gui/containers" )
addPath ( "${srcDir}/gui/controls" )
addPath ( "${srcDir}/gui/core" )
addPath ( "${srcDir}/gui/game" )
addPath ( "${srcDir}/gui/shiny" )
addPath ( "${srcDir}/gui/utility" )
addPath ( "${srcDir}/gui" )
addPath ( "${srcDir}/collision" )
addPath ( "${srcDir}/materials" )
addPath ( "${srcDir}/lighting" )
addPath ( "${srcDir}/lighting/common" )
addPath ( "${srcDir}/renderInstance" )
addPath ( "${srcDir}/scene" )
addPath ( "${srcDir}/scene/culling" )
addPath ( "${srcDir}/scene/zones" )
addPath ( "${srcDir}/scene/mixin" )
addPath ( "${srcDir}/shaderGen" )
addPath ( "${srcDir}/terrain" )
addPath ( "${srcDir}/environment" )
addPath ( "${srcDir}/forest" )
addPath ( "${srcDir}/forest/ts" )
addPath ( "${srcDir}/ts" )
addPath ( "${srcDir}/ts/arch" )
addPath ( "${srcDir}/physics" )
addPath ( "${srcDir}/gui/3d" )
addPath ( "${srcDir}/postFx" )
2016-05-15 10:11:46 -05:00
if ( NOT TORQUE_EXPERIMENTAL_EC )
2016-05-29 00:58:02 -05:00
set ( BLACKLIST "entity.cpp;entity.h" )
2016-05-15 10:11:46 -05:00
endif ( )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/T3D" )
2016-05-15 10:11:46 -05:00
set ( BLACKLIST "" )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/T3D/examples" )
addPath ( "${srcDir}/T3D/fps" )
addPath ( "${srcDir}/T3D/fx" )
addPath ( "${srcDir}/T3D/vehicles" )
addPath ( "${srcDir}/T3D/physics" )
addPath ( "${srcDir}/T3D/decal" )
addPath ( "${srcDir}/T3D/sfx" )
addPath ( "${srcDir}/T3D/gameBase" )
addPath ( "${srcDir}/T3D/turret" )
2016-05-15 10:11:46 -05:00
if ( TORQUE_EXPERIMENTAL_EC )
addPath ( "${srcDir}/T3D/components/" )
2016-05-29 00:58:02 -05:00
addPath ( "${srcDir}/T3D/components/animation" )
addPath ( "${srcDir}/T3D/components/camera" )
addPath ( "${srcDir}/T3D/components/collision" )
addPath ( "${srcDir}/T3D/components/game" )
addPath ( "${srcDir}/T3D/components/physics" )
addPath ( "${srcDir}/T3D/components/render" )
2016-05-15 10:11:46 -05:00
endif ( )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/main/" )
2015-10-13 15:50:30 -05:00
addPath ( "${srcDir}/assets" )
addPath ( "${srcDir}/module" )
addPath ( "${srcDir}/T3D/assets" )
addPathRec ( "${srcDir}/persistence" )
2014-03-18 20:12:13 +01:00
addPathRec ( "${srcDir}/ts/collada" )
addPathRec ( "${srcDir}/ts/loader" )
2014-03-20 05:34:45 +01:00
addPathRec ( "${projectSrcDir}" )
2014-03-18 20:12:13 +01:00
###############################################################################
# modular paths
###############################################################################
2014-03-18 13:27:25 +01:00
# lighting
if ( TORQUE_ADVANCED_LIGHTING )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/lighting/advanced" )
addPathRec ( "${srcDir}/lighting/shadowMap" )
2014-06-02 02:15:55 +02:00
if ( WIN32 )
addPathRec ( "${srcDir}/lighting/advanced/hlsl" )
endif ( )
if ( TORQUE_OPENGL )
addPathRec ( "${srcDir}/lighting/advanced/glsl" )
endif ( )
2014-06-02 01:35:06 +02:00
addDef ( TORQUE_ADVANCED_LIGHTING )
2014-03-18 13:27:25 +01:00
endif ( )
if ( TORQUE_BASIC_LIGHTING )
2014-03-18 20:12:13 +01:00
addPathRec ( "${srcDir}/lighting/basic" )
addPathRec ( "${srcDir}/lighting/shadowMap" )
2014-06-02 01:35:06 +02:00
addDef ( TORQUE_BASIC_LIGHTING )
2014-03-18 13:27:25 +01:00
endif ( )
# DirectX Sound
if ( TORQUE_SFX_DirectX )
2014-06-02 01:35:06 +02:00
addLib ( x3daudio.lib )
2014-03-18 20:12:13 +01:00
addPathRec ( "${srcDir}/sfx/dsound" )
addPathRec ( "${srcDir}/sfx/xaudio" )
2014-03-18 13:27:25 +01:00
endif ( )
# OpenAL
2014-06-02 02:15:55 +02:00
if ( TORQUE_SFX_OPENAL AND NOT TORQUE_DEDICATED )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/sfx/openal" )
#addPath("${srcDir}/sfx/openal/mac")
2014-06-02 02:15:55 +02:00
if ( WIN32 )
addPath ( "${srcDir}/sfx/openal/win32" )
addInclude ( "${libDir}/openal/win32" )
endif ( )
if ( UNIX )
addPath ( "${srcDir}/sfx/openal/linux" )
endif ( )
2014-06-02 01:35:06 +02:00
endif ( )
# Vorbis
if ( TORQUE_SFX_VORBIS )
addInclude ( ${ libDir } /libvorbis/include )
addDef ( TORQUE_OGGVORBIS )
addLib ( libvorbis )
addLib ( libogg )
2014-03-18 13:27:25 +01:00
endif ( )
# Theora
if ( TORQUE_THEORA )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/core/ogg" )
addPath ( "${srcDir}/gfx/video" )
addPath ( "${srcDir}/gui/theora" )
2014-06-02 01:35:06 +02:00
addDef ( TORQUE_OGGTHEORA )
addDef ( TORQUE_OGGVORIBS )
addInclude ( ${ libDir } /libtheora/include )
addLib ( libtheora )
2014-03-18 20:12:13 +01:00
endif ( )
# Include tools for non-tool builds (or define player if a tool build)
if ( TORQUE_TOOLS )
addPath ( "${srcDir}/gui/worldEditor" )
addPath ( "${srcDir}/environment/editors" )
addPath ( "${srcDir}/forest/editor" )
addPath ( "${srcDir}/gui/editor" )
2016-05-15 10:11:46 -05:00
if ( NOT TORQUE_EXPERIMENTAL_EC )
2016-06-05 19:17:34 -05:00
set ( BLACKLIST "entityGroup.cpp;entityGroup.h;mountingGroup.cpp;mountingGroup.h;componentGroup.cpp;componentGroup.h" )
2016-05-15 10:11:46 -05:00
endif ( )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/gui/editor/inspector" )
2016-05-15 10:11:46 -05:00
set ( BLACKLIST "" )
2014-03-18 20:12:13 +01:00
endif ( )
if ( TORQUE_HIFI )
addPath ( "${srcDir}/T3D/gameBase/hifi" )
2014-06-02 01:35:06 +02:00
addDef ( TORQUE_HIFI_NET )
2014-03-18 20:12:13 +01:00
endif ( )
if ( TORQUE_EXTENDED_MOVE )
addPath ( "${srcDir}/T3D/gameBase/extended" )
2014-06-02 01:35:06 +02:00
addDef ( TORQUE_EXTENDED_MOVE )
2014-03-18 20:12:13 +01:00
else ( )
addPath ( "${srcDir}/T3D/gameBase/std" )
2014-03-18 13:27:25 +01:00
endif ( )
2015-01-16 20:37:16 +01:00
if ( TORQUE_SDL )
addPathRec ( "${srcDir}/windowManager/sdl" )
addPathRec ( "${srcDir}/platformSDL" )
if ( TORQUE_OPENGL )
addPathRec ( "${srcDir}/gfx/gl/sdl" )
endif ( )
if ( UNIX )
2015-01-24 22:08:26 +01:00
#set(CMAKE_SIZEOF_VOID_P 4) #force 32 bit
set ( ENV{CFLAGS} "${CXX_FLAG32} -g -O3" )
2015-01-16 20:37:16 +01:00
if ( "${TORQUE_ADDITIONAL_LINKER_FLAGS}" STREQUAL "" )
2015-01-24 22:08:26 +01:00
set ( ENV{LDFLAGS} "${CXX_FLAG32}" )
2015-01-16 20:37:16 +01:00
else ( )
2015-01-24 22:08:26 +01:00
set ( ENV{LDFLAGS} "${CXX_FLAG32} ${TORQUE_ADDITIONAL_LINKER_FLAGS}" )
2015-01-16 20:37:16 +01:00
endif ( )
2016-04-30 15:48:33 -05:00
find_package ( PkgConfig REQUIRED )
pkg_check_modules ( GTK3 REQUIRED gtk+-3.0 )
# Setup CMake to use GTK+, tell the compiler where to look for headers
# and to the linker where to look for libraries
include_directories ( ${ GTK3_INCLUDE_DIRS } )
link_directories ( ${ GTK3_LIBRARY_DIRS } )
# Add other flags to the compiler
add_definitions ( ${ GTK3_CFLAGS_OTHER } )
set ( BLACKLIST "nfd_win.cpp" )
addLib ( nativeFileDialogs )
set ( BLACKLIST "" )
target_link_libraries ( nativeFileDialogs ${ GTK3_LIBRARIES } )
else ( )
set ( BLACKLIST "nfd_gtk.c" )
addLib ( nativeFileDialogs )
set ( BLACKLIST "" )
addLib ( comctl32 )
2015-01-16 20:37:16 +01:00
endif ( )
#override and hide SDL2 cache variables
set ( SDL_SHARED ON CACHE INTERNAL "" FORCE )
set ( SDL_STATIC OFF CACHE INTERNAL "" FORCE )
add_subdirectory ( ${ libDir } /sdl ${ CMAKE_CURRENT_BINARY_DIR } /sdl2 )
endif ( )
2014-06-02 02:15:55 +02:00
if ( TORQUE_DEDICATED )
addDef ( TORQUE_DEDICATED )
endif ( )
2016-05-19 23:42:38 -05:00
if ( TORQUE_EXPERIMENTAL_EC )
addDef ( TORQUE_EXPERIMENTAL_EC )
endif ( )
2014-10-10 23:50:05 -07:00
#modules dir
file ( GLOB modules "modules/*.cmake" )
foreach ( module ${ modules } )
include ( ${ module } )
endforeach ( )
2014-06-02 02:15:55 +02:00
2014-03-18 20:12:13 +01:00
###############################################################################
# platform specific things
###############################################################################
2014-03-18 13:27:25 +01:00
if ( WIN32 )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/platformWin32" )
2016-04-30 15:48:33 -05:00
if ( TORQUE_SDL )
set ( BLACKLIST "fileDialog.cpp" )
endif ( )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/platformWin32/nativeDialogs" )
2016-04-30 15:48:33 -05:00
set ( BLACKLIST "" )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/platformWin32/menus" )
addPath ( "${srcDir}/platformWin32/threads" )
addPath ( "${srcDir}/platformWin32/videoInfo" )
addPath ( "${srcDir}/platformWin32/minidump" )
addPath ( "${srcDir}/windowManager/win32" )
2016-03-20 21:55:40 +10:00
if ( TORQUE_D3D11 )
addPath ( "${srcDir}/gfx/D3D11" )
endif ( )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/gfx/D3D9" )
addPath ( "${srcDir}/gfx/D3D9/pc" )
addPath ( "${srcDir}/shaderGen/HLSL" )
addPath ( "${srcDir}/terrain/hlsl" )
addPath ( "${srcDir}/forest/hlsl" )
# add windows rc file for the icon
2014-03-19 02:03:45 +01:00
addFile ( "${projectSrcDir}/torque.rc" )
2014-03-18 13:27:25 +01:00
endif ( )
if ( APPLE )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/platformMac" )
addPath ( "${srcDir}/platformMac/menus" )
addPath ( "${srcDir}/platformPOSIX" )
addPath ( "${srcDir}/windowManager/mac" )
addPath ( "${srcDir}/gfx/gl" )
addPath ( "${srcDir}/gfx/gl/ggl" )
addPath ( "${srcDir}/gfx/gl/ggl/mac" )
addPath ( "${srcDir}/gfx/gl/ggl/generated" )
addPath ( "${srcDir}/shaderGen/GLSL" )
addPath ( "${srcDir}/terrain/glsl" )
addPath ( "${srcDir}/forest/glsl" )
2014-03-18 13:27:25 +01:00
endif ( )
if ( XBOX360 )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/platformXbox" )
addPath ( "${srcDir}/platformXbox/threads" )
addPath ( "${srcDir}/windowManager/360" )
addPath ( "${srcDir}/gfx/D3D9" )
addPath ( "${srcDir}/gfx/D3D9/360" )
addPath ( "${srcDir}/shaderGen/HLSL" )
addPath ( "${srcDir}/shaderGen/360" )
addPath ( "${srcDir}/ts/arch/360" )
addPath ( "${srcDir}/terrain/hlsl" )
addPath ( "${srcDir}/forest/hlsl" )
2014-03-18 13:27:25 +01:00
endif ( )
if ( PS3 )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/platformPS3" )
addPath ( "${srcDir}/platformPS3/threads" )
addPath ( "${srcDir}/windowManager/ps3" )
addPath ( "${srcDir}/gfx/gl" )
addPath ( "${srcDir}/gfx/gl/ggl" )
addPath ( "${srcDir}/gfx/gl/ggl/ps3" )
addPath ( "${srcDir}/gfx/gl/ggl/generated" )
addPath ( "${srcDir}/shaderGen/GLSL" )
addPath ( "${srcDir}/ts/arch/ps3" )
addPath ( "${srcDir}/terrain/glsl" )
addPath ( "${srcDir}/forest/glsl" )
2014-03-18 13:27:25 +01:00
endif ( )
if ( UNIX )
2015-01-24 22:08:26 +01:00
# linux_dedicated
2014-06-02 02:15:55 +02:00
if ( TORQUE_DEDICATED )
addPath ( "${srcDir}/windowManager/dedicated" )
# ${srcDir}/platformX86UNIX/*.client.* files are not needed
# @todo: move to separate file
file ( GLOB tmp_files
$ { s r c D i r } / p l a t f o r m X 8 6 U N I X / * . c p p
$ { s r c D i r } / p l a t f o r m X 8 6 U N I X / * . c
$ { s r c D i r } / p l a t f o r m X 8 6 U N I X / * . c c
$ { s r c D i r } / p l a t f o r m X 8 6 U N I X / * . 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" )
2015-01-24 22:08:26 +01:00
addPath ( "${srcDir}/platformX86UNIX/nativeDialogs" )
2014-06-02 02:15:55 +02:00
endif ( )
2015-01-24 22:08:26 +01:00
# linux
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/platformX86UNIX/threads" )
addPath ( "${srcDir}/platformPOSIX" )
2014-06-02 02:15:55 +02:00
endif ( )
if ( TORQUE_OPENGL )
2014-03-18 20:12:13 +01:00
addPath ( "${srcDir}/shaderGen/GLSL" )
2014-06-02 02:15:55 +02:00
if ( TORQUE_OPENGL AND NOT TORQUE_DEDICATED )
addPath ( "${srcDir}/gfx/gl" )
addPath ( "${srcDir}/gfx/gl/tGL" )
2016-03-25 13:38:40 -04:00
addPath ( "${srcDir}/shaderGen/GLSL" )
2014-06-02 02:15:55 +02:00
addPath ( "${srcDir}/terrain/glsl" )
addPath ( "${srcDir}/forest/glsl" )
endif ( )
if ( WIN32 AND NOT TORQUE_SDL )
addPath ( "${srcDir}/gfx/gl/win32" )
endif ( )
2014-03-18 13:27:25 +01:00
endif ( )
2014-03-18 20:12:13 +01:00
###############################################################################
###############################################################################
2014-06-02 01:35:06 +02:00
finishExecutable ( )
2014-03-18 20:12:13 +01:00
###############################################################################
###############################################################################
2014-03-18 13:27:25 +01:00
2014-09-28 20:27:29 +02:00
message ( STATUS "writing ${projectSrcDir}/torqueConfig.h" )
CONFIGURE_FILE ( "${cmakeDir}/torqueConfig.h.in" "${projectSrcDir}/torqueConfig.h" )
2014-03-19 02:43:52 +01:00
# configure the relevant files only once
2014-03-19 02:15:00 +01:00
if ( NOT EXISTS "${projectSrcDir}/torque.ico" )
CONFIGURE_FILE ( "${cmakeDir}/torque.ico" "${projectSrcDir}/torque.ico" COPYONLY )
2014-03-18 13:27:25 +01:00
endif ( )
2014-03-19 18:17:35 +01:00
if ( NOT EXISTS "${projectOutDir}/${PROJECT_NAME}.torsion" )
CONFIGURE_FILE ( "${cmakeDir}/template.torsion.in" "${projectOutDir}/${PROJECT_NAME}.torsion" )
endif ( )
if ( EXISTS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/main.cs.in" AND NOT EXISTS "${projectOutDir}/main.cs" )
CONFIGURE_FILE ( "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/main.cs.in" "${projectOutDir}/main.cs" )
endif ( )
2014-03-19 02:03:45 +01:00
if ( WIN32 )
2014-06-02 01:35:06 +02:00
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 ( )
2014-03-19 02:03:45 +01:00
endif ( )
2014-03-18 13:27:25 +01:00
2014-03-18 20:12:13 +01:00
###############################################################################
# Common Libraries
###############################################################################
2014-03-19 02:03:45 +01:00
addLib ( lmng )
addLib ( lpng )
addLib ( lungif )
addLib ( ljpeg )
addLib ( zlib )
addLib ( tinyxml )
addLib ( opcode )
addLib ( squish )
addLib ( collada )
addLib ( pcre )
addLib ( convexDecomp )
2016-03-25 13:38:40 -04:00
if ( TORQUE_OPENGL )
addLib ( epoxy )
endif ( )
2014-03-18 13:27:25 +01:00
if ( WIN32 )
# copy pasted from T3D build system, some might not be needed
2014-06-02 01:35:06 +02:00
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 )
2014-03-19 02:41:06 +01:00
addLib ( "${TORQUE_EXTERNAL_LIBS}" )
2014-11-08 17:41:17 +01:00
if ( TORQUE_OPENGL )
addLib ( OpenGL32.lib )
endif ( )
2016-03-24 14:22:45 -04:00
# JTH: DXSDK is compiled with older runtime, and MSVC 2015+ is when __vsnprintf is undefined.
# This is a workaround by linking with the older legacy library functions.
# See this for more info: http://stackoverflow.com/a/34230122
if ( MSVC14 )
addLib ( legacy_stdio_definitions.lib )
endif ( )
2014-03-18 13:27:25 +01:00
endif ( )
2015-01-24 22:08:26 +01:00
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}" )
2014-03-18 13:27:25 +01:00
endif ( )
2014-06-02 02:15:55 +02:00
if ( UNIX )
# copy pasted from T3D build system, some might not be needed
2014-09-22 22:11:03 +10:00
set ( TORQUE_EXTERNAL_LIBS "rt dl Xxf86vm Xext X11 Xft stdc++ pthread GL" CACHE STRING "external libs to link against" )
2014-06-02 02:15:55 +02:00
mark_as_advanced ( TORQUE_EXTERNAL_LIBS )
string ( REPLACE " " ";" TORQUE_EXTERNAL_LIBS_LIST ${ TORQUE_EXTERNAL_LIBS } )
addLib ( "${TORQUE_EXTERNAL_LIBS_LIST}" )
endif ( )
2014-03-18 20:12:13 +01:00
###############################################################################
# Always enabled Definitions
###############################################################################
2014-12-02 18:16:47 -05:00
addDef ( TORQUE_DEBUG Debug )
addDef ( TORQUE_ENABLE_ASSERTS "Debug;RelWithDebInfo" )
2014-06-02 01:35:06 +02:00
addDef ( TORQUE_DEBUG_GFX_MODE "RelWithDebInfo" )
2014-03-18 20:12:13 +01:00
addDef ( TORQUE_SHADERGEN )
addDef ( INITGUID )
addDef ( NTORQUE_SHARED )
addDef ( UNICODE )
addDef ( _UNICODE ) # for VS
addDef ( TORQUE_UNICODE )
2014-03-19 02:41:06 +01:00
#addDef(TORQUE_SHARED) # not used anymore as the game is the executable directly
2014-03-18 20:12:13 +01:00
addDef ( LTC_NO_PROTOTYPES ) # for libTomCrypt
addDef ( BAN_OPCODE_AUTOLINK )
addDef ( ICE_NO_DLL )
addDef ( TORQUE_OPCODE )
addDef ( TORQUE_COLLADA )
addDef ( DOM_INCLUDE_TINYXML )
addDef ( PCRE_STATIC )
addDef ( _CRT_SECURE_NO_WARNINGS )
addDef ( _CRT_SECURE_NO_DEPRECATE )
2014-06-02 02:15:55 +02:00
if ( UNIX )
addDef ( LINUX )
endif ( )
2014-11-08 17:41:17 +01:00
if ( TORQUE_OPENGL )
addDef ( TORQUE_OPENGL )
endif ( )
2015-01-16 20:37:16 +01:00
if ( TORQUE_SDL )
addDef ( TORQUE_SDL )
addInclude ( ${ libDir } /sdl/include )
addLib ( SDL2 )
endif ( )
2015-01-24 22:08:26 +01:00
if ( TORQUE_STATIC_CODE_ANALYSIS )
addDef ( "ON_FAIL_ASSERTFATAL=exit(1)" )
endif ( )
2014-03-18 20:12:13 +01:00
###############################################################################
# Include Paths
###############################################################################
addInclude ( "${projectSrcDir}" )
addInclude ( "${srcDir}/" )
addInclude ( "${libDir}/lmpg" )
addInclude ( "${libDir}/lpng" )
addInclude ( "${libDir}/ljpeg" )
addInclude ( "${libDir}/lungif" )
addInclude ( "${libDir}/zlib" )
addInclude ( "${libDir}/" ) # for tinyxml
addInclude ( "${libDir}/tinyxml" )
addInclude ( "${libDir}/squish" )
addInclude ( "${libDir}/convexDecomp" )
addInclude ( "${libDir}/libogg/include" )
addInclude ( "${libDir}/opcode" )
addInclude ( "${libDir}/collada/include" )
addInclude ( "${libDir}/collada/include/1.4" )
2016-04-30 15:48:33 -05:00
if ( TORQUE_SDL )
addInclude ( "${libDir}/nativeFileDialogs/include" )
endif ( )
2014-11-08 17:41:17 +01:00
if ( TORQUE_OPENGL )
2016-03-25 13:38:40 -04:00
addInclude ( "${libDir}/epoxy/include" )
addInclude ( "${libDir}/epoxy/src" )
2014-11-08 17:41:17 +01:00
endif ( )
2014-03-18 13:27:25 +01:00
2015-01-24 22:08:26 +01:00
if ( UNIX )
addInclude ( "/usr/include/freetype2/freetype" )
addInclude ( "/usr/include/freetype2" )
endif ( )
2014-03-18 20:12:13 +01:00
# external things
if ( WIN32 )
set_property ( TARGET ${ PROJECT_NAME } APPEND PROPERTY INCLUDE_DIRECTORIES $ENV{ DXSDK_DIR } /Include )
endif ( )
2014-03-18 13:27:25 +01:00
2014-06-02 02:15:55 +02:00
if ( UNIX )
addInclude ( "/usr/include/freetype2/freetype" )
addInclude ( "/usr/include/freetype2" )
endif ( )
2014-12-17 15:21:19 -05:00
if ( MSVC )
# Match projectGenerator naming for executables
set ( OUTPUT_CONFIG DEBUG MINSIZEREL RELWITHDEBINFO )
set ( OUTPUT_SUFFIX DEBUG MINSIZE OPTIMIZEDDEBUG )
foreach ( INDEX RANGE 2 )
list ( GET OUTPUT_CONFIG ${ INDEX } CONF )
list ( GET OUTPUT_SUFFIX ${ INDEX } SUFFIX )
set_property ( TARGET ${ PROJECT_NAME } PROPERTY OUTPUT_NAME_ ${ CONF } ${ PROJECT_NAME } _ ${ SUFFIX } )
endforeach ( )
endif ( )
2014-03-18 20:12:13 +01:00
###############################################################################
# Installation
###############################################################################
2014-05-20 23:24:08 +02:00
if ( TORQUE_TEMPLATE )
message ( "Prepare Template(${TORQUE_TEMPLATE}) install..." )
2016-05-17 23:58:34 -05:00
file ( GLOB_RECURSE INSTALL_FILES_AND_DIRS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/*" )
IF ( NOT TORQUE_EXPERIMENTAL_EC )
list ( REMOVE_ITEM INSTALL_FILES_AND_DIRS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/art/art.module.taml" )
list ( REMOVE_ITEM INSTALL_FILES_AND_DIRS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/art/shapes/actors/Soldier/soldier.asset.taml" )
list ( REMOVE_ITEM INSTALL_FILES_AND_DIRS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/scripts/scripts.module.taml" )
foreach ( ITEM ${ INSTALL_FILES_AND_DIRS } )
get_filename_component ( dir ${ ITEM } DIRECTORY )
get_filename_component ( fileName ${ ITEM } NAME )
if ( ${ dir } STREQUAL ${ CMAKE_SOURCE_DIR } /Templates/ ${ TORQUE_TEMPLATE } /game/scripts/server/components
O R $ { d i r } S T R E Q U A L $ { C M A K E _ S O U R C E _ D I R } / T e m p l a t e s / $ { T O R Q U E _ T E M P L A T E } / g a m e / s c r i p t s / s e r v e r / c o m p o n e n t s / g a m e
O R $ { d i r } S T R E Q U A L $ { C M A K E _ S O U R C E _ D I R } / T e m p l a t e s / $ { T O R Q U E _ T E M P L A T E } / g a m e / s c r i p t s / s e r v e r / c o m p o n e n t s / i n p u t
O R $ { d i r } S T R E Q U A L $ { C M A K E _ S O U R C E _ D I R } / T e m p l a t e s / $ { T O R Q U E _ T E M P L A T E } / g a m e / s c r i p t s / s e r v e r / g a m e O b j e c t s
O R $ { d i r } S T R E Q U A L $ { C M A K E _ S O U R C E _ D I R } / T e m p l a t e s / $ { T O R Q U E _ T E M P L A T E } / g a m e / t o o l s / c o m p o n e n t E d i t o r
O R $ { d i r } S T R E Q U A L $ { C M A K E _ S O U R C E _ D I R } / T e m p l a t e s / $ { T O R Q U E _ T E M P L A T E } / g a m e / t o o l s / c o m p o n e n t E d i t o r / g u i
O R $ { d i r } S T R E Q U A L $ { C M A K E _ S O U R C E _ D I R } / T e m p l a t e s / $ { T O R Q U E _ T E M P L A T E } / g a m e / t o o l s / c o m p o n e n t E d i t o r / s c r i p t s )
list ( REMOVE_ITEM INSTALL_FILES_AND_DIRS ${ dir } / ${ fileName } )
ENDIF ( )
endforeach ( )
ENDIF ( )
foreach ( ITEM ${ INSTALL_FILES_AND_DIRS } )
get_filename_component ( dir ${ ITEM } DIRECTORY )
STRING ( REGEX REPLACE "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/" "${TORQUE_APP_DIR}/" INSTALL_DIR ${ dir } )
install ( FILES ${ ITEM } DESTINATION ${ INSTALL_DIR } )
endforeach ( )
2014-05-20 23:24:08 +02:00
if ( WIN32 )
2014-07-28 12:30:38 +02:00
INSTALL ( FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/cleanShaders.bat" DESTINATION "${TORQUE_APP_DIR}" )
INSTALL ( FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteCachedDTSs.bat" DESTINATION "${TORQUE_APP_DIR}" )
INSTALL ( FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteDSOs.bat" DESTINATION "${TORQUE_APP_DIR}" )
INSTALL ( FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeletePrefs.bat" DESTINATION "${TORQUE_APP_DIR}" )
2014-05-20 23:24:08 +02:00
endif ( )
2014-03-19 03:23:51 +01:00
endif ( )