torque3d.cmake 35 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015
  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. if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  29. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_FLAG32} -Wundef -pipe -Wfatal-errors -Wno-return-type-c-linkage -Wno-unused-local-typedef ${TORQUE_ADDITIONAL_LINKER_FLAGS}")
  30. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CXX_FLAG32} -Wundef -pipe -Wfatal-errors -Wno-return-type-c-linkage -Wno-unused-local-typedef ${TORQUE_ADDITIONAL_LINKER_FLAGS}")
  31. # Only use SSE on x86 devices
  32. if (TORQUE_CPU_X32 OR TORQUE_CPU_X64)
  33. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse")
  34. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse")
  35. endif()
  36. else()
  37. # default compiler flags
  38. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_FLAG32} -Wundef -pipe -Wfatal-errors -no-pie ${TORQUE_ADDITIONAL_LINKER_FLAGS} -Wl,-rpath,'$ORIGIN'")
  39. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CXX_FLAG32} -Wundef -pipe -Wfatal-errors ${TORQUE_ADDITIONAL_LINKER_FLAGS} -Wl,-rpath,'$ORIGIN'")
  40. # Only use SSE on x86 devices
  41. if (TORQUE_CPU_X32 OR TORQUE_CPU_X64)
  42. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse")
  43. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse")
  44. endif()
  45. endif()
  46. endif()
  47. ###############################################################################
  48. # modules
  49. ###############################################################################
  50. option(TORQUE_SFX_VORBIS "Vorbis Sound" ON)
  51. mark_as_advanced(TORQUE_SFX_VORBIS)
  52. option(TORQUE_THEORA "Theora Video Support" ON)
  53. mark_as_advanced(TORQUE_THEORA)
  54. option(TORQUE_ADVANCED_LIGHTING "Advanced Lighting" ON)
  55. mark_as_advanced(TORQUE_ADVANCED_LIGHTING)
  56. option(TORQUE_BASIC_LIGHTING "Basic Lighting" ON)
  57. mark_as_advanced(TORQUE_BASIC_LIGHTING)
  58. # option(TORQUE_SFX_DirectX "DirectX Sound" OFF)
  59. # mark_as_advanced(TORQUE_SFX_DirectX)
  60. option(TORQUE_SFX_OPENAL "OpenAL Sound" ON)
  61. mark_as_advanced(TORQUE_APP_PASSWORD)
  62. set(TORQUE_APP_PASSWORD "changeme" CACHE STRING "zip file password")
  63. #windows uses openal-soft
  64. if(WIN32)
  65. #disable a few things that are not required
  66. set(ALSOFT_TESTS OFF CACHE BOOL "Build and install test programs" FORCE)
  67. set(ALSOFT_UTILS OFF CACHE BOOL "Build and install utility programs" FORCE)
  68. set(ALSOFT_EXAMPLES OFF CACHE BOOL "Build and install example programs" FORCE)
  69. set(ALSOFT_INSTALL_CONFIG OFF CACHE BOOL "Install alsoft.conf sample configuration file" FORCE)
  70. set(ALSOFT_INSTALL OFF CACHE BOOL "Install headers and libraries" FORCE)
  71. set(ALSOFT_NO_CONFIG_UTIL OFF CACHE BOOL "Disable building the alsoft-config utility" FORCE)
  72. set(ALSOFT_INSTALL_HRTF_DATA OFF CACHE BOOL "Install HRTF definition files" FORCE)
  73. set(ALSOFT_INSTALL_AMBDEC_PRESETS OFF CACHE BOOL "Install AmbDec presets" FORCE)
  74. set(ALSOFT_EMBED_HRTF_DATA OFF CACHE BOOL "Embed the HRTF data (increases library footprint)" FORCE)
  75. add_subdirectory( ${libDir}/openal-soft ${CMAKE_CURRENT_BINARY_DIR}/openal-soft)
  76. endif()
  77. if(TORQUE_SFX_OPENAL)
  78. #Hide some unnecessary fields as advanced
  79. mark_as_advanced(ALSOFT_INSTALL_AMBDEC_PRESETS)
  80. mark_as_advanced(ALSOFT_BACKEND_DSOUND)
  81. mark_as_advanced(ALSOFT_BACKEND_MMDEVAPI)
  82. mark_as_advanced(ALSOFT_BACKEND_WAVE)
  83. mark_as_advanced(ALSOFT_BACKEND_WINMM)
  84. mark_as_advanced(ALSOFT_INSTALL_CONFIG)
  85. mark_as_advanced(ALSOFT_CPUEXT_SSE)
  86. mark_as_advanced(ALSOFT_CPUEXT_SSE2)
  87. mark_as_advanced(ALSOFT_CPUEXT_SSE3)
  88. mark_as_advanced(ALSOFT_CPUEXT_SSE4_1)
  89. mark_as_advanced(ALSOFT_DLOPEN)
  90. mark_as_advanced(ALSOFT_EMBED_HRTF_DATA)
  91. mark_as_advanced(ALSOFT_EXAMPLES)
  92. mark_as_advanced(ALSOFT_INSTALL_HRTF_DATA)
  93. mark_as_advanced(ALSOFT_INSTALL)
  94. mark_as_advanced(ALSOFT_NO_CONFIG_UTIL)
  95. mark_as_advanced(ALSOFT_NO_UID_DEFS)
  96. mark_as_advanced(ALSOFT_REQUIRE_ALSA)
  97. mark_as_advanced(ALSOFT_REQUIRE_COREAUDIO)
  98. mark_as_advanced(ALSOFT_REQUIRE_DSOUND)
  99. mark_as_advanced(ALSOFT_REQUIRE_JACK)
  100. mark_as_advanced(ALSOFT_REQUIRE_MMDEVAPI)
  101. mark_as_advanced(ALSOFT_REQUIRE_NEON)
  102. mark_as_advanced(ALSOFT_REQUIRE_OPENSL)
  103. mark_as_advanced(ALSOFT_REQUIRE_OSS)
  104. mark_as_advanced(ALSOFT_REQUIRE_PORTAUDIO)
  105. mark_as_advanced(ALSOFT_REQUIRE_PULSEAUDIO)
  106. mark_as_advanced(ALSOFT_REQUIRE_QSA)
  107. mark_as_advanced(ALSOFT_REQUIRE_SNDIO)
  108. mark_as_advanced(ALSOFT_REQUIRE_SOLARIS)
  109. mark_as_advanced(ALSOFT_REQUIRE_SSE)
  110. mark_as_advanced(ALSOFT_REQUIRE_SSE2)
  111. mark_as_advanced(ALSOFT_REQUIRE_SSE4_1)
  112. mark_as_advanced(ALSOFT_REQUIRE_WINMM)
  113. mark_as_advanced(ALSOFT_TESTS)
  114. mark_as_advanced(ALSOFT_UTILS)
  115. mark_as_advanced(ALSOFT_WERROR)
  116. mark_as_advanced(COREAUDIO_FRAMEWORK)
  117. mark_as_advanced(CMAKE_DEBUG_POSTFIX)
  118. mark_as_advanced(FORCE_STATIC_VCRT)
  119. mark_as_advanced(ALSOFT_BACKEND_WASAPI)
  120. mark_as_advanced(ALSOFT_BUILD_ROUTER)
  121. mark_as_advanced(ALSOFT_REQUIRE_SDL2)
  122. mark_as_advanced(ALSOFT_REQUIRE_WASAPI)
  123. #the following is from openal-soft
  124. mark_as_advanced(SDL2MAIN_LIBRARY)
  125. mark_as_advanced(SDL2_CORE_LIBRARY)
  126. mark_as_advanced(SDL2_INCLUDE_DIR)
  127. endif()
  128. mark_as_advanced(TORQUE_SFX_OPENAL)
  129. option(TORQUE_HIFI "HIFI? support" OFF)
  130. mark_as_advanced(TORQUE_HIFI)
  131. option(TORQUE_EXTENDED_MOVE "Extended move support" OFF)
  132. mark_as_advanced(TORQUE_EXTENDED_MOVE)
  133. set(TORQUE_SDL ON) # we need sdl to do our platform interop
  134. if(WIN32)
  135. option(TORQUE_OPENGL "Allow OpenGL render" ON)
  136. #mark_as_advanced(TORQUE_OPENGL)
  137. else()
  138. set(TORQUE_OPENGL ON) # we need OpenGL to render on Linux/Mac
  139. endif()
  140. if(WIN32)
  141. option(TORQUE_D3D11 "Allow Direct3D 11 render" ON)
  142. addDef(TORQUE_D3D11)
  143. endif()
  144. option(TORQUE_DEDICATED "Torque dedicated" OFF)
  145. mark_as_advanced(TORQUE_DEDICATED)
  146. ###############################################################################
  147. # options
  148. ###############################################################################
  149. option(TORQUE_SECURE_VFS "Secure VFS configuration. Arbitrary script access to file system will be heavily restricted." OFF)
  150. mark_as_advanced(TORQUE_SECURE_VFS)
  151. option(TORQUE_MULTITHREAD "Multi Threading" ON)
  152. mark_as_advanced(TORQUE_MULTITHREAD)
  153. option(TORQUE_POSIX_PATH_CASE_INSENSITIVE "POSIX Pathing Case Insensitivity" ON)
  154. mark_as_advanced(TORQUE_POSIX_PATH_CASE_INSENSITIVE)
  155. option(TORQUE_ZIP_PATH_CASE_INSENSITIVE "ZIP Pathing Case Insensitivity" ON)
  156. mark_as_advanced(TORQUE_ZIP_PATH_CASE_INSENSITIVE)
  157. option(TORQUE_DISABLE_MEMORY_MANAGER "Disable memory manager" ON)
  158. mark_as_advanced(TORQUE_DISABLE_MEMORY_MANAGER)
  159. option(TORQUE_DISABLE_VIRTUAL_MOUNT_SYSTEM "Disable virtual mount system" OFF)
  160. mark_as_advanced(TORQUE_DISABLE_VIRTUAL_MOUNT_SYSTEM)
  161. option(TORQUE_DISABLE_FIND_ROOT_WITHIN_ZIP "Disable reading root path from zip. Zips will be mounted in-place with file name as directory name." ON)
  162. mark_as_advanced(TORQUE_DISABLE_FIND_ROOT_WITHIN_ZIP)
  163. option(TORQUE_ZIP_DISK_LAYOUT "All zips must be placed in the executable directory and contain full paths to the files." OFF)
  164. mark_as_advanced(TORQUE_ZIP_DISK_LAYOUT)
  165. option(TORQUE_PLAYER "Playback only?" OFF)
  166. mark_as_advanced(TORQUE_PLAYER)
  167. option(TORQUE_TOOLS "Enable or disable the tools" ON)
  168. mark_as_advanced(TORQUE_TOOLS)
  169. option(TORQUE_ENABLE_PROFILER "Enable or disable the profiler" OFF)
  170. mark_as_advanced(TORQUE_ENABLE_PROFILER)
  171. option(TORQUE_DEBUG "T3D Debug mode" OFF)
  172. mark_as_advanced(TORQUE_DEBUG)
  173. option(TORQUE_SHIPPING "T3D Shipping build?" OFF)
  174. mark_as_advanced(TORQUE_SHIPPING)
  175. option(TORQUE_DEBUG_NET "debug network" OFF)
  176. mark_as_advanced(TORQUE_DEBUG_NET)
  177. option(TORQUE_DEBUG_NET_MOVES "debug network moves" OFF)
  178. mark_as_advanced(TORQUE_DEBUG_NET_MOVES)
  179. option(TORQUE_ENABLE_ASSERTS "enables or disable asserts" OFF)
  180. mark_as_advanced(TORQUE_ENABLE_ASSERTS)
  181. option(TORQUE_DEBUG_GFX_MODE "triggers graphics debug mode" OFF)
  182. mark_as_advanced(TORQUE_DEBUG_GFX_MODE)
  183. #option(DEBUG_SPEW "more debug" OFF)
  184. set(TORQUE_NO_DSO_GENERATION ON)
  185. if(NOT TORQUE_SCRIPT_EXTENSION)
  186. set(TORQUE_SCRIPT_EXTENSION "tscript" CACHE STRING "The default script extension to use for TorqueScript files")
  187. endif()
  188. mark_as_advanced(TORQUE_SCRIPT_EXTENSION)
  189. option(TORQUE_USE_ZENITY "use the Zenity backend for NFD" OFF)
  190. mark_as_advanced(TORQUE_USE_ZENITY)
  191. option(TORQUE_SHOW_LEGACY_FILE_FIELDS "If on, shows legacy direct file path fields in the inspector." OFF)
  192. mark_as_advanced(TORQUE_SHOW_LEGACY_FILE_FIELDS)
  193. if(WIN32)
  194. # warning C4800: 'XXX' : forcing value to bool 'true' or 'false' (performance warning)
  195. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4800")
  196. # warning C4018: '<' : signed/unsigned mismatch
  197. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4018")
  198. # warning C4244: 'initializing' : conversion from 'XXX' to 'XXX', possible loss of data
  199. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4244")
  200. if(TORQUE_SFX_DirectX)
  201. if( TORQUE_CPU_X64 )
  202. link_directories($ENV{DXSDK_DIR}/Lib/x64)
  203. else()
  204. link_directories($ENV{DXSDK_DIR}/Lib/x86)
  205. endif()
  206. endif()
  207. endif()
  208. ###############################################################################
  209. # Always enabled paths first
  210. ###############################################################################
  211. addPath("${srcDir}/") # must come first :)
  212. addPath("${srcDir}/app")
  213. addPath("${srcDir}/sfx/media")
  214. addPath("${srcDir}/sfx/null")
  215. addPath("${srcDir}/sfx")
  216. addPath("${srcDir}/console")
  217. addPath("${srcDir}/console/test")
  218. addPath("${srcDir}/core")
  219. addPath("${srcDir}/core/stream")
  220. addPath("${srcDir}/core/strings")
  221. addPath("${srcDir}/core/util")
  222. addPath("${srcDir}/core/util/test")
  223. addPath("${srcDir}/core/util/journal")
  224. addPath("${srcDir}/core/util/journal/test")
  225. addPath("${srcDir}/core/util/zip")
  226. addPath("${srcDir}/core/util/zip/test")
  227. addPath("${srcDir}/core/util/zip/compressors")
  228. addPath("${srcDir}/i18n")
  229. addPath("${srcDir}/sim")
  230. addPath("${srcDir}/util")
  231. addPath("${srcDir}/windowManager")
  232. addPath("${srcDir}/windowManager/torque")
  233. addPath("${srcDir}/windowManager/test")
  234. addPath("${srcDir}/math")
  235. addPath("${srcDir}/math/util")
  236. addPath("${srcDir}/math/test")
  237. addPath("${srcDir}/platform")
  238. if(NOT TORQUE_SDL)
  239. set(BLACKLIST "fileDialog.cpp" )
  240. endif()
  241. addPath("${srcDir}/platform/nativeDialogs")
  242. set(BLACKLIST "" )
  243. addPath("${srcDir}/cinterface")
  244. if( NOT TORQUE_DEDICATED )
  245. addPath("${srcDir}/platform/menus")
  246. endif()
  247. addPath("${srcDir}/platform/test")
  248. addPath("${srcDir}/platform/threads")
  249. addPath("${srcDir}/platform/threads/test")
  250. addPath("${srcDir}/platform/async")
  251. addPath("${srcDir}/platform/async/test")
  252. addPath("${srcDir}/platform/input")
  253. addPath("${srcDir}/platform/output")
  254. addPath("${srcDir}/app")
  255. if (NOT TORQUE_NET_CURL)
  256. set(BLACKLIST "httpObject.h" "httpObject.cpp" )
  257. endif()
  258. addPath("${srcDir}/app/net")
  259. set(BLACKLIST "")
  260. addPath("${srcDir}/util/messaging")
  261. addPath("${srcDir}/gfx/Null")
  262. addPath("${srcDir}/gfx/test")
  263. addPath("${srcDir}/gfx/bitmap")
  264. addPath("${srcDir}/gfx/bitmap/loaders")
  265. addPath("${srcDir}/gfx/util")
  266. addPath("${srcDir}/gfx/video")
  267. addPath("${srcDir}/gfx")
  268. addPath("${srcDir}/shaderGen")
  269. addPath("${srcDir}/gfx/sim")
  270. addPath("${srcDir}/gui/buttons")
  271. addPath("${srcDir}/gui/containers")
  272. addPath("${srcDir}/gui/controls")
  273. addPath("${srcDir}/gui/core")
  274. addPath("${srcDir}/gui/game")
  275. addPath("${srcDir}/gui/shiny")
  276. addPath("${srcDir}/gui/utility")
  277. addPath("${srcDir}/gui")
  278. addPath("${srcDir}/collision")
  279. addPath("${srcDir}/materials")
  280. addPath("${srcDir}/lighting")
  281. addPath("${srcDir}/lighting/common")
  282. addPath("${srcDir}/renderInstance")
  283. addPath("${srcDir}/renderInstance/debug")
  284. addPath("${srcDir}/scene")
  285. addPath("${srcDir}/scene/culling")
  286. addPath("${srcDir}/scene/zones")
  287. addPath("${srcDir}/scene/mixin")
  288. addPath("${srcDir}/shaderGen")
  289. addPath("${srcDir}/terrain")
  290. addPath("${srcDir}/environment")
  291. addPath("${srcDir}/forest")
  292. addPath("${srcDir}/forest/ts")
  293. addPath("${srcDir}/ts")
  294. addPath("${srcDir}/ts/arch")
  295. addPath("${srcDir}/physics")
  296. addPath("${srcDir}/gui/3d")
  297. addPath("${srcDir}/postFx")
  298. addPath("${srcDir}/T3D")
  299. set(BLACKLIST "" )
  300. addPath("${srcDir}/T3D/examples")
  301. addPath("${srcDir}/T3D/fps")
  302. addPath("${srcDir}/T3D/fx")
  303. addPath("${srcDir}/T3D/vehicles")
  304. addPath("${srcDir}/T3D/physics")
  305. addPath("${srcDir}/T3D/decal")
  306. addPath("${srcDir}/T3D/sfx")
  307. addPath("${srcDir}/T3D/gameBase")
  308. addPath("${srcDir}/T3D/turret")
  309. addPath("${srcDir}/T3D/lighting")
  310. addPath("${srcDir}/T3D/gameObjects")
  311. addPathRec("${srcDir}/T3D/components/")
  312. addPathRec("${srcDir}/T3D/systems")
  313. addPath("${srcDir}/main/")
  314. addPath("${srcDir}/assets")
  315. addPath("${srcDir}/module")
  316. addPathRec("${srcDir}/T3D/assets")
  317. addPathRec("${srcDir}/persistence")
  318. addPathRec("${srcDir}/ts/collada")
  319. addPathRec("${srcDir}/ts/assimp")
  320. addPathRec("${srcDir}/ts/loader")
  321. addPathRec("${projectSrcDir}")
  322. # Load module-based files
  323. if(EXISTS ${TORQUE_APP_DIR}/game/data)
  324. message("Reading modules in ${TORQUE_APP_DIR}/game/data path...")
  325. subDirCmake(MODULEDIRS ${TORQUE_APP_DIR}/game/data)
  326. foreach(modDir ${MODULEDIRS})
  327. addInclude("${modDir}/source")
  328. addPathRec("${modDir}/source")
  329. file(GLOB modules "${modDir}/lib/*.cmake")
  330. foreach(module ${modules})
  331. set(moduleLibDir "${modDir}/lib")
  332. include(${module})
  333. endforeach()
  334. endforeach()
  335. endif()
  336. if(EXISTS ${TORQUE_APP_DIR}/game/tools)
  337. message("Reading modules in ${TORQUE_APP_DIR}/game/tools path...")
  338. addInclude("${TORQUE_APP_DIR}/game/tools")
  339. addPathRec("${TORQUE_APP_DIR}/game/tools")
  340. endif()
  341. ###############################################################################
  342. # modular paths
  343. ###############################################################################
  344. # lighting
  345. if(TORQUE_ADVANCED_LIGHTING)
  346. addPath("${srcDir}/lighting/advanced")
  347. addPathRec("${srcDir}/lighting/shadowMap")
  348. if(WIN32)
  349. addPathRec("${srcDir}/lighting/advanced/hlsl")
  350. endif()
  351. if(TORQUE_OPENGL)
  352. addPathRec("${srcDir}/lighting/advanced/glsl")
  353. endif()
  354. addDef(TORQUE_ADVANCED_LIGHTING)
  355. endif()
  356. if(TORQUE_BASIC_LIGHTING)
  357. addPathRec("${srcDir}/lighting/basic")
  358. addPathRec("${srcDir}/lighting/shadowMap")
  359. addDef(TORQUE_BASIC_LIGHTING)
  360. endif()
  361. # DirectX Sound
  362. if(TORQUE_SFX_DirectX)
  363. addLib(x3daudio.lib)
  364. addPathRec("${srcDir}/sfx/dsound")
  365. addPathRec("${srcDir}/sfx/xaudio")
  366. endif()
  367. # OpenAL
  368. if(TORQUE_SFX_OPENAL AND NOT TORQUE_DEDICATED)
  369. addPath("${srcDir}/sfx/openal")
  370. if(WIN32)
  371. option(AL_ALEXT_PROTOTYPES "Use Extended OpenAL options" ON)
  372. addPath("${srcDir}/sfx/openal/win32")
  373. addInclude("${libDir}/openal-soft/include")
  374. endif()
  375. if(UNIX AND NOT APPLE)
  376. option(AL_ALEXT_PROTOTYPES "Use Extended OpenAL options" ON)
  377. addPath("${srcDir}/sfx/openal/linux")
  378. endif()
  379. if(APPLE)
  380. option(AL_ALEXT_PROTOTYPES "Use Extended OpenAL options" OFF)
  381. addPath("${srcDir}/sfx/openal/mac")
  382. addFramework("OpenAL")
  383. endif()
  384. endif()
  385. mark_as_advanced(AL_ALEXT_PROTOTYPES)
  386. if(AL_ALEXT_PROTOTYPES)
  387. addDef( "AL_ALEXT_PROTOTYPES" )
  388. endif()
  389. # Vorbis
  390. if(TORQUE_SFX_VORBIS)
  391. addInclude(${libDir}/libvorbis/include)
  392. addDef(TORQUE_OGGVORBIS)
  393. addLib(libvorbis)
  394. addLib(libogg)
  395. endif()
  396. # Theora
  397. if(TORQUE_THEORA)
  398. addPath("${srcDir}/core/ogg")
  399. addPath("${srcDir}/gfx/video")
  400. addPath("${srcDir}/gui/theora")
  401. addDef(TORQUE_OGGTHEORA)
  402. addDef(TORQUE_OGGVORIBS)
  403. addInclude(${libDir}/libtheora/include)
  404. addLib(libtheora)
  405. endif()
  406. # Include tools for non-tool builds (or define player if a tool build)
  407. if(TORQUE_TOOLS)
  408. addPath("${srcDir}/gui/worldEditor")
  409. addPath("${srcDir}/gui/worldEditor/tools")
  410. addPath("${srcDir}/environment/editors")
  411. addPath("${srcDir}/forest/editor")
  412. addPath("${srcDir}/gui/editor")
  413. addPath("${srcDir}/gui/editor/inspector")
  414. set(BLACKLIST "" )
  415. endif()
  416. if(TORQUE_HIFI)
  417. addPath("${srcDir}/T3D/gameBase/hifi")
  418. addDef(TORQUE_HIFI_NET)
  419. endif()
  420. if(TORQUE_EXTENDED_MOVE)
  421. addPath("${srcDir}/T3D/gameBase/extended")
  422. addDef(TORQUE_EXTENDED_MOVE)
  423. else()
  424. addPath("${srcDir}/T3D/gameBase/std")
  425. endif()
  426. if(TORQUE_SDL)
  427. addPathRec("${srcDir}/windowManager/sdl")
  428. if(NOT TORQUE_OPENGL)
  429. set(BLACKLIST "sdlPlatformGL.cpp")
  430. endif()
  431. addPathRec("${srcDir}/platformSDL")
  432. set(BLACKLIST "")
  433. if(TORQUE_OPENGL)
  434. addPathRec("${srcDir}/gfx/gl/sdl")
  435. endif()
  436. if(UNIX AND NOT APPLE)
  437. #set(CMAKE_SIZEOF_VOID_P 4) #force 32 bit
  438. set(ENV{CFLAGS} "${CXX_FLAG32} -g -O3")
  439. if("${TORQUE_ADDITIONAL_LINKER_FLAGS}" STREQUAL "")
  440. set(ENV{LDFLAGS} "${CXX_FLAG32}")
  441. else()
  442. set(ENV{LDFLAGS} "${CXX_FLAG32} ${TORQUE_ADDITIONAL_LINKER_FLAGS}")
  443. endif()
  444. find_package(PkgConfig REQUIRED)
  445. pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
  446. # Setup CMake to use GTK+, tell the compiler where to look for headers
  447. # and to the linker where to look for libraries
  448. include_directories(${GTK3_INCLUDE_DIRS})
  449. link_directories(${GTK3_LIBRARY_DIRS})
  450. # Add other flags to the compiler
  451. add_definitions(${GTK3_CFLAGS_OTHER})
  452. if(TORQUE_USE_ZENITY)
  453. set(BLACKLIST "nfd_win.cpp" "nfd_cocoa.m" "nfd_gtk.c" )
  454. else()
  455. set(BLACKLIST "nfd_win.cpp" "nfd_cocoa.m" "simple_exec.h" "nfd_zenity.c")
  456. endif()
  457. addLib(nativeFileDialogs)
  458. set(BLACKLIST "" )
  459. target_link_libraries(nativeFileDialogs ${GTK3_LIBRARIES})
  460. elseif(APPLE)
  461. set(BLACKLIST "nfd_gtk.c" "nfd_win.cpp" )
  462. addLib(nativeFileDialogs)
  463. set(BLACKLIST "" )
  464. else()
  465. set(BLACKLIST "nfd_gtk.c" "nfd_cocoa.m" "simple_exec.h" "nfd_zenity.c")
  466. addLib(nativeFileDialogs)
  467. set(BLACKLIST "" )
  468. addLib(comctl32)
  469. endif()
  470. #override and hide SDL2 cache variables
  471. #set apple to sue sdl static lib, other platforms use dynamic
  472. if(APPLE)
  473. set(SDL_SHARED OFF CACHE BOOL "Build a shared version of the library" FORCE)
  474. set(SDL_STATIC ON CACHE BOOL "Build a static version of the library" FORCE)
  475. else()
  476. set(SDL_SHARED ON CACHE BOOL "Build a shared version of the library" FORCE)
  477. set(SDL_STATIC OFF CACHE BOOL "Build a static version of the library" FORCE)
  478. endif()
  479. add_subdirectory( ${libDir}/sdl ${CMAKE_CURRENT_BINARY_DIR}/sdl2 EXCLUDE_FROM_ALL)
  480. link_directories( ${libDir}/sdl ${CMAKE_CURRENT_BINARY_DIR}/sdl2)
  481. endif()
  482. if(TORQUE_DEDICATED)
  483. addDef(TORQUE_DEDICATED)
  484. endif()
  485. #modules dir
  486. file(GLOB modules "modules/*.cmake")
  487. foreach(module ${modules})
  488. include(${module})
  489. endforeach()
  490. ###############################################################################
  491. # platform specific things
  492. ###############################################################################
  493. if(WIN32)
  494. addPath("${srcDir}/platformWin32")
  495. if(TORQUE_SDL)
  496. set(BLACKLIST "fileDialog.cpp" )
  497. endif()
  498. addPath("${srcDir}/platformWin32/nativeDialogs")
  499. set(BLACKLIST "" )
  500. addPath("${srcDir}/platformWin32/menus")
  501. if(NOT TORQUE_SDL)
  502. addPath("${srcDir}/platformWin32/threads")
  503. endif()
  504. addPath("${srcDir}/platformWin32/videoInfo")
  505. addPath("${srcDir}/platformWin32/minidump")
  506. addPath("${srcDir}/windowManager/win32")
  507. if(TORQUE_D3D11)
  508. addPath("${srcDir}/gfx/D3D11")
  509. endif()
  510. addPath("${srcDir}/shaderGen/HLSL")
  511. addPath("${srcDir}/terrain/hlsl")
  512. addPath("${srcDir}/forest/hlsl")
  513. # add windows rc file for the icon
  514. addFile("${projectSrcDir}/torque.rc")
  515. endif()
  516. if(APPLE)
  517. addPath("${srcDir}/platformMac")
  518. addPath("${srcDir}/platformPOSIX")
  519. endif()
  520. if (UNIX AND NOT APPLE)
  521. addPath("${srcDir}/platformX11")
  522. endif()
  523. if(UNIX AND NOT APPLE)
  524. # linux_dedicated
  525. if(TORQUE_DEDICATED)
  526. addPath("${srcDir}/windowManager/dedicated")
  527. # ${srcDir}/UNIX/*.client.* files are not needed
  528. # @todo: move to separate file
  529. file( GLOB tmp_files
  530. ${srcDir}/platformX86UNIX/*.cpp
  531. ${srcDir}/platformX86UNIX/*.c
  532. ${srcDir}/platformX86UNIX/*.cc
  533. ${srcDir}/platformX86UNIX/*.h )
  534. file( GLOB tmp_remove_files ${srcDir}/platformX86UNIX/*client.* )
  535. LIST( REMOVE_ITEM tmp_files ${tmp_remove_files} )
  536. foreach( f ${tmp_files} )
  537. addFile( ${f} )
  538. endforeach()
  539. else()
  540. addPath("${srcDir}/platformX86UNIX")
  541. addPath("${srcDir}/platformX86UNIX/nativeDialogs")
  542. endif()
  543. # linux
  544. addPath("${srcDir}/platformPOSIX")
  545. endif()
  546. if( TORQUE_OPENGL )
  547. addPath("${srcDir}/shaderGen/GLSL")
  548. if( TORQUE_OPENGL AND NOT TORQUE_DEDICATED )
  549. addPath("${srcDir}/gfx/gl")
  550. addPath("${srcDir}/gfx/gl/tGL")
  551. addPath("${srcDir}/shaderGen/GLSL")
  552. addPath("${srcDir}/terrain/glsl")
  553. addPath("${srcDir}/forest/glsl")
  554. endif()
  555. if(WIN32 AND NOT TORQUE_SDL)
  556. addPath("${srcDir}/gfx/gl/win32")
  557. endif()
  558. endif()
  559. ###############################################################################
  560. ###############################################################################
  561. finishExecutable()
  562. ###############################################################################
  563. ###############################################################################
  564. # Set Visual Studio startup project
  565. if(MSVC)
  566. set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${TORQUE_APP_NAME})
  567. endif()
  568. message(STATUS "writing ${projectSrcDir}/torqueConfig.h")
  569. CONFIGURE_FILE("${cmakeDir}/torqueConfig.h.in" "${projectSrcDir}/torqueConfig.h")
  570. # configure the relevant files only once
  571. if(APPLE)
  572. #icon
  573. if(NOT EXISTS "${projectSrcDir}/torque.icns")
  574. CONFIGURE_FILE("${cmakeDir}/torque.icns" "${projectSrcDir}/torque.icns" COPYONLY)
  575. endif()
  576. #plist
  577. if(NOT EXISTS "${projectSrcDir}/Info.plist")
  578. CONFIGURE_FILE("${cmakeDir}/Info.plist.in" "${projectSrcDir}/Info.plist" COPYONLY)
  579. endif()
  580. #target properties for mac
  581. set_target_properties("${PROJECT_NAME}" PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${projectSrcDir}/Info.plist")
  582. else()
  583. if(NOT EXISTS "${projectSrcDir}/torque.ico")
  584. CONFIGURE_FILE("${cmakeDir}/torque.ico" "${projectSrcDir}/torque.ico" COPYONLY)
  585. endif()
  586. endif()
  587. if(NOT EXISTS "${projectOutDir}/${PROJECT_NAME}.torsion")
  588. CONFIGURE_FILE("${cmakeDir}/template.torsion.in" "${projectOutDir}/${PROJECT_NAME}.torsion")
  589. endif()
  590. if(EXISTS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/main.tscript.in")
  591. CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/main.tscript.in" "${projectOutDir}/main.${TORQUE_SCRIPT_EXTENSION}")
  592. else()
  593. if(EXISTS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/main.${TORQUE_SCRIPT_EXTENSION}.in")
  594. CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/main.${TORQUE_SCRIPT_EXTENSION}.in" "${projectOutDir}/main.${TORQUE_SCRIPT_EXTENSION}")
  595. endif()
  596. endif()
  597. if(WIN32)
  598. if(NOT EXISTS "${projectSrcDir}/torque.rc")
  599. CONFIGURE_FILE("${cmakeDir}/torque-win.rc.in" "${projectSrcDir}/torque.rc")
  600. endif()
  601. if(NOT EXISTS "${projectOutDir}/${PROJECT_NAME}-debug.bat")
  602. CONFIGURE_FILE("${cmakeDir}/app-debug-win.bat.in" "${projectOutDir}/${PROJECT_NAME}-debug.bat")
  603. endif()
  604. if(NOT EXISTS "${projectOutDir}/cleanup.bat")
  605. CONFIGURE_FILE("${cmakeDir}/cleanup-win.bat.in" "${projectOutDir}/cleanup.bat")
  606. endif()
  607. endif()
  608. ###############################################################################
  609. # Common Libraries
  610. ###############################################################################
  611. addLib(lpng)
  612. addLib(ljpeg)
  613. addLib(zlib)
  614. addLib(tinyxml)
  615. addLib(opcode)
  616. addLib(squish)
  617. addLib(collada)
  618. addLib(pcre)
  619. addLib(convexDecomp)
  620. if (TORQUE_OPENGL)
  621. addLib(glad)
  622. endif()
  623. addLib(assimp)
  624. if(WIN32)
  625. # copy pasted from T3D build system, some might not be needed
  626. set(TORQUE_EXTERNAL_LIBS "COMCTL32.LIB;COMDLG32.LIB;USER32.LIB;ADVAPI32.LIB;GDI32.LIB;WINMM.LIB;WS2_32.LIB;vfw32.lib;Imm32.lib;ole32.lib;shell32.lib;oleaut32.lib;version.lib" CACHE STRING "external libs to link against")
  627. mark_as_advanced(TORQUE_EXTERNAL_LIBS)
  628. addLib("${TORQUE_EXTERNAL_LIBS}")
  629. if(TORQUE_OPENGL)
  630. addLib(OpenGL32.lib)
  631. endif()
  632. endif()
  633. if (APPLE)
  634. addFramework("Cocoa")
  635. addFramework("OpenGL")
  636. #These are needed by sdl2 static lib
  637. addFramework("CoreAudio")
  638. addFramework("AudioUnit")
  639. addFramework("ForceFeedback")
  640. addFramework("IOKit")
  641. addFramework("CoreVideo")
  642. #grrr damn you sdl!
  643. addFramework("Carbon")
  644. addFramework("AudioToolbox")
  645. addLib("iconv")
  646. endif()
  647. #detect Architecture
  648. if (APPLE AND NOT IOS)
  649. option(TORQUE_MACOS_UNIVERSAL_BINARY OFF)
  650. # Detect architecture if not using universal
  651. if (TORQUE_MACOS_UNIVERSAL_BINARY)
  652. set(ARCHITECTURE_STRING_APPLE "x86_64;arm64")
  653. set(DEPLOYMENT_TARGET_APPLE "10.13")
  654. else()
  655. if (CMAKE_SYSTEM_PROCESSOR MATCHES "arm64")
  656. set(ARCHITECTURE_STRING_APPLE "arm64")
  657. set(DEPLOYMENT_TARGET_APPLE "11.0")
  658. else()
  659. set(ARCHITECTURE_STRING_APPLE "x86_64")
  660. set(DEPLOYMENT_TARGET_APPLE "10.9")
  661. endif()
  662. endif()
  663. set(CMAKE_OSX_ARCHITECTURES ${ARCHITECTURE_STRING_APPLE} CACHE STRING "OSX Architecture" FORCE)
  664. set(CMAKE_OSX_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET_APPLE} CACHE STRING "OSX Deployment target" FORCE)
  665. endif()
  666. if(UNIX AND NOT APPLE)
  667. # copy pasted from T3D build system, some might not be needed
  668. set(TORQUE_EXTERNAL_LIBS "dl Xxf86vm Xext X11 Xft stdc++ pthread GL" CACHE STRING "external libs to link against")
  669. mark_as_advanced(TORQUE_EXTERNAL_LIBS)
  670. string(REPLACE " " ";" TORQUE_EXTERNAL_LIBS_LIST ${TORQUE_EXTERNAL_LIBS})
  671. addLib( "${TORQUE_EXTERNAL_LIBS_LIST}" )
  672. endif()
  673. ###############################################################################
  674. # Always enabled Definitions
  675. ###############################################################################
  676. addDef(TORQUE_DEBUG Debug)
  677. addDef(TORQUE_RELEASE "RelWithDebInfo;Release")
  678. addDef(TORQUE_ENABLE_ASSERTS "Debug;RelWithDebInfo")
  679. addDef(TORQUE_DEBUG_GFX_MODE "RelWithDebInfo")
  680. addDef(TORQUE_SHADERGEN)
  681. addDef(INITGUID)
  682. addDef(NTORQUE_SHARED)
  683. addDef(UNICODE)
  684. addDef(_UNICODE) # for VS
  685. addDef(TORQUE_UNICODE)
  686. #addDef(TORQUE_SHARED) # not used anymore as the game is the executable directly
  687. addDef(LTC_NO_PROTOTYPES) # for libTomCrypt
  688. addDef(BAN_OPCODE_AUTOLINK)
  689. addDef(ICE_NO_DLL)
  690. addDef(TORQUE_OPCODE)
  691. addDef(TORQUE_COLLADA)
  692. addDef(TORQUE_ASSIMP)
  693. addDef(DOM_INCLUDE_TINYXML)
  694. addDef(PCRE_STATIC)
  695. addDef(_CRT_SECURE_NO_WARNINGS)
  696. addDef(_CRT_SECURE_NO_DEPRECATE)
  697. if(UNIX AND NOT APPLE)
  698. addDef(LINUX)
  699. endif()
  700. if(TORQUE_OPENGL)
  701. addDef(TORQUE_OPENGL)
  702. endif()
  703. if(TORQUE_SDL)
  704. addDef(TORQUE_SDL)
  705. addInclude(${libDir}/sdl/include)
  706. if(APPLE)
  707. addLib(SDL2main)
  708. addLib(SDL2-static)
  709. add_dependencies(${TORQUE_APP_NAME} SDL2main SDL2-static)
  710. else()
  711. addLib(SDL2)
  712. endif()
  713. SET(SDL_WAYLAND OFF CACHE BOOL "" FORCE)
  714. mark_as_advanced(SDL_3DNOW)
  715. mark_as_advanced(SDL_ALSA)
  716. mark_as_advanced(SDL_ALTIVEC)
  717. mark_as_advanced(SDL_ARTS)
  718. mark_as_advanced(SDL_ASSEMBLY)
  719. mark_as_advanced(SDL_ASSERTIONS)
  720. mark_as_advanced(SDL_DIRECTX)
  721. mark_as_advanced(SDL_DISKAUDIO)
  722. mark_as_advanced(SDL_DUMMYAUDIO)
  723. mark_as_advanced(SDL_ESD)
  724. mark_as_advanced(SDL_FUSIONSOUND)
  725. mark_as_advanced(SDL_INPUT_TSLIB)
  726. mark_as_advanced(SDL_LIBC)
  727. mark_as_advanced(SDL_MMX)
  728. mark_as_advanced(SDL_NAS)
  729. mark_as_advanced(SDL_NAS_SHARED)
  730. mark_as_advanced(SDL_OSS)
  731. mark_as_advanced(SDL_PTHREADS)
  732. mark_as_advanced(SDL_PULSEAUDIO)
  733. mark_as_advanced(SDL_RENDER_D3D)
  734. mark_as_advanced(SDL_RPATH)
  735. mark_as_advanced(SDL_SNDIO)
  736. mark_as_advanced(SDL_SSE)
  737. mark_as_advanced(SDL_SSE2)
  738. mark_as_advanced(SDL_SSEMATH)
  739. mark_as_advanced(SDL_WINDRES)
  740. mark_as_advanced(SDL_ATOMIC)
  741. mark_as_advanced(SDL_AUDIO)
  742. mark_as_advanced(SDL_CPUINFO)
  743. mark_as_advanced(SDL_DLOPEN)
  744. mark_as_advanced(SDL_EVENTS)
  745. mark_as_advanced(SDL_FILE)
  746. mark_as_advanced(SDL_FILESYSTEM)
  747. mark_as_advanced(SDL_HAPTIC)
  748. mark_as_advanced(SDL_JOYSTICK)
  749. mark_as_advanced(SDL_LOADSO)
  750. mark_as_advanced(SDL_POWER)
  751. mark_as_advanced(SDL_RENDER)
  752. mark_as_advanced(SDL_SHARED)
  753. mark_as_advanced(SDL_STATIC)
  754. mark_as_advanced(SDL_THREADS)
  755. mark_as_advanced(SDL_TIMERS)
  756. mark_as_advanced(SDL_VIDEO)
  757. mark_as_advanced(SDL_CLOCK_GETTIME)
  758. mark_as_advanced(SDL_GCC_ATOMICS)
  759. mark_as_advanced(SDL_WAYLAND)
  760. set(SDL_WAYLAND OFF)
  761. mark_as_advanced(SDL_COCOA)
  762. mark_as_advanced(SDL_DIRECTFB)
  763. mark_as_advanced(SDL_DUMMY)
  764. mark_as_advanced(SDL_MIR)
  765. mark_as_advanced(SDL_OPENGL)
  766. mark_as_advanced(SDL_OPENGLES)
  767. set(SDL_OPENGLES OFF)
  768. mark_as_advanced(SDL_RPI)
  769. set(SDL_RPI OFF)
  770. mark_as_advanced(SDL_VIVANTE)
  771. set(SDL_VIVANTE OFF)
  772. mark_as_advanced(VIDEO_X11)
  773. set(SDL_X11 OFF)
  774. mark_as_advanced(SDL_VULKAN)
  775. set(SDL_VULKAN OFF)
  776. mark_as_advanced(SDL_KMSDRM)
  777. set(SDL_KMSDRM OFF)
  778. mark_as_advanced(SDL_WASAPI)
  779. mark_as_advanced(SDL_SSE3)
  780. mark_as_advanced(SDL_TEST)
  781. set(SDL_TEST OFF)
  782. mark_as_advanced(SDL_SENSOR)
  783. set(SDL_SENSOR OFF)
  784. mark_as_advanced(SDL_BACKGROUNDING_SIGNAL)
  785. mark_as_advanced(SDL_FOREGROUNDING_SIGNAL)
  786. set(SDL_Metal OFF)
  787. mark_as_advanced(SDL_METAL)
  788. mark_as_advanced(SDL2_DISABLE_INSTALL)
  789. mark_as_advanced(SDL2_DISABLE_SDL2MAIN)
  790. mark_as_advanced(SDL2_DISABLE_UNINSTALL)
  791. mark_as_advanced(SDL_ARMNEON)
  792. mark_as_advanced(SDL_ARMSIMD)
  793. mark_as_advanced(SDL_ASAN)
  794. mark_as_advanced(SDL_DUMMYVIDEO)
  795. mark_as_advanced(SDL_HIDAPI)
  796. mark_as_advanced(SDL_HIDAPI_JOYSTICK)
  797. mark_as_advanced(SDL_INSTALL_TESTS)
  798. mark_as_advanced(SDL_JACK)
  799. mark_as_advanced(SDL_LIBSAMPLERATE)
  800. mark_as_advanced(SDL_LOCALE)
  801. mark_as_advanced(SDL_MISC)
  802. mark_as_advanced(SDL_OFFSCREEN)
  803. mark_as_advanced(SDL_PIPEWIRE)
  804. mark_as_advanced(SDL_PTHREADS_SEM)
  805. mark_as_advanced(SDL_RENDER_METAL)
  806. mark_as_advanced(SDL_SNDIO_SHARED)
  807. mark_as_advanced(SDL_STATIC_PIC)
  808. mark_as_advanced(SDL_VIRTUAL_JOYSTICK)
  809. mark_as_advanced(SDL_X11)
  810. mark_as_advanced(SDL_XINPUT)
  811. endif()
  812. if(TORQUE_STATIC_CODE_ANALYSIS)
  813. addDef( "ON_FAIL_ASSERTFATAL=exit(1)" )
  814. endif()
  815. ###############################################################################
  816. # Include Paths
  817. ###############################################################################
  818. addInclude("${projectSrcDir}")
  819. addInclude("${srcDir}/")
  820. addInclude("${libDir}/lmpg")
  821. addInclude("${libDir}/lpng")
  822. addInclude("${libDir}/ljpeg")
  823. addInclude("${libDir}/lungif")
  824. addInclude("${libDir}/zlib")
  825. addInclude("${libDir}/") # for tinyxml
  826. addInclude("${libDir}/tinyxml")
  827. addInclude("${libDir}/squish")
  828. addInclude("${libDir}/convexDecomp")
  829. addInclude("${libDir}/libogg/include")
  830. addInclude("${libDir}/opcode")
  831. addInclude("${libDir}/collada/include")
  832. addInclude("${libDir}/collada/include/1.4")
  833. addInclude("${libDir}/assimp/include")
  834. if(TORQUE_SDL)
  835. addInclude("${libDir}/nativeFileDialogs/include")
  836. endif()
  837. if(TORQUE_OPENGL)
  838. addInclude("${libDir}/glad/include")
  839. endif()
  840. if(UNIX AND NOT APPLE)
  841. addInclude("/usr/include/freetype2/freetype")
  842. addInclude("/usr/include/freetype2")
  843. endif()
  844. if(MSVC)
  845. # Match projectGenerator naming for executables
  846. set(OUTPUT_CONFIG DEBUG MINSIZEREL RELWITHDEBINFO)
  847. set(OUTPUT_SUFFIX DEBUG MINSIZE OPTIMIZEDDEBUG)
  848. foreach(INDEX RANGE 2)
  849. list(GET OUTPUT_CONFIG ${INDEX} CONF)
  850. list(GET OUTPUT_SUFFIX ${INDEX} SUFFIX)
  851. set_property(TARGET ${PROJECT_NAME} PROPERTY OUTPUT_NAME_${CONF} ${PROJECT_NAME}_${SUFFIX})
  852. endforeach()
  853. endif()
  854. ###############################################################################
  855. # Project-specific configuration:
  856. ###############################################################################
  857. include(${TORQUE_APP_DIR}/${PROJECT_NAME}.cmake OPTIONAL)
  858. ###############################################################################
  859. # Installation
  860. ###############################################################################
  861. if(TORQUE_TEMPLATE)
  862. message("Prepare Template(${TORQUE_TEMPLATE}) install...")
  863. file(GLOB_RECURSE INSTALL_FILES_AND_DIRS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/*")
  864. IF( NOT TORQUE_D3D11)
  865. list(REMOVE_ITEM INSTALL_FILES_AND_DIRS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/D3DCompiler_47.dll")
  866. ENDIF()
  867. list(REMOVE_ITEM INSTALL_FILES_AND_DIRS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/main.tscript.in")
  868. foreach(ITEM ${INSTALL_FILES_AND_DIRS})
  869. get_filename_component( dir ${ITEM} DIRECTORY )
  870. get_filename_component( scriptName ${ITEM} NAME )
  871. STRING(REGEX REPLACE "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/" "${TORQUE_APP_DIR}/" INSTALL_DIR ${dir})
  872. STRING(REGEX REPLACE ".tscript" ".${TORQUE_SCRIPT_EXTENSION}" newScriptName ${scriptName})
  873. install( FILES ${ITEM} DESTINATION ${INSTALL_DIR} RENAME ${newScriptName} )
  874. endforeach()
  875. if(WIN32)
  876. INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/cleanShaders.bat" DESTINATION "${TORQUE_APP_DIR}")
  877. INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteCachedDTSs.bat" DESTINATION "${TORQUE_APP_DIR}")
  878. INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteDSOs.bat" DESTINATION "${TORQUE_APP_DIR}")
  879. INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeletePrefs.bat" DESTINATION "${TORQUE_APP_DIR}")
  880. endif()
  881. endif()
  882. ###############################################################################
  883. # Properties folder
  884. ###############################################################################
  885. # we only need to add libs that we add via add_subdirectory command, basics.cmake
  886. # will take care of the other source libs added via addLib
  887. if(TORQUE_SFX_OPENAL AND WIN32)
  888. set_target_properties(OpenAL PROPERTIES FOLDER ${TORQUE_LIBS_FOLDER_NAME})
  889. #why is openal adding these two?
  890. set_target_properties(common PROPERTIES FOLDER ${TORQUE_LIBS_FOLDER_NAME})
  891. set_target_properties(ex-common PROPERTIES FOLDER ${TORQUE_LIBS_FOLDER_NAME})
  892. endif()
  893. if(TORQUE_SDL)
  894. # Apple config has slightly different target names
  895. if (APPLE)
  896. set_target_properties(SDL2main PROPERTIES FOLDER ${TORQUE_LIBS_FOLDER_NAME})
  897. set_target_properties(SDL2-static PROPERTIES FOLDER ${TORQUE_LIBS_FOLDER_NAME})
  898. else()
  899. set_target_properties(SDL2 PROPERTIES FOLDER ${TORQUE_LIBS_FOLDER_NAME})
  900. endif()
  901. endif()