summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorov-l <186710607+ov-l@users.noreply.github.com>2024-12-03 18:50:11 +0100
committerGitHub <noreply@github.com>2024-12-03 17:50:11 +0000
commit5d8cf475b352ab517c565ccee59461640da63a2a (patch)
tree8e9a311cc712df112ffe290821751b0276e10f97 /CMakeLists.txt
parent6c655ca927a440d1f03339295235fce2a764c26b (diff)
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 <obi.de.online@gmail.com>
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt40
1 files changed, 40 insertions, 0 deletions
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
+)