ObsHelpers.cmake 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454
  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(APPLE)
  15. option(BUILD_REDISTRIBUTABLE "Fix rpath of external libraries" FALSE)
  16. endif()
  17. if(INSTALLER_RUN AND NOT DEFINED ENV{obsInstallerTempDir})
  18. message(FATAL_ERROR "Environment variable obsInstallerTempDir is needed for multiarch installer generation")
  19. endif()
  20. if(DEFINED ENV{obsInstallerTempDir})
  21. file(TO_CMAKE_PATH "$ENV{obsInstallerTempDir}" ENV{obsInstallerTempDir})
  22. endif()
  23. if(DEFINED ENV{obsAdditionalInstallFiles})
  24. file(TO_CMAKE_PATH "$ENV{obsAdditionalInstallFiles}" ENV{obsAdditionalInstallFiles})
  25. endif()
  26. if(NOT UNIX_STRUCTURE)
  27. set(OBS_DATA_DESTINATION "data")
  28. if(APPLE)
  29. set(OBS_EXECUTABLE_DESTINATION "bin")
  30. set(OBS_EXECUTABLE32_DESTINATION "bin")
  31. set(OBS_EXECUTABLE64_DESTINATION "bin")
  32. set(OBS_LIBRARY_DESTINATION "bin")
  33. set(OBS_LIBRARY32_DESTINATION "bin")
  34. set(OBS_LIBRARY64_DESTINATION "bin")
  35. set(OBS_PLUGIN_DESTINATION "obs-plugins")
  36. set(OBS_PLUGIN32_DESTINATION "obs-plugins")
  37. set(OBS_PLUGIN64_DESTINATION "obs-plugins")
  38. add_definitions(-DOBS_DATA_PATH="../${OBS_DATA_DESTINATION}")
  39. else()
  40. set(OBS_EXECUTABLE_DESTINATION "bin/${_lib_suffix}bit")
  41. set(OBS_EXECUTABLE32_DESTINATION "bin/32bit")
  42. set(OBS_EXECUTABLE64_DESTINATION "bin/64bit")
  43. set(OBS_LIBRARY_DESTINATION "bin/${_lib_suffix}bit")
  44. set(OBS_LIBRARY32_DESTINATION "bin/32bit")
  45. set(OBS_LIBRARY64_DESTINATION "bin/64bit")
  46. set(OBS_PLUGIN_DESTINATION "obs-plugins/${_lib_suffix}bit")
  47. set(OBS_PLUGIN32_DESTINATION "obs-plugins/32bit")
  48. set(OBS_PLUGIN64_DESTINATION "obs-plugins/64bit")
  49. add_definitions(-DOBS_DATA_PATH="../../${OBS_DATA_DESTINATION}")
  50. endif()
  51. set(OBS_CMAKE_DESTINATION "cmake")
  52. set(OBS_INCLUDE_DESTINATION "include")
  53. else()
  54. set(OBS_EXECUTABLE_DESTINATION "bin")
  55. set(OBS_EXECUTABLE32_DESTINATION "bin32")
  56. set(OBS_EXECUTABLE64_DESTINATION "bin64")
  57. set(OBS_LIBRARY_DESTINATION "lib")
  58. set(OBS_LIBRARY32_DESTINATION "lib32")
  59. set(OBS_LIBRARY64_DESTINATION "lib64")
  60. set(OBS_PLUGIN_DESTINATION "lib/obs-plugins")
  61. set(OBS_PLUGIN32_DESTINATION "lib32/obs-plugins")
  62. set(OBS_PLUGIN64_DESTINATION "lib64/obs-plugins")
  63. set(OBS_DATA_DESTINATION "share/obs")
  64. set(OBS_CMAKE_DESTINATION "lib/cmake")
  65. set(OBS_INCLUDE_DESTINATION "include/obs")
  66. add_definitions(-DOBS_DATA_PATH="${OBS_DATA_DESTINATION}")
  67. add_definitions(-DOBS_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}/")
  68. endif()
  69. function(obs_finish_bundle)
  70. if(NOT APPLE OR UNIX_STRUCTURE)
  71. return()
  72. endif()
  73. install(CODE
  74. "if(DEFINED ENV{FIXUP_BUNDLE})
  75. execute_process(COMMAND \"${CMAKE_SOURCE_DIR}/cmake/osxbundle/fixup_bundle.sh\" . bin WORKING_DIRECTORY \"\${CMAKE_INSTALL_PREFIX}\")
  76. endif()")
  77. endfunction()
  78. function(obs_generate_multiarch_installer)
  79. install(DIRECTORY "$ENV{obsInstallerTempDir}/"
  80. DESTINATION "."
  81. USE_SOURCE_PERMISSIONS)
  82. endfunction()
  83. function(obs_helper_copy_dir target target_configs source dest)
  84. add_custom_command(TARGET ${target} POST_BUILD
  85. COMMAND "${CMAKE_COMMAND}"
  86. "-DCONFIG=$<CONFIGURATION>"
  87. "-DTARGET_CONFIGS=${target_configs}"
  88. "-DINPUT=${source}"
  89. "-DOUTPUT=${dest}"
  90. -P "${CMAKE_SOURCE_DIR}/cmake/copy_helper.cmake"
  91. VERBATIM)
  92. endfunction()
  93. function(obs_install_additional maintarget)
  94. set(addfdir "${CMAKE_SOURCE_DIR}/additional_install_files")
  95. if(DEFINED ENV{obsAdditionalInstallFiles})
  96. set(addfdir "$ENV{obsAdditionalInstallFiles}")
  97. endif()
  98. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  99. set(_lib_suffix 64)
  100. else()
  101. set(_lib_suffix 32)
  102. endif()
  103. install(DIRECTORY "${addfdir}/misc/"
  104. DESTINATION "."
  105. USE_SOURCE_PERMISSIONS
  106. PATTERN ".gitignore" EXCLUDE)
  107. install(DIRECTORY "${addfdir}/data/"
  108. DESTINATION "${OBS_DATA_DESTINATION}"
  109. USE_SOURCE_PERMISSIONS
  110. PATTERN ".gitignore" EXCLUDE)
  111. if(INSTALLER_RUN)
  112. install(DIRECTORY "${addfdir}/libs32/"
  113. DESTINATION "${OBS_LIBRARY32_DESTINATION}"
  114. USE_SOURCE_PERMISSIONS
  115. PATTERN ".gitignore" EXCLUDE)
  116. install(DIRECTORY "${addfdir}/exec32/"
  117. DESTINATION "${OBS_EXECUTABLE32_DESTINATION}"
  118. USE_SOURCE_PERMISSIONS
  119. PATTERN ".gitignore" EXCLUDE)
  120. install(DIRECTORY "${addfdir}/libs64/"
  121. DESTINATION "${OBS_LIBRARY64_DESTINATION}"
  122. USE_SOURCE_PERMISSIONS
  123. PATTERN ".gitignore" EXCLUDE)
  124. install(DIRECTORY "${addfdir}/exec64/"
  125. DESTINATION "${OBS_EXECUTABLE64_DESTINATION}"
  126. USE_SOURCE_PERMISSIONS
  127. PATTERN ".gitignore" EXCLUDE)
  128. install(DIRECTORY "${addfdir}/libs32d/"
  129. DESTINATION "${OBS_LIBRARY32_DESTINATION}"
  130. USE_SOURCE_PERMISSIONS
  131. CONFIGURATIONS Debug
  132. PATTERN ".gitignore" EXCLUDE)
  133. install(DIRECTORY "${addfdir}/exec32d/"
  134. DESTINATION "${OBS_EXECUTABLE32_DESTINATION}"
  135. USE_SOURCE_PERMISSIONS
  136. CONFIGURATIONS Debug
  137. PATTERN ".gitignore" EXCLUDE)
  138. install(DIRECTORY "${addfdir}/libs64d/"
  139. DESTINATION "${OBS_LIBRARY64_DESTINATION}"
  140. USE_SOURCE_PERMISSIONS
  141. CONFIGURATIONS Debug
  142. PATTERN ".gitignore" EXCLUDE)
  143. install(DIRECTORY "${addfdir}/exec64d/"
  144. DESTINATION "${OBS_EXECUTABLE64_DESTINATION}"
  145. USE_SOURCE_PERMISSIONS
  146. CONFIGURATIONS Debug
  147. PATTERN ".gitignore" EXCLUDE)
  148. install(DIRECTORY "${addfdir}/libs32r/"
  149. DESTINATION "${OBS_LIBRARY32_DESTINATION}"
  150. USE_SOURCE_PERMISSIONS
  151. CONFIGURATIONS Release RelWithDebInfo MinSizeRel
  152. PATTERN ".gitignore" EXCLUDE)
  153. install(DIRECTORY "${addfdir}/exec32r/"
  154. DESTINATION "${OBS_EXECUTABLE32_DESTINATION}"
  155. USE_SOURCE_PERMISSIONS
  156. CONFIGURATIONS Release RelWithDebInfo MinSizeRel
  157. PATTERN ".gitignore" EXCLUDE)
  158. install(DIRECTORY "${addfdir}/libs64r/"
  159. DESTINATION "${OBS_LIBRARY64_DESTINATION}"
  160. USE_SOURCE_PERMISSIONS
  161. CONFIGURATIONS Release RelWithDebInfo MinSizeRel
  162. PATTERN ".gitignore" EXCLUDE)
  163. install(DIRECTORY "${addfdir}/exec64r/"
  164. DESTINATION "${OBS_EXECUTABLE64_DESTINATION}"
  165. USE_SOURCE_PERMISSIONS
  166. CONFIGURATIONS Release RelWithDebInfo MinSizeRel
  167. PATTERN ".gitignore" EXCLUDE)
  168. else()
  169. install(DIRECTORY "${addfdir}/libs${_lib_suffix}/"
  170. DESTINATION "${OBS_LIBRARY_DESTINATION}"
  171. USE_SOURCE_PERMISSIONS
  172. PATTERN ".gitignore" EXCLUDE)
  173. install(DIRECTORY "${addfdir}/exec${_lib_suffix}/"
  174. DESTINATION "${OBS_EXECUTABLE_DESTINATION}"
  175. USE_SOURCE_PERMISSIONS
  176. PATTERN ".gitignore" EXCLUDE)
  177. install(DIRECTORY "${addfdir}/libs${_lib_suffix}d/"
  178. DESTINATION "${OBS_LIBRARY_DESTINATION}"
  179. USE_SOURCE_PERMISSIONS
  180. CONFIGURATIONS Debug
  181. PATTERN ".gitignore" EXCLUDE)
  182. install(DIRECTORY "${addfdir}/exec${_lib_suffix}d/"
  183. DESTINATION "${OBS_EXECUTABLE_DESTINATION}"
  184. USE_SOURCE_PERMISSIONS
  185. CONFIGURATIONS Debug
  186. PATTERN ".gitignore" EXCLUDE)
  187. install(DIRECTORY "${addfdir}/libs${_lib_suffix}r/"
  188. DESTINATION "${OBS_LIBRARY_DESTINATION}"
  189. USE_SOURCE_PERMISSIONS
  190. CONFIGURATIONS Release RelWithDebInfo MinSizeRel
  191. PATTERN ".gitignore" EXCLUDE)
  192. install(DIRECTORY "${addfdir}/exec${_lib_suffix}r/"
  193. DESTINATION "${OBS_EXECUTABLE_DESTINATION}"
  194. USE_SOURCE_PERMISSIONS
  195. CONFIGURATIONS Release RelWithDebInfo MinSizeRel
  196. PATTERN ".gitignore" EXCLUDE)
  197. endif()
  198. obs_helper_copy_dir(${maintarget} ALL
  199. "${addfdir}/misc/"
  200. "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/")
  201. obs_helper_copy_dir(${maintarget} ALL
  202. "${addfdir}/data/"
  203. "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/${OBS_DATA_DESTINATION}/")
  204. obs_helper_copy_dir(${maintarget} ALL
  205. "${addfdir}/libs${_lib_suffix}/"
  206. "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/${OBS_LIBRARY_DESTINATION}/")
  207. obs_helper_copy_dir(${maintarget} ALL
  208. "${addfdir}/exec${_lib_suffix}/"
  209. "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/${OBS_EXECUTABLE_DESTINATION}/")
  210. obs_helper_copy_dir(${maintarget} "Release;MinSizeRel;RelWithDebInfo"
  211. "${addfdir}/exec${_lib_suffix}r/"
  212. "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/${OBS_EXECUTABLE_DESTINATION}/")
  213. obs_helper_copy_dir(${maintarget} "Debug"
  214. "${addfdir}/exec${_lib_suffix}d/"
  215. "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/${OBS_EXECUTABLE_DESTINATION}/")
  216. obs_helper_copy_dir(${maintarget} "Release;MinSizeRel;RelWithDebInfo"
  217. "${addfdir}/libs${_lib_suffix}r/"
  218. "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/${OBS_LIBRARY_DESTINATION}/")
  219. obs_helper_copy_dir(${maintarget} "Debug"
  220. "${addfdir}/libs${_lib_suffix}d/"
  221. "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/${OBS_LIBRARY_DESTINATION}/")
  222. endfunction()
  223. macro(export_obs_core target exportname)
  224. install(TARGETS ${target}
  225. EXPORT "${exportname}Target"
  226. LIBRARY DESTINATION "${OBS_LIBRARY_DESTINATION}"
  227. ARCHIVE DESTINATION "${OBS_LIBRARY_DESTINATION}"
  228. RUNTIME DESTINATION "${OBS_EXECUTABLE_DESTINATION}")
  229. export(TARGETS ${target} FILE "${CMAKE_CURRENT_BINARY_DIR}/${exportname}Target.cmake")
  230. export(PACKAGE "${exportname}")
  231. set(CONF_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}")
  232. set(CONF_PLUGIN_DEST "${CMAKE_BINARY_DIR}/rundir/${CMAKE_BUILD_TYPE}/obs-plugins/${_lib_suffix}bit")
  233. set(CONF_PLUGIN_DEST32 "${CMAKE_BINARY_DIR}/rundir/${CMAKE_BUILD_TYPE}/obs-plugins/32bit")
  234. set(CONF_PLUGIN_DEST64 "${CMAKE_BINARY_DIR}/rundir/${CMAKE_BUILD_TYPE}/obs-plugins/64bit")
  235. configure_file("${exportname}Config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${exportname}Config.cmake" @ONLY)
  236. file(RELATIVE_PATH _pdir "${CMAKE_INSTALL_PREFIX}/${OBS_CMAKE_DESTINATION}/${exportname}" "${CMAKE_INSTALL_PREFIX}")
  237. set(CONF_INCLUDE_DIRS "\${CMAKE_CURRENT_LIST_DIR}/${_pdir}${OBS_INCLUDE_DESTINATION}")
  238. set(CONF_PLUGIN_DEST "\${CMAKE_CURRENT_LIST_DIR}/${_pdir}${OBS_PLUGIN_DESTINATION}")
  239. set(CONF_PLUGIN_DEST32 "\${CMAKE_CURRENT_LIST_DIR}/${_pdir}${OBS_PLUGIN32_DESTINATION}")
  240. set(CONF_PLUGIN_DEST64 "\${CMAKE_CURRENT_LIST_DIR}/${_pdir}${OBS_PLUGIN64_DESTINATION}")
  241. configure_file("${exportname}Config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${exportname}Config.cmake" @ONLY)
  242. set(_pdir)
  243. configure_file("${exportname}ConfigVersion.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${exportname}ConfigVersion.cmake" @ONLY)
  244. install(FILES
  245. "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${exportname}Config.cmake"
  246. "${CMAKE_CURRENT_BINARY_DIR}/${exportname}ConfigVersion.cmake"
  247. DESTINATION "${OBS_CMAKE_DESTINATION}/${exportname}")
  248. install(EXPORT "${exportname}Target"
  249. DESTINATION "${OBS_CMAKE_DESTINATION}/${exportname}")
  250. endmacro()
  251. macro(install_obs_headers)
  252. foreach(hdr ${ARGN})
  253. if(IS_ABSOLUTE "${hdr}")
  254. set(subdir)
  255. else()
  256. get_filename_component(subdir "${hdr}" DIRECTORY)
  257. if(subdir)
  258. set(subdir "/${subdir}")
  259. endif()
  260. endif()
  261. install(FILES "${hdr}" DESTINATION "${OBS_INCLUDE_DESTINATION}${subdir}")
  262. endforeach()
  263. endmacro()
  264. function(obs_debug_copy_helper target dest)
  265. add_custom_command(TARGET ${target} POST_BUILD
  266. COMMAND "${CMAKE_COMMAND}"
  267. "-DCONFIG=$<CONFIGURATION>"
  268. "-DFNAME=$<TARGET_FILE_NAME:${target}>"
  269. "-DINPUT=$<TARGET_FILE_DIR:${target}>"
  270. "-DOUTPUT=${dest}"
  271. -P "${CMAKE_SOURCE_DIR}/cmake/copy_on_debug_helper.cmake"
  272. VERBATIM)
  273. endfunction()
  274. function(install_obs_pdb ttype target)
  275. if(NOT MSVC)
  276. return()
  277. endif()
  278. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  279. set(_bit_suffix "64bit")
  280. else()
  281. set(_bit_suffix "32bit")
  282. endif()
  283. obs_debug_copy_helper(${target} "${CMAKE_CURRENT_BINARY_DIR}/pdbs")
  284. if("${ttype}" STREQUAL "PLUGIN")
  285. obs_debug_copy_helper(${target} "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/obs-plugins/${_bit_suffix}")
  286. if(DEFINED ENV{obsInstallerTempDir})
  287. obs_debug_copy_helper(${target} "$ENV{obsInstallerTempDir}/${OBS_PLUGIN_DESTINATION}")
  288. endif()
  289. install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/pdbs/"
  290. DESTINATION "${OBS_PLUGIN_DESTINATION}"
  291. CONFIGURATIONS Debug RelWithDebInfo)
  292. else()
  293. obs_debug_copy_helper(${target} "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/bin/${_bit_suffix}")
  294. if(DEFINED ENV{obsInstallerTempDir})
  295. obs_debug_copy_helper(${target} "$ENV{obsInstallerTempDir}/${OBS_EXECUTABLE_DESTINATION}")
  296. endif()
  297. install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/pdbs/"
  298. DESTINATION "${OBS_EXECUTABLE_DESTINATION}"
  299. CONFIGURATIONS Debug RelWithDebInfo)
  300. endif()
  301. endfunction()
  302. macro(install_obs_core target)
  303. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  304. set(_bit_suffix "64bit/")
  305. else()
  306. set(_bit_suffix "32bit/")
  307. endif()
  308. if(APPLE)
  309. set(_bit_suffix "")
  310. endif()
  311. if("${ARGV1}" STREQUAL "EXPORT")
  312. export_obs_core("${target}" "${ARGV2}")
  313. else()
  314. install(TARGETS ${target}
  315. LIBRARY DESTINATION "${OBS_LIBRARY_DESTINATION}"
  316. RUNTIME DESTINATION "${OBS_EXECUTABLE_DESTINATION}")
  317. endif()
  318. add_custom_command(TARGET ${target} POST_BUILD
  319. COMMAND "${CMAKE_COMMAND}" -E copy
  320. "$<TARGET_FILE:${target}>"
  321. "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/bin/${_bit_suffix}$<TARGET_FILE_NAME:${target}>"
  322. VERBATIM)
  323. if(DEFINED ENV{obsInstallerTempDir})
  324. get_property(target_type TARGET ${target} PROPERTY TYPE)
  325. if("${target_type}" STREQUAL "EXECUTABLE")
  326. set(tmp_target_dir "${OBS_EXECUTABLE_DESTINATION}")
  327. else()
  328. set(tmp_target_dir "${OBS_LIBRARY_DESTINATION}")
  329. endif()
  330. add_custom_command(TARGET ${target} POST_BUILD
  331. COMMAND "${CMAKE_COMMAND}" -E copy
  332. "$<TARGET_FILE:${target}>"
  333. "$ENV{obsInstallerTempDir}/${tmp_target_dir}/$<TARGET_FILE_NAME:${target}>"
  334. VERBATIM)
  335. endif()
  336. install_obs_pdb(CORE ${target})
  337. endmacro()
  338. macro(install_obs_plugin target)
  339. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  340. set(_bit_suffix "64bit/")
  341. else()
  342. set(_bit_suffix "32bit/")
  343. endif()
  344. if(APPLE)
  345. set(_bit_suffix "")
  346. endif()
  347. install(TARGETS ${target}
  348. LIBRARY DESTINATION "${OBS_PLUGIN_DESTINATION}"
  349. RUNTIME DESTINATION "${OBS_PLUGIN_DESTINATION}")
  350. add_custom_command(TARGET ${target} POST_BUILD
  351. COMMAND "${CMAKE_COMMAND}" -E copy
  352. "$<TARGET_FILE:${target}>"
  353. "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/obs-plugins/${_bit_suffix}$<TARGET_FILE_NAME:${target}>"
  354. VERBATIM)
  355. if(DEFINED ENV{obsInstallerTempDir})
  356. add_custom_command(TARGET ${target} POST_BUILD
  357. COMMAND "${CMAKE_COMMAND}" -E copy
  358. "$<TARGET_FILE:${target}>" "$ENV{obsInstallerTempDir}/${OBS_PLUGIN_DESTINATION}/$<TARGET_FILE_NAME:${target}>"
  359. VERBATIM)
  360. endif()
  361. install_obs_pdb(PLUGIN ${target})
  362. endmacro()
  363. macro(install_obs_data target datadir datadest)
  364. install(DIRECTORY ${datadir}/
  365. DESTINATION "${OBS_DATA_DESTINATION}/${datadest}"
  366. USE_SOURCE_PERMISSIONS)
  367. add_custom_command(TARGET ${target} POST_BUILD
  368. COMMAND "${CMAKE_COMMAND}" -E copy_directory
  369. "${CMAKE_CURRENT_SOURCE_DIR}/${datadir}" "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/data/${datadest}"
  370. VERBATIM)
  371. if(CMAKE_SIZEOF_VOID_P EQUAL 8 AND DEFINED ENV{obsInstallerTempDir})
  372. add_custom_command(TARGET ${target} POST_BUILD
  373. COMMAND "${CMAKE_COMMAND}" -E copy_directory
  374. "${CMAKE_CURRENT_SOURCE_DIR}/${datadir}" "$ENV{obsInstallerTempDir}/${OBS_DATA_DESTINATION}/${datadest}"
  375. VERBATIM)
  376. endif()
  377. endmacro()
  378. macro(install_obs_datatarget target datadest)
  379. install(TARGETS ${target}
  380. LIBRARY DESTINATION "${OBS_DATA_DESTINATION}/${datadest}"
  381. RUNTIME DESTINATION "${OBS_DATA_DESTINATION}/${datadest}")
  382. add_custom_command(TARGET ${target} POST_BUILD
  383. COMMAND "${CMAKE_COMMAND}" -E copy
  384. "$<TARGET_FILE:${target}>"
  385. "${OBS_OUTPUT_DIR}/$<CONFIGURATION>/data/${datadest}/$<TARGET_FILE_NAME:${target}>"
  386. VERBATIM)
  387. if(DEFINED ENV{obsInstallerTempDir})
  388. add_custom_command(TARGET ${target} POST_BUILD
  389. COMMAND "${CMAKE_COMMAND}" -E copy
  390. "$<TARGET_FILE:${target}>"
  391. "$ENV{obsInstallerTempDir}/${OBS_DATA_DESTINATION}/${datadest}/$<TARGET_FILE_NAME:${target}>"
  392. VERBATIM)
  393. endif()
  394. endmacro()
  395. macro(install_obs_plugin_data target datadir)
  396. install_obs_plugin(${target})
  397. install_obs_data(${target} "${datadir}" "obs-plugins/${target}")
  398. endmacro()