CMakeLists.txt 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563
  1. cmake_minimum_required(VERSION 2.8)
  2. # detect architecture
  3. if (CROWN_ARCH MATCHES "x86")
  4. set (CROWN_THIRD ${CMAKE_SOURCE_DIR}/engine/third/x86)
  5. endif (CROWN_ARCH MATCHES "x86")
  6. if (CROWN_ARCH MATCHES "x86_64")
  7. set (CROWN_THIRD ${CMAKE_SOURCE_DIR}/engine/third/x86_64)
  8. endif (CROWN_ARCH MATCHES "x86_64")
  9. if (CROWN_ARCH MATCHES "win32")
  10. set (CROWN_THIRD ${CMAKE_SOURCE_DIR}/engine/third/win32)
  11. endif (CROWN_ARCH MATCHES "win32")
  12. if (CROWN_ARCH MATCHES "win64")
  13. set (CROWN_THIRD ${CMAKE_SOURCE_DIR}/engine/third/win64)
  14. endif (CROWN_ARCH MATCHES "win64")
  15. if (CROWN_ARCH MATCHES "ARMv7")
  16. set (CROWN_THIRD ${CMAKE_SOURCE_DIR}/engine/third/ARMv7)
  17. endif (CROWN_ARCH MATCHES "ARMv7")
  18. # architecture dependent includes
  19. set (CROWN_THIRD_INCLUDES
  20. ${CROWN_THIRD}/luajit/include/luajit-2.0
  21. ${CROWN_THIRD}/glew-1.9.0/include
  22. ${CROWN_THIRD}/zlib/include
  23. )
  24. # architecture dependent libraries
  25. set (CROWN_THIRD_LIBS
  26. ${CROWN_THIRD}/luajit/lib
  27. ${CROWN_THIRD}/glew-1.9.0/lib
  28. ${CROWN_THIRD}/zlib/lib
  29. )
  30. add_subdirectory(${CROWN_THIRD})
  31. # platform independent includes
  32. set (CROWN_INCLUDES
  33. ${CMAKE_SOURCE_DIR}/engine
  34. ${CMAKE_SOURCE_DIR}/engine/core
  35. ${CMAKE_SOURCE_DIR}/engine/core/bv
  36. ${CMAKE_SOURCE_DIR}/engine/core/containers
  37. ${CMAKE_SOURCE_DIR}/engine/core/math
  38. ${CMAKE_SOURCE_DIR}/engine/core/mem
  39. ${CMAKE_SOURCE_DIR}/engine/core/compressors
  40. ${CMAKE_SOURCE_DIR}/engine/core/filesystem
  41. ${CMAKE_SOURCE_DIR}/engine/core/json
  42. ${CMAKE_SOURCE_DIR}/engine/core/strings
  43. ${CMAKE_SOURCE_DIR}/engine/core/settings
  44. ${CMAKE_SOURCE_DIR}/engine/os
  45. ${CMAKE_SOURCE_DIR}/engine/input
  46. ${CMAKE_SOURCE_DIR}/engine/renderers
  47. ${CMAKE_SOURCE_DIR}/engine/resource
  48. ${CMAKE_SOURCE_DIR}/engine/network
  49. ${CMAKE_SOURCE_DIR}/engine/lua
  50. ${CMAKE_SOURCE_DIR}/engine/compilers
  51. ${CMAKE_SOURCE_DIR}/engine/compilers/tga
  52. )
  53. set (SRC
  54. Camera.cpp
  55. Device.cpp
  56. ConsoleServer.cpp
  57. FPSSystem.cpp
  58. )
  59. set (HEADERS
  60. Camera.h
  61. Config.h
  62. Crown.h
  63. Device.h
  64. ConsoleServer.h
  65. FPSSystem.h
  66. )
  67. set (CORE_SRC
  68. core/Log.cpp
  69. core/Args.cpp
  70. )
  71. set (CORE_HEADERS
  72. core/Assert.h
  73. core/Types.h
  74. core/Args.h
  75. core/Log.h
  76. )
  77. set (BV_SRC
  78. core/bv/Circle.cpp
  79. core/bv/Frustum.cpp
  80. core/bv/Rect.cpp
  81. )
  82. set (BV_HEADERS
  83. core/bv/Box.h
  84. core/bv/Circle.h
  85. core/bv/Frustum.h
  86. core/bv/Rect.h
  87. core/bv/Sphere.h
  88. )
  89. set (CONTAINERS_SRC
  90. core/containers/Generic.cpp
  91. )
  92. set (CONTAINERS_HEADERS
  93. core/containers/Queue.h
  94. core/containers/PriorityQueue.h
  95. core/containers/Map.h
  96. core/containers/Generic.h
  97. core/containers/List.h
  98. core/containers/RBTree.h
  99. core/containers/IdTable.h
  100. )
  101. set (MATH_SRC
  102. core/math/Color4.cpp
  103. core/math/Mat3.cpp
  104. core/math/Mat4.cpp
  105. core/math/Plane.cpp
  106. core/math/Point2.cpp
  107. core/math/Quat.cpp
  108. core/math/Vec2.cpp
  109. core/math/Vec3.cpp
  110. core/math/Vec4.cpp
  111. )
  112. set (MATH_HEADERS
  113. core/math/Color4.h
  114. core/math/Interpolation.h
  115. core/math/Intersection.h
  116. core/math/Mat3.h
  117. core/math/Mat4.h
  118. core/math/MathUtils.h
  119. core/math/Plane.h
  120. core/math/Point2.h
  121. core/math/Quat.h
  122. core/math/Random.h
  123. core/math/Ray.h
  124. core/math/Triangle.h
  125. core/math/Vec2.h
  126. core/math/Vec3.h
  127. core/math/Vec4.h
  128. )
  129. set (FILESYSTEM_SRC
  130. core/filesystem/DiskFile.cpp
  131. core/filesystem/File.cpp
  132. core/filesystem/BinaryReader.cpp
  133. core/filesystem/BinaryWriter.cpp
  134. core/filesystem/TextReader.cpp
  135. core/filesystem/TextWriter.cpp
  136. core/filesystem/DiskMountPoint.cpp
  137. core/filesystem/Filesystem.cpp
  138. )
  139. set (FILESYSTEM_HEADERS
  140. core/filesystem/DiskFile.h
  141. core/filesystem/NullFile.h
  142. core/filesystem/File.h
  143. core/filesystem/BinaryReader.h
  144. core/filesystem/BinaryWriter.h
  145. core/filesystem/TextReader.h
  146. core/filesystem/TextWriter.h
  147. core/filesystem/DiskMountPoint.h
  148. core/filesystem/Filesystem.h
  149. )
  150. set (JSON_SRC
  151. core/json/JSONParser.cpp
  152. )
  153. set (JSON_HEADERS
  154. core/json/JSONParser.h
  155. )
  156. set (STRINGS_SRC
  157. )
  158. set (STRINGS_HEADERS
  159. core/strings/Path.h
  160. core/strings/StringUtils.h
  161. core/strings/StringStream.h
  162. core/strings/Hash.h
  163. )
  164. set (MEM_SRC
  165. core/mem/Memory.cpp
  166. core/mem/Allocator.cpp
  167. core/mem/HeapAllocator.cpp
  168. core/mem/LinearAllocator.cpp
  169. core/mem/StackAllocator.cpp
  170. core/mem/ProxyAllocator.cpp
  171. )
  172. set (MEM_HEADERS
  173. core/mem/Memory.h
  174. core/mem/Allocator.h
  175. core/mem/HeapAllocator.h
  176. core/mem/TempAllocator.h
  177. core/mem/LinearAllocator.h
  178. core/mem/StackAllocator.h
  179. core/mem/ProxyAllocator.h
  180. )
  181. set (COMPRESSORS_SRC
  182. core/compressors/ZipCompressor.cpp
  183. )
  184. set (COMPRESSORS_HEADERS
  185. core/compressors/Compressor.h
  186. core/compressors/ZipCompressor.h
  187. )
  188. set (SETTINGS_SRC
  189. core/settings/IntSetting.cpp
  190. core/settings/FloatSetting.cpp
  191. core/settings/StringSetting.cpp
  192. )
  193. set (SETTINGS_HEADERS
  194. core/settings/IntSetting.h
  195. core/settings/FloatSetting.h
  196. core/settings/StringSetting.h
  197. )
  198. set (INPUT_SRC
  199. input/EventDispatcher.cpp
  200. input/InputManager.cpp
  201. input/Keyboard.cpp
  202. input/Mouse.cpp
  203. input/Touch.cpp
  204. input/Accelerometer.cpp
  205. )
  206. set (INPUT_HEADERS
  207. input/EventDispatcher.h
  208. input/InputManager.h
  209. input/Keyboard.h
  210. input/KeyCode.h
  211. input/Mouse.h
  212. input/Touch.h
  213. )
  214. set (NETWORK_SRC
  215. network/BitMessage.cpp
  216. )
  217. set (NETWORK_HEADERS
  218. network/BitMessage.h
  219. )
  220. set (RENDERERS_SRC
  221. renderers/DebugRenderer.cpp
  222. renderers/PixelFormat.cpp
  223. renderers/VertexFormat.cpp
  224. )
  225. set (RENDERERS_HEADERS
  226. renderers/Renderer.h
  227. renderers/IndexBuffer.h
  228. renderers/VertexBuffer.h
  229. renderers/Material.h
  230. renderers/Texture.h
  231. renderers/DebugRenderer.h
  232. renderers/PixelFormat.h
  233. renderers/VertexFormat.h
  234. )
  235. set (RESOURCE_SRC
  236. resource/MaterialResource.cpp
  237. resource/ResourceLoader.cpp
  238. resource/ResourceManager.cpp
  239. resource/ResourceRegistry.cpp
  240. resource/TextureResource.cpp
  241. resource/MeshResource.cpp
  242. resource/FontResource.cpp
  243. resource/SoundResource.cpp
  244. resource/ArchiveBundle.cpp
  245. resource/FileBundle.cpp
  246. )
  247. set (RESOURCE_HEADERS
  248. resource/MaterialResource.h
  249. resource/Resource.h
  250. resource/ResourceFormat.h
  251. resource/ResourceLoader.h
  252. resource/ResourceManager.h
  253. resource/ResourceRegistry.h
  254. resource/Bundle.h
  255. resource/TextureResource.h
  256. resource/MeshResource.h
  257. resource/FontResource.h
  258. resource/SoundResource.h
  259. resource/ArchiveBundle.h
  260. resource/FileBundle.h
  261. )
  262. set (OS_SRC
  263. os/OS.cpp
  264. )
  265. set (OS_HEADERS
  266. os/OS.h
  267. os/NetAddress.h
  268. )
  269. set (LUA_SRC
  270. lua/LuaStack.cpp
  271. lua/LuaEnvironment.cpp
  272. lua/LuaIntSetting.cpp
  273. lua/LuaFloatSetting.cpp
  274. lua/LuaStringSetting.cpp
  275. lua/LuaVec2.cpp
  276. lua/LuaVec3.cpp
  277. lua/LuaMat4.cpp
  278. lua/LuaQuat.cpp
  279. lua/LuaMath.cpp
  280. lua/LuaMouse.cpp
  281. lua/LuaKeyboard.cpp
  282. lua/LuaAccelerometer.cpp
  283. lua/LuaDevice.cpp
  284. lua/LuaWindow.cpp
  285. )
  286. set (LUA_HEADERS
  287. lua/LuaStack.h
  288. lua/LuaEnvironment.h
  289. )
  290. set (COMPILER_SRC
  291. compilers/Compiler.cpp
  292. compilers/tga/TGACompiler.cpp
  293. )
  294. set (COMPILER_HEADER
  295. compilers/Compiler.h
  296. compilers/tga/TGACompiler.h
  297. )
  298. set (CROWN_LIBRARIES)
  299. # Platform specific stuff
  300. if (LINUX)
  301. list (APPEND CROWN_INCLUDES
  302. ${CMAKE_SOURCE_DIR}/engine/os/linux
  303. ${CMAKE_SOURCE_DIR}/engine/renderers/gl/glx
  304. )
  305. list (APPEND OS_HEADERS
  306. os/linux/OsWindow.h
  307. os/linux/TCPSocket.h
  308. os/linux/UDPSocket.h
  309. os/linux/OsFile.h
  310. os/linux/Thread.h
  311. os/linux/Mutex.h
  312. os/linux/Cond.h
  313. )
  314. list (APPEND OS_SRC
  315. os/linux/LinuxOS.cpp
  316. os/linux/OsWindow.cpp
  317. os/posix/TCPSocket.cpp
  318. os/posix/UDPSocket.cpp
  319. os/posix/OsFile.cpp
  320. os/posix/Thread.cpp
  321. os/posix/Mutex.cpp
  322. os/posix/Cond.cpp
  323. )
  324. list (APPEND RENDERERS_SRC
  325. renderers/gl/GLRenderer.cpp
  326. renderers/gl/GLUtils.cpp
  327. renderers/gl/glx/GLContext.cpp
  328. )
  329. list (APPEND RENDERERS_HEADERS
  330. renderers/gl/GLRenderer.h
  331. renderers/gl/GLUtils.h
  332. renderers/gl/glx/GLContext.h
  333. )
  334. list (APPEND CROWN_LIBRARIES
  335. rt
  336. z
  337. X11
  338. Xrandr
  339. pthread
  340. dl
  341. GLEW
  342. GL
  343. luajit-5.1
  344. )
  345. set (COMPILER_FLAGS
  346. -pipe
  347. -std=c++03
  348. -ansi
  349. -pedantic-errors
  350. -Wall
  351. -Wextra
  352. -Werror
  353. -Wno-long-long
  354. -Wno-variadic-macros
  355. -g
  356. -pg
  357. -fPIC
  358. #-fvisibility=hidden
  359. )
  360. set (CROWN_EXECUTABLE_NAME crown-linux)
  361. set (CROWN_MAIN_SRC os/linux/main.cpp)
  362. endif (LINUX)
  363. if (WINDOWS)
  364. list (APPEND CROWN_INCLUDES
  365. ${CMAKE_SOURCE_DIR}/engine/os/win
  366. ${CMAKE_SOURCE_DIR}/engine/renderers/gl/wgl
  367. )
  368. list (APPEND OS_HEADERS
  369. os/win/OsWindow.h
  370. os/win/OsFile.h
  371. os/win/Thread.h
  372. os/win/Mutex.h
  373. os/win/Cond.h
  374. )
  375. list (APPEND OS_SRC
  376. os/win/WinOS.cpp
  377. os/win/OsWindow.cpp
  378. os/win/OsFile.cpp
  379. os/win/Thread.cpp
  380. os/win/Mutex.cpp
  381. os/win/Cond.cpp
  382. )
  383. list (APPEND RENDERERS_SRC
  384. renderers/gl/GLRenderer.cpp
  385. renderers/gl/GLUtils.cpp
  386. renderers/gl/wgl/GLContext.cpp
  387. )
  388. list (APPEND RENDERERS_HEADERS
  389. renderers/gl/GLRenderer.h
  390. renderers/gl/GLUtils.h
  391. renderers/gl/wgl/GLContext.h
  392. )
  393. list (APPEND CROWN_LIBRARIES
  394. zlib
  395. OpenGL32
  396. glew32
  397. lua51
  398. )
  399. set (COMPILER_FLAGS)
  400. set (CROWN_EXECUTABLE_NAME crown-win)
  401. set (CROWN_MAIN_SRC os/win/main.cpp)
  402. endif(WINDOWS)
  403. set (CROWN_SOURCES
  404. ${SRC}
  405. ${CORE_SRC}
  406. ${BV_SRC}
  407. ${CONTAINERS_SRC}
  408. ${MATH_SRC}
  409. ${FILESYSTEM_SRC}
  410. ${JSON_SRC}
  411. ${MEM_SRC}
  412. ${COMPRESSORS_SRC}
  413. ${SETTINGS_SRC}
  414. ${INPUT_SRC}
  415. ${RENDERERS_SRC}
  416. ${RESOURCE_SRC}
  417. # ${NETWORK_SRC}
  418. ${OS_SRC}
  419. ${LUA_SRC}
  420. ${COMPILER_SRC}
  421. )
  422. set (CROWN_HEADERS
  423. ${HEADERS}
  424. ${CORE_HEADERS}
  425. ${BV_HEADERS}
  426. ${CONTAINERS_HEADERS}
  427. ${MATH_HEADERS}
  428. ${FILESYSTEM_HEADERS}
  429. ${JSON_HEADERS}
  430. ${MEM_HEADERS}
  431. ${COMPRESSORS_HEADERS}
  432. ${SETTINGS_HEADERS}
  433. ${INPUT_HEADERS}
  434. ${RENDERERS_HEADERS}
  435. ${RESOURCE_HEADERS}
  436. ${RPC_HEADERS}
  437. # ${NETWORK_HEADERS}
  438. ${OS_HEADERS}
  439. ${LUA_HEADERS}
  440. ${COMPILER_HEADERS}
  441. )
  442. configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Config.h.in ${CMAKE_CURRENT_SOURCE_DIR}/Config.h)
  443. include_directories(${CROWN_INCLUDES} ${CROWN_THIRD_INCLUDES})
  444. link_directories(${CROWN_THIRD_LIBS})
  445. link_libraries(${CROWN_LIBRARIES})
  446. add_definitions(${COMPILER_FLAGS})
  447. add_library(crown SHARED ${CROWN_SOURCES} ${CROWN_HEADERS})
  448. set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:$ORIGIN")
  449. add_executable(${CROWN_EXECUTABLE_NAME} ${CROWN_MAIN_SRC})
  450. target_link_libraries(${CROWN_EXECUTABLE_NAME} crown)
  451. if (CROWN_BUILD_TESTS)
  452. add_subdirectory(tests)
  453. endif (CROWN_BUILD_TESTS)
  454. install (TARGETS crown DESTINATION bin)
  455. install (TARGETS ${CROWN_EXECUTABLE_NAME} DESTINATION bin)
  456. #install (FILES ${HEADERS} DESTINATION include/${CMAKE_PROJECT_NAME})
  457. #install (FILES ${CORE_HEADERS} DESTINATION include/${CMAKE_PROJECT_NAME}/core)
  458. #install (FILES ${BV_HEADERS} DESTINATION include/${CMAKE_PROJECT_NAME}/core/bv)
  459. #install (FILES ${CONTAINERS_HEADERS} DESTINATION include/${CMAKE_PROJECT_NAME}/core/containers)
  460. #install (FILES ${MATH_HEADERS} DESTINATION include/${CMAKE_PROJECT_NAME}/core/math)
  461. #install (FILES ${FILESYSTEM_HEADERS} DESTINATION include/${CMAKE_PROJECT_NAME}/core/filesystem)
  462. #install (FILES ${MEM_HEADERS} DESTINATION include/${CMAKE_PROJECT_NAME}/core/mem)
  463. #install (FILES ${COMPRESSORS_HEADERS} DESTINATION include/${CMAKE_PROJECT_NAME}/core/compressors)
  464. #install (FILES ${THREADS_HEADERS} DESTINATION include/${CMAKE_PROJECT_NAME}/core/threads)
  465. #install (FILES ${SETTINGS_HEADERS} DESTINATION include/${CMAKE_PROJECT_NAME}/core/settings)
  466. #
  467. #install (FILES ${INPUT_HEADERS} DESTINATION include/${CMAKE_PROJECT_NAME}/input)
  468. #install (FILES ${RENDERERS_HEADERS} DESTINATION include/${CMAKE_PROJECT_NAME}/renderers)
  469. #install (FILES ${NETWORK_HEADERS} DESTINATION include/${CMAKE_PROJECT_NAME}/network)
  470. #install (FILES ${OS_HEADERS} DESTINATION include/${CMAKE_PROJECT_NAME}/os)
  471. #install (FILES ${LUA_HEADERS} DESTINATION include/${CMAKE_PROJECT_NAME}/lua)