ObsHelpers.cmake 16 KB

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