aboutsummaryrefslogtreecommitdiff
path: root/lld/cmake
diff options
context:
space:
mode:
authorThomas Preud'homme <thomasp@graphcore.ai>2022-11-17 23:35:18 +0000
committerThomas Preud'homme <thomasp@graphcore.ai>2022-11-25 21:57:58 +0000
commitecfa2d3d9943a48411d04a4b3103c42b4653d9af (patch)
treec89ebf87f5b1c22d4a81060f4db8c5704712dbcc /lld/cmake
parent234d2e27db2ed4b958e31fe7db10941e6ce1b84e (diff)
downloadllvm-ecfa2d3d9943a48411d04a4b3103c42b4653d9af.zip
llvm-ecfa2d3d9943a48411d04a4b3103c42b4653d9af.tar.gz
llvm-ecfa2d3d9943a48411d04a4b3103c42b4653d9af.tar.bz2
Add version to all LLVM cmake package
Add a version to non-LLVM cmake package so that users needing an exact version match can use the version parameter to find_package. Also adjust the find_package(LLVM) to use an exact version match as well. Reviewed By: arsenm, stellaraccident, mceier Differential Revision: https://reviews.llvm.org/D138274
Diffstat (limited to 'lld/cmake')
-rw-r--r--lld/cmake/modules/CMakeLists.txt9
-rw-r--r--lld/cmake/modules/LLDConfig.cmake.in3
-rw-r--r--lld/cmake/modules/LLDConfigVersion.cmake.in13
3 files changed, 24 insertions, 1 deletions
diff --git a/lld/cmake/modules/CMakeLists.txt b/lld/cmake/modules/CMakeLists.txt
index 61e7a1f..e0578d7 100644
--- a/lld/cmake/modules/CMakeLists.txt
+++ b/lld/cmake/modules/CMakeLists.txt
@@ -31,6 +31,10 @@ configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/LLDConfig.cmake.in
${lld_cmake_builddir}/LLDConfig.cmake
@ONLY)
+configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/LLDConfigVersion.cmake.in
+ ${lld_cmake_builddir}/LLDConfigVersion.cmake
+ @ONLY)
set(LLD_CONFIG_CMAKE_DIR)
set(LLD_CONFIG_LLVM_CMAKE_DIR)
@@ -44,6 +48,10 @@ configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/LLDConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLDConfig.cmake
@ONLY)
+configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/LLDConfigVersion.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLDConfigVersion.cmake
+ @ONLY)
set(LLD_CONFIG_CODE)
set(LLD_CONFIG_CMAKE_DIR)
@@ -52,6 +60,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLDConfig.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLDConfigVersion.cmake
DESTINATION ${LLD_INSTALL_PACKAGE_DIR}
COMPONENT lld-cmake-exports)
diff --git a/lld/cmake/modules/LLDConfig.cmake.in b/lld/cmake/modules/LLDConfig.cmake.in
index 38ca429..6c48de6 100644
--- a/lld/cmake/modules/LLDConfig.cmake.in
+++ b/lld/cmake/modules/LLDConfig.cmake.in
@@ -2,7 +2,8 @@
@LLD_CONFIG_CODE@
-find_package(LLVM REQUIRED CONFIG
+set(LLVM_VERSION @LLVM_VERSION_MAJOR@.@LLVM_VERSION_MINOR@.@LLVM_VERSION_PATCH@)
+find_package(LLVM ${LLVM_VERSION} EXACT REQUIRED CONFIG
HINTS "@LLD_CONFIG_LLVM_CMAKE_DIR@")
set(LLD_EXPORTED_TARGETS "@LLD_EXPORTS@")
diff --git a/lld/cmake/modules/LLDConfigVersion.cmake.in b/lld/cmake/modules/LLDConfigVersion.cmake.in
new file mode 100644
index 0000000..e9ac4ed
--- /dev/null
+++ b/lld/cmake/modules/LLDConfigVersion.cmake.in
@@ -0,0 +1,13 @@
+set(PACKAGE_VERSION "@PACKAGE_VERSION@")
+
+# LLVM is API-compatible only with matching major.minor versions
+# and patch versions not less than that requested.
+if("@LLVM_VERSION_MAJOR@.@LLVM_VERSION_MINOR@" VERSION_EQUAL
+ "${PACKAGE_FIND_VERSION_MAJOR}.${PACKAGE_FIND_VERSION_MINOR}"
+ AND NOT "@LLVM_VERSION_PATCH@" VERSION_LESS "${PACKAGE_FIND_VERSION_PATCH}")
+ set(PACKAGE_VERSION_COMPATIBLE 1)
+ if("@LLVM_VERSION_PATCH@" VERSION_EQUAL
+ "${PACKAGE_FIND_VERSION_PATCH}")
+ set(PACKAGE_VERSION_EXACT 1)
+ endif()
+endif()