package.cmake 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. ## ======================================================================== ##
  2. ## Copyright 2009-2017 Intel Corporation ##
  3. ## ##
  4. ## Licensed under the Apache License, Version 2.0 (the "License"); ##
  5. ## you may not use this file except in compliance with the License. ##
  6. ## You may obtain a copy of the License at ##
  7. ## ##
  8. ## http://www.apache.org/licenses/LICENSE-2.0 ##
  9. ## ##
  10. ## Unless required by applicable law or agreed to in writing, software ##
  11. ## distributed under the License is distributed on an "AS IS" BASIS, ##
  12. ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ##
  13. ## See the License for the specific language governing permissions and ##
  14. ## limitations under the License. ##
  15. ## ======================================================================== ##
  16. INCLUDE(GNUInstallDirs)
  17. if (NOT DEFINED EMBREE_ZIP_MODE)
  18. set(EMBREE_ZIP_MODE OFF)
  19. endif()
  20. IF (NOT EMBREE_ZIP_MODE AND NOT WIN32 AND NOT APPLE)
  21. SET(CMAKE_INSTALL_BINDIR ${CMAKE_INSTALL_BINDIR}/embree${EMBREE_VERSION_MAJOR})
  22. SET(CMAKE_INSTALL_FULL_BINDIR ${CMAKE_INSTALL_FULL_BINDIR}/embree${EMBREE_VERSION_MAJOR})
  23. ENDIF()
  24. # use full absolute path as install name
  25. IF (NOT EMBREE_ZIP_MODE)
  26. SET(CMAKE_INSTALL_NAME_DIR ${CMAKE_INSTALL_FULL_LIBDIR})
  27. ELSE()
  28. IF(APPLE)
  29. SET(CMAKE_INSTALL_RPATH "@loader_path/../lib")
  30. ELSE()
  31. SET(CMAKE_INSTALL_RPATH "$ORIGIN/../lib")
  32. ENDIF()
  33. ENDIF()
  34. ##############################################################
  35. # Install Headers
  36. ##############################################################
  37. INSTALL(DIRECTORY include/embree2 DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT devel)
  38. CONFIGURE_FILE(include/embree2/rtcore.h rtcore.h @ONLY)
  39. CONFIGURE_FILE(include/embree2/rtcore.isph rtcore.isph @ONLY)
  40. INSTALL(FILES ${PROJECT_BINARY_DIR}/rtcore.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/embree2 COMPONENT devel)
  41. INSTALL(FILES ${PROJECT_BINARY_DIR}/rtcore.isph DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/embree2 COMPONENT devel)
  42. ##############################################################
  43. # Install Models
  44. ##############################################################
  45. INSTALL(DIRECTORY tutorials/models DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT examples)
  46. ##############################################################
  47. # Install Documentation
  48. ##############################################################
  49. INSTALL(FILES ${PROJECT_SOURCE_DIR}/LICENSE.txt DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT lib)
  50. INSTALL(FILES ${PROJECT_SOURCE_DIR}/CHANGELOG.md DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT lib)
  51. INSTALL(FILES ${PROJECT_SOURCE_DIR}/README.md DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT lib)
  52. INSTALL(FILES ${PROJECT_SOURCE_DIR}/readme.pdf DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT lib)
  53. SET(CPACK_NSIS_MENU_LINKS ${CPACK_NSIS_MENU_LINKS} "${CMAKE_INSTALL_DOCDIR}/LICENSE.txt" "LICENSE")
  54. SET(CPACK_NSIS_MENU_LINKS ${CPACK_NSIS_MENU_LINKS} "${CMAKE_INSTALL_DOCDIR}/CHANGELOG.txt" "CHANGELOG")
  55. SET(CPACK_NSIS_MENU_LINKS ${CPACK_NSIS_MENU_LINKS} "${CMAKE_INSTALL_DOCDIR}/README.md" "README.md")
  56. SET(CPACK_NSIS_MENU_LINKS ${CPACK_NSIS_MENU_LINKS} "${CMAKE_INSTALL_DOCDIR}/readme.pdf" "readme.pdf")
  57. ##############################################################
  58. # Install scripts to set embree paths
  59. ##############################################################
  60. IF (EMBREE_ZIP_MODE)
  61. IF (WIN32)
  62. ELSEIF(APPLE)
  63. CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/scripts/install_macosx/embree-vars.sh embree-vars.sh @ONLY)
  64. CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/scripts/install_macosx/embree-vars.csh embree-vars.csh @ONLY)
  65. INSTALL(FILES ${PROJECT_BINARY_DIR}/embree-vars.sh DESTINATION "." COMPONENT lib)
  66. INSTALL(FILES ${PROJECT_BINARY_DIR}/embree-vars.csh DESTINATION "." COMPONENT lib)
  67. ELSE()
  68. CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/scripts/install_linux/embree-vars.sh embree-vars.sh @ONLY)
  69. CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/scripts/install_linux/embree-vars.csh embree-vars.csh @ONLY)
  70. INSTALL(FILES ${PROJECT_BINARY_DIR}/embree-vars.sh DESTINATION "." COMPONENT lib)
  71. INSTALL(FILES ${PROJECT_BINARY_DIR}/embree-vars.csh DESTINATION "." COMPONENT lib)
  72. ENDIF()
  73. ENDIF()
  74. ##############################################################
  75. # Install Embree CMake Configuration
  76. ##############################################################
  77. IF (NOT EMBREE_ZIP_MODE)
  78. SET(EMBREE_CONFIG_VERSION ${EMBREE_VERSION})
  79. ELSE()
  80. SET(EMBREE_CONFIG_VERSION ${EMBREE_VERSION_MAJOR})
  81. ENDIF()
  82. IF (APPLE AND NOT EMBREE_ZIP_MODE)
  83. CONFIGURE_FILE(scripts/install_macosx/uninstall.command uninstall.command @ONLY)
  84. INSTALL(PROGRAMS "${PROJECT_BINARY_DIR}/uninstall.command" DESTINATION ${CMAKE_INSTALL_BINDIR}/.. COMPONENT lib)
  85. ENDIF()
  86. IF (WIN32)
  87. SET(EMBREE_LIBRARY_NAME embree.lib)
  88. ELSE()
  89. SET(EMBREE_LIBRARY_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}embree${CMAKE_SHARED_LIBRARY_SUFFIX})
  90. ENDIF()
  91. IF (WIN32 OR EMBREE_ZIP_MODE)
  92. # for local "installs" and on Windows we want the cmake config files placed
  93. # in the install root, such that users can point the CMake variable
  94. # embree_DIR just to the install folder
  95. SET(EMBREE_CMAKECONFIG_DIR ".")
  96. SET(EMBREE_RELATIV_ROOT_DIR ".")
  97. ELSE()
  98. SET(EMBREE_CMAKECONFIG_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/embree-${EMBREE_VERSION}")
  99. SET(EMBREE_RELATIV_ROOT_DIR "../../..")
  100. ENDIF()
  101. CONFIGURE_FILE(common/cmake/embree-config.cmake embree-config-install.cmake @ONLY)
  102. CONFIGURE_FILE(common/cmake/embree-config-version.cmake embree-config-version.cmake @ONLY)
  103. # create a config file for the build directory
  104. CONFIGURE_FILE(common/cmake/embree-config-builddir.cmake embree-config.cmake @ONLY)
  105. INSTALL(FILES "${PROJECT_BINARY_DIR}/embree-config-install.cmake" DESTINATION ${EMBREE_CMAKECONFIG_DIR} RENAME "embree-config.cmake" COMPONENT devel)
  106. INSTALL(FILES "${PROJECT_BINARY_DIR}/embree-config-version.cmake" DESTINATION ${EMBREE_CMAKECONFIG_DIR} COMPONENT devel)
  107. ##############################################################
  108. # CPack specific stuff
  109. ##############################################################
  110. SET(CPACK_PACKAGE_NAME "Embree")
  111. SET(CPACK_PACKAGE_FILE_NAME "embree-${EMBREE_VERSION}")
  112. #SET(CPACK_PACKAGE_ICON ${PROJECT_SOURCE_DIR}/embree-doc/images/icon.png)
  113. #SET(CPACK_PACKAGE_RELOCATABLE TRUE)
  114. SET(CPACK_STRIP_FILES TRUE)
  115. SET(CPACK_PACKAGE_VERSION_MAJOR ${EMBREE_VERSION_MAJOR})
  116. SET(CPACK_PACKAGE_VERSION_MINOR ${EMBREE_VERSION_MINOR})
  117. SET(CPACK_PACKAGE_VERSION_PATCH ${EMBREE_VERSION_PATCH})
  118. SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Embree: High Performance Ray Tracing Kernels")
  119. SET(CPACK_PACKAGE_VENDOR "Intel Corporation")
  120. SET(CPACK_PACKAGE_CONTACT [email protected])
  121. SET(CPACK_COMPONENT_LIB_DISPLAY_NAME "Library")
  122. SET(CPACK_COMPONENT_LIB_DESCRIPTION "The Embree library including documentation.")
  123. SET(CPACK_COMPONENT_DEVEL_DISPLAY_NAME "Development")
  124. SET(CPACK_COMPONENT_DEVEL_DESCRIPTION "Header Files for C and ISPC required to develop applications with Embree.")
  125. SET(CPACK_COMPONENT_EXAMPLES_DISPLAY_NAME "Examples")
  126. SET(CPACK_COMPONENT_EXAMPLES_DESCRIPTION "Tutorials demonstrating how to use Embree.")
  127. # dependencies between components
  128. SET(CPACK_COMPONENT_DEVEL_DEPENDS lib)
  129. SET(CPACK_COMPONENT_EXAMPLES_DEPENDS lib)
  130. SET(CPACK_COMPONENT_LIB_REQUIRED ON) # always install the libs
  131. # point to readme and license files
  132. SET(CPACK_RESOURCE_FILE_README ${PROJECT_SOURCE_DIR}/README.md)
  133. SET(CPACK_RESOURCE_FILE_LICENSE ${PROJECT_SOURCE_DIR}/LICENSE.txt)
  134. # Windows specific settings
  135. IF(WIN32)
  136. IF (CMAKE_SIZEOF_VOID_P EQUAL 8)
  137. SET(ARCH x64)
  138. SET(PROGRAMFILES "\$PROGRAMFILES64")
  139. SET(CPACK_PACKAGE_NAME "${CPACK_PACKAGE_NAME} x64")
  140. ELSE()
  141. SET(ARCH win32)
  142. SET(PROGRAMFILES "\$PROGRAMFILES")
  143. SET(CPACK_PACKAGE_NAME "${CPACK_PACKAGE_NAME} Win32")
  144. ENDIF()
  145. # NSIS specific settings
  146. IF (NOT EMBREE_ZIP_MODE)
  147. SET(CPACK_GENERATOR NSIS)
  148. SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}.${ARCH}")
  149. SET(CPACK_COMPONENTS_ALL lib devel examples)
  150. SET(CPACK_NSIS_INSTALL_ROOT "${PROGRAMFILES}\\\\Intel")
  151. SET(CPACK_PACKAGE_INSTALL_DIRECTORY "Embree v${EMBREE_VERSION} ${ARCH}")
  152. SET(CPACK_NSIS_DISPLAY_NAME "Embree v${EMBREE_VERSION} ${ARCH}")
  153. SET(CPACK_NSIS_PACKAGE_NAME "Embree v${EMBREE_VERSION} ${ARCH}")
  154. SET(CPACK_NSIS_URL_INFO_ABOUT http://embree.github.io/)
  155. #SET(CPACK_NSIS_HELP_LINK http://embree.github.io/downloads.html#windows)
  156. SET(CPACK_NSIS_MUI_ICON ${PROJECT_SOURCE_DIR}/scripts/install_windows/icon32.ico)
  157. SET(CPACK_NSIS_CONTACT ${CPACK_PACKAGE_CONTACT})
  158. #SET(CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS ${CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS} "\n CreateDirectory \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\"")
  159. #SET(CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS ${CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS} "\n CreateDirectory \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\documentation\\\"")
  160. #SET(CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS ${CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS} "\n CreateDirectory \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\tutorials\\\" \n")
  161. #SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS ${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS} "\n ${UNINSTALL_LIST}\n RMDir \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\documentation\\\"")
  162. #SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS ${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS} "\n ${UNINSTALL_LIST}\n RMDir \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\tutorials\\\"")
  163. #SET(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS ${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS} "\n ${UNINSTALL_LIST}\n RMDir \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\"\n")
  164. IF (EMBREE_TESTING_PACKAGE)
  165. ADD_TEST(NAME "BuildPackage" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${PROJECT_SOURCE_DIR}/scripts/package_win.bat ${CPACK_PACKAGE_FILE_NAME}.exe ${CMAKE_BUILD_TYPE})
  166. ENDIF()
  167. ELSE()
  168. SET(CPACK_GENERATOR ZIP)
  169. SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}.${ARCH}.windows")
  170. SET(CPACK_MONOLITHIC_INSTALL 1)
  171. IF (EMBREE_TESTING_PACKAGE)
  172. ADD_TEST(NAME "BuildPackage" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${PROJECT_SOURCE_DIR}/scripts/package_win.bat ${CPACK_PACKAGE_FILE_NAME}.zip ${CMAKE_BUILD_TYPE})
  173. ENDIF()
  174. ENDIF()
  175. # MacOSX specific settings
  176. ELSEIF(APPLE)
  177. CONFIGURE_FILE(README.md README.txt)
  178. SET(CPACK_RESOURCE_FILE_README ${PROJECT_BINARY_DIR}/README.txt)
  179. IF (NOT EMBREE_ZIP_MODE)
  180. SET(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
  181. SET(CPACK_GENERATOR PackageMaker)
  182. SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}.x86_64")
  183. #SET(CPACK_COMPONENTS_ALL lib devel examples)
  184. SET(CPACK_MONOLITHIC_INSTALL 1)
  185. SET(CPACK_PACKAGE_NAME embree-${EMBREE_VERSION})
  186. SET(CPACK_PACKAGE_VENDOR "intel") # creates short name com.intel.embree2.xxx in pkgutil
  187. SET(CPACK_OSX_PACKAGE_VERSION 10.7)
  188. IF (EMBREE_TESTING_PACKAGE)
  189. ADD_TEST(NAME "BuildPackage" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${PROJECT_SOURCE_DIR}/scripts/package_macosx.sh ${CMAKE_BUILD_TYPE} ${CPACK_PACKAGE_FILE_NAME}.dmg)
  190. ENDIF()
  191. ELSE()
  192. SET(CPACK_GENERATOR TGZ)
  193. SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}.x86_64.macosx")
  194. SET(CPACK_MONOLITHIC_INSTALL 1)
  195. IF (EMBREE_TESTING_PACKAGE)
  196. ADD_TEST(NAME "BuildPackage" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${PROJECT_SOURCE_DIR}/scripts/package_macosx.sh ${CMAKE_BUILD_TYPE} ${CPACK_PACKAGE_FILE_NAME}.tgz)
  197. ENDIF()
  198. ENDIF()
  199. # Linux specific settings
  200. ELSE()
  201. IF (NOT EMBREE_ZIP_MODE)
  202. SET(CPACK_GENERATOR RPM)
  203. SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}-${CPACK_RPM_PACKAGE_RELEASE}.x86_64")
  204. SET(CPACK_COMPONENTS_ALL devel lib examples)
  205. SET(CPACK_RPM_COMPONENT_INSTALL ON)
  206. SET(CPACK_RPM_PACKAGE_LICENSE "ASL 2.0") # Apache Software License, Version 2.0
  207. SET(CPACK_RPM_PACKAGE_GROUP "Development/Libraries")
  208. #SET(CPACK_RPM_CHANGELOG_FILE "") # ChangeLog of the RPM; also CHANGELOG.md is not in the required format
  209. SET(CPACK_RPM_PACKAGE_ARCHITECTURE x86_64)
  210. SET(CPACK_RPM_PACKAGE_URL http://embree.github.io/)
  211. SET(CPACK_RPM_DEFAULT_DIR_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) # otherwise cmake directory has wrong 775 permissions
  212. # post install and uninstall scripts
  213. SET(CPACK_RPM_lib_POST_INSTALL_SCRIPT_FILE ${PROJECT_SOURCE_DIR}/common/cmake/rpm_ldconfig.sh)
  214. SET(CPACK_RPM_lib_POST_UNINSTALL_SCRIPT_FILE ${PROJECT_SOURCE_DIR}/common/cmake/rpm_ldconfig.sh)
  215. IF (EMBREE_TESTING_PACKAGE)
  216. ADD_TEST(NAME "BuildPackage" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${PROJECT_SOURCE_DIR}/scripts/package_linux.sh ${EMBREE_ZIP_MODE} ${EMBREE_VERSION})
  217. ENDIF()
  218. ELSE()
  219. SET(CPACK_GENERATOR TGZ)
  220. SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}.x86_64.linux")
  221. SET(CPACK_MONOLITHIC_INSTALL 1)
  222. IF (EMBREE_TESTING_PACKAGE)
  223. ADD_TEST(NAME "BuildPackage" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${PROJECT_SOURCE_DIR}/scripts/package_linux.sh ${EMBREE_ZIP_MODE} ${EMBREE_VERSION})
  224. ENDIF()
  225. ENDIF()
  226. ENDIF()