diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt index 8276126e9ed..505dc9a29d7 100644 --- a/cmake/modules/CMakeLists.txt +++ b/cmake/modules/CMakeLists.txt @@ -127,13 +127,11 @@ configure_file( ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/LLVMConfig.cmake @ONLY) -# Generate LLVMConfigVersion.cmake for build tree (later copied to install tree). -include(CMakePackageConfigHelpers) -write_basic_package_version_file( - "${llvm_cmake_builddir}/LLVMConfigVersion.cmake" - VERSION "${PACKAGE_VERSION}" - COMPATIBILITY SameMinorVersion -) +# Generate LLVMConfigVersion.cmake for build and install tree. +configure_file( + LLVMConfigVersion.cmake.in + ${llvm_cmake_builddir}/LLVMConfigVersion.cmake + @ONLY) if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) get_property(llvm_has_exports GLOBAL PROPERTY LLVM_HAS_EXPORTS) diff --git a/cmake/modules/LLVMConfigVersion.cmake.in b/cmake/modules/LLVMConfigVersion.cmake.in new file mode 100644 index 00000000000..e9ac4ed2da7 --- /dev/null +++ b/cmake/modules/LLVMConfigVersion.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()