PackageUtilities.cmake 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #[[
  2. Utility functions used for packaging RmlUi.
  3. ]]
  4. #[[
  5. Install all license files, including for all installed packages in vcpkg if in use.
  6. ]]
  7. function(install_licenses)
  8. set(bin_licenses_dir "${CMAKE_CURRENT_BINARY_DIR}/Licenses")
  9. configure_file("${PROJECT_SOURCE_DIR}/LICENSE.txt"
  10. "${bin_licenses_dir}/LICENSE.txt" COPYONLY
  11. )
  12. configure_file("${PROJECT_SOURCE_DIR}/Include/RmlUi/Core/Containers/LICENSE.txt"
  13. "${bin_licenses_dir}/LICENSE.Core.ThirdParty.txt" COPYONLY
  14. )
  15. configure_file("${PROJECT_SOURCE_DIR}/Source/Debugger/LICENSE.txt"
  16. "${bin_licenses_dir}/LICENSE.Debugger.ThirdParty.txt" COPYONLY
  17. )
  18. if(VCPKG_TOOLCHAIN)
  19. set(vcpkg_share_dir "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/share")
  20. file(GLOB copyright_files "${vcpkg_share_dir}/*/copyright")
  21. foreach(copyright_file IN LISTS copyright_files)
  22. get_filename_component(name ${copyright_file} DIRECTORY)
  23. get_filename_component(name ${name} NAME)
  24. if(NOT "${name}" MATCHES "^vcpkg-")
  25. set(copy_destination "${bin_licenses_dir}/Dependencies/${name}.txt")
  26. configure_file(${copyright_file} ${copy_destination} COPYONLY)
  27. endif()
  28. endforeach()
  29. endif()
  30. install(DIRECTORY "${bin_licenses_dir}/" DESTINATION "${CMAKE_INSTALL_DATADIR}")
  31. endfunction()
  32. #[[
  33. Install a text file with build info.
  34. ]]
  35. function(install_build_info)
  36. if(NOT RMLUI_ARCHITECTURE OR NOT RMLUI_COMMIT_DATE OR NOT RMLUI_RUN_ID OR NOT RMLUI_SHA)
  37. message(FATAL_ERROR "Cannot install build info: Missing variables")
  38. endif()
  39. generate_rmlui_version_string()
  40. file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/Build.txt"
  41. "RmlUi ${RMLUI_VERSION_SHORT} binaries for ${RMLUI_ARCHITECTURE}.\n\n"
  42. "https://github.com/mikke89/RmlUi\n\n"
  43. "Built using ${CMAKE_GENERATOR} (${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}) on ${RMLUI_COMMIT_DATE} (run ${RMLUI_RUN_ID}).\n"
  44. "Commit id: ${RMLUI_SHA}"
  45. )
  46. install(FILES "${CMAKE_CURRENT_BINARY_DIR}/Build.txt"
  47. DESTINATION "${CMAKE_INSTALL_DATADIR}"
  48. )
  49. endfunction()
  50. #[[
  51. Install all dependencies found for the current vcpkg target triplet.
  52. ]]
  53. function(install_vcpkg_dependencies)
  54. if(NOT VCPKG_TOOLCHAIN)
  55. message(FATAL_ERROR "Cannot install vcpkg dependencies: vcpkg not in use")
  56. endif()
  57. set(vcpkg_triplet_dir "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}")
  58. set(common_patterns
  59. PATTERN "${VCPKG_TARGET_TRIPLET}/tools" EXCLUDE
  60. PATTERN "pkgconfig" EXCLUDE
  61. PATTERN "vcpkg*" EXCLUDE
  62. PATTERN "*.pdb" EXCLUDE
  63. )
  64. message(STATUS "Installing vcpkg dependencies from: ${vcpkg_triplet_dir}")
  65. install(DIRECTORY "${vcpkg_triplet_dir}/"
  66. DESTINATION "${RMLUI_INSTALL_DEPENDENCIES_DIR}"
  67. CONFIGURATIONS "Release"
  68. ${common_patterns}
  69. PATTERN "debug" EXCLUDE
  70. PATTERN "*debug.cmake" EXCLUDE
  71. )
  72. install(DIRECTORY "${vcpkg_triplet_dir}/"
  73. DESTINATION "${RMLUI_INSTALL_DEPENDENCIES_DIR}"
  74. CONFIGURATIONS "Debug"
  75. ${common_patterns}
  76. PATTERN "${VCPKG_TARGET_TRIPLET}/bin" EXCLUDE
  77. PATTERN "${VCPKG_TARGET_TRIPLET}/lib" EXCLUDE
  78. PATTERN "*release.cmake" EXCLUDE
  79. )
  80. endfunction()