torque3d.cmake 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678
  1. # -----------------------------------------------------------------------------
  2. # Copyright (c) 2014 GarageGames, LLC
  3. #
  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:
  10. #
  11. # The above copyright notice and this permission notice shall be included in
  12. # all copies or substantial portions of the Software.
  13. #
  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
  20. # IN THE SOFTWARE.
  21. # -----------------------------------------------------------------------------
  22. project(${TORQUE_APP_NAME})
  23. if(UNIX)
  24. if(NOT CXX_FLAG32)
  25. set(CXX_FLAG32 "")
  26. endif()
  27. #set(CXX_FLAG32 "-m32") #uncomment for build x32 on OSx64
  28. # default compiler flags
  29. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_FLAG32} -Wundef -msse -pipe -Wfatal-errors ${TORQUE_ADDITIONAL_LINKER_FLAGS} -Wl,-rpath,'$$ORIGIN'")
  30. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CXX_FLAG32} -Wundef -msse -pipe -Wfatal-errors ${TORQUE_ADDITIONAL_LINKER_FLAGS} -Wl,-rpath,'$$ORIGIN'")
  31. # for asm files
  32. SET (CMAKE_ASM_NASM_OBJECT_FORMAT "elf")
  33. ENABLE_LANGUAGE (ASM_NASM)
  34. endif()
  35. # TODO: fmod support
  36. ###############################################################################
  37. # modules
  38. ###############################################################################
  39. option(TORQUE_SFX_VORBIS "Vorbis Sound" ON)
  40. mark_as_advanced(TORQUE_SFX_VORBIS)
  41. option(TORQUE_THEORA "Theora Video Support" ON)
  42. mark_as_advanced(TORQUE_THEORA)
  43. option(TORQUE_ADVANCED_LIGHTING "Advanced Lighting" ON)
  44. mark_as_advanced(TORQUE_ADVANCED_LIGHTING)
  45. option(TORQUE_BASIC_LIGHTING "Basic Lighting" ON)
  46. mark_as_advanced(TORQUE_BASIC_LIGHTING)
  47. if(WIN32)
  48. option(TORQUE_SFX_DirectX "DirectX Sound" ON)
  49. mark_as_advanced(TORQUE_SFX_DirectX)
  50. else()
  51. set(TORQUE_SFX_DirectX OFF)
  52. endif()
  53. option(TORQUE_SFX_OPENAL "OpenAL Sound" ON)
  54. mark_as_advanced(TORQUE_SFX_OPENAL)
  55. option(TORQUE_HIFI "HIFI? support" OFF)
  56. mark_as_advanced(TORQUE_HIFI)
  57. option(TORQUE_EXTENDED_MOVE "Extended move support" OFF)
  58. mark_as_advanced(TORQUE_EXTENDED_MOVE)
  59. if(WIN32)
  60. option(TORQUE_SDL "Use SDL for window and input" OFF)
  61. mark_as_advanced(TORQUE_SDL)
  62. else()
  63. set(TORQUE_SDL ON) # we need sdl to work on Linux/Mac
  64. endif()
  65. if(WIN32)
  66. option(TORQUE_OPENGL "Allow OpenGL render" OFF)
  67. #mark_as_advanced(TORQUE_OPENGL)
  68. else()
  69. set(TORQUE_OPENGL ON) # we need OpenGL to render on Linux/Mac
  70. endif()
  71. if(WIN32)
  72. option(TORQUE_OPENGL "Allow OpenGL render" OFF)
  73. #mark_as_advanced(TORQUE_OPENGL)
  74. else()
  75. set(TORQUE_OPENGL ON) # we need OpenGL to render on Linux/Mac
  76. option(TORQUE_DEDICATED "Torque dedicated" OFF)
  77. endif()
  78. if(WIN32)
  79. option(TORQUE_D3D11 "Allow Direct3D 11 render" OFF)
  80. endif()
  81. ###############################################################################
  82. # options
  83. ###############################################################################
  84. if(NOT MSVC) # handle single-configuration generator
  85. set(TORQUE_BUILD_TYPE "Debug" CACHE STRING "Select one of Debug, Release and RelWithDebInfo")
  86. set_property(CACHE TORQUE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo")
  87. set(TORQUE_ADDITIONAL_LINKER_FLAGS "" CACHE STRING "Additional linker flags")
  88. mark_as_advanced(TORQUE_ADDITIONAL_LINKER_FLAGS)
  89. endif()
  90. option(TORQUE_MULTITHREAD "Multi Threading" ON)
  91. mark_as_advanced(TORQUE_MULTITHREAD)
  92. option(TORQUE_DISABLE_MEMORY_MANAGER "Disable memory manager" ON)
  93. mark_as_advanced(TORQUE_DISABLE_MEMORY_MANAGER)
  94. option(TORQUE_DISABLE_VIRTUAL_MOUNT_SYSTEM "Disable virtual mount system" OFF)
  95. mark_as_advanced(TORQUE_DISABLE_VIRTUAL_MOUNT_SYSTEM)
  96. option(TORQUE_PLAYER "Playback only?" OFF)
  97. mark_as_advanced(TORQUE_PLAYER)
  98. option(TORQUE_TOOLS "Enable or disable the tools" ON)
  99. mark_as_advanced(TORQUE_TOOLS)
  100. option(TORQUE_ENABLE_PROFILER "Enable or disable the profiler" OFF)
  101. mark_as_advanced(TORQUE_ENABLE_PROFILER)
  102. option(TORQUE_DEBUG "T3D Debug mode" OFF)
  103. mark_as_advanced(TORQUE_DEBUG)
  104. option(TORQUE_SHIPPING "T3D Shipping build?" OFF)
  105. mark_as_advanced(TORQUE_SHIPPING)
  106. option(TORQUE_DEBUG_NET "debug network" OFF)
  107. mark_as_advanced(TORQUE_DEBUG_NET)
  108. option(TORQUE_DEBUG_NET_MOVES "debug network moves" OFF)
  109. mark_as_advanced(TORQUE_DEBUG_NET_MOVES)
  110. option(TORQUE_ENABLE_ASSERTS "enables or disable asserts" OFF)
  111. mark_as_advanced(TORQUE_ENABLE_ASSERTS)
  112. option(TORQUE_DEBUG_GFX_MODE "triggers graphics debug mode" OFF)
  113. mark_as_advanced(TORQUE_DEBUG_GFX_MODE)
  114. #option(DEBUG_SPEW "more debug" OFF)
  115. set(TORQUE_NO_DSO_GENERATION ON)
  116. if(WIN32)
  117. # warning C4800: 'XXX' : forcing value to bool 'true' or 'false' (performance warning)
  118. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4800")
  119. # warning C4018: '<' : signed/unsigned mismatch
  120. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4018")
  121. # warning C4244: 'initializing' : conversion from 'XXX' to 'XXX', possible loss of data
  122. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4244")
  123. if( TORQUE_CPU_X64 )
  124. link_directories($ENV{DXSDK_DIR}/Lib/x64)
  125. else()
  126. link_directories($ENV{DXSDK_DIR}/Lib/x86)
  127. endif()
  128. endif()
  129. # build types
  130. if(NOT MSVC) # handle single-configuration generator
  131. set(CMAKE_BUILD_TYPE ${TORQUE_BUILD_TYPE})
  132. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  133. set(TORQUE_DEBUG TRUE)
  134. elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
  135. set(TORQUE_RELEASE TRUE)
  136. elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
  137. set(TORQUE_RELEASE TRUE)
  138. else()
  139. message(FATAL_ERROR "Please select Debug, Release or RelWithDebInfo for TORQUE_BUILD_TYPE")
  140. endif()
  141. endif()
  142. ###############################################################################
  143. # Always enabled paths first
  144. ###############################################################################
  145. addPath("${srcDir}/") # must come first :)
  146. addPathRec("${srcDir}/app")
  147. addPath("${srcDir}/sfx/media")
  148. addPath("${srcDir}/sfx/null")
  149. addPath("${srcDir}/sfx")
  150. addPath("${srcDir}/component")
  151. addPath("${srcDir}/component/interfaces")
  152. addPath("${srcDir}/console")
  153. addPath("${srcDir}/core")
  154. addPath("${srcDir}/core/stream")
  155. addPath("${srcDir}/core/strings")
  156. addPath("${srcDir}/core/util")
  157. addPath("${srcDir}/core/util/test")
  158. addPath("${srcDir}/core/util/journal")
  159. addPath("${srcDir}/core/util/journal/test")
  160. addPath("${srcDir}/core/util/zip")
  161. addPath("${srcDir}/core/util/zip/test")
  162. addPath("${srcDir}/core/util/zip/compressors")
  163. addPath("${srcDir}/i18n")
  164. addPath("${srcDir}/sim")
  165. addPath("${srcDir}/util")
  166. addPath("${srcDir}/windowManager")
  167. addPath("${srcDir}/windowManager/torque")
  168. addPath("${srcDir}/windowManager/test")
  169. addPath("${srcDir}/math")
  170. addPath("${srcDir}/math/util")
  171. addPath("${srcDir}/math/test")
  172. addPath("${srcDir}/platform")
  173. addPath("${srcDir}/cinterface")
  174. addPath("${srcDir}/platform/nativeDialogs")
  175. if( NOT TORQUE_DEDICATED )
  176. addPath("${srcDir}/platform/menus")
  177. endif()
  178. addPath("${srcDir}/platform/test")
  179. addPath("${srcDir}/platform/threads")
  180. addPath("${srcDir}/platform/threads/test")
  181. addPath("${srcDir}/platform/async")
  182. addPath("${srcDir}/platform/async/test")
  183. addPath("${srcDir}/platform/input")
  184. addPath("${srcDir}/platform/output")
  185. addPath("${srcDir}/app")
  186. addPath("${srcDir}/app/net")
  187. addPath("${srcDir}/util/messaging")
  188. addPath("${srcDir}/gfx/Null")
  189. addPath("${srcDir}/gfx/test")
  190. addPath("${srcDir}/gfx/bitmap")
  191. addPath("${srcDir}/gfx/bitmap/loaders")
  192. addPath("${srcDir}/gfx/util")
  193. addPath("${srcDir}/gfx/video")
  194. addPath("${srcDir}/gfx")
  195. addPath("${srcDir}/shaderGen")
  196. addPath("${srcDir}/gfx/sim")
  197. addPath("${srcDir}/gui/buttons")
  198. addPath("${srcDir}/gui/containers")
  199. addPath("${srcDir}/gui/controls")
  200. addPath("${srcDir}/gui/core")
  201. addPath("${srcDir}/gui/game")
  202. addPath("${srcDir}/gui/shiny")
  203. addPath("${srcDir}/gui/utility")
  204. addPath("${srcDir}/gui")
  205. addPath("${srcDir}/collision")
  206. addPath("${srcDir}/materials")
  207. addPath("${srcDir}/lighting")
  208. addPath("${srcDir}/lighting/common")
  209. addPath("${srcDir}/renderInstance")
  210. addPath("${srcDir}/scene")
  211. addPath("${srcDir}/scene/culling")
  212. addPath("${srcDir}/scene/zones")
  213. addPath("${srcDir}/scene/mixin")
  214. addPath("${srcDir}/shaderGen")
  215. addPath("${srcDir}/terrain")
  216. addPath("${srcDir}/environment")
  217. addPath("${srcDir}/forest")
  218. addPath("${srcDir}/forest/ts")
  219. addPath("${srcDir}/ts")
  220. addPath("${srcDir}/ts/arch")
  221. addPath("${srcDir}/physics")
  222. addPath("${srcDir}/gui/3d")
  223. addPath("${srcDir}/postFx")
  224. addPath("${srcDir}/T3D")
  225. addPath("${srcDir}/T3D/examples")
  226. addPath("${srcDir}/T3D/fps")
  227. addPath("${srcDir}/T3D/fx")
  228. addPath("${srcDir}/T3D/vehicles")
  229. addPath("${srcDir}/T3D/physics")
  230. addPath("${srcDir}/T3D/decal")
  231. addPath("${srcDir}/T3D/sfx")
  232. addPath("${srcDir}/T3D/gameBase")
  233. addPath("${srcDir}/T3D/turret")
  234. addPath("${srcDir}/main/")
  235. addPath("${srcDir}/assets")
  236. addPath("${srcDir}/module")
  237. addPath("${srcDir}/T3D/assets")
  238. addPathRec("${srcDir}/persistence")
  239. addPathRec("${srcDir}/ts/collada")
  240. addPathRec("${srcDir}/ts/loader")
  241. addPathRec("${projectSrcDir}")
  242. ###############################################################################
  243. # modular paths
  244. ###############################################################################
  245. # lighting
  246. if(TORQUE_ADVANCED_LIGHTING)
  247. addPath("${srcDir}/lighting/advanced")
  248. addPathRec("${srcDir}/lighting/shadowMap")
  249. if(WIN32)
  250. addPathRec("${srcDir}/lighting/advanced/hlsl")
  251. endif()
  252. if(TORQUE_OPENGL)
  253. addPathRec("${srcDir}/lighting/advanced/glsl")
  254. endif()
  255. addDef(TORQUE_ADVANCED_LIGHTING)
  256. endif()
  257. if(TORQUE_BASIC_LIGHTING)
  258. addPathRec("${srcDir}/lighting/basic")
  259. addPathRec("${srcDir}/lighting/shadowMap")
  260. addDef(TORQUE_BASIC_LIGHTING)
  261. endif()
  262. # DirectX Sound
  263. if(TORQUE_SFX_DirectX)
  264. addLib(x3daudio.lib)
  265. addPathRec("${srcDir}/sfx/dsound")
  266. addPathRec("${srcDir}/sfx/xaudio")
  267. endif()
  268. # OpenAL
  269. if(TORQUE_SFX_OPENAL AND NOT TORQUE_DEDICATED)
  270. addPath("${srcDir}/sfx/openal")
  271. #addPath("${srcDir}/sfx/openal/mac")
  272. if(WIN32)
  273. addPath("${srcDir}/sfx/openal/win32")
  274. addInclude("${libDir}/openal/win32")
  275. endif()
  276. if(UNIX)
  277. addPath("${srcDir}/sfx/openal/linux")
  278. endif()
  279. endif()
  280. # Vorbis
  281. if(TORQUE_SFX_VORBIS)
  282. addInclude(${libDir}/libvorbis/include)
  283. addDef(TORQUE_OGGVORBIS)
  284. addLib(libvorbis)
  285. addLib(libogg)
  286. endif()
  287. # Theora
  288. if(TORQUE_THEORA)
  289. addPath("${srcDir}/core/ogg")
  290. addPath("${srcDir}/gfx/video")
  291. addPath("${srcDir}/gui/theora")
  292. addDef(TORQUE_OGGTHEORA)
  293. addDef(TORQUE_OGGVORIBS)
  294. addInclude(${libDir}/libtheora/include)
  295. addLib(libtheora)
  296. endif()
  297. # Include tools for non-tool builds (or define player if a tool build)
  298. if(TORQUE_TOOLS)
  299. addPath("${srcDir}/gui/worldEditor")
  300. addPath("${srcDir}/environment/editors")
  301. addPath("${srcDir}/forest/editor")
  302. addPath("${srcDir}/gui/editor")
  303. addPath("${srcDir}/gui/editor/inspector")
  304. endif()
  305. if(TORQUE_HIFI)
  306. addPath("${srcDir}/T3D/gameBase/hifi")
  307. addDef(TORQUE_HIFI_NET)
  308. endif()
  309. if(TORQUE_EXTENDED_MOVE)
  310. addPath("${srcDir}/T3D/gameBase/extended")
  311. addDef(TORQUE_EXTENDED_MOVE)
  312. else()
  313. addPath("${srcDir}/T3D/gameBase/std")
  314. endif()
  315. if(TORQUE_SDL)
  316. addPathRec("${srcDir}/windowManager/sdl")
  317. addPathRec("${srcDir}/platformSDL")
  318. if(TORQUE_OPENGL)
  319. addPathRec("${srcDir}/gfx/gl/sdl")
  320. endif()
  321. if(UNIX)
  322. #set(CMAKE_SIZEOF_VOID_P 4) #force 32 bit
  323. set(ENV{CFLAGS} "${CXX_FLAG32} -g -O3")
  324. if("${TORQUE_ADDITIONAL_LINKER_FLAGS}" STREQUAL "")
  325. set(ENV{LDFLAGS} "${CXX_FLAG32}")
  326. else()
  327. set(ENV{LDFLAGS} "${CXX_FLAG32} ${TORQUE_ADDITIONAL_LINKER_FLAGS}")
  328. endif()
  329. endif()
  330. #override and hide SDL2 cache variables
  331. set(SDL_SHARED ON CACHE INTERNAL "" FORCE)
  332. set(SDL_STATIC OFF CACHE INTERNAL "" FORCE)
  333. add_subdirectory( ${libDir}/sdl ${CMAKE_CURRENT_BINARY_DIR}/sdl2)
  334. endif()
  335. if(TORQUE_DEDICATED)
  336. addDef(TORQUE_DEDICATED)
  337. endif()
  338. #modules dir
  339. file(GLOB modules "modules/*.cmake")
  340. foreach(module ${modules})
  341. include(${module})
  342. endforeach()
  343. ###############################################################################
  344. # platform specific things
  345. ###############################################################################
  346. if(WIN32)
  347. addPath("${srcDir}/platformWin32")
  348. addPath("${srcDir}/platformWin32/nativeDialogs")
  349. addPath("${srcDir}/platformWin32/menus")
  350. addPath("${srcDir}/platformWin32/threads")
  351. addPath("${srcDir}/platformWin32/videoInfo")
  352. addPath("${srcDir}/platformWin32/minidump")
  353. addPath("${srcDir}/windowManager/win32")
  354. if(TORQUE_D3D11)
  355. addPath("${srcDir}/gfx/D3D11")
  356. endif()
  357. addPath("${srcDir}/gfx/D3D9")
  358. addPath("${srcDir}/gfx/D3D9/pc")
  359. addPath("${srcDir}/shaderGen/HLSL")
  360. addPath("${srcDir}/terrain/hlsl")
  361. addPath("${srcDir}/forest/hlsl")
  362. # add windows rc file for the icon
  363. addFile("${projectSrcDir}/torque.rc")
  364. endif()
  365. if(APPLE)
  366. addPath("${srcDir}/platformMac")
  367. addPath("${srcDir}/platformMac/menus")
  368. addPath("${srcDir}/platformPOSIX")
  369. addPath("${srcDir}/windowManager/mac")
  370. addPath("${srcDir}/gfx/gl")
  371. addPath("${srcDir}/gfx/gl/ggl")
  372. addPath("${srcDir}/gfx/gl/ggl/mac")
  373. addPath("${srcDir}/gfx/gl/ggl/generated")
  374. addPath("${srcDir}/shaderGen/GLSL")
  375. addPath("${srcDir}/terrain/glsl")
  376. addPath("${srcDir}/forest/glsl")
  377. endif()
  378. if(XBOX360)
  379. addPath("${srcDir}/platformXbox")
  380. addPath("${srcDir}/platformXbox/threads")
  381. addPath("${srcDir}/windowManager/360")
  382. addPath("${srcDir}/gfx/D3D9")
  383. addPath("${srcDir}/gfx/D3D9/360")
  384. addPath("${srcDir}/shaderGen/HLSL")
  385. addPath("${srcDir}/shaderGen/360")
  386. addPath("${srcDir}/ts/arch/360")
  387. addPath("${srcDir}/terrain/hlsl")
  388. addPath("${srcDir}/forest/hlsl")
  389. endif()
  390. if(PS3)
  391. addPath("${srcDir}/platformPS3")
  392. addPath("${srcDir}/platformPS3/threads")
  393. addPath("${srcDir}/windowManager/ps3")
  394. addPath("${srcDir}/gfx/gl")
  395. addPath("${srcDir}/gfx/gl/ggl")
  396. addPath("${srcDir}/gfx/gl/ggl/ps3")
  397. addPath("${srcDir}/gfx/gl/ggl/generated")
  398. addPath("${srcDir}/shaderGen/GLSL")
  399. addPath("${srcDir}/ts/arch/ps3")
  400. addPath("${srcDir}/terrain/glsl")
  401. addPath("${srcDir}/forest/glsl")
  402. endif()
  403. if(UNIX)
  404. # linux_dedicated
  405. if(TORQUE_DEDICATED)
  406. addPath("${srcDir}/windowManager/dedicated")
  407. # ${srcDir}/platformX86UNIX/*.client.* files are not needed
  408. # @todo: move to separate file
  409. file( GLOB tmp_files
  410. ${srcDir}/platformX86UNIX/*.cpp
  411. ${srcDir}/platformX86UNIX/*.c
  412. ${srcDir}/platformX86UNIX/*.cc
  413. ${srcDir}/platformX86UNIX/*.h )
  414. file( GLOB tmp_remove_files ${srcDir}/platformX86UNIX/*client.* )
  415. LIST( REMOVE_ITEM tmp_files ${tmp_remove_files} )
  416. foreach( f ${tmp_files} )
  417. addFile( ${f} )
  418. endforeach()
  419. else()
  420. addPath("${srcDir}/platformX86UNIX")
  421. addPath("${srcDir}/platformX86UNIX/nativeDialogs")
  422. endif()
  423. # linux
  424. addPath("${srcDir}/platformX86UNIX/threads")
  425. addPath("${srcDir}/platformPOSIX")
  426. endif()
  427. if( TORQUE_OPENGL )
  428. addPath("${srcDir}/shaderGen/GLSL")
  429. if( TORQUE_OPENGL AND NOT TORQUE_DEDICATED )
  430. addPath("${srcDir}/gfx/gl")
  431. addPath("${srcDir}/gfx/gl/tGL")
  432. addPath("${srcDir}/shaderGen/GLSL")
  433. addPath("${srcDir}/terrain/glsl")
  434. addPath("${srcDir}/forest/glsl")
  435. # glew
  436. LIST(APPEND ${PROJECT_NAME}_files "${libDir}/glew/src/glew.c")
  437. endif()
  438. if(WIN32 AND NOT TORQUE_SDL)
  439. addPath("${srcDir}/gfx/gl/win32")
  440. endif()
  441. endif()
  442. ###############################################################################
  443. ###############################################################################
  444. finishExecutable()
  445. ###############################################################################
  446. ###############################################################################
  447. message(STATUS "writing ${projectSrcDir}/torqueConfig.h")
  448. CONFIGURE_FILE("${cmakeDir}/torqueConfig.h.in" "${projectSrcDir}/torqueConfig.h")
  449. # configure the relevant files only once
  450. if(NOT EXISTS "${projectSrcDir}/torque.ico")
  451. CONFIGURE_FILE("${cmakeDir}/torque.ico" "${projectSrcDir}/torque.ico" COPYONLY)
  452. endif()
  453. if(NOT EXISTS "${projectOutDir}/${PROJECT_NAME}.torsion")
  454. CONFIGURE_FILE("${cmakeDir}/template.torsion.in" "${projectOutDir}/${PROJECT_NAME}.torsion")
  455. endif()
  456. if(EXISTS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/main.cs.in" AND NOT EXISTS "${projectOutDir}/main.cs")
  457. CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/main.cs.in" "${projectOutDir}/main.cs")
  458. endif()
  459. if(WIN32)
  460. if(NOT EXISTS "${projectSrcDir}/torque.rc")
  461. CONFIGURE_FILE("${cmakeDir}/torque-win.rc.in" "${projectSrcDir}/torque.rc")
  462. endif()
  463. if(NOT EXISTS "${projectOutDir}/${PROJECT_NAME}-debug.bat")
  464. CONFIGURE_FILE("${cmakeDir}/app-debug-win.bat.in" "${projectOutDir}/${PROJECT_NAME}-debug.bat")
  465. endif()
  466. if(NOT EXISTS "${projectOutDir}/cleanup.bat")
  467. CONFIGURE_FILE("${cmakeDir}/cleanup-win.bat.in" "${projectOutDir}/cleanup.bat")
  468. endif()
  469. endif()
  470. ###############################################################################
  471. # Common Libraries
  472. ###############################################################################
  473. addLib(lmng)
  474. addLib(lpng)
  475. addLib(lungif)
  476. addLib(ljpeg)
  477. addLib(zlib)
  478. addLib(tinyxml)
  479. addLib(opcode)
  480. addLib(squish)
  481. addLib(collada)
  482. addLib(pcre)
  483. addLib(convexDecomp)
  484. if(WIN32)
  485. # copy pasted from T3D build system, some might not be needed
  486. 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")
  487. mark_as_advanced(TORQUE_EXTERNAL_LIBS)
  488. addLib("${TORQUE_EXTERNAL_LIBS}")
  489. if(TORQUE_OPENGL)
  490. addLib(OpenGL32.lib)
  491. endif()
  492. endif()
  493. if(UNIX)
  494. # copy pasted from T3D build system, some might not be needed
  495. set(TORQUE_EXTERNAL_LIBS "dl Xxf86vm Xext X11 Xft stdc++ pthread GL" CACHE STRING "external libs to link against")
  496. mark_as_advanced(TORQUE_EXTERNAL_LIBS)
  497. string(REPLACE " " ";" TORQUE_EXTERNAL_LIBS_LIST ${TORQUE_EXTERNAL_LIBS})
  498. addLib( "${TORQUE_EXTERNAL_LIBS_LIST}" )
  499. endif()
  500. if(UNIX)
  501. # copy pasted from T3D build system, some might not be needed
  502. set(TORQUE_EXTERNAL_LIBS "rt dl Xxf86vm Xext X11 Xft stdc++ pthread GL" CACHE STRING "external libs to link against")
  503. mark_as_advanced(TORQUE_EXTERNAL_LIBS)
  504. string(REPLACE " " ";" TORQUE_EXTERNAL_LIBS_LIST ${TORQUE_EXTERNAL_LIBS})
  505. addLib( "${TORQUE_EXTERNAL_LIBS_LIST}" )
  506. endif()
  507. ###############################################################################
  508. # Always enabled Definitions
  509. ###############################################################################
  510. addDef(TORQUE_DEBUG Debug)
  511. addDef(TORQUE_ENABLE_ASSERTS "Debug;RelWithDebInfo")
  512. addDef(TORQUE_DEBUG_GFX_MODE "RelWithDebInfo")
  513. addDef(TORQUE_SHADERGEN)
  514. addDef(INITGUID)
  515. addDef(NTORQUE_SHARED)
  516. addDef(UNICODE)
  517. addDef(_UNICODE) # for VS
  518. addDef(TORQUE_UNICODE)
  519. #addDef(TORQUE_SHARED) # not used anymore as the game is the executable directly
  520. addDef(LTC_NO_PROTOTYPES) # for libTomCrypt
  521. addDef(BAN_OPCODE_AUTOLINK)
  522. addDef(ICE_NO_DLL)
  523. addDef(TORQUE_OPCODE)
  524. addDef(TORQUE_COLLADA)
  525. addDef(DOM_INCLUDE_TINYXML)
  526. addDef(PCRE_STATIC)
  527. addDef(_CRT_SECURE_NO_WARNINGS)
  528. addDef(_CRT_SECURE_NO_DEPRECATE)
  529. if(UNIX)
  530. addDef(LINUX)
  531. endif()
  532. if(TORQUE_OPENGL)
  533. addDef(TORQUE_OPENGL)
  534. if(WIN32)
  535. addDef(GLEW_STATIC)
  536. endif()
  537. endif()
  538. if(TORQUE_SDL)
  539. addDef(TORQUE_SDL)
  540. addInclude(${libDir}/sdl/include)
  541. addLib(SDL2)
  542. endif()
  543. if(TORQUE_STATIC_CODE_ANALYSIS)
  544. addDef( "ON_FAIL_ASSERTFATAL=exit(1)" )
  545. endif()
  546. ###############################################################################
  547. # Include Paths
  548. ###############################################################################
  549. addInclude("${projectSrcDir}")
  550. addInclude("${srcDir}/")
  551. addInclude("${libDir}/lmpg")
  552. addInclude("${libDir}/lpng")
  553. addInclude("${libDir}/ljpeg")
  554. addInclude("${libDir}/lungif")
  555. addInclude("${libDir}/zlib")
  556. addInclude("${libDir}/") # for tinyxml
  557. addInclude("${libDir}/tinyxml")
  558. addInclude("${libDir}/squish")
  559. addInclude("${libDir}/convexDecomp")
  560. addInclude("${libDir}/libogg/include")
  561. addInclude("${libDir}/opcode")
  562. addInclude("${libDir}/collada/include")
  563. addInclude("${libDir}/collada/include/1.4")
  564. if(TORQUE_OPENGL)
  565. addInclude("${libDir}/glew/include")
  566. endif()
  567. if(UNIX)
  568. addInclude("/usr/include/freetype2/freetype")
  569. addInclude("/usr/include/freetype2")
  570. endif()
  571. if(TORQUE_OPENGL)
  572. addInclude("${libDir}/glew/include")
  573. endif()
  574. # external things
  575. if(WIN32)
  576. set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY INCLUDE_DIRECTORIES $ENV{DXSDK_DIR}/Include)
  577. endif()
  578. if(UNIX)
  579. addInclude("/usr/include/freetype2/freetype")
  580. addInclude("/usr/include/freetype2")
  581. endif()
  582. if(MSVC)
  583. # Match projectGenerator naming for executables
  584. set(OUTPUT_CONFIG DEBUG MINSIZEREL RELWITHDEBINFO)
  585. set(OUTPUT_SUFFIX DEBUG MINSIZE OPTIMIZEDDEBUG)
  586. foreach(INDEX RANGE 2)
  587. list(GET OUTPUT_CONFIG ${INDEX} CONF)
  588. list(GET OUTPUT_SUFFIX ${INDEX} SUFFIX)
  589. set_property(TARGET ${PROJECT_NAME} PROPERTY OUTPUT_NAME_${CONF} ${PROJECT_NAME}_${SUFFIX})
  590. endforeach()
  591. endif()
  592. ###############################################################################
  593. # Installation
  594. ###############################################################################
  595. if(TORQUE_TEMPLATE)
  596. message("Prepare Template(${TORQUE_TEMPLATE}) install...")
  597. INSTALL(DIRECTORY "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game" DESTINATION "${TORQUE_APP_DIR}")
  598. if(WIN32)
  599. INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/cleanShaders.bat" DESTINATION "${TORQUE_APP_DIR}")
  600. INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteCachedDTSs.bat" DESTINATION "${TORQUE_APP_DIR}")
  601. INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteDSOs.bat" DESTINATION "${TORQUE_APP_DIR}")
  602. INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeletePrefs.bat" DESTINATION "${TORQUE_APP_DIR}")
  603. endif()
  604. endif()