From 5d8cf475b352ab517c565ccee59461640da63a2a Mon Sep 17 00:00:00 2001 From: ov-l <186710607+ov-l@users.noreply.github.com> Date: Tue, 3 Dec 2024 18:50:11 +0100 Subject: Add SlangConfig.cmake with slang build targets (#5674) * Modify package config * Apply formatting. * Make sure build works for Emscripten * Add documentation on install target. --------- Co-authored-by: obhi-d --- CMakeLists.txt | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index dc281211e..5a53ba731 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -338,3 +338,43 @@ install(DIRECTORY "${slang_SOURCE_DIR}/docs/" DESTINATION share/doc/slang) install(DIRECTORY "${slang_SOURCE_DIR}/include" DESTINATION .) include(CPack) + +# Write basic package config version file using standard CMakePackageConfigHelpers utility +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + "${PROJECT_NAME}ConfigVersion.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion +) + +# Write SlangConfig.cmake which should allow find_pacakage(SLANG) to work correctly +# SlangConfig.cmake will define slang::slang target that can be linked with using +# target_link_libraries. It will also define SLANG_EXECUTABLE export variable that +# should point to slangc if SLANG_ENABLE_SLANGC is ON. +configure_package_config_file( + "${PROJECT_SOURCE_DIR}/cmake/SlangConfig.cmake.in" + "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + INSTALL_DESTINATION cmake +) + +# Conditionally handle the case for Emscripten where slang does not create linkable +# targets. In this case do not export the targets. Otherwise, just export the +# slang target, as this is the library that is required to use the compiler. This possibly +# should later be expanded to include slang-rhi targets if some program intends to use them, +# but possibly wait for a future request before expanding this export set. +if(NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten") + install(TARGETS slang EXPORT SlangExportTarget) + install( + EXPORT SlangExportTarget + FILE ${PROJECT_NAME}Targets.cmake + NAMESPACE ${PROJECT_NAME}:: + DESTINATION cmake + ) +endif() + +install( + FILES + "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" + DESTINATION cmake +) -- cgit v1.2.3