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
This commit is contained in:
Thomas Preud'homme 2022-11-17 23:35:18 +00:00
parent 234d2e27db
commit ecfa2d3d99
15 changed files with 118 additions and 7 deletions

View File

@ -32,6 +32,10 @@ configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/ClangConfig.cmake.in
${clang_cmake_builddir}/ClangConfig.cmake
@ONLY)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/ClangConfigVersion.cmake.in
${clang_cmake_builddir}/ClangConfigVersion.cmake
@ONLY)
set(CLANG_CONFIG_CMAKE_DIR)
set(CLANG_CONFIG_LLVM_CMAKE_DIR)
@ -59,6 +63,10 @@ configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/ClangConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/ClangConfig.cmake
@ONLY)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/ClangConfigVersion.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/ClangConfigVersion.cmake
@ONLY)
set(CLANG_CONFIG_CODE)
set(CLANG_CONFIG_CMAKE_DIR)
@ -67,6 +75,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/ClangConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/ClangConfigVersion.cmake
${CMAKE_CURRENT_SOURCE_DIR}/AddClang.cmake
DESTINATION ${CLANG_INSTALL_PACKAGE_DIR}
COMPONENT clang-cmake-exports)

View File

@ -2,7 +2,8 @@
@CLANG_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 "@CLANG_CONFIG_LLVM_CMAKE_DIR@")
set(CLANG_EXPORTED_TARGETS "@CLANG_EXPORTS@")

View File

@ -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()

View File

@ -28,8 +28,8 @@ set(FLANG_CONFIG_INCLUDE_DIRS
"${FLANG_BINARY_DIR}/include"
)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/FlangConfig.cmake.in
${flang_cmake_builddir}/FlangConfig.cmake
${CMAKE_CURRENT_SOURCE_DIR}/FlangConfigVersion.cmake.in
${flang_cmake_builddir}/FlangConfigVersion.cmake
@ONLY)
set(FLANG_CONFIG_CMAKE_DIR)
set(FLANG_CONFIG_LLVM_CMAKE_DIR)
@ -46,6 +46,10 @@ configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/FlangConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/FlangConfig.cmake
@ONLY)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/FlangConfigVersion.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/FlangConfigVersion.cmake
@ONLY)
set(FLANG_CONFIG_CODE)
set(FLANG_CONFIG_CMAKE_DIR)
@ -56,6 +60,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/FlangConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/FlangConfigVersion.cmake
DESTINATION ${FLANG_INSTALL_PACKAGE_DIR}
COMPONENT flang-cmake-exports)

View File

@ -2,7 +2,8 @@
@FLANG_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 "@FLANG_CONFIG_LLVM_CMAKE_DIR@")
set(FLANG_EXPORTED_TARGETS "@FLANG_EXPORTS@")

View File

@ -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()

View File

@ -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)

View File

@ -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@")

View File

@ -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()

View File

@ -41,6 +41,10 @@ configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/MLIRConfig.cmake.in
${mlir_cmake_builddir}/MLIRConfig.cmake
@ONLY)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/MLIRConfigVersion.cmake.in
${mlir_cmake_builddir}/MLIRConfigVersion.cmake
@ONLY)
set(MLIR_CONFIG_CMAKE_DIR)
set(MLIR_CONFIG_LLVM_CMAKE_DIR)
set(MLIR_CONFIG_INCLUDE_DIRS)
@ -75,6 +79,10 @@ configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/MLIRConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/MLIRConfig.cmake
@ONLY)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/MLIRConfigVersion.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/MLIRConfigVersion.cmake
@ONLY)
set(MLIR_CONFIG_CODE)
set(MLIR_CONFIG_CMAKE_DIR)
set(MLIR_CONFIG_LLVM_CMAKE_DIR)
@ -87,6 +95,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/MLIRConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/MLIRConfigVersion.cmake
${CMAKE_CURRENT_SOURCE_DIR}/AddMLIR.cmake
${CMAKE_CURRENT_SOURCE_DIR}/AddMLIRPython.cmake
${CMAKE_CURRENT_SOURCE_DIR}/MLIRDetectPythonEnv.cmake

View File

@ -2,7 +2,8 @@
@MLIR_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 "@MLIR_CONFIG_LLVM_CMAKE_DIR@")
set(MLIR_EXPORTED_TARGETS "@MLIR_EXPORTS@")

View File

@ -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()

View File

@ -82,6 +82,10 @@ configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/PollyConfig.cmake.in
${polly_cmake_builddir}/PollyConfig.cmake
@ONLY)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/PollyConfigVersion.cmake.in
${polly_cmake_builddir}/PollyConfigVersion.cmake
@ONLY)
file(GENERATE
OUTPUT ${polly_cmake_builddir}/${POLLY_EXPORTS_FILE_NAME}
@ -138,6 +142,10 @@ configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/PollyConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/PollyConfig.cmake
@ONLY)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/PollyConfigVersion.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/PollyConfigVersion.cmake
@ONLY)
file(GENERATE OUTPUT
${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${POLLY_EXPORTS_FILE_NAME}
CONTENT "${POLLY_EXPORTS}")
@ -146,6 +154,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
install(
FILES
"${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/PollyConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/PollyConfigVersion.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${POLLY_EXPORTS_FILE_NAME}"
DESTINATION "${POLLY_INSTALL_PACKAGE_DIR}")
endif ()

View File

@ -2,7 +2,8 @@
@POLLY_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 "@POLLY_CONFIG_LLVM_CMAKE_DIR@")
set(Polly_CMAKE_DIR ${CMAKE_CURRENT_LIST_DIR})

View File

@ -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()