1 # -----------------------------------------------------------------------------
2 # Copyright (c) 2014 GarageGames, LLC
4 # Permission is hereby granted, free of charge, to any person obtaining a copy
5 # of this software and associated documentation files (the "Software"), to
6 # deal in the Software without restriction, including without limitation the
7 # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8 # sell copies of the Software, and to permit persons to whom the Software is
9 # furnished to do so, subject to the following conditions:
11 # The above copyright notice and this permission notice shall be included in
12 # all copies or substantial portions of the Software.
14 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21 # -----------------------------------------------------------------------------
23 project(${TORQUE_APP_NAME})
29 #set(CXX_FLAG32 "-m32") #uncomment for build x32 on OSx64
31 # default compiler flags
32 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_FLAG32} -Wundef -msse -pipe -Wfatal-errors ${TORQUE_ADDITIONAL_LINKER_FLAGS} -Wl,-rpath,'$$ORIGIN'")
33 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CXX_FLAG32} -Wundef -msse -pipe -Wfatal-errors ${TORQUE_ADDITIONAL_LINKER_FLAGS} -Wl,-rpath,'$$ORIGIN'")
36 SET (CMAKE_ASM_NASM_OBJECT_FORMAT "elf")
37 ENABLE_LANGUAGE (ASM_NASM)
42 ###############################################################################
44 ###############################################################################
45 option(TORQUE_SFX_VORBIS "Vorbis Sound" ON)
46 mark_as_advanced(TORQUE_SFX_VORBIS)
47 option(TORQUE_THEORA "Theora Video Support" ON)
48 mark_as_advanced(TORQUE_THEORA)
49 option(TORQUE_ADVANCED_LIGHTING "Advanced Lighting" ON)
50 mark_as_advanced(TORQUE_ADVANCED_LIGHTING)
51 option(TORQUE_BASIC_LIGHTING "Basic Lighting" ON)
52 mark_as_advanced(TORQUE_BASIC_LIGHTING)
54 option(TORQUE_SFX_DirectX "DirectX Sound" ON)
55 mark_as_advanced(TORQUE_SFX_DirectX)
57 set(TORQUE_SFX_DirectX OFF)
59 option(TORQUE_SFX_OPENAL "OpenAL Sound" ON)
60 mark_as_advanced(TORQUE_SFX_OPENAL)
61 option(TORQUE_HIFI "HIFI? support" OFF)
62 mark_as_advanced(TORQUE_HIFI)
63 option(TORQUE_EXTENDED_MOVE "Extended move support" OFF)
64 mark_as_advanced(TORQUE_EXTENDED_MOVE)
66 option(TORQUE_SDL "Use SDL for window and input" OFF)
68 set(TORQUE_SDL ON) # we need sdl to work on Linux/Mac
71 option(TORQUE_OPENGL "Allow OpenGL render" OFF)
72 #mark_as_advanced(TORQUE_OPENGL)
74 set(TORQUE_OPENGL ON) # we need OpenGL to render on Linux/Mac
78 option(TORQUE_OPENGL "Allow OpenGL render" OFF)
79 #mark_as_advanced(TORQUE_OPENGL)
81 set(TORQUE_OPENGL ON) # we need OpenGL to render on Linux/Mac
82 option(TORQUE_DEDICATED "Torque dedicated" OFF)
86 option(TORQUE_D3D11 "Allow Direct3D 11 render" OFF)
89 option(TORQUE_EXPERIMENTAL_EC "Experimental Entity/Component systems" OFF)
90 mark_as_advanced(TORQUE_EXPERIMENTAL_EC)
92 ###############################################################################
94 ###############################################################################
95 if(NOT MSVC) # handle single-configuration generator
96 set(TORQUE_BUILD_TYPE "Debug" CACHE STRING "Select one of Debug, Release and RelWithDebInfo")
97 set_property(CACHE TORQUE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo")
99 set(TORQUE_ADDITIONAL_LINKER_FLAGS "" CACHE STRING "Additional linker flags")
100 mark_as_advanced(TORQUE_ADDITIONAL_LINKER_FLAGS)
103 option(TORQUE_MULTITHREAD "Multi Threading" ON)
104 mark_as_advanced(TORQUE_MULTITHREAD)
106 option(TORQUE_DISABLE_MEMORY_MANAGER "Disable memory manager" ON)
107 mark_as_advanced(TORQUE_DISABLE_MEMORY_MANAGER)
109 option(TORQUE_DISABLE_VIRTUAL_MOUNT_SYSTEM "Disable virtual mount system" OFF)
110 mark_as_advanced(TORQUE_DISABLE_VIRTUAL_MOUNT_SYSTEM)
112 option(TORQUE_PLAYER "Playback only?" OFF)
113 mark_as_advanced(TORQUE_PLAYER)
115 option(TORQUE_TOOLS "Enable or disable the tools" ON)
116 mark_as_advanced(TORQUE_TOOLS)
118 option(TORQUE_ENABLE_PROFILER "Enable or disable the profiler" OFF)
119 mark_as_advanced(TORQUE_ENABLE_PROFILER)
121 option(TORQUE_DEBUG "T3D Debug mode" OFF)
122 mark_as_advanced(TORQUE_DEBUG)
124 option(TORQUE_SHIPPING "T3D Shipping build?" OFF)
125 mark_as_advanced(TORQUE_SHIPPING)
127 option(TORQUE_DEBUG_NET "debug network" OFF)
128 mark_as_advanced(TORQUE_DEBUG_NET)
130 option(TORQUE_DEBUG_NET_MOVES "debug network moves" OFF)
131 mark_as_advanced(TORQUE_DEBUG_NET_MOVES)
133 option(TORQUE_ENABLE_ASSERTS "enables or disable asserts" OFF)
134 mark_as_advanced(TORQUE_ENABLE_ASSERTS)
136 option(TORQUE_DEBUG_GFX_MODE "triggers graphics debug mode" OFF)
137 mark_as_advanced(TORQUE_DEBUG_GFX_MODE)
139 #option(DEBUG_SPEW "more debug" OFF)
140 set(TORQUE_NO_DSO_GENERATION ON)
143 # warning C4800: 'XXX' : forcing value to bool 'true' or 'false' (performance warning)
144 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4800")
145 # warning C4018: '<' : signed/unsigned mismatch
146 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4018")
147 # warning C4244: 'initializing' : conversion from 'XXX' to 'XXX', possible loss of data
148 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4244")
151 link_directories($ENV{DXSDK_DIR}/Lib/x64)
153 link_directories($ENV{DXSDK_DIR}/Lib/x86)
158 if(NOT MSVC) # handle single-configuration generator
159 set(CMAKE_BUILD_TYPE ${TORQUE_BUILD_TYPE})
160 if(CMAKE_BUILD_TYPE STREQUAL "Debug")
161 set(TORQUE_DEBUG TRUE)
162 elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
163 set(TORQUE_RELEASE TRUE)
164 elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
165 set(TORQUE_RELEASE TRUE)
167 message(FATAL_ERROR "Please select Debug, Release or RelWithDebInfo for TORQUE_BUILD_TYPE")
171 ###############################################################################
172 # Always enabled paths first
173 ###############################################################################
174 addPath("${srcDir}/") # must come first :)
175 addPathRec("${srcDir}/app")
176 addPath("${srcDir}/sfx/media")
177 addPath("${srcDir}/sfx/null")
178 addPath("${srcDir}/sfx")
179 addPath("${srcDir}/console")
180 addPath("${srcDir}/core")
181 addPath("${srcDir}/core/stream")
182 addPath("${srcDir}/core/strings")
183 addPath("${srcDir}/core/util")
184 addPath("${srcDir}/core/util/test")
185 addPath("${srcDir}/core/util/journal")
186 addPath("${srcDir}/core/util/journal/test")
187 addPath("${srcDir}/core/util/zip")
188 addPath("${srcDir}/core/util/zip/test")
189 addPath("${srcDir}/core/util/zip/compressors")
190 addPath("${srcDir}/i18n")
191 addPath("${srcDir}/sim")
192 addPath("${srcDir}/util")
193 addPath("${srcDir}/windowManager")
194 addPath("${srcDir}/windowManager/torque")
195 addPath("${srcDir}/windowManager/test")
196 addPath("${srcDir}/math")
197 addPath("${srcDir}/math/util")
198 addPath("${srcDir}/math/test")
200 addPath("${srcDir}/platform")
202 set(BLACKLIST "fileDialog.cpp" )
204 addPath("${srcDir}/platform/nativeDialogs")
207 addPath("${srcDir}/cinterface")
209 if( NOT TORQUE_DEDICATED )
210 addPath("${srcDir}/platform/menus")
212 addPath("${srcDir}/platform/test")
213 addPath("${srcDir}/platform/threads")
214 addPath("${srcDir}/platform/threads/test")
215 addPath("${srcDir}/platform/async")
216 addPath("${srcDir}/platform/async/test")
217 addPath("${srcDir}/platform/input")
218 addPath("${srcDir}/platform/output")
219 addPath("${srcDir}/app")
220 addPath("${srcDir}/app/net")
221 addPath("${srcDir}/util/messaging")
222 addPath("${srcDir}/gfx/Null")
223 addPath("${srcDir}/gfx/test")
224 addPath("${srcDir}/gfx/bitmap")
225 addPath("${srcDir}/gfx/bitmap/loaders")
226 addPath("${srcDir}/gfx/util")
227 addPath("${srcDir}/gfx/video")
228 addPath("${srcDir}/gfx")
229 addPath("${srcDir}/shaderGen")
230 addPath("${srcDir}/gfx/sim")
231 addPath("${srcDir}/gui/buttons")
232 addPath("${srcDir}/gui/containers")
233 addPath("${srcDir}/gui/controls")
234 addPath("${srcDir}/gui/core")
235 addPath("${srcDir}/gui/game")
236 addPath("${srcDir}/gui/shiny")
237 addPath("${srcDir}/gui/utility")
238 addPath("${srcDir}/gui")
239 addPath("${srcDir}/collision")
240 addPath("${srcDir}/materials")
241 addPath("${srcDir}/lighting")
242 addPath("${srcDir}/lighting/common")
243 addPath("${srcDir}/renderInstance")
244 addPath("${srcDir}/scene")
245 addPath("${srcDir}/scene/culling")
246 addPath("${srcDir}/scene/zones")
247 addPath("${srcDir}/scene/mixin")
248 addPath("${srcDir}/shaderGen")
249 addPath("${srcDir}/terrain")
250 addPath("${srcDir}/environment")
251 addPath("${srcDir}/forest")
252 addPath("${srcDir}/forest/ts")
253 addPath("${srcDir}/ts")
254 addPath("${srcDir}/ts/arch")
255 addPath("${srcDir}/physics")
256 addPath("${srcDir}/gui/3d")
257 addPath("${srcDir}/postFx")
259 if(NOT TORQUE_EXPERIMENTAL_EC)
260 set(BLACKLIST "Entity.cpp;Entity.h" )
262 addPath("${srcDir}/T3D")
265 addPath("${srcDir}/T3D/examples")
266 addPath("${srcDir}/T3D/fps")
267 addPath("${srcDir}/T3D/fx")
268 addPath("${srcDir}/T3D/vehicles")
269 addPath("${srcDir}/T3D/physics")
270 addPath("${srcDir}/T3D/decal")
271 addPath("${srcDir}/T3D/sfx")
272 addPath("${srcDir}/T3D/gameBase")
273 addPath("${srcDir}/T3D/turret")
275 if( TORQUE_EXPERIMENTAL_EC )
276 addPath("${srcDir}/T3D/components/")
277 addPath("${srcDir}/T3D/components/Animation")
278 addPath("${srcDir}/T3D/components/Camera")
279 addPath("${srcDir}/T3D/components/Collision")
280 addPath("${srcDir}/T3D/components/Game")
281 addPath("${srcDir}/T3D/components/Physics")
282 addPath("${srcDir}/T3D/components/Render")
285 addPath("${srcDir}/main/")
286 addPath("${srcDir}/assets")
287 addPath("${srcDir}/module")
288 addPath("${srcDir}/T3D/assets")
289 addPathRec("${srcDir}/persistence")
290 addPathRec("${srcDir}/ts/collada")
291 addPathRec("${srcDir}/ts/loader")
292 addPathRec("${projectSrcDir}")
294 ###############################################################################
296 ###############################################################################
298 if(TORQUE_ADVANCED_LIGHTING)
299 addPath("${srcDir}/lighting/advanced")
300 addPathRec("${srcDir}/lighting/shadowMap")
302 addPathRec("${srcDir}/lighting/advanced/hlsl")
305 addPathRec("${srcDir}/lighting/advanced/glsl")
307 addDef(TORQUE_ADVANCED_LIGHTING)
309 if(TORQUE_BASIC_LIGHTING)
310 addPathRec("${srcDir}/lighting/basic")
311 addPathRec("${srcDir}/lighting/shadowMap")
312 addDef(TORQUE_BASIC_LIGHTING)
316 if(TORQUE_SFX_DirectX)
318 addPathRec("${srcDir}/sfx/dsound")
319 addPathRec("${srcDir}/sfx/xaudio")
323 if(TORQUE_SFX_OPENAL AND NOT TORQUE_DEDICATED)
324 addPath("${srcDir}/sfx/openal")
325 #addPath("${srcDir}/sfx/openal/mac")
327 addPath("${srcDir}/sfx/openal/win32")
328 addInclude("${libDir}/openal/win32")
331 addPath("${srcDir}/sfx/openal/linux")
337 if(TORQUE_SFX_VORBIS)
338 addInclude(${libDir}/libvorbis/include)
339 addDef(TORQUE_OGGVORBIS)
346 addPath("${srcDir}/core/ogg")
347 addPath("${srcDir}/gfx/video")
348 addPath("${srcDir}/gui/theora")
350 addDef(TORQUE_OGGTHEORA)
351 addDef(TORQUE_OGGVORIBS)
352 addInclude(${libDir}/libtheora/include)
356 # Include tools for non-tool builds (or define player if a tool build)
358 addPath("${srcDir}/gui/worldEditor")
359 addPath("${srcDir}/environment/editors")
360 addPath("${srcDir}/forest/editor")
361 addPath("${srcDir}/gui/editor")
362 if(NOT TORQUE_EXPERIMENTAL_EC)
363 set(BLACKLIST "entityGroup.cpp;entityGroup.h;mountingGroup.cpp;mountingGroup.h" )
365 addPath("${srcDir}/gui/editor/inspector")
370 addPath("${srcDir}/T3D/gameBase/hifi")
371 addDef(TORQUE_HIFI_NET)
374 if(TORQUE_EXTENDED_MOVE)
375 addPath("${srcDir}/T3D/gameBase/extended")
376 addDef(TORQUE_EXTENDED_MOVE)
378 addPath("${srcDir}/T3D/gameBase/std")
382 addPathRec("${srcDir}/windowManager/sdl")
383 addPathRec("${srcDir}/platformSDL")
386 addPathRec("${srcDir}/gfx/gl/sdl")
390 #set(CMAKE_SIZEOF_VOID_P 4) #force 32 bit
391 set(ENV{CFLAGS} "${CXX_FLAG32} -g -O3")
392 if("${TORQUE_ADDITIONAL_LINKER_FLAGS}" STREQUAL "")
393 set(ENV{LDFLAGS} "${CXX_FLAG32}")
395 set(ENV{LDFLAGS} "${CXX_FLAG32} ${TORQUE_ADDITIONAL_LINKER_FLAGS}")
398 find_package(PkgConfig REQUIRED)
399 pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
401 # Setup CMake to use GTK+, tell the compiler where to look for headers
402 # and to the linker where to look for libraries
403 include_directories(${GTK3_INCLUDE_DIRS})
404 link_directories(${GTK3_LIBRARY_DIRS})
406 # Add other flags to the compiler
407 add_definitions(${GTK3_CFLAGS_OTHER})
409 set(BLACKLIST "nfd_win.cpp" )
410 addLib(nativeFileDialogs)
413 target_link_libraries(nativeFileDialogs ${GTK3_LIBRARIES})
415 set(BLACKLIST "nfd_gtk.c" )
416 addLib(nativeFileDialogs)
421 #override and hide SDL2 cache variables
422 set(SDL_SHARED ON CACHE INTERNAL "" FORCE)
423 set(SDL_STATIC OFF CACHE INTERNAL "" FORCE)
424 add_subdirectory( ${libDir}/sdl ${CMAKE_CURRENT_BINARY_DIR}/sdl2)
428 addDef(TORQUE_DEDICATED)
431 if(TORQUE_EXPERIMENTAL_EC)
432 addDef(TORQUE_EXPERIMENTAL_EC)
436 file(GLOB modules "modules/*.cmake")
437 foreach(module ${modules})
441 ###############################################################################
442 # platform specific things
443 ###############################################################################
445 addPath("${srcDir}/platformWin32")
447 set(BLACKLIST "fileDialog.cpp" )
449 addPath("${srcDir}/platformWin32/nativeDialogs")
451 addPath("${srcDir}/platformWin32/menus")
452 addPath("${srcDir}/platformWin32/threads")
453 addPath("${srcDir}/platformWin32/videoInfo")
454 addPath("${srcDir}/platformWin32/minidump")
455 addPath("${srcDir}/windowManager/win32")
457 addPath("${srcDir}/gfx/D3D11")
459 addPath("${srcDir}/gfx/D3D9")
460 addPath("${srcDir}/gfx/D3D9/pc")
461 addPath("${srcDir}/shaderGen/HLSL")
462 addPath("${srcDir}/terrain/hlsl")
463 addPath("${srcDir}/forest/hlsl")
464 # add windows rc file for the icon
465 addFile("${projectSrcDir}/torque.rc")
469 addPath("${srcDir}/platformMac")
470 addPath("${srcDir}/platformMac/menus")
471 addPath("${srcDir}/platformPOSIX")
472 addPath("${srcDir}/windowManager/mac")
473 addPath("${srcDir}/gfx/gl")
474 addPath("${srcDir}/gfx/gl/ggl")
475 addPath("${srcDir}/gfx/gl/ggl/mac")
476 addPath("${srcDir}/gfx/gl/ggl/generated")
477 addPath("${srcDir}/shaderGen/GLSL")
478 addPath("${srcDir}/terrain/glsl")
479 addPath("${srcDir}/forest/glsl")
483 addPath("${srcDir}/platformXbox")
484 addPath("${srcDir}/platformXbox/threads")
485 addPath("${srcDir}/windowManager/360")
486 addPath("${srcDir}/gfx/D3D9")
487 addPath("${srcDir}/gfx/D3D9/360")
488 addPath("${srcDir}/shaderGen/HLSL")
489 addPath("${srcDir}/shaderGen/360")
490 addPath("${srcDir}/ts/arch/360")
491 addPath("${srcDir}/terrain/hlsl")
492 addPath("${srcDir}/forest/hlsl")
496 addPath("${srcDir}/platformPS3")
497 addPath("${srcDir}/platformPS3/threads")
498 addPath("${srcDir}/windowManager/ps3")
499 addPath("${srcDir}/gfx/gl")
500 addPath("${srcDir}/gfx/gl/ggl")
501 addPath("${srcDir}/gfx/gl/ggl/ps3")
502 addPath("${srcDir}/gfx/gl/ggl/generated")
503 addPath("${srcDir}/shaderGen/GLSL")
504 addPath("${srcDir}/ts/arch/ps3")
505 addPath("${srcDir}/terrain/glsl")
506 addPath("${srcDir}/forest/glsl")
512 addPath("${srcDir}/windowManager/dedicated")
513 # ${srcDir}/platformX86UNIX/*.client.* files are not needed
514 # @todo: move to separate file
516 ${srcDir}/platformX86UNIX/*.cpp
517 ${srcDir}/platformX86UNIX/*.c
518 ${srcDir}/platformX86UNIX/*.cc
519 ${srcDir}/platformX86UNIX/*.h )
520 file( GLOB tmp_remove_files ${srcDir}/platformX86UNIX/*client.* )
521 LIST( REMOVE_ITEM tmp_files ${tmp_remove_files} )
522 foreach( f ${tmp_files} )
526 addPath("${srcDir}/platformX86UNIX")
527 addPath("${srcDir}/platformX86UNIX/nativeDialogs")
530 addPath("${srcDir}/platformX86UNIX/threads")
531 addPath("${srcDir}/platformPOSIX")
535 addPath("${srcDir}/shaderGen/GLSL")
536 if( TORQUE_OPENGL AND NOT TORQUE_DEDICATED )
537 addPath("${srcDir}/gfx/gl")
538 addPath("${srcDir}/gfx/gl/tGL")
539 addPath("${srcDir}/shaderGen/GLSL")
540 addPath("${srcDir}/terrain/glsl")
541 addPath("${srcDir}/forest/glsl")
544 if(WIN32 AND NOT TORQUE_SDL)
545 addPath("${srcDir}/gfx/gl/win32")
549 ###############################################################################
550 ###############################################################################
552 ###############################################################################
553 ###############################################################################
555 message(STATUS "writing ${projectSrcDir}/torqueConfig.h")
556 CONFIGURE_FILE("${cmakeDir}/torqueConfig.h.in" "${projectSrcDir}/torqueConfig.h")
558 # configure the relevant files only once
559 if(NOT EXISTS "${projectSrcDir}/torque.ico")
560 CONFIGURE_FILE("${cmakeDir}/torque.ico" "${projectSrcDir}/torque.ico" COPYONLY)
562 if(NOT EXISTS "${projectOutDir}/${PROJECT_NAME}.torsion")
563 CONFIGURE_FILE("${cmakeDir}/template.torsion.in" "${projectOutDir}/${PROJECT_NAME}.torsion")
565 if(EXISTS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/main.cs.in" AND NOT EXISTS "${projectOutDir}/main.cs")
566 CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/main.cs.in" "${projectOutDir}/main.cs")
569 if(NOT EXISTS "${projectSrcDir}/torque.rc")
570 CONFIGURE_FILE("${cmakeDir}/torque-win.rc.in" "${projectSrcDir}/torque.rc")
572 if(NOT EXISTS "${projectOutDir}/${PROJECT_NAME}-debug.bat")
573 CONFIGURE_FILE("${cmakeDir}/app-debug-win.bat.in" "${projectOutDir}/${PROJECT_NAME}-debug.bat")
575 if(NOT EXISTS "${projectOutDir}/cleanup.bat")
576 CONFIGURE_FILE("${cmakeDir}/cleanup-win.bat.in" "${projectOutDir}/cleanup.bat")
580 ###############################################################################
582 ###############################################################################
599 # copy pasted from T3D build system, some might not be needed
600 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")
601 mark_as_advanced(TORQUE_EXTERNAL_LIBS)
602 addLib("${TORQUE_EXTERNAL_LIBS}")
608 # JTH: DXSDK is compiled with older runtime, and MSVC 2015+ is when __vsnprintf is undefined.
609 # This is a workaround by linking with the older legacy library functions.
610 # See this for more info: http://stackoverflow.com/a/34230122
612 addLib(legacy_stdio_definitions.lib)
617 # copy pasted from T3D build system, some might not be needed
618 set(TORQUE_EXTERNAL_LIBS "dl Xxf86vm Xext X11 Xft stdc++ pthread GL" CACHE STRING "external libs to link against")
619 mark_as_advanced(TORQUE_EXTERNAL_LIBS)
621 string(REPLACE " " ";" TORQUE_EXTERNAL_LIBS_LIST ${TORQUE_EXTERNAL_LIBS})
622 addLib( "${TORQUE_EXTERNAL_LIBS_LIST}" )
626 # copy pasted from T3D build system, some might not be needed
627 set(TORQUE_EXTERNAL_LIBS "rt dl Xxf86vm Xext X11 Xft stdc++ pthread GL" CACHE STRING "external libs to link against")
628 mark_as_advanced(TORQUE_EXTERNAL_LIBS)
630 string(REPLACE " " ";" TORQUE_EXTERNAL_LIBS_LIST ${TORQUE_EXTERNAL_LIBS})
631 addLib( "${TORQUE_EXTERNAL_LIBS_LIST}" )
634 ###############################################################################
635 # Always enabled Definitions
636 ###############################################################################
637 addDef(TORQUE_DEBUG Debug)
638 addDef(TORQUE_ENABLE_ASSERTS "Debug;RelWithDebInfo")
639 addDef(TORQUE_DEBUG_GFX_MODE "RelWithDebInfo")
640 addDef(TORQUE_SHADERGEN)
642 addDef(NTORQUE_SHARED)
644 addDef(_UNICODE) # for VS
645 addDef(TORQUE_UNICODE)
646 #addDef(TORQUE_SHARED) # not used anymore as the game is the executable directly
647 addDef(LTC_NO_PROTOTYPES) # for libTomCrypt
648 addDef(BAN_OPCODE_AUTOLINK)
650 addDef(TORQUE_OPCODE)
651 addDef(TORQUE_COLLADA)
652 addDef(DOM_INCLUDE_TINYXML)
654 addDef(_CRT_SECURE_NO_WARNINGS)
655 addDef(_CRT_SECURE_NO_DEPRECATE)
662 addDef(TORQUE_OPENGL)
667 addInclude(${libDir}/sdl/include)
671 if(TORQUE_STATIC_CODE_ANALYSIS)
672 addDef( "ON_FAIL_ASSERTFATAL=exit(1)" )
675 ###############################################################################
677 ###############################################################################
678 addInclude("${projectSrcDir}")
679 addInclude("${srcDir}/")
680 addInclude("${libDir}/lmpg")
681 addInclude("${libDir}/lpng")
682 addInclude("${libDir}/ljpeg")
683 addInclude("${libDir}/lungif")
684 addInclude("${libDir}/zlib")
685 addInclude("${libDir}/") # for tinyxml
686 addInclude("${libDir}/tinyxml")
687 addInclude("${libDir}/squish")
688 addInclude("${libDir}/convexDecomp")
689 addInclude("${libDir}/libogg/include")
690 addInclude("${libDir}/opcode")
691 addInclude("${libDir}/collada/include")
692 addInclude("${libDir}/collada/include/1.4")
694 addInclude("${libDir}/nativeFileDialogs/include")
697 addInclude("${libDir}/epoxy/include")
698 addInclude("${libDir}/epoxy/src")
702 addInclude("/usr/include/freetype2/freetype")
703 addInclude("/usr/include/freetype2")
708 set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY INCLUDE_DIRECTORIES $ENV{DXSDK_DIR}/Include)
712 addInclude("/usr/include/freetype2/freetype")
713 addInclude("/usr/include/freetype2")
717 # Match projectGenerator naming for executables
718 set(OUTPUT_CONFIG DEBUG MINSIZEREL RELWITHDEBINFO)
719 set(OUTPUT_SUFFIX DEBUG MINSIZE OPTIMIZEDDEBUG)
720 foreach(INDEX RANGE 2)
721 list(GET OUTPUT_CONFIG ${INDEX} CONF)
722 list(GET OUTPUT_SUFFIX ${INDEX} SUFFIX)
723 set_property(TARGET ${PROJECT_NAME} PROPERTY OUTPUT_NAME_${CONF} ${PROJECT_NAME}_${SUFFIX})
727 ###############################################################################
729 ###############################################################################
732 message("Prepare Template(${TORQUE_TEMPLATE}) install...")
733 file(GLOB_RECURSE INSTALL_FILES_AND_DIRS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/*")
735 IF( NOT TORQUE_EXPERIMENTAL_EC)
736 list(REMOVE_ITEM INSTALL_FILES_AND_DIRS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/art/art.module.taml")
737 list(REMOVE_ITEM INSTALL_FILES_AND_DIRS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/art/shapes/actors/Soldier/soldier.asset.taml")
738 list(REMOVE_ITEM INSTALL_FILES_AND_DIRS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/scripts/scripts.module.taml")
740 foreach(ITEM ${INSTALL_FILES_AND_DIRS})
741 get_filename_component( dir ${ITEM} DIRECTORY )
742 get_filename_component( fileName ${ITEM} NAME )
743 if( ${dir} STREQUAL ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/scripts/server/components
744 OR ${dir} STREQUAL ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/scripts/server/components/game
745 OR ${dir} STREQUAL ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/scripts/server/components/input
746 OR ${dir} STREQUAL ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/scripts/server/gameObjects
747 OR ${dir} STREQUAL ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/tools/componentEditor
748 OR ${dir} STREQUAL ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/tools/componentEditor/gui
749 OR ${dir} STREQUAL ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/tools/componentEditor/scripts )
750 list(REMOVE_ITEM INSTALL_FILES_AND_DIRS ${dir}/${fileName})
755 foreach(ITEM ${INSTALL_FILES_AND_DIRS})
756 get_filename_component( dir ${ITEM} DIRECTORY )
757 STRING(REGEX REPLACE "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/" "${TORQUE_APP_DIR}/" INSTALL_DIR ${dir})
758 install( FILES ${ITEM} DESTINATION ${INSTALL_DIR} )
762 INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/cleanShaders.bat" DESTINATION "${TORQUE_APP_DIR}")
763 INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteCachedDTSs.bat" DESTINATION "${TORQUE_APP_DIR}")
764 INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteDSOs.bat" DESTINATION "${TORQUE_APP_DIR}")
765 INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeletePrefs.bat" DESTINATION "${TORQUE_APP_DIR}")