ObsHelpers.cmake 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. set(OBS_OUTPUT_DIR "${CMAKE_BINARY_DIR}/rundir")
  2. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  3. set(_lib_suffix 64)
  4. else()
  5. set(_lib_suffix 32)
  6. endif()
  7. if(WIN32 OR APPLE)
  8. set(_struct_def FALSE)
  9. else()
  10. set(_struct_def TRUE)
  11. endif()
  12. option(INSTALLER_RUN "Build a multiarch installer, needs to run indenepdently after both archs have compiled" FALSE)
  13. option(UNIX_STRUCTURE "Build with standard unix filesystem structure" ${_struct_def})
  14. if(INSTALLER_RUN AND NOT DEFINED ENV{obsInstallerTempDir})
  15. message(FATAL_ERROR "Environment variable obsInstallerTempDir is needed for multiarch installer generation")
  16. endif()
  17. if(NOT UNIX_STRUCTURE)
  18. set(OBS_EXECUTABLE_DESTINATION "bin/${_lib_suffix}bit")
  19. set(OBS_EXECUTABLE32_DESTINATION "bin/32bit")
  20. set(OBS_EXECUTABLE64_DESTINATION "bin/64bit")
  21. set(OBS_LIBRARY_DESTINATION "bin/${_lib_suffix}bit")
  22. set(OBS_LIBRARY32_DESTINATION "bin/32bit")
  23. set(OBS_LIBRARY64_DESTINATION "bin/64bit")
  24. set(OBS_PLUGIN_DESTINATION "obs-plugins/${_lib_suffix}bit")
  25. set(OBS_PLUGIN32_DESTINATION "obs-plugins/32bit")
  26. set(OBS_PLUGIN64_DESTINATION "obs-plugins/64bit")
  27. set(OBS_DATA_DESTINATION "data")
  28. add_definitions(-DOBS_DATA_PATH="../../${OBS_DATA_DESTINATION}")
  29. else()
  30. set(OBS_EXECUTABLE_DESTINATION "bin")
  31. set(OBS_EXECUTABLE32_DESTINATION "bin32")
  32. set(OBS_EXECUTABLE64_DESTINATION "bin64")
  33. set(OBS_LIBRARY_DESTINATION "lib")
  34. set(OBS_LIBRARY32_DESTINATION "lib32")
  35. set(OBS_LIBRARY64_DESTINATION "lib64")
  36. set(OBS_PLUGIN_DESTINATION "lib/obs-plugins")
  37. set(OBS_PLUGIN32_DESTINATION "lib32/obs-plugins")
  38. set(OBS_PLUGIN64_DESTINATION "lib64/obs-plugins")
  39. set(OBS_DATA_DESTINATION "share/obs")
  40. add_definitions(-DOBS_DATA_PATH="${OBS_DATA_DESTINATION}")
  41. add_definitions(-DOBS_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}/")
  42. endif()
  43. function(obs_generate_multiarch_installer)
  44. install(DIRECTORY "$ENV{obsInstallerTempDir}/"
  45. DESTINATION "."
  46. USE_SOURCE_PERMISSIONS)
  47. endfunction()
  48. function(obs_install_additional)
  49. set(addfdir "${CMAKE_SOURCE_DIR}/additional_install_files")
  50. if(DEFINED ENV{obsAdditionalInstallFiles})
  51. set(addfdir "$ENV{obsAdditionalInstallFiles}")
  52. endif()
  53. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  54. set(_lib_suffix 64)
  55. else()
  56. set(_lib_suffix 32)
  57. endif()
  58. install(DIRECTORY "${addfdir}/misc/"
  59. DESTINATION "."
  60. USE_SOURCE_PERMISSIONS
  61. PATTERN ".gitignore" EXCLUDE)
  62. install(DIRECTORY "${addfdir}/data/"
  63. DESTINATION "${OBS_DATA_DESTINATION}"
  64. USE_SOURCE_PERMISSIONS
  65. PATTERN ".gitignore" EXCLUDE)
  66. if(INSTALLER_RUN)
  67. install(DIRECTORY "${addfdir}/libs32/"
  68. DESTINATION "${OBS_LIBRARY32_DESTINATION}"
  69. USE_SOURCE_PERMISSIONS
  70. PATTERN ".gitignore" EXCLUDE)
  71. install(DIRECTORY "${addfdir}/exec32/"
  72. DESTINATION "${OBS_EXECUTABLE32_DESTINATION}"
  73. USE_SOURCE_PERMISSIONS
  74. PATTERN ".gitignore" EXCLUDE)
  75. install(DIRECTORY "${addfdir}/libs64/"
  76. DESTINATION "${OBS_LIBRARY64_DESTINATION}"
  77. USE_SOURCE_PERMISSIONS
  78. PATTERN ".gitignore" EXCLUDE)
  79. install(DIRECTORY "${addfdir}/exec64/"
  80. DESTINATION "${OBS_EXECUTABLE64_DESTINATION}"
  81. USE_SOURCE_PERMISSIONS
  82. PATTERN ".gitignore" EXCLUDE)
  83. else()
  84. install(DIRECTORY "${addfdir}/libs${_lib_suffix}/"
  85. DESTINATION "${OBS_LIBRARY_DESTINATION}"
  86. USE_SOURCE_PERMISSIONS
  87. PATTERN ".gitignore" EXCLUDE)
  88. install(DIRECTORY "${addfdir}/exec${_lib_suffix}/"
  89. DESTINATION "${OBS_EXECUTABLE_DESTINATION}"
  90. USE_SOURCE_PERMISSIONS
  91. PATTERN ".gitignore" EXCLUDE)
  92. endif()
  93. endfunction()
  94. macro(install_obs_core target)
  95. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  96. set(_lib_suffix 64)
  97. else()
  98. set(_lib_suffix 32)
  99. endif()
  100. install(TARGETS ${target}
  101. LIBRARY DESTINATION "${OBS_LIBRARY_DESTINATION}"
  102. RUNTIME DESTINATION "${OBS_EXECUTABLE_DESTINATION}")
  103. add_custom_command(TARGET ${target} POST_BUILD
  104. COMMAND "${CMAKE_COMMAND}" -E copy
  105. "$<TARGET_FILE:${target}>" "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/bin/${_lib_suffix}bit/$<TARGET_FILE_NAME:${target}>"
  106. VERBATIM)
  107. if(DEFINED ENV{obsInstallerTempDir})
  108. get_property(target_type TARGET ${target} PROPERTY TYPE)
  109. if("${target_type}" STREQUAL "EXECUTABLE")
  110. set(tmp_target_dir "${OBS_EXECUTABLE_DESTINATION}")
  111. else()
  112. set(tmp_target_dir "${OBS_LIBRARY_DESTINATION}")
  113. endif()
  114. add_custom_command(TARGET ${target} POST_BUILD
  115. COMMAND "${CMAKE_COMMAND}" -E copy
  116. "$<TARGET_FILE:${target}>" "$ENV{obsInstallerTempDir}/${tmp_target_dir}/$<TARGET_FILE_NAME:${target}>"
  117. VERBATIM)
  118. endif()
  119. endmacro()
  120. macro(install_obs_plugin target)
  121. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  122. set(_lib_suffix 64)
  123. else()
  124. set(_lib_suffix 32)
  125. endif()
  126. install(TARGETS ${target}
  127. LIBRARY DESTINATION "${OBS_PLUGIN_DESTINATION}"
  128. RUNTIME DESTINATION "${OBS_PLUGIN_DESTINATION}")
  129. add_custom_command(TARGET ${target} POST_BUILD
  130. COMMAND "${CMAKE_COMMAND}" -E copy
  131. "$<TARGET_FILE:${target}>" "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/obs-plugins/${_lib_suffix}bit/$<TARGET_FILE_NAME:${target}>"
  132. VERBATIM)
  133. if(DEFINED ENV{obsInstallerTempDir})
  134. add_custom_command(TARGET ${target} POST_BUILD
  135. COMMAND "${CMAKE_COMMAND}" -E copy
  136. "$<TARGET_FILE:${target}>" "$ENV{obsInstallerTempDir}/${OBS_PLUGIN_DESTINATION}/$<TARGET_FILE_NAME:${target}>"
  137. VERBATIM)
  138. endif()
  139. endmacro()
  140. macro(install_obs_data target datadir datadest)
  141. install(DIRECTORY ${datadir}/
  142. DESTINATION "${OBS_DATA_DESTINATION}/${datadest}"
  143. USE_SOURCE_PERMISSIONS)
  144. add_custom_command(TARGET ${target} POST_BUILD
  145. COMMAND "${CMAKE_COMMAND}" -E copy_directory
  146. "${CMAKE_CURRENT_SOURCE_DIR}/${datadir}" "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/data/${datadest}"
  147. VERBATIM)
  148. if(CMAKE_SIZEOF_VOID_P EQUAL 8 AND DEFINED ENV{obsInstallerTempDir})
  149. add_custom_command(TARGET ${target} POST_BUILD
  150. COMMAND "${CMAKE_COMMAND}" -E copy_directory
  151. "${CMAKE_CURRENT_SOURCE_DIR}/${datadir}" "$ENV{obsInstallerTempDir}/${OBS_DATA_DESTINATION}/${datadest}"
  152. VERBATIM)
  153. endif()
  154. endmacro()
  155. macro(install_obs_plugin_data target datadir)
  156. install_obs_plugin(${target})
  157. install_obs_data(${target} "${datadir}" "obs-plugins/${target}")
  158. endmacro()