Skip to content

Commit ad485b7

Browse files
author
Thomas Preud'homme
committed
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 Differential Revision: https://reviews.llvm.org/D138274
1 parent aac1c3b commit ad485b7

15 files changed

+118
-7
lines changed

clang/cmake/modules/CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ configure_file(
3232
${CMAKE_CURRENT_SOURCE_DIR}/ClangConfig.cmake.in
3333
${clang_cmake_builddir}/ClangConfig.cmake
3434
@ONLY)
35+
configure_file(
36+
${CMAKE_CURRENT_SOURCE_DIR}/ClangConfigVersion.cmake.in
37+
${clang_cmake_builddir}/ClangConfigVersion.cmake
38+
@ONLY)
3539
set(CLANG_CONFIG_CMAKE_DIR)
3640
set(CLANG_CONFIG_LLVM_CMAKE_DIR)
3741

@@ -59,6 +63,10 @@ configure_file(
5963
${CMAKE_CURRENT_SOURCE_DIR}/ClangConfig.cmake.in
6064
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/ClangConfig.cmake
6165
@ONLY)
66+
configure_file(
67+
${CMAKE_CURRENT_SOURCE_DIR}/ClangConfigVersion.cmake.in
68+
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/ClangConfigVersion.cmake
69+
@ONLY)
6270
set(CLANG_CONFIG_CODE)
6371
set(CLANG_CONFIG_CMAKE_DIR)
6472

@@ -67,6 +75,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
6775

6876
install(FILES
6977
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/ClangConfig.cmake
78+
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/ClangConfigVersion.cmake
7079
${CMAKE_CURRENT_SOURCE_DIR}/AddClang.cmake
7180
DESTINATION ${CLANG_INSTALL_PACKAGE_DIR}
7281
COMPONENT clang-cmake-exports)

clang/cmake/modules/ClangConfig.cmake.in

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
@CLANG_CONFIG_CODE@
44

5-
find_package(LLVM REQUIRED CONFIG
5+
set(LLVM_VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH})
6+
find_package(LLVM @LLVM_VERSION@ EXACT REQUIRED CONFIG
67
HINTS "@CLANG_CONFIG_LLVM_CMAKE_DIR@")
78

89
set(CLANG_EXPORTED_TARGETS "@CLANG_EXPORTS@")
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
set(PACKAGE_VERSION "@PACKAGE_VERSION@")
2+
3+
# LLVM is API-compatible only with matching major.minor versions
4+
# and patch versions not less than that requested.
5+
if("@LLVM_VERSION_MAJOR@.@LLVM_VERSION_MINOR@" VERSION_EQUAL
6+
"${PACKAGE_FIND_VERSION_MAJOR}.${PACKAGE_FIND_VERSION_MINOR}"
7+
AND NOT "@LLVM_VERSION_PATCH@" VERSION_LESS "${PACKAGE_FIND_VERSION_PATCH}")
8+
set(PACKAGE_VERSION_COMPATIBLE 1)
9+
if("@LLVM_VERSION_PATCH@" VERSION_EQUAL
10+
"${PACKAGE_FIND_VERSION_PATCH}")
11+
set(PACKAGE_VERSION_EXACT 1)
12+
endif()
13+
endif()

flang/cmake/modules/CMakeLists.txt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ set(FLANG_CONFIG_INCLUDE_DIRS
2828
"${FLANG_BINARY_DIR}/include"
2929
)
3030
configure_file(
31-
${CMAKE_CURRENT_SOURCE_DIR}/FlangConfig.cmake.in
32-
${flang_cmake_builddir}/FlangConfig.cmake
31+
${CMAKE_CURRENT_SOURCE_DIR}/FlangConfigVersion.cmake.in
32+
${flang_cmake_builddir}/FlangConfigVersion.cmake
3333
@ONLY)
3434
set(FLANG_CONFIG_CMAKE_DIR)
3535
set(FLANG_CONFIG_LLVM_CMAKE_DIR)
@@ -46,6 +46,10 @@ configure_file(
4646
${CMAKE_CURRENT_SOURCE_DIR}/FlangConfig.cmake.in
4747
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/FlangConfig.cmake
4848
@ONLY)
49+
configure_file(
50+
${CMAKE_CURRENT_SOURCE_DIR}/FlangConfigVersion.cmake.in
51+
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/FlangConfigVersion.cmake
52+
@ONLY)
4953

5054
set(FLANG_CONFIG_CODE)
5155
set(FLANG_CONFIG_CMAKE_DIR)
@@ -56,6 +60,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
5660

5761
install(FILES
5862
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/FlangConfig.cmake
63+
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/FlangConfigVersion.cmake
5964
DESTINATION ${FLANG_INSTALL_PACKAGE_DIR}
6065
COMPONENT flang-cmake-exports)
6166

flang/cmake/modules/FlangConfig.cmake.in

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
@FLANG_CONFIG_CODE@
44

5-
find_package(LLVM REQUIRED CONFIG
5+
set(LLVM_VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH})
6+
find_package(LLVM @LLVM_VERSION@ EXACT REQUIRED CONFIG
67
HINTS "@FLANG_CONFIG_LLVM_CMAKE_DIR@")
78

89
set(FLANG_EXPORTED_TARGETS "@FLANG_EXPORTS@")
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
set(PACKAGE_VERSION "@PACKAGE_VERSION@")
2+
3+
# LLVM is API-compatible only with matching major.minor versions
4+
# and patch versions not less than that requested.
5+
if("@LLVM_VERSION_MAJOR@.@LLVM_VERSION_MINOR@" VERSION_EQUAL
6+
"${PACKAGE_FIND_VERSION_MAJOR}.${PACKAGE_FIND_VERSION_MINOR}"
7+
AND NOT "@LLVM_VERSION_PATCH@" VERSION_LESS "${PACKAGE_FIND_VERSION_PATCH}")
8+
set(PACKAGE_VERSION_COMPATIBLE 1)
9+
if("@LLVM_VERSION_PATCH@" VERSION_EQUAL
10+
"${PACKAGE_FIND_VERSION_PATCH}")
11+
set(PACKAGE_VERSION_EXACT 1)
12+
endif()
13+
endif()

lld/cmake/modules/CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ configure_file(
3131
${CMAKE_CURRENT_SOURCE_DIR}/LLDConfig.cmake.in
3232
${lld_cmake_builddir}/LLDConfig.cmake
3333
@ONLY)
34+
configure_file(
35+
${CMAKE_CURRENT_SOURCE_DIR}/LLDConfigVersion.cmake.in
36+
${lld_cmake_builddir}/LLDConfigVersion.cmake
37+
@ONLY)
3438
set(LLD_CONFIG_CMAKE_DIR)
3539
set(LLD_CONFIG_LLVM_CMAKE_DIR)
3640

@@ -44,6 +48,10 @@ configure_file(
4448
${CMAKE_CURRENT_SOURCE_DIR}/LLDConfig.cmake.in
4549
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLDConfig.cmake
4650
@ONLY)
51+
configure_file(
52+
${CMAKE_CURRENT_SOURCE_DIR}/LLDConfigVersion.cmake.in
53+
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLDConfigVersion.cmake
54+
@ONLY)
4755
set(LLD_CONFIG_CODE)
4856
set(LLD_CONFIG_CMAKE_DIR)
4957

@@ -52,6 +60,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
5260

5361
install(FILES
5462
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLDConfig.cmake
63+
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLDConfigVersion.cmake
5564
DESTINATION ${LLD_INSTALL_PACKAGE_DIR}
5665
COMPONENT lld-cmake-exports)
5766

lld/cmake/modules/LLDConfig.cmake.in

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
@LLD_CONFIG_CODE@
44

5-
find_package(LLVM REQUIRED CONFIG
5+
set(LLVM_VERSION ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH})
6+
find_package(LLVM @LLVM_VERSION@ EXACT REQUIRED CONFIG
67
HINTS "@LLD_CONFIG_LLVM_CMAKE_DIR@")
78

89
set(LLD_EXPORTED_TARGETS "@LLD_EXPORTS@")
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
set(PACKAGE_VERSION "@PACKAGE_VERSION@")
2+
3+
# LLVM is API-compatible only with matching major.minor versions
4+
# and patch versions not less than that requested.
5+
if("@LLVM_VERSION_MAJOR@.@LLVM_VERSION_MINOR@" VERSION_EQUAL
6+
"${PACKAGE_FIND_VERSION_MAJOR}.${PACKAGE_FIND_VERSION_MINOR}"
7+
AND NOT "@LLVM_VERSION_PATCH@" VERSION_LESS "${PACKAGE_FIND_VERSION_PATCH}")
8+
set(PACKAGE_VERSION_COMPATIBLE 1)
9+
if("@LLVM_VERSION_PATCH@" VERSION_EQUAL
10+
"${PACKAGE_FIND_VERSION_PATCH}")
11+
set(PACKAGE_VERSION_EXACT 1)
12+
endif()
13+
endif()

mlir/cmake/modules/CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ configure_file(
4141
${CMAKE_CURRENT_SOURCE_DIR}/MLIRConfig.cmake.in
4242
${mlir_cmake_builddir}/MLIRConfig.cmake
4343
@ONLY)
44+
configure_file(
45+
${CMAKE_CURRENT_SOURCE_DIR}/MLIRConfigVersion.cmake.in
46+
${mlir_cmake_builddir}/MLIRConfigVersion.cmake
47+
@ONLY)
4448
set(MLIR_CONFIG_CMAKE_DIR)
4549
set(MLIR_CONFIG_LLVM_CMAKE_DIR)
4650
set(MLIR_CONFIG_INCLUDE_DIRS)
@@ -75,6 +79,10 @@ configure_file(
7579
${CMAKE_CURRENT_SOURCE_DIR}/MLIRConfig.cmake.in
7680
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/MLIRConfig.cmake
7781
@ONLY)
82+
configure_file(
83+
${CMAKE_CURRENT_SOURCE_DIR}/MLIRConfigVersion.cmake.in
84+
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/MLIRConfigVersion.cmake
85+
@ONLY)
7886
set(MLIR_CONFIG_CODE)
7987
set(MLIR_CONFIG_CMAKE_DIR)
8088
set(MLIR_CONFIG_LLVM_CMAKE_DIR)
@@ -87,6 +95,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
8795

8896
install(FILES
8997
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/MLIRConfig.cmake
98+
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/MLIRConfigVersion.cmake
9099
${CMAKE_CURRENT_SOURCE_DIR}/AddMLIR.cmake
91100
${CMAKE_CURRENT_SOURCE_DIR}/AddMLIRPython.cmake
92101
${CMAKE_CURRENT_SOURCE_DIR}/MLIRDetectPythonEnv.cmake

0 commit comments

Comments
 (0)