CMakeLists.txt 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683
  1. #===================================
  2. # Build script for libRocket =======
  3. #===================================
  4. if(APPLE)
  5. if(IOS_PLATFORM)
  6. set(CMAKE_TOOLCHAIN_FILE cmake/Platform/iOS.cmake)
  7. endif(IOS_PLATFORM)
  8. endif(APPLE)
  9. # We use the new OSX_ARCHITECTURES property
  10. # and GNUInstallDirs module
  11. cmake_minimum_required(VERSION 2.8.5)
  12. if(COMMAND cmake_policy)
  13. cmake_policy(SET CMP0015 NEW)
  14. endif(COMMAND cmake_policy)
  15. project(libRocket C CXX)
  16. # paths
  17. include(GNUInstallDirs)
  18. set(LIBROCKET_VERSION_MAJOR 1)
  19. set(LIBROCKET_VERSION_MINOR 3)
  20. set(LIBROCKET_VERSION_PATCH 0)
  21. set(LIBROCKET_VERSION_TWEAK 0)
  22. set(PROJECT_VERSION ${LIBROCKET_VERSION_MAJOR}.${LIBROCKET_VERSION_MINOR}.${LIBROCKET_VERSION_PATCH}.${LIBROCKET_VERSION_TWEAK})
  23. # Search in the 'cmake' directory for additional CMake modules.
  24. list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
  25. # Old versions of CMake need some updated Modules, but we don't want
  26. # to override newer versions of CMake which have working versions
  27. if(CMAKE_MAJOR_VERSION LESS 3)
  28. list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/v2fixes)
  29. endif()
  30. #===================================
  31. # Environment tests ================
  32. #===================================
  33. include(TestForANSIForScope)
  34. include(TestForANSIStreamHeaders)
  35. include(TestForSTDNamespace)
  36. #===================================
  37. # Provide hints as to where depends=
  38. # might be found =
  39. #===================================
  40. if(NOT DEFINED ENV{FREETYPE_DIR})
  41. set(ENV{FREETYPE_DIR} "${PROJECT_SOURCE_DIR}/../Dependencies")
  42. endif()
  43. if(NOT DEFINED ENV{Boost_DIR})
  44. set(ENV{Boost_DIR} "${PROJECT_SOURCE_DIR}/../Dependencies")
  45. endif()
  46. if(NOT DEFINED ENV{LUA_DIR})
  47. set(ENV{LUA_DIR} "${PROJECT_SOURCE_DIR}/../Dependencies")
  48. endif()
  49. if(NOT DEFINED ENV{SDLDIR})
  50. set(ENV{SDLDIR} "${PROJECT_SOURCE_DIR}/../Dependencies")
  51. endif()
  52. if(NOT DEFINED ENV{SDLIMAGEDIR})
  53. set(ENV{SDLIMAGEDIR} "${PROJECT_SOURCE_DIR}/../Dependencies")
  54. endif()
  55. if(NOT DEFINED ENV{SFML_ROOT})
  56. set(ENV{SFML_ROOT} "${PROJECT_SOURCE_DIR}/../Dependencies")
  57. endif()
  58. #===================================
  59. # Plaform specific global hacks ====
  60. #===================================
  61. if(APPLE)
  62. # Disables naked builtins from AssertMacros.h which
  63. # This prevents naming collisions such as those from the check()
  64. # function macro with LuaType::check
  65. add_definitions(-D__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=0)
  66. endif(APPLE)
  67. #===================================
  68. # Build options ====================
  69. #===================================
  70. if(NOT CMAKE_BUILD_TYPE)
  71. set(CMAKE_BUILD_TYPE Release CACHE STRING
  72. "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
  73. FORCE)
  74. endif()
  75. if(NOT IOS)
  76. option(BUILD_SHARED_LIBS "Build shared libraries" ON)
  77. endif(NOT IOS)
  78. option(BUILD_PYTHON_BINDINGS "Build python bindings" OFF)
  79. option(BUILD_LUA_BINDINGS "Build Lua bindings" OFF)
  80. option(BUILD_SAMPLES "Build samples" OFF)
  81. if(WIN32)
  82. option(SKIP_DIRECTX_SAMPLES "Skip build of all DirectX related samples. Only applies if BUILD_SAMPLES is ON" OFF)
  83. option(SKIP_DIRECTX9_SAMPLE "Skip build of DirectX 9 related sample. Only applies if BUILD_SAMPLES is ON and SKIP_DIRECTX_SAMPLES is OFF" OFF)
  84. option(SKIP_DIRECTX10_SAMPLE "Skip build of DirectX 10 related sample. Only applies if BUILD_SAMPLES is ON and SKIP_DIRECTX_SAMPLES is OFF" OFF)
  85. endif()
  86. if(IOS)
  87. if(BUILD_SHARED_LIBS)
  88. message(FATAL_ERROR "BUILD_SHARED_LIBS must be OFF for iOS builds. iOS does not support shared libraries.")
  89. endif(BUILD_SHARED_LIBS)
  90. endif(IOS)
  91. if(IOS)
  92. if(BUILD_SHARED_LIBS)
  93. message(FATAL_ERROR "BUILD_SHARED_LIBS must be OFF for iOS builds. iOS does not support shared libraries.")
  94. endif(BUILD_SHARED_LIBS)
  95. endif(IOS)
  96. if(NOT BUILD_SHARED_LIBS)
  97. add_definitions(-DSTATIC_LIB)
  98. endif()
  99. #on windows, check for VC10 and fix the multiple compile target issue.
  100. IF(WIN32)
  101. if(MSVC)
  102. if(${MSVC_VERSION} STREQUAL 1600 OR ${MSVC_VERSION} STRGREATER 1600)
  103. message("Visual Studio 2010 (${MSVC_VERSION}) build fix at play (/FORCE:MULTIPLE)")
  104. set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /FORCE:MULTIPLE")
  105. endif()
  106. endif()
  107. ENDIF(WIN32)
  108. #===================================
  109. # Find dependencies ================
  110. #===================================
  111. # FreeType
  112. if(CMAKE_MAJOR_VERSION LESS 3)
  113. # Freetype changed the layout of its header files, we need to use
  114. # the FindFreetype module from cmake v3 at least, included here
  115. find_package(Freetype-v2fix REQUIRED)
  116. else()
  117. find_package(Freetype REQUIRED)
  118. endif()
  119. if(FREETYPE_FOUND)
  120. include_directories(${FREETYPE_INCLUDE_DIRS})
  121. link_directories(${FREETYPE_LINK_DIRS})
  122. list(APPEND CORE_LINK_LIBS ${FREETYPE_LIBRARY})
  123. endif()
  124. mark_as_advanced(FREETYPE_INCLUDE_DIRS FREETYPE_LIBRARY FREETYPE_LINK_DIRECTORIES)
  125. # Boost and Python
  126. if(BUILD_PYTHON_BINDINGS)
  127. find_package(PythonInterp 2 REQUIRED)
  128. find_package(PythonLibs 2 REQUIRED)
  129. execute_process(
  130. COMMAND ${PYTHON_EXECUTABLE} -c "from distutils import sysconfig; print(sysconfig.get_python_lib(1,0,prefix=''))"
  131. OUTPUT_VARIABLE PYTHON_INSTDIR
  132. OUTPUT_STRIP_TRAILING_WHITESPACE
  133. )
  134. if(PYTHONLIBS_FOUND)
  135. include_directories(${PYTHON_INCLUDE_DIR})
  136. endif()
  137. #set(Boost_USE_STATIC_LIBS OFF)
  138. #set(Boost_USE_MULTITHREADED ON)
  139. find_package(Boost 1.40.0 COMPONENTS python REQUIRED)
  140. if(Boost_FOUND)
  141. include_directories(${Boost_INCLUDE_DIR})
  142. list(APPEND PY_BINDINGS_LINK_LIBS ${PYTHON_LIBRARY} ${Boost_LIBRARIES})
  143. endif()
  144. endif()
  145. #Lua
  146. if(BUILD_LUA_BINDINGS)
  147. if(CMAKE_MAJOR_VERSION LESS 3)
  148. find_package(Lua-v2fix)
  149. else()
  150. find_package(Lua)
  151. endif()
  152. if(LUA_FOUND)
  153. include_directories(${LUA_INCLUDE_DIR})
  154. list(APPEND LUA_BINDINGS_LINK_LIBS ${LUA_LIBRARIES})
  155. endif()
  156. endif()
  157. #===================================
  158. # Setup paths ======================
  159. #===================================
  160. set(PROJECT_SOURCE_DIR ${PROJECT_SOURCE_DIR}/..)
  161. include_directories(
  162. ${PROJECT_SOURCE_DIR}/Include
  163. )
  164. # Include list of source files
  165. include(FileList)
  166. #===================================
  167. # Build libraries ==================
  168. #===================================
  169. set(LIBRARIES Core Controls Debugger)
  170. foreach(library ${LIBRARIES})
  171. set(NAME Rocket${library})
  172. add_library(${NAME} ${${library}_SRC_FILES}
  173. ${${library}_HDR_FILES}
  174. ${${library}_PUB_HDR_FILES}
  175. ${MASTER_${library}_PUB_HDR_FILES}
  176. )
  177. set_target_properties(${NAME} PROPERTIES
  178. VERSION ${PROJECT_VERSION}
  179. SOVERSION ${LIBROCKET_VERSION_MAJOR}
  180. )
  181. if(APPLE)
  182. if(NOT IOS)
  183. set_target_properties(${NAME} PROPERTIES
  184. OSX_ARCHITECTURES "i386;x86_64;"
  185. )
  186. endif(NOT IOS)
  187. endif(APPLE)
  188. install(TARGETS ${NAME}
  189. LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
  190. ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
  191. RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
  192. )
  193. endforeach(library)
  194. # Build python bindings
  195. if(BUILD_PYTHON_BINDINGS)
  196. set(LIBRARIES core controls)
  197. foreach(library ${LIBRARIES})
  198. set(NAME _rocket${library})
  199. add_library(${NAME} MODULE ${Py${library}_SRC_FILES}
  200. ${Py${library}_HDR_FILES}
  201. ${Py${library}_PUB_HDR_FILES}
  202. )
  203. if(APPLE)
  204. if(NOT IOS)
  205. set_target_properties(${NAME} PROPERTIES
  206. OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_64_BIT)"
  207. )
  208. endif(NOT IOS)
  209. endif(APPLE)
  210. set_target_properties(${NAME} PROPERTIES PREFIX "")
  211. install(TARGETS ${NAME}
  212. LIBRARY DESTINATION ${PYTHON_INSTDIR}
  213. )
  214. endforeach(library)
  215. endif()
  216. # Build Lua bindings
  217. if(BUILD_LUA_BINDINGS)
  218. set(LIBRARIES Core Controls)
  219. foreach(library ${LIBRARIES})
  220. set(NAME Rocket${library}Lua)
  221. add_library(${NAME} ${Lua${library}_SRC_FILES}
  222. ${Lua${library}_HDR_FILES}
  223. ${Lua${library}_PUB_HDR_FILES}
  224. )
  225. set_target_properties(${NAME} PROPERTIES
  226. VERSION ${PROJECT_VERSION}
  227. SOVERSION ${LIBROCKET_VERSION_MAJOR}
  228. )
  229. if(APPLE)
  230. if(NOT IOS)
  231. set_target_properties(${NAME} PROPERTIES
  232. OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_64_BIT)"
  233. )
  234. endif(NOT IOS)
  235. endif(APPLE)
  236. install(TARGETS ${NAME}
  237. LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
  238. ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
  239. RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
  240. )
  241. endforeach(library)
  242. endif()
  243. #===================================
  244. # Link libraries ===================
  245. #===================================
  246. target_link_libraries(RocketCore ${CORE_LINK_LIBS})
  247. target_link_libraries(RocketControls RocketCore)
  248. target_link_libraries(RocketDebugger RocketCore)
  249. if(BUILD_PYTHON_BINDINGS)
  250. target_link_libraries(_rocketcore RocketCore ${PY_BINDINGS_LINK_LIBS})
  251. target_link_libraries(_rocketcontrols RocketControls ${PY_BINDINGS_LINK_LIBS})
  252. endif()
  253. if(BUILD_LUA_BINDINGS)
  254. target_link_libraries(RocketCoreLua RocketCore ${LUA_BINDINGS_LINK_LIBS})
  255. target_link_libraries(RocketControlsLua RocketControls RocketCoreLua ${LUA_BINDINGS_LINK_LIBS})
  256. endif()
  257. #===================================
  258. # Build samples ====================
  259. #===================================
  260. # Build and link the samples
  261. macro(bl_sample NAME)
  262. if (WIN32)
  263. add_executable(${NAME} WIN32 ${${NAME}_SRC_FILES} ${${NAME}_HDR_FILES} )
  264. elseif(APPLE)
  265. add_executable(${NAME} MACOSX_BUNDLE ${${NAME}_SRC_FILES} ${${NAME}_HDR_FILES} )
  266. else()
  267. add_executable(${NAME} ${${NAME}_SRC_FILES} ${${NAME}_HDR_FILES} )
  268. endif()
  269. if (APPLE)
  270. # We only support i386 for the samples as it still uses Carbon
  271. set_target_properties(${NAME} PROPERTIES OSX_ARCHITECTURES "i386;" )
  272. endif()
  273. target_link_libraries(${NAME} ${ARGN})
  274. endmacro()
  275. if(BUILD_SAMPLES)
  276. include(SampleFileList)
  277. set(samples treeview customlog drag loaddocument)
  278. set(tutorials template datagrid datagrid_tree tutorial_drag)
  279. set(sample_LIBRARIES
  280. shell
  281. RocketCore
  282. RocketControls
  283. RocketDebugger
  284. )
  285. # Find OpenGL
  286. find_package(OpenGL REQUIRED)
  287. if(OPENGL_FOUND)
  288. include_directories(${OPENGL_INCLUDE_DIR})
  289. list(APPEND sample_LIBRARIES ${OPENGL_LIBRARIES})
  290. endif()
  291. # Set up required system libraries
  292. if(WIN32)
  293. if(SKIP_DIRECTX_SAMPLES)
  294. message("-- Skipping all DirectX samples")
  295. set(SKIP_DIRECTX9_SAMPLE ON)
  296. set(SKIP_DIRECTX10_SAMPLE ON)
  297. else()
  298. message("-- Determing if DirectX samples can be built")
  299. include(FindDirectX)
  300. find_package(DirectX)
  301. if(DirectX_FOUND)
  302. set(DIRECTX_SAMPLE_LIST)
  303. set(DIRECTX_SKIPPED_SAMPLE_LIST)
  304. # We should be able to build DirectX 9 sample
  305. message("-- Determing if DirectX samples can be built - Yes")
  306. if(SKIP_DIRECTX9_SAMPLE)
  307. message("-- Skipping build of DirectX 9 sample: User disabled")
  308. list(APPEND DIRECTX_SKIPPED_SAMPLE_LIST "DirectX9 ")
  309. else()
  310. if(DirectX_LIBRARY)
  311. if(DirectX_D3DX9_LIBRARY)
  312. list(APPEND DIRECTX_SAMPLE_LIST "DirectX9 ")
  313. else()
  314. set(SKIP_DIRECTX9_SAMPLE ON)
  315. message("-- Skipping build of DirectX 9 sample: DirectX_D3DX9_LIBRARY not found")
  316. list(APPEND DIRECTX_SKIPPED_SAMPLE_LIST "DirectX9 ")
  317. endif()
  318. else()
  319. set(SKIP_DIRECTX9_SAMPLE ON)
  320. message("-- Skipping build of DirectX 9 sample: DirectX_LIBRARY not found")
  321. list(APPEND DIRECTX_SKIPPED_SAMPLE_LIST "DirectX9 ")
  322. endif()
  323. endif()
  324. if(SKIP_DIRECTX10_SAMPLE)
  325. message("-- Skipping build of DirectX 10 sample: User disabled")
  326. list(APPEND DIRECTX_SKIPPED_SAMPLE_LIST "DirectX10 ")
  327. else()
  328. if(DirectX_D3D10_FOUND)
  329. list(APPEND DIRECTX_SAMPLE_LIST "DirectX10 ")
  330. else()
  331. set(SKIP_DIRECTX10_SAMPLE ON)
  332. message("-- Skipping build of DirectX 10 sample: Missing DirectX_D3D10_INCLUDE_DIR, DirectX_D3D10_LIBRARY or DirectX_D3DX10_LIBRARY")
  333. list(APPEND DIRECTX_SKIPPED_SAMPLE_LIST "DirectX10 ")
  334. endif()
  335. endif()
  336. if(DIRECTX_SAMPLE_LIST)
  337. message("-- Enabled DirectX samples: " ${DIRECTX_SAMPLE_LIST})
  338. endif()
  339. if(DIRECTX_SKIPPED_SAMPLE_LIST)
  340. message("-- Disabled DirectX samples: " ${DIRECTX_SKIPPED_SAMPLE_LIST})
  341. endif()
  342. else()
  343. message("-- Determing if DirectX samples can be built - No")
  344. set(SKIP_DIRECTX9_SAMPLE ON)
  345. set(SKIP_DIRECTX10_SAMPLE ON)
  346. endif()
  347. endif()
  348. elseif(APPLE)
  349. include(FindCarbon)
  350. find_package(Carbon REQUIRED)
  351. if (Carbon_FOUND)
  352. include_directories(${Carbon_INCLUDE_DIR})
  353. list(APPEND sample_LIBRARIES ${Carbon_LIBRARIES})
  354. endif()
  355. else()
  356. find_package(X11 REQUIRED)
  357. if (X11_FOUND)
  358. list(APPEND sample_LIBRARIES ${X11_LIBRARIES})
  359. # shell/src/x11/InputX11.cpp:InitialiseX11Keymap uses Xkb if
  360. # possible instead of XGetKeyboardMapping for performance
  361. if(X11_Xkb_FOUND)
  362. FIND_PACKAGE_MESSAGE(X11 "Found X11 KBlib: ${X11_X11_LIB}" "[${X11_X11_LIB}][${X11_XkbINCLUDE_DIR}]")
  363. add_definitions(-DHAS_X11XKBLIB)
  364. endif()
  365. endif()
  366. endif()
  367. set(SAMPLES_DIR opt/Rocket/Samples CACHE PATH "path to samples dir")
  368. # The samples and tutorials use the shell library
  369. include_directories(${PROJECT_SOURCE_DIR}/Samples/shell/include)
  370. # Build and install sample shell library
  371. add_library(shell STATIC ${shell_SRC_FILES} ${shell_HDR_FILES})
  372. if (APPLE)
  373. # We only support i386 for the samples as it still uses Carbon
  374. set_target_properties(shell PROPERTIES OSX_ARCHITECTURES "i386;")
  375. endif()
  376. # Build and install the basic samples
  377. foreach(sample ${samples})
  378. bl_sample(${sample} ${sample_LIBRARIES})
  379. # The samples always set this as their current working directory
  380. install(DIRECTORY DESTINATION ${SAMPLES_DIR}/basic/${sample})
  381. install(TARGETS ${sample}
  382. RUNTIME DESTINATION ${SAMPLES_DIR}/${sample}
  383. BUNDLE DESTINATION ${SAMPLES_DIR})
  384. endforeach()
  385. if(WIN32)
  386. if(NOT SKIP_DIRECTX9_SAMPLE)
  387. include_directories(${DirectX_INCLUDE_DIR})
  388. bl_sample(directx ${sample_LIBRARIES} ${DirectX_LIBRARY} ${DirectX_D3DX9_LIBRARY})
  389. # The samples always set this as their current working directory
  390. install(DIRECTORY DESTINATION ${SAMPLES_DIR}/basic/directx)
  391. install(TARGETS directx
  392. RUNTIME DESTINATION ${SAMPLES_DIR}/directx
  393. BUNDLE DESTINATION ${SAMPLES_DIR})
  394. endif()
  395. if(NOT SKIP_DIRECTX10_SAMPLE)
  396. include_directories(${DirectX_INCLUDE_DIR} ${DirectX_D3D10_INCLUDE_DIRS})
  397. bl_sample(directx10 ${sample_LIBRARIES} ${DirectX_D3D10_LIBRARIES})
  398. # The samples always set this as their current working directory
  399. install(DIRECTORY DESTINATION ${SAMPLES_DIR}/basic/directx10)
  400. install(TARGETS directx10
  401. RUNTIME DESTINATION ${SAMPLES_DIR}/directx10
  402. BUNDLE DESTINATION ${SAMPLES_DIR})
  403. endif()
  404. endif()
  405. message("-- Can SDL2 sample be built")
  406. find_package(SDL)
  407. if(SDL_FOUND)
  408. find_package(SDL_image)
  409. if(SDL_IMAGE_FOUND)
  410. find_package(GLEW)
  411. if(GLEW_FOUND)
  412. message("-- Can SDL2 sample be built - yes")
  413. include_directories(${SDL_INCLUDE_DIR} ${GLEW_INCLUDE_DIR})
  414. bl_sample(sdl2 ${sample_LIBRARIES} ${SDL_LIBRARY} ${SDL_IMAGE_LIBRARY} ${GLEW_LIBRARY})
  415. # The samples always set this as their current working directory
  416. install(DIRECTORY DESTINATION ${SAMPLES_DIR}/basic/sdl2)
  417. install(TARGETS sdl2
  418. RUNTIME DESTINATION ${SAMPLES_DIR}/sdl2
  419. BUNDLE DESTINATION ${SAMPLES_DIR})
  420. else()
  421. message("-- Can SDL2 sample be built - GLEW not found")
  422. endif()
  423. else()
  424. message("-- Can SDL2 sample be built - SDL2_image not found")
  425. endif()
  426. else()
  427. message("-- Can SDL2 sample be built - SDL2 not found")
  428. endif()
  429. message("-- Can SFML 1.x sample be built")
  430. find_package(SFML 1 COMPONENTS graphics window system)
  431. if(NOT SFML_FOUND)
  432. message("-- Can SFML 1.x sample be built - no")
  433. elseif(SFML_VERSION_MAJOR GREATER 1)
  434. message("-- Can SFML 1.x sample be built - no: Version 2 detected")
  435. else()
  436. message("-- Can SFML 1.x sample be built - yes")
  437. include_directories(${SFML_INCLUDE_DIR})
  438. bl_sample(sfml ${sample_LIBRARIES} ${SFML_LIBRARIES})
  439. # The samples always set this as their current working directory
  440. install(DIRECTORY DESTINATION ${SAMPLES_DIR}/basic/sfml)
  441. install(TARGETS sfml
  442. RUNTIME DESTINATION ${SAMPLES_DIR}/sfml
  443. BUNDLE DESTINATION ${SAMPLES_DIR})
  444. endif()
  445. message("-- Can SFML 2.x sample be built")
  446. find_package(SFML 2 COMPONENTS graphics window system)
  447. if(NOT SFML_FOUND)
  448. message("-- Can SFML 2.x sample be built - no")
  449. else()
  450. find_package(GLEW)
  451. if(GLEW_FOUND)
  452. message("-- Can SFML 2.x sample be built - yes: with GLEW")
  453. include_directories(${SFML_INCLUDE_DIR} ${GLEW_INCLUDE_DIR})
  454. add_definitions( -DENABLE_GLEW )
  455. bl_sample(sfml2 ${sample_LIBRARIES} ${SFML_LIBRARIES} ${GLEW_LIBRARY})
  456. else()
  457. message("-- Can SFML 2.x sample be built - yes: without GLEW")
  458. include_directories(${SFML_INCLUDE_DIR})
  459. bl_sample(sfml2 ${sample_LIBRARIES} ${SFML_LIBRARIES})
  460. endif()
  461. # The samples always set this as their current working directory
  462. install(DIRECTORY DESTINATION ${SAMPLES_DIR}/basic/sfml2)
  463. install(TARGETS sfml2
  464. RUNTIME DESTINATION ${SAMPLES_DIR}/sfml2
  465. BUNDLE DESTINATION ${SAMPLES_DIR})
  466. endif()
  467. # Build and install the tutorials
  468. foreach(tutorial ${tutorials})
  469. bl_sample(${tutorial} ${sample_LIBRARIES})
  470. # The tutorials always set this as their current working directory
  471. install(DIRECTORY DESTINATION ${SAMPLES_DIR}/tutorial/${tutorial})
  472. install(TARGETS ${tutorial}
  473. RUNTIME DESTINATION ${SAMPLES_DIR}/${tutorial}
  474. BUNDLE DESTINATION ${SAMPLES_DIR})
  475. endforeach()
  476. # Build and install invaders sample
  477. bl_sample(invaders ${sample_LIBRARIES})
  478. install(DIRECTORY DESTINATION ${SAMPLES_DIR}/invaders)
  479. install(TARGETS invaders
  480. RUNTIME DESTINATION ${SAMPLES_DIR}/invaders
  481. BUNDLE DESTINATION ${SAMPLES_DIR})
  482. if(BUILD_PYTHON_BINDINGS)
  483. # Build and install pyinvaders sample
  484. bl_sample(pyinvaders ${sample_LIBRARIES} ${PYTHON_LIBRARIES} ${PY_BINDINGS_LINK_LIBS})
  485. install(DIRECTORY DESTINATION ${SAMPLES_DIR}/pyinvaders)
  486. install(TARGETS pyinvaders
  487. RUNTIME DESTINATION ${SAMPLES_DIR}/pyinvaders
  488. BUNDLE DESTINATION ${SAMPLES_DIR})
  489. endif()
  490. if(BUILD_LUA_BINDINGS)
  491. bl_sample(luainvaders RocketCoreLua RocketControlsLua ${sample_LIBRARIES} ${LUA_BINDINGS_LINK_LIBS})
  492. install(DIRECTORY DESTINATION ${SAMPLES_DIR}/luainvaders)
  493. install(TARGETS luainvaders
  494. RUNTIME DESTINATION ${SAMPLES_DIR}/luainvaders
  495. BUNDLE DESTINATION ${SAMPLES_DIR})
  496. endif()
  497. endif()
  498. #===================================
  499. # Installation =====================
  500. #===================================
  501. if(BUILD_LUA_BINDINGS AND BUILD_PYTHON_BINDINGS)
  502. install(DIRECTORY ${PROJECT_SOURCE_DIR}/Include/Rocket
  503. DESTINATION include
  504. )
  505. else()
  506. if(NOT BUILD_LUA_BINDINGS AND NOT BUILD_PYTHON_BINDINGS)
  507. install(DIRECTORY ${PROJECT_SOURCE_DIR}/Include/Rocket
  508. DESTINATION include
  509. PATTERN "Python" EXCLUDE
  510. PATTERN "Lua" EXCLUDE
  511. )
  512. else()
  513. if(BUILD_PYTHON_BINDINGS)
  514. install(FILES ${PROJECT_SOURCE_DIR}/bin/rocket.py
  515. DESTINATION ${PYTHON_INSTDIR}
  516. )
  517. install(DIRECTORY ${PROJECT_SOURCE_DIR}/Include/Rocket
  518. DESTINATION include
  519. PATTERN "Lua" EXCLUDE
  520. )
  521. else()
  522. if(BUILD_LUA_BINDINGS)
  523. install(DIRECTORY ${PROJECT_SOURCE_DIR}/Include/Rocket
  524. DESTINATION include
  525. PATTERN "Python" EXCLUDE
  526. )
  527. else()
  528. message(FATAL_ERROR "ASSERT: Unexpected option combination, this is a logical impossibility.")
  529. endif()
  530. endif()
  531. endif()
  532. endif()
  533. if(BUILD_SAMPLES)
  534. install(DIRECTORY ${PROJECT_SOURCE_DIR}/Samples/assets
  535. DESTINATION ${SAMPLES_DIR}
  536. )
  537. install(DIRECTORY ${PROJECT_SOURCE_DIR}/Samples/tutorial/template/data
  538. DESTINATION ${SAMPLES_DIR}/tutorial/template
  539. )
  540. install(DIRECTORY ${PROJECT_SOURCE_DIR}/Samples/tutorial/datagrid/data
  541. DESTINATION ${SAMPLES_DIR}/tutorial/datagrid
  542. )
  543. install(DIRECTORY ${PROJECT_SOURCE_DIR}/Samples/tutorial/datagrid_tree/data
  544. DESTINATION ${SAMPLES_DIR}/tutorial/datagrid_tree
  545. )
  546. install(DIRECTORY ${PROJECT_SOURCE_DIR}/Samples/tutorial/tutorial_drag/data
  547. DESTINATION ${SAMPLES_DIR}/tutorial/tutorial_drag
  548. )
  549. install(DIRECTORY ${PROJECT_SOURCE_DIR}/Samples/basic/treeview/data
  550. DESTINATION ${SAMPLES_DIR}/basic/treeview
  551. )
  552. install(DIRECTORY ${PROJECT_SOURCE_DIR}/Samples/basic/drag/data
  553. DESTINATION ${SAMPLES_DIR}/basic/drag
  554. )
  555. install(DIRECTORY ${PROJECT_SOURCE_DIR}/Samples/invaders/data
  556. DESTINATION ${SAMPLES_DIR}/invaders
  557. )
  558. if(BUILD_PYTHON_BINDINGS)
  559. install(DIRECTORY ${PROJECT_SOURCE_DIR}/Samples/pyinvaders/data
  560. DESTINATION ${SAMPLES_DIR}/pyinvaders
  561. )
  562. endif()
  563. if(BUILD_LUA_BINDINGS)
  564. install(DIRECTORY ${PROJECT_SOURCE_DIR}/Samples/luainvaders/data
  565. DESTINATION ${SAMPLES_DIR}/luainvaders
  566. )
  567. install(DIRECTORY ${PROJECT_SOURCE_DIR}/Samples/luainvaders/lua
  568. DESTINATION ${SAMPLES_DIR}/luainvaders
  569. )
  570. endif()
  571. endif()