torque3d.cmake 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902
  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 -msse -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 -msse -pipe -Wfatal-errors -Wno-return-type-c-linkage -Wno-unused-local-typedef ${TORQUE_ADDITIONAL_LINKER_FLAGS}")
  31. else()
  32. # default compiler flags
  33. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_FLAG32} -Wundef -msse -pipe -Wfatal-errors ${TORQUE_ADDITIONAL_LINKER_FLAGS} -Wl,-rpath,'$$ORIGIN'")
  34. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CXX_FLAG32} -Wundef -msse -pipe -Wfatal-errors ${TORQUE_ADDITIONAL_LINKER_FLAGS} -Wl,-rpath,'$$ORIGIN'")
  35. endif()
  36. # for asm files
  37. SET (CMAKE_ASM_NASM_OBJECT_FORMAT "elf")
  38. ENABLE_LANGUAGE (ASM_NASM)
  39. set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
  40. endif()
  41. # TODO: fmod support
  42. ###############################################################################
  43. # modules
  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)
  53. if(WIN32)
  54. option(TORQUE_SFX_DirectX "DirectX Sound" ON)
  55. mark_as_advanced(TORQUE_SFX_DirectX)
  56. else()
  57. set(TORQUE_SFX_DirectX OFF)
  58. endif()
  59. option(TORQUE_SFX_OPENAL "OpenAL Sound" ON)
  60. #windows uses openal-soft
  61. if(WIN32)
  62. #disable a few things that are not required
  63. set(ALSOFT_TESTS OFF CACHE BOOL "Build and install test programs" FORCE)
  64. set(ALSOFT_UTILS OFF CACHE BOOL "Build and install utility programs" FORCE)
  65. set(ALSOFT_EXAMPLES OFF CACHE BOOL "Build and install example programs" FORCE)
  66. set(ALSOFT_CONFIG OFF CACHE BOOL "Install alsoft.conf sample configuration file" FORCE)
  67. set(ALSOFT_INSTALL OFF CACHE BOOL "Install headers and libraries" FORCE)
  68. set(ALSOFT_NO_CONFIG_UTIL OFF CACHE BOOL "Disable building the alsoft-config utility" FORCE)
  69. set(ALSOFT_HRTF_DEFS OFF CACHE BOOL "Install HRTF definition files" FORCE)
  70. set(ALSOFT_AMBDEC_PRESETS OFF CACHE BOOL "Install AmbDec presets" FORCE)
  71. add_subdirectory( ${libDir}/openal-soft ${CMAKE_CURRENT_BINARY_DIR}/openal-soft)
  72. endif()
  73. if(TORQUE_SFX_OPENAL)
  74. #Hide some unnecessary fields as advanced
  75. mark_as_advanced(ALSOFT_AMBDEC_PRESETS)
  76. mark_as_advanced(ALSOFT_BACKEND_DSOUND)
  77. mark_as_advanced(ALSOFT_BACKEND_MMDEVAPI)
  78. mark_as_advanced(ALSOFT_BACKEND_WAVE)
  79. mark_as_advanced(ALSOFT_BACKEND_WINMM)
  80. mark_as_advanced(ALSOFT_CONFIG)
  81. mark_as_advanced(ALSOFT_CPUEXT_SSE)
  82. mark_as_advanced(ALSOFT_CPUEXT_SSE2)
  83. mark_as_advanced(ALSOFT_CPUEXT_SSE3)
  84. mark_as_advanced(ALSOFT_CPUEXT_SSE4_1)
  85. mark_as_advanced(ALSOFT_DLOPEN)
  86. mark_as_advanced(ALSOFT_EMBED_HRTF_DATA)
  87. mark_as_advanced(ALSOFT_EXAMPLES)
  88. mark_as_advanced(ALSOFT_HRTF_DEFS)
  89. mark_as_advanced(ALSOFT_INSTALL)
  90. mark_as_advanced(ALSOFT_NO_CONFIG_UTIL)
  91. mark_as_advanced(ALSOFT_NO_UID_DEFS)
  92. mark_as_advanced(ALSOFT_REQUIRE_ALSA)
  93. mark_as_advanced(ALSOFT_REQUIRE_COREAUDIO)
  94. mark_as_advanced(ALSOFT_REQUIRE_DSOUND)
  95. mark_as_advanced(ALSOFT_REQUIRE_JACK)
  96. mark_as_advanced(ALSOFT_REQUIRE_MMDEVAPI)
  97. mark_as_advanced(ALSOFT_REQUIRE_NEON)
  98. mark_as_advanced(ALSOFT_REQUIRE_OPENSL)
  99. mark_as_advanced(ALSOFT_REQUIRE_OSS)
  100. mark_as_advanced(ALSOFT_REQUIRE_PORTAUDIO)
  101. mark_as_advanced(ALSOFT_REQUIRE_PULSEAUDIO)
  102. mark_as_advanced(ALSOFT_REQUIRE_QSA)
  103. mark_as_advanced(ALSOFT_REQUIRE_SNDIO)
  104. mark_as_advanced(ALSOFT_REQUIRE_SOLARIS)
  105. mark_as_advanced(ALSOFT_REQUIRE_SSE)
  106. mark_as_advanced(ALSOFT_REQUIRE_SSE2)
  107. mark_as_advanced(ALSOFT_REQUIRE_SSE4_1)
  108. mark_as_advanced(ALSOFT_REQUIRE_WINMM)
  109. mark_as_advanced(ALSOFT_TESTS)
  110. mark_as_advanced(ALSOFT_UTILS)
  111. mark_as_advanced(ALSOFT_WERROR)
  112. mark_as_advanced(COREAUDIO_FRAMEWORK)
  113. mark_as_advanced(CMAKE_DEBUG_POSTFIX)
  114. mark_as_advanced(FORCE_STATIC_VCRT)
  115. endif()
  116. mark_as_advanced(TORQUE_SFX_OPENAL)
  117. option(TORQUE_HIFI "HIFI? support" OFF)
  118. mark_as_advanced(TORQUE_HIFI)
  119. option(TORQUE_EXTENDED_MOVE "Extended move support" OFF)
  120. mark_as_advanced(TORQUE_EXTENDED_MOVE)
  121. if(WIN32)
  122. option(TORQUE_SDL "Use SDL for window and input" ON)
  123. else()
  124. set(TORQUE_SDL ON) # we need sdl to work on Linux/Mac
  125. endif()
  126. if(WIN32)
  127. option(TORQUE_OPENGL "Allow OpenGL render" ON)
  128. #mark_as_advanced(TORQUE_OPENGL)
  129. else()
  130. set(TORQUE_OPENGL ON) # we need OpenGL to render on Linux/Mac
  131. endif()
  132. if(WIN32)
  133. option(TORQUE_D3D11 "Allow Direct3D 11 render" ON)
  134. endif()
  135. option(TORQUE_EXPERIMENTAL_EC "Experimental Entity/Component systems" OFF)
  136. mark_as_advanced(TORQUE_EXPERIMENTAL_EC)
  137. option(TORQUE_DEDICATED "Torque dedicated" OFF)
  138. mark_as_advanced(TORQUE_DEDICATED)
  139. ###############################################################################
  140. # options
  141. ###############################################################################
  142. if(NOT MSVC AND NOT APPLE) # handle single-configuration generator
  143. set(TORQUE_BUILD_TYPE "Debug" CACHE STRING "Select one of Debug, Release and RelWithDebInfo")
  144. set_property(CACHE TORQUE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo")
  145. set(TORQUE_ADDITIONAL_LINKER_FLAGS "" CACHE STRING "Additional linker flags")
  146. mark_as_advanced(TORQUE_ADDITIONAL_LINKER_FLAGS)
  147. endif()
  148. option(TORQUE_MULTITHREAD "Multi Threading" ON)
  149. mark_as_advanced(TORQUE_MULTITHREAD)
  150. option(TORQUE_DISABLE_MEMORY_MANAGER "Disable memory manager" ON)
  151. mark_as_advanced(TORQUE_DISABLE_MEMORY_MANAGER)
  152. option(TORQUE_DISABLE_VIRTUAL_MOUNT_SYSTEM "Disable virtual mount system" OFF)
  153. mark_as_advanced(TORQUE_DISABLE_VIRTUAL_MOUNT_SYSTEM)
  154. option(TORQUE_PLAYER "Playback only?" OFF)
  155. mark_as_advanced(TORQUE_PLAYER)
  156. option(TORQUE_TOOLS "Enable or disable the tools" ON)
  157. mark_as_advanced(TORQUE_TOOLS)
  158. option(TORQUE_ENABLE_PROFILER "Enable or disable the profiler" OFF)
  159. mark_as_advanced(TORQUE_ENABLE_PROFILER)
  160. option(TORQUE_DEBUG "T3D Debug mode" OFF)
  161. mark_as_advanced(TORQUE_DEBUG)
  162. option(TORQUE_SHIPPING "T3D Shipping build?" OFF)
  163. mark_as_advanced(TORQUE_SHIPPING)
  164. option(TORQUE_DEBUG_NET "debug network" OFF)
  165. mark_as_advanced(TORQUE_DEBUG_NET)
  166. option(TORQUE_DEBUG_NET_MOVES "debug network moves" OFF)
  167. mark_as_advanced(TORQUE_DEBUG_NET_MOVES)
  168. option(TORQUE_ENABLE_ASSERTS "enables or disable asserts" OFF)
  169. mark_as_advanced(TORQUE_ENABLE_ASSERTS)
  170. option(TORQUE_DEBUG_GFX_MODE "triggers graphics debug mode" OFF)
  171. mark_as_advanced(TORQUE_DEBUG_GFX_MODE)
  172. #option(DEBUG_SPEW "more debug" OFF)
  173. set(TORQUE_NO_DSO_GENERATION ON)
  174. if(WIN32)
  175. # warning C4800: 'XXX' : forcing value to bool 'true' or 'false' (performance warning)
  176. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4800")
  177. # warning C4018: '<' : signed/unsigned mismatch
  178. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4018")
  179. # warning C4244: 'initializing' : conversion from 'XXX' to 'XXX', possible loss of data
  180. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -wd4244")
  181. if( TORQUE_CPU_X64 )
  182. link_directories($ENV{DXSDK_DIR}/Lib/x64)
  183. else()
  184. link_directories($ENV{DXSDK_DIR}/Lib/x86)
  185. endif()
  186. endif()
  187. # build types
  188. if(NOT MSVC AND NOT APPLE) # handle single-configuration generator
  189. set(CMAKE_BUILD_TYPE ${TORQUE_BUILD_TYPE})
  190. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  191. set(TORQUE_DEBUG TRUE)
  192. elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
  193. set(TORQUE_RELEASE TRUE)
  194. elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
  195. set(TORQUE_RELEASE TRUE)
  196. else()
  197. message(FATAL_ERROR "Please select Debug, Release or RelWithDebInfo for TORQUE_BUILD_TYPE")
  198. endif()
  199. endif()
  200. ###############################################################################
  201. # Always enabled paths first
  202. ###############################################################################
  203. addPath("${srcDir}/") # must come first :)
  204. addPathRec("${srcDir}/app")
  205. addPath("${srcDir}/sfx/media")
  206. addPath("${srcDir}/sfx/null")
  207. addPath("${srcDir}/sfx")
  208. addPath("${srcDir}/console")
  209. addPath("${srcDir}/core")
  210. addPath("${srcDir}/core/stream")
  211. addPath("${srcDir}/core/strings")
  212. addPath("${srcDir}/core/util")
  213. addPath("${srcDir}/core/util/test")
  214. addPath("${srcDir}/core/util/journal")
  215. addPath("${srcDir}/core/util/journal/test")
  216. addPath("${srcDir}/core/util/zip")
  217. addPath("${srcDir}/core/util/zip/test")
  218. addPath("${srcDir}/core/util/zip/compressors")
  219. addPath("${srcDir}/i18n")
  220. addPath("${srcDir}/sim")
  221. addPath("${srcDir}/util")
  222. addPath("${srcDir}/windowManager")
  223. addPath("${srcDir}/windowManager/torque")
  224. addPath("${srcDir}/windowManager/test")
  225. addPath("${srcDir}/math")
  226. addPath("${srcDir}/math/util")
  227. addPath("${srcDir}/math/test")
  228. addPath("${srcDir}/platform")
  229. if(NOT TORQUE_SDL)
  230. set(BLACKLIST "fileDialog.cpp" )
  231. endif()
  232. addPath("${srcDir}/platform/nativeDialogs")
  233. set(BLACKLIST "" )
  234. addPath("${srcDir}/cinterface")
  235. if( NOT TORQUE_DEDICATED )
  236. addPath("${srcDir}/platform/menus")
  237. endif()
  238. addPath("${srcDir}/platform/test")
  239. addPath("${srcDir}/platform/threads")
  240. addPath("${srcDir}/platform/threads/test")
  241. addPath("${srcDir}/platform/async")
  242. addPath("${srcDir}/platform/async/test")
  243. addPath("${srcDir}/platform/input")
  244. addPath("${srcDir}/platform/output")
  245. addPath("${srcDir}/app")
  246. addPath("${srcDir}/app/net")
  247. addPath("${srcDir}/BadBehavior")
  248. addPath("${srcDir}/BadBehavior/composite")
  249. addPath("${srcDir}/BadBehavior/core")
  250. addPath("${srcDir}/BadBehavior/decorator")
  251. addPath("${srcDir}/BadBehavior/leaf")
  252. addPath("${srcDir}/BadBehavior/leaf/compiled")
  253. addPath("${srcDir}/BadBehavior/tools")
  254. addPath("${srcDir}/util/messaging")
  255. addPath("${srcDir}/gfx/Null")
  256. addPath("${srcDir}/gfx/test")
  257. addPath("${srcDir}/gfx/bitmap")
  258. addPath("${srcDir}/gfx/bitmap/loaders")
  259. addPath("${srcDir}/gfx/util")
  260. addPath("${srcDir}/gfx/video")
  261. addPath("${srcDir}/gfx")
  262. addPath("${srcDir}/shaderGen")
  263. addPath("${srcDir}/gfx/sim")
  264. addPath("${srcDir}/gui/buttons")
  265. addPath("${srcDir}/gui/containers")
  266. addPath("${srcDir}/gui/controls")
  267. addPath("${srcDir}/gui/core")
  268. addPath("${srcDir}/gui/game")
  269. addPath("${srcDir}/gui/shiny")
  270. addPath("${srcDir}/gui/utility")
  271. addPath("${srcDir}/gui")
  272. addPath("${srcDir}/collision")
  273. addPath("${srcDir}/materials")
  274. addPath("${srcDir}/lighting")
  275. addPath("${srcDir}/lighting/common")
  276. addPath("${srcDir}/renderInstance")
  277. addPath("${srcDir}/scene")
  278. addPath("${srcDir}/scene/culling")
  279. addPath("${srcDir}/scene/zones")
  280. addPath("${srcDir}/scene/mixin")
  281. addPath("${srcDir}/shaderGen")
  282. addPath("${srcDir}/terrain")
  283. addPath("${srcDir}/environment")
  284. addPath("${srcDir}/forest")
  285. addPath("${srcDir}/forest/ts")
  286. addPath("${srcDir}/ts")
  287. addPath("${srcDir}/ts/arch")
  288. addPath("${srcDir}/physics")
  289. addPath("${srcDir}/gui/3d")
  290. addPath("${srcDir}/postFx")
  291. if(NOT TORQUE_EXPERIMENTAL_EC)
  292. set(BLACKLIST "entity.cpp;entity.h" )
  293. endif()
  294. addPath("${srcDir}/T3D")
  295. set(BLACKLIST "" )
  296. addPath("${srcDir}/T3D/examples")
  297. addPath("${srcDir}/T3D/fps")
  298. addPath("${srcDir}/T3D/fx")
  299. addPath("${srcDir}/T3D/vehicles")
  300. addPath("${srcDir}/T3D/physics")
  301. addPath("${srcDir}/T3D/decal")
  302. addPath("${srcDir}/T3D/sfx")
  303. addPath("${srcDir}/T3D/gameBase")
  304. addPath("${srcDir}/T3D/turret")
  305. if( TORQUE_EXPERIMENTAL_EC )
  306. addPath("${srcDir}/T3D/components/")
  307. addPath("${srcDir}/T3D/components/animation")
  308. addPath("${srcDir}/T3D/components/camera")
  309. addPath("${srcDir}/T3D/components/collision")
  310. addPath("${srcDir}/T3D/components/game")
  311. addPath("${srcDir}/T3D/components/physics")
  312. addPath("${srcDir}/T3D/components/render")
  313. endif()
  314. addPath("${srcDir}/main/")
  315. addPath("${srcDir}/assets")
  316. addPath("${srcDir}/module")
  317. addPath("${srcDir}/T3D/assets")
  318. addPathRec("${srcDir}/persistence")
  319. addPathRec("${srcDir}/ts/collada")
  320. addPathRec("${srcDir}/ts/loader")
  321. addPathRec("${projectSrcDir}")
  322. ###############################################################################
  323. # modular paths
  324. ###############################################################################
  325. # lighting
  326. if(TORQUE_ADVANCED_LIGHTING)
  327. addPath("${srcDir}/lighting/advanced")
  328. addPathRec("${srcDir}/lighting/shadowMap")
  329. if(WIN32)
  330. addPathRec("${srcDir}/lighting/advanced/hlsl")
  331. endif()
  332. if(TORQUE_OPENGL)
  333. addPathRec("${srcDir}/lighting/advanced/glsl")
  334. endif()
  335. addDef(TORQUE_ADVANCED_LIGHTING)
  336. endif()
  337. if(TORQUE_BASIC_LIGHTING)
  338. addPathRec("${srcDir}/lighting/basic")
  339. addPathRec("${srcDir}/lighting/shadowMap")
  340. addDef(TORQUE_BASIC_LIGHTING)
  341. endif()
  342. # DirectX Sound
  343. if(TORQUE_SFX_DirectX)
  344. addLib(x3daudio.lib)
  345. addPathRec("${srcDir}/sfx/dsound")
  346. addPathRec("${srcDir}/sfx/xaudio")
  347. endif()
  348. # OpenAL
  349. if(TORQUE_SFX_OPENAL AND NOT TORQUE_DEDICATED)
  350. addPath("${srcDir}/sfx/openal")
  351. if(WIN32)
  352. addPath("${srcDir}/sfx/openal/win32")
  353. addInclude("${libDir}/openal-soft/include")
  354. endif()
  355. if(UNIX AND NOT APPLE)
  356. addPath("${srcDir}/sfx/openal/linux")
  357. endif()
  358. if(APPLE)
  359. addPath("${srcDir}/sfx/openal/mac")
  360. addFramework("OpenAL")
  361. endif()
  362. endif()
  363. # Vorbis
  364. if(TORQUE_SFX_VORBIS)
  365. addInclude(${libDir}/libvorbis/include)
  366. addDef(TORQUE_OGGVORBIS)
  367. addLib(libvorbis)
  368. addLib(libogg)
  369. endif()
  370. # Theora
  371. if(TORQUE_THEORA)
  372. addPath("${srcDir}/core/ogg")
  373. addPath("${srcDir}/gfx/video")
  374. addPath("${srcDir}/gui/theora")
  375. addDef(TORQUE_OGGTHEORA)
  376. addDef(TORQUE_OGGVORIBS)
  377. addInclude(${libDir}/libtheora/include)
  378. addLib(libtheora)
  379. endif()
  380. # Include tools for non-tool builds (or define player if a tool build)
  381. if(TORQUE_TOOLS)
  382. addPath("${srcDir}/gui/worldEditor")
  383. addPath("${srcDir}/environment/editors")
  384. addPath("${srcDir}/forest/editor")
  385. addPath("${srcDir}/gui/editor")
  386. if(NOT TORQUE_EXPERIMENTAL_EC)
  387. set(BLACKLIST "entityGroup.cpp;entityGroup.h;mountingGroup.cpp;mountingGroup.h;componentGroup.cpp;componentGroup.h" )
  388. endif()
  389. addPath("${srcDir}/gui/editor/inspector")
  390. set(BLACKLIST "" )
  391. endif()
  392. if(TORQUE_HIFI)
  393. addPath("${srcDir}/T3D/gameBase/hifi")
  394. addDef(TORQUE_HIFI_NET)
  395. endif()
  396. if(TORQUE_EXTENDED_MOVE)
  397. addPath("${srcDir}/T3D/gameBase/extended")
  398. addDef(TORQUE_EXTENDED_MOVE)
  399. else()
  400. addPath("${srcDir}/T3D/gameBase/std")
  401. endif()
  402. if(TORQUE_SDL)
  403. addPathRec("${srcDir}/windowManager/sdl")
  404. addPathRec("${srcDir}/platformSDL")
  405. if(TORQUE_OPENGL)
  406. addPathRec("${srcDir}/gfx/gl/sdl")
  407. endif()
  408. if(UNIX AND NOT APPLE)
  409. #set(CMAKE_SIZEOF_VOID_P 4) #force 32 bit
  410. set(ENV{CFLAGS} "${CXX_FLAG32} -g -O3")
  411. if("${TORQUE_ADDITIONAL_LINKER_FLAGS}" STREQUAL "")
  412. set(ENV{LDFLAGS} "${CXX_FLAG32}")
  413. else()
  414. set(ENV{LDFLAGS} "${CXX_FLAG32} ${TORQUE_ADDITIONAL_LINKER_FLAGS}")
  415. endif()
  416. find_package(PkgConfig REQUIRED)
  417. pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
  418. # Setup CMake to use GTK+, tell the compiler where to look for headers
  419. # and to the linker where to look for libraries
  420. include_directories(${GTK3_INCLUDE_DIRS})
  421. link_directories(${GTK3_LIBRARY_DIRS})
  422. # Add other flags to the compiler
  423. add_definitions(${GTK3_CFLAGS_OTHER})
  424. set(BLACKLIST "nfd_win.cpp" "nfd_cocoa.m" )
  425. addLib(nativeFileDialogs)
  426. set(BLACKLIST "" )
  427. target_link_libraries(nativeFileDialogs ${GTK3_LIBRARIES})
  428. elseif(APPLE)
  429. set(BLACKLIST "nfd_gtk.c" "nfd_win.cpp" )
  430. addLib(nativeFileDialogs)
  431. set(BLACKLIST "" )
  432. else()
  433. set(BLACKLIST "nfd_gtk.c" "nfd_cocoa.m" )
  434. addLib(nativeFileDialogs)
  435. set(BLACKLIST "" )
  436. addLib(comctl32)
  437. endif()
  438. #override and hide SDL2 cache variables
  439. #set apple to sue sdl static lib, other platforms use dynamic
  440. if(APPLE)
  441. set(SDL_SHARED OFF CACHE BOOL "Build a shared version of the library" FORCE)
  442. set(SDL_STATIC ON CACHE BOOL "Build a static version of the library" FORCE)
  443. else()
  444. set(SDL_SHARED ON CACHE BOOL "Build a shared version of the library" FORCE)
  445. set(SDL_STATIC OFF CACHE BOOL "Build a static version of the library" FORCE)
  446. endif()
  447. add_subdirectory( ${libDir}/sdl ${CMAKE_CURRENT_BINARY_DIR}/sdl2)
  448. link_directories( ${libDir}/sdl ${CMAKE_CURRENT_BINARY_DIR}/sdl2)
  449. endif()
  450. if(TORQUE_DEDICATED)
  451. addDef(TORQUE_DEDICATED)
  452. endif()
  453. if(TORQUE_EXPERIMENTAL_EC)
  454. addDef(TORQUE_EXPERIMENTAL_EC)
  455. endif()
  456. #modules dir
  457. file(GLOB modules "modules/*.cmake")
  458. foreach(module ${modules})
  459. include(${module})
  460. endforeach()
  461. ###############################################################################
  462. # platform specific things
  463. ###############################################################################
  464. if(WIN32)
  465. addPath("${srcDir}/platformWin32")
  466. if(TORQUE_SDL)
  467. set(BLACKLIST "fileDialog.cpp" )
  468. endif()
  469. addPath("${srcDir}/platformWin32/nativeDialogs")
  470. set(BLACKLIST "" )
  471. addPath("${srcDir}/platformWin32/menus")
  472. if(NOT TORQUE_SDL)
  473. addPath("${srcDir}/platformWin32/threads")
  474. endif()
  475. addPath("${srcDir}/platformWin32/videoInfo")
  476. addPath("${srcDir}/platformWin32/minidump")
  477. addPath("${srcDir}/windowManager/win32")
  478. if(TORQUE_D3D11)
  479. addPath("${srcDir}/gfx/D3D11")
  480. endif()
  481. addPath("${srcDir}/gfx/D3D9")
  482. addPath("${srcDir}/gfx/D3D9/pc")
  483. addPath("${srcDir}/shaderGen/HLSL")
  484. addPath("${srcDir}/terrain/hlsl")
  485. addPath("${srcDir}/forest/hlsl")
  486. # add windows rc file for the icon
  487. addFile("${projectSrcDir}/torque.rc")
  488. endif()
  489. if(APPLE)
  490. addPath("${srcDir}/platformMac")
  491. addPath("${srcDir}/platformPOSIX")
  492. endif()
  493. if(UNIX AND NOT APPLE)
  494. # linux_dedicated
  495. if(TORQUE_DEDICATED)
  496. addPath("${srcDir}/windowManager/dedicated")
  497. # ${srcDir}/platformX86UNIX/*.client.* files are not needed
  498. # @todo: move to separate file
  499. file( GLOB tmp_files
  500. ${srcDir}/platformX86UNIX/*.cpp
  501. ${srcDir}/platformX86UNIX/*.c
  502. ${srcDir}/platformX86UNIX/*.cc
  503. ${srcDir}/platformX86UNIX/*.h )
  504. file( GLOB tmp_remove_files ${srcDir}/platformX86UNIX/*client.* )
  505. LIST( REMOVE_ITEM tmp_files ${tmp_remove_files} )
  506. foreach( f ${tmp_files} )
  507. addFile( ${f} )
  508. endforeach()
  509. else()
  510. addPath("${srcDir}/platformX86UNIX")
  511. addPath("${srcDir}/platformX86UNIX/nativeDialogs")
  512. endif()
  513. # linux
  514. addPath("${srcDir}/platformPOSIX")
  515. endif()
  516. if( TORQUE_OPENGL )
  517. addPath("${srcDir}/shaderGen/GLSL")
  518. if( TORQUE_OPENGL AND NOT TORQUE_DEDICATED )
  519. addPath("${srcDir}/gfx/gl")
  520. addPath("${srcDir}/gfx/gl/tGL")
  521. addPath("${srcDir}/shaderGen/GLSL")
  522. addPath("${srcDir}/terrain/glsl")
  523. addPath("${srcDir}/forest/glsl")
  524. endif()
  525. if(WIN32 AND NOT TORQUE_SDL)
  526. addPath("${srcDir}/gfx/gl/win32")
  527. endif()
  528. endif()
  529. ###############################################################################
  530. ###############################################################################
  531. finishExecutable()
  532. ###############################################################################
  533. ###############################################################################
  534. # Set Visual Studio startup project
  535. if((${CMAKE_VERSION} VERSION_EQUAL 3.6.0) OR (${CMAKE_VERSION} VERSION_GREATER 3.6.0) AND MSVC)
  536. set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${TORQUE_APP_NAME})
  537. endif()
  538. message(STATUS "writing ${projectSrcDir}/torqueConfig.h")
  539. CONFIGURE_FILE("${cmakeDir}/torqueConfig.h.in" "${projectSrcDir}/torqueConfig.h")
  540. # configure the relevant files only once
  541. if(APPLE)
  542. #icon
  543. if(NOT EXISTS "${projectSrcDir}/torque.icns")
  544. CONFIGURE_FILE("${cmakeDir}/torque.icns" "${projectSrcDir}/torque.icns" COPYONLY)
  545. endif()
  546. #plist
  547. if(NOT EXISTS "${projectSrcDir}/Info.plist")
  548. CONFIGURE_FILE("${cmakeDir}/Info.plist.in" "${projectSrcDir}/Info.plist" COPYONLY)
  549. endif()
  550. #target properties for mac
  551. set_target_properties("${PROJECT_NAME}" PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${projectSrcDir}/Info.plist")
  552. else()
  553. if(NOT EXISTS "${projectSrcDir}/torque.ico")
  554. CONFIGURE_FILE("${cmakeDir}/torque.ico" "${projectSrcDir}/torque.ico" COPYONLY)
  555. endif()
  556. endif()
  557. if(NOT EXISTS "${projectOutDir}/${PROJECT_NAME}.torsion")
  558. CONFIGURE_FILE("${cmakeDir}/template.torsion.in" "${projectOutDir}/${PROJECT_NAME}.torsion")
  559. endif()
  560. if(EXISTS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/main.cs.in")
  561. CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/main.cs.in" "${projectOutDir}/main.cs")
  562. endif()
  563. if(WIN32)
  564. if(NOT EXISTS "${projectSrcDir}/torque.rc")
  565. CONFIGURE_FILE("${cmakeDir}/torque-win.rc.in" "${projectSrcDir}/torque.rc")
  566. endif()
  567. if(NOT EXISTS "${projectOutDir}/${PROJECT_NAME}-debug.bat")
  568. CONFIGURE_FILE("${cmakeDir}/app-debug-win.bat.in" "${projectOutDir}/${PROJECT_NAME}-debug.bat")
  569. endif()
  570. if(NOT EXISTS "${projectOutDir}/cleanup.bat")
  571. CONFIGURE_FILE("${cmakeDir}/cleanup-win.bat.in" "${projectOutDir}/cleanup.bat")
  572. endif()
  573. endif()
  574. ###############################################################################
  575. # Common Libraries
  576. ###############################################################################
  577. addLib(lmng)
  578. addLib(lpng)
  579. addLib(lungif)
  580. addLib(ljpeg)
  581. addLib(zlib)
  582. addLib(tinyxml)
  583. addLib(opcode)
  584. addLib(squish)
  585. addLib(collada)
  586. addLib(pcre)
  587. addLib(convexDecomp)
  588. if (TORQUE_OPENGL)
  589. addLib(glad)
  590. endif()
  591. if(WIN32)
  592. # copy pasted from T3D build system, some might not be needed
  593. set(TORQUE_EXTERNAL_LIBS "COMCTL32.LIB;COMDLG32.LIB;USER32.LIB;ADVAPI32.LIB;GDI32.LIB;WINMM.LIB;WS2_32.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")
  594. mark_as_advanced(TORQUE_EXTERNAL_LIBS)
  595. addLib("${TORQUE_EXTERNAL_LIBS}")
  596. if(TORQUE_OPENGL)
  597. addLib(OpenGL32.lib)
  598. endif()
  599. # JTH: DXSDK is compiled with older runtime, and MSVC 2015+ is when __vsnprintf is undefined.
  600. # This is a workaround by linking with the older legacy library functions.
  601. # See this for more info: http://stackoverflow.com/a/34230122
  602. if (MSVC14)
  603. addLib(legacy_stdio_definitions.lib)
  604. endif()
  605. endif()
  606. if (APPLE)
  607. addFramework("Cocoa")
  608. addFramework("OpenGL")
  609. #These are needed by sdl2 static lib
  610. addFramework("CoreAudio")
  611. addFramework("AudioUnit")
  612. addFramework("ForceFeedback")
  613. addFramework("IOKit")
  614. addFramework("CoreVideo")
  615. #grrr damn you sdl!
  616. addFramework("Carbon")
  617. addFramework("AudioToolbox")
  618. addLib("iconv")
  619. #set a few arch defaults
  620. set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE STRING "OSX Architecture" FORCE)
  621. set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "OSX Deployment target" FORCE)
  622. endif()
  623. if(UNIX AND NOT APPLE)
  624. # copy pasted from T3D build system, some might not be needed
  625. set(TORQUE_EXTERNAL_LIBS "dl Xxf86vm Xext X11 Xft stdc++ pthread GL" CACHE STRING "external libs to link against")
  626. mark_as_advanced(TORQUE_EXTERNAL_LIBS)
  627. string(REPLACE " " ";" TORQUE_EXTERNAL_LIBS_LIST ${TORQUE_EXTERNAL_LIBS})
  628. addLib( "${TORQUE_EXTERNAL_LIBS_LIST}" )
  629. endif()
  630. ###############################################################################
  631. # Always enabled Definitions
  632. ###############################################################################
  633. addDef(TORQUE_DEBUG Debug)
  634. addDef(TORQUE_ENABLE_ASSERTS "Debug;RelWithDebInfo")
  635. addDef(TORQUE_DEBUG_GFX_MODE "RelWithDebInfo")
  636. addDef(TORQUE_SHADERGEN)
  637. addDef(INITGUID)
  638. addDef(NTORQUE_SHARED)
  639. addDef(UNICODE)
  640. addDef(_UNICODE) # for VS
  641. addDef(TORQUE_UNICODE)
  642. #addDef(TORQUE_SHARED) # not used anymore as the game is the executable directly
  643. addDef(LTC_NO_PROTOTYPES) # for libTomCrypt
  644. addDef(BAN_OPCODE_AUTOLINK)
  645. addDef(ICE_NO_DLL)
  646. addDef(TORQUE_OPCODE)
  647. addDef(TORQUE_COLLADA)
  648. addDef(DOM_INCLUDE_TINYXML)
  649. addDef(PCRE_STATIC)
  650. addDef(_CRT_SECURE_NO_WARNINGS)
  651. addDef(_CRT_SECURE_NO_DEPRECATE)
  652. if(UNIX AND NOT APPLE)
  653. addDef(LINUX)
  654. endif()
  655. if(TORQUE_OPENGL)
  656. addDef(TORQUE_OPENGL)
  657. endif()
  658. if(TORQUE_SDL)
  659. addDef(TORQUE_SDL)
  660. addInclude(${libDir}/sdl/include)
  661. addLib(SDL2)
  662. SET(VIDEO_WAYLAND OFF CACHE BOOL "" FORCE)
  663. mark_as_advanced(3DNOW)
  664. mark_as_advanced(ALSA)
  665. mark_as_advanced(ALTIVEC)
  666. mark_as_advanced(ARTS)
  667. mark_as_advanced(ASSEMBLY)
  668. mark_as_advanced(ASSERTIONS)
  669. mark_as_advanced(DIRECTX)
  670. mark_as_advanced(DISKAUDIO)
  671. mark_as_advanced(DUMMYAUDIO)
  672. mark_as_advanced(ESD)
  673. mark_as_advanced(FUSIONSOUND)
  674. mark_as_advanced(INPUT_TSLIB)
  675. mark_as_advanced(LIBC)
  676. mark_as_advanced(MMX)
  677. mark_as_advanced(NAS)
  678. mark_as_advanced(NAS_SHARED)
  679. mark_as_advanced(OSS)
  680. mark_as_advanced(PTHREADS)
  681. mark_as_advanced(PULSEAUDIO)
  682. mark_as_advanced(RENDER_D3D)
  683. mark_as_advanced(RPATH)
  684. mark_as_advanced(SNDIO)
  685. mark_as_advanced(SSE)
  686. mark_as_advanced(SSE2)
  687. mark_as_advanced(SSEMATH)
  688. mark_as_advanced(WINDRES)
  689. mark_as_advanced(SDL_ATOMIC)
  690. mark_as_advanced(SDL_AUDIO)
  691. mark_as_advanced(SDL_CPUINFO)
  692. mark_as_advanced(SDL_DLOPEN)
  693. mark_as_advanced(SDL_EVENTS)
  694. mark_as_advanced(SDL_FILE)
  695. mark_as_advanced(SDL_FILESYSTEM)
  696. mark_as_advanced(SDL_HAPTIC)
  697. mark_as_advanced(SDL_JOYSTICK)
  698. mark_as_advanced(SDL_LOADSO)
  699. mark_as_advanced(SDL_POWER)
  700. mark_as_advanced(SDL_RENDER)
  701. mark_as_advanced(SDL_SHARED)
  702. mark_as_advanced(SDL_STATIC)
  703. mark_as_advanced(SDL_THREADS)
  704. mark_as_advanced(SDL_TIMERS)
  705. mark_as_advanced(SDL_VIDEO)
  706. mark_as_advanced(CLOCK_GETTIME)
  707. mark_as_advanced(GCC_ATOMICS)
  708. mark_as_advanced(VIDEO_WAYLAND)
  709. mark_as_advanced(VIDEO_COCOA)
  710. mark_as_advanced(VIDEO_DIRECTFB)
  711. mark_as_advanced(VIDEO_DUMMY)
  712. mark_as_advanced(VIDEO_MIR)
  713. mark_as_advanced(VIDEO_OPENGL)
  714. mark_as_advanced(VIDEO_OPENGLES)
  715. mark_as_advanced(VIDEO_RPI)
  716. mark_as_advanced(VIDEO_VIVANTE)
  717. mark_as_advanced(VIDEO_X11)
  718. endif()
  719. if(TORQUE_STATIC_CODE_ANALYSIS)
  720. addDef( "ON_FAIL_ASSERTFATAL=exit(1)" )
  721. endif()
  722. ###############################################################################
  723. # Include Paths
  724. ###############################################################################
  725. addInclude("${projectSrcDir}")
  726. addInclude("${srcDir}/")
  727. addInclude("${libDir}/lmpg")
  728. addInclude("${libDir}/lpng")
  729. addInclude("${libDir}/ljpeg")
  730. addInclude("${libDir}/lungif")
  731. addInclude("${libDir}/zlib")
  732. addInclude("${libDir}/") # for tinyxml
  733. addInclude("${libDir}/tinyxml")
  734. addInclude("${libDir}/squish")
  735. addInclude("${libDir}/convexDecomp")
  736. addInclude("${libDir}/libogg/include")
  737. addInclude("${libDir}/opcode")
  738. addInclude("${libDir}/collada/include")
  739. addInclude("${libDir}/collada/include/1.4")
  740. if(TORQUE_SDL)
  741. addInclude("${libDir}/nativeFileDialogs/include")
  742. endif()
  743. if(TORQUE_OPENGL)
  744. addInclude("${libDir}/glad/include")
  745. endif()
  746. if(UNIX AND NOT APPLE)
  747. addInclude("/usr/include/freetype2/freetype")
  748. addInclude("/usr/include/freetype2")
  749. endif()
  750. # external things
  751. if(WIN32)
  752. set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY INCLUDE_DIRECTORIES $ENV{DXSDK_DIR}/Include)
  753. endif()
  754. if(MSVC)
  755. # Match projectGenerator naming for executables
  756. set(OUTPUT_CONFIG DEBUG MINSIZEREL RELWITHDEBINFO)
  757. set(OUTPUT_SUFFIX DEBUG MINSIZE OPTIMIZEDDEBUG)
  758. foreach(INDEX RANGE 2)
  759. list(GET OUTPUT_CONFIG ${INDEX} CONF)
  760. list(GET OUTPUT_SUFFIX ${INDEX} SUFFIX)
  761. set_property(TARGET ${PROJECT_NAME} PROPERTY OUTPUT_NAME_${CONF} ${PROJECT_NAME}_${SUFFIX})
  762. endforeach()
  763. endif()
  764. ###############################################################################
  765. # Project-specific configuration:
  766. ###############################################################################
  767. include(${TORQUE_APP_DIR}/${PROJECT_NAME}.cmake OPTIONAL)
  768. ###############################################################################
  769. # Installation
  770. ###############################################################################
  771. if(TORQUE_TEMPLATE)
  772. message("Prepare Template(${TORQUE_TEMPLATE}) install...")
  773. file(GLOB_RECURSE INSTALL_FILES_AND_DIRS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/*")
  774. IF( NOT TORQUE_EXPERIMENTAL_EC)
  775. list(REMOVE_ITEM INSTALL_FILES_AND_DIRS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/art/art.module.taml")
  776. list(REMOVE_ITEM INSTALL_FILES_AND_DIRS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/art/shapes/actors/Soldier/soldier.asset.taml")
  777. list(REMOVE_ITEM INSTALL_FILES_AND_DIRS "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/scripts/scripts.module.taml")
  778. foreach(ITEM ${INSTALL_FILES_AND_DIRS})
  779. get_filename_component( dir ${ITEM} DIRECTORY )
  780. get_filename_component( fileName ${ITEM} NAME )
  781. if( ${dir} STREQUAL ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/scripts/server/components
  782. OR ${dir} STREQUAL ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/scripts/server/components/game
  783. OR ${dir} STREQUAL ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/scripts/server/components/input
  784. OR ${dir} STREQUAL ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/scripts/server/gameObjects
  785. OR ${dir} STREQUAL ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/tools/componentEditor
  786. OR ${dir} STREQUAL ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/tools/componentEditor/gui
  787. OR ${dir} STREQUAL ${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/game/tools/componentEditor/scripts )
  788. list(REMOVE_ITEM INSTALL_FILES_AND_DIRS ${dir}/${fileName})
  789. ENDIF()
  790. endforeach()
  791. ENDIF()
  792. foreach(ITEM ${INSTALL_FILES_AND_DIRS})
  793. get_filename_component( dir ${ITEM} DIRECTORY )
  794. STRING(REGEX REPLACE "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/" "${TORQUE_APP_DIR}/" INSTALL_DIR ${dir})
  795. install( FILES ${ITEM} DESTINATION ${INSTALL_DIR} )
  796. endforeach()
  797. if(WIN32)
  798. INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/cleanShaders.bat" DESTINATION "${TORQUE_APP_DIR}")
  799. INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteCachedDTSs.bat" DESTINATION "${TORQUE_APP_DIR}")
  800. INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeleteDSOs.bat" DESTINATION "${TORQUE_APP_DIR}")
  801. INSTALL(FILES "${CMAKE_SOURCE_DIR}/Templates/${TORQUE_TEMPLATE}/DeletePrefs.bat" DESTINATION "${TORQUE_APP_DIR}")
  802. endif()
  803. endif()