ObsHelpers.cmake 16 KB

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