CMakeLists.txt 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8)
  2. PROJECT(Polycode)
  3. IF(NOT CMAKE_BUILD_TYPE)
  4. SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
  5. "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
  6. FORCE)
  7. MESSAGE("No CMAKE_BUILD_TYPE specified, defaulting to ${CMAKE_BUILD_TYPE}")
  8. ENDIF(NOT CMAKE_BUILD_TYPE)
  9. #IF(APPLE OR WIN32)
  10. # SET(build_player OFF)
  11. #ELSE()
  12. # SET(build_player OFF)
  13. #ENDIF()
  14. # Options for what components to build
  15. #OPTION(POLYCODE_BUILD_SHARED "Build Polycode shared libraries" OFF)
  16. #OPTION(POLYCODE_BUILD_STATIC "Build Polycode static libraries" ON)
  17. OPTION(POLYCODE_BUILD_BINDINGS "Build Polycode Lua bindings" OFF)
  18. OPTION(POLYCODE_BUILD_MODULES "Build Polycode modules" ON)
  19. OPTION(POLYCODE_BUILD_PLAYER "Build Polycode standalone player" OFF)
  20. OPTION(POLYCODE_BUILD_TOOLS "Build Polycode tools" ON)
  21. OPTION(POLYCODE_BUILD_DOCS "Build Polycode documentation" ON)
  22. OPTION(POLYCODE_INSTALL_FRAMEWORK "Install Polycode Core, Modules and Tools" ON)
  23. OPTION(POLYCODE_INSTALL_PLAYER "Install Polycode Player" ${POLYCODE_BUILD_PLAYER})
  24. OPTION(POLYCODE_INSTALL_TEMPLATE "Install Template project" ON)
  25. OPTION(POLYCODE_INSTALL_DOCS ${POLYCODE_BUILD_DOCS})
  26. # Some non-standard CMake modules
  27. SET(CMAKE_MODULE_PATH ${Polycode_SOURCE_DIR}/CMake)
  28. IF(NOT POLYCODE_RELEASE_DIR)
  29. SET(POLYCODE_RELEASE_DIR ${Polycode_SOURCE_DIR}/Release/${CMAKE_SYSTEM_NAME})
  30. MESSAGE("No POLYCODE_RELEASE_DIR specified, to ${POLYCODE_RELEASE_DIR}")
  31. ENDIF(NOT POLYCODE_RELEASE_DIR)
  32. SET(CMAKE_INSTALL_PREFIX ${POLYCODE_RELEASE_DIR}/Framework/)
  33. # set default externals install location
  34. SET(CMAKE_PREFIX_PATH
  35. ${POLYCODE_RELEASE_DIR}/Framework/Core/Dependencies
  36. ${POLYCODE_RELEASE_DIR}/Framework/Modules/Dependencies
  37. ${POLYCODE_RELEASE_DIR}/Framework/Tools/Dependencies)
  38. MESSAGE(DEBUG " CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}")
  39. # If the following large ugly mess is not present, failures can occur with -G "Unix Makefiles".
  40. # Even WITH this, you may get "library not found" errors on mingw first run; if so just re-run.
  41. # FIXME: Shouldn't be necessary if FIND_LIBRARY were working on mingw.
  42. IF (MINGW)
  43. LINK_DIRECTORIES(${POLYCODE_RELEASE_DIR}/Framework/Core/Dependencies/lib)
  44. LINK_DIRECTORIES(${POLYCODE_RELEASE_DIR}/Framework/Modules/Dependencies/lib)
  45. SET(ZLIB_LIBRARY zlib)
  46. SET(ZLIB_INCLUDE_DIR ${POLYCODE_RELEASE_DIR}/Framework/Core/Dependencies/include)
  47. SET(OGG_LIBRARY libogg)
  48. SET(OGG_INCLUDE_DIR ${POLYCODE_RELEASE_DIR}/Framework/Core/Dependencies/include)
  49. SET(PNG_LIBRARY png)
  50. SET(PNG_INCLUDE_DIR ${POLYCODE_RELEASE_DIR}/Framework/Core/Dependencies/include)
  51. SET(PHYSFS_LIBRARY physfs)
  52. SET(PHYSFS_INCLUDE_DIR ${POLYCODE_RELEASE_DIR}/Framework/Core/Dependencies/include)
  53. SET(OPENAL_LIBRARY OpenAL32)
  54. SET(OPENAL_INCLUDE_DIR ${POLYCODE_RELEASE_DIR}/Framework/Core/Dependencies/include/AL)
  55. SET(FREETYPE_LIBRARY freetype)
  56. SET(FREETYPE_INCLUDE_DIRS ${POLYCODE_RELEASE_DIR}/Framework/Core/Dependencies/include)
  57. SET(VORBIS_LIBRARY libvorbis)
  58. SET(VORBIS_INCLUDE_DIR ${POLYCODE_RELEASE_DIR}/Framework/Core/Dependencies/include)
  59. SET(VORBISFILE_LIBRARY libvorbisfile)
  60. SET(VORBISFILE_INCLUDE_DIR ${POLYCODE_RELEASE_DIR}/Framework/Core/Dependencies/include)
  61. SET(LUA_LIBRARY lua5.1)
  62. SET(LUA_LIBRARIES lua5.1)
  63. SET(LUA_INCLUDE_DIR ${POLYCODE_RELEASE_DIR}/Framework/Core/Dependencies/include/lua5.1)
  64. SET(BOX2D_RELEASE_LIBRARY Box2D)
  65. SET(BOX2D_DEBUG_LIBRARY Box2D)
  66. SET(BOX2D_INCLUDE_DIR ${POLYCODE_RELEASE_DIR}/Framework/Modules/Dependencies/include)
  67. SET(ASSIMP_INCLUDE_DIR ${POLYCODE_RELEASE_DIR}/Framework/Core/Dependencies/include)
  68. SET(BULLET_INCLUDE_DIR ${POLYCODE_RELEASE_DIR}/Framework/Modules/Dependencies/include/bullet)
  69. SET(LIBBULLETCOLLISION BulletCollision)
  70. SET(LIBBULLETDYNAMICS BulletDynamics)
  71. SET(LIBBULLETMATH LinearMath)
  72. SET(LIBBULLETMULTITHREADED BulletMultiThreaded)
  73. SET(LIBBULLETSOFTBODY BulletSoftBody)
  74. SET(LIBBULLETCOLLISION_DEBUG BulletCollision)
  75. SET(LIBBULLETDYNAMICS_DEBUG BulletDynamics)
  76. SET(LIBBULLETMATH_DEBUG LinearMath)
  77. SET(LIBBULLETMULTITHREADED_DEBUG BulletMultiThreaded)
  78. SET(LIBBULLETSOFTBODY_DEBUG BulletSoftBody)
  79. ENDIF()
  80. # Process subdirectories
  81. ADD_SUBDIRECTORY(Core/Contents)
  82. ADD_SUBDIRECTORY("Assets/Default asset pack")
  83. ADD_SUBDIRECTORY("Assets/Templates")
  84. ADD_SUBDIRECTORY("Documentation")
  85. IF(POLYCODE_BUILD_BINDINGS)
  86. ADD_SUBDIRECTORY(Documentation/Lua/scripts)
  87. ADD_SUBDIRECTORY(Bindings)
  88. ENDIF(POLYCODE_BUILD_BINDINGS)
  89. IF(POLYCODE_BUILD_MODULES)
  90. ADD_SUBDIRECTORY(Modules/Contents)
  91. IF(POLYCODE_BUILD_BINDINGS)
  92. ADD_SUBDIRECTORY(Modules/Bindings)
  93. ENDIF(POLYCODE_BUILD_BINDINGS)
  94. ENDIF(POLYCODE_BUILD_MODULES)
  95. IF(POLYCODE_BUILD_PLAYER)
  96. ADD_SUBDIRECTORY(Player/Contents)
  97. ENDIF(POLYCODE_BUILD_PLAYER)
  98. IF(POLYCODE_BUILD_TOOLS)
  99. ADD_SUBDIRECTORY(Tools/Contents)
  100. ENDIF(POLYCODE_BUILD_TOOLS)
  101. INSTALL(FILES LICENSE.txt
  102. DESTINATION ./)
  103. INSTALL(DIRECTORY ${Polycode_SOURCE_DIR}/Examples/C++/Build/${CMAKE_SYSTEM_NAME} DESTINATION Examples)
  104. INSTALL(DIRECTORY ${Polycode_SOURCE_DIR}/Examples/C++/Contents DESTINATION Examples/${CMAKE_SYSTEM_NAME})
  105. INSTALL(DIRECTORY ${Polycode_SOURCE_DIR}/Examples/C++/Resources DESTINATION Examples/${CMAKE_SYSTEM_NAME})
  106. INSTALL(DIRECTORY ${POLYCODE_RELEASE_DIR}/Framework/Core/Dependencies DESTINATION Core)
  107. INSTALL(DIRECTORY ${POLYCODE_RELEASE_DIR}/Framework/Modules/Dependencies DESTINATION Modules)
  108. SET(CPACK_PACKAGE_VERSION_MAJOR "0")
  109. SET(CPACK_PACKAGE_VERSION_MINOR "8")
  110. SET(CPACK_PACKAGE_VERSION_PATCH "2")
  111. IF(WIN32)
  112. SET(CPACK_GENERATOR "ZIP")
  113. ELSE(WIN32)
  114. SET(CPACK_GENERATOR "TGZ")
  115. ENDIF(WIN32)
  116. INCLUDE(CPack)
  117. # Install assets and dependencies