Teach LLVMConfigVersion.cmake to behave as find_package() expects.
authorEric Christopher <echristo@gmail.com>
Wed, 16 Apr 2014 23:15:31 +0000 (23:15 +0000)
committerEric Christopher <echristo@gmail.com>
Wed, 16 Apr 2014 23:15:31 +0000 (23:15 +0000)
Patch by Brad King

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206426 91177308-0d34-0410-b5e6-96231b3b80d8

cmake/modules/LLVMConfigVersion.cmake.in
cmake/modules/Makefile

index add5aa9a1cbb0d544fe4f47ad79c9ef5f8b239b7..e9ac4ed2da7865ea2c80a3e4fb628f599e3e2999 100644 (file)
@@ -1 +1,13 @@
-set(PACKAGE_VERSION "@PACKAGE_VERSION@")
\ No newline at end of file
+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()
index 817f911ea7c8760cbcfd23791bdaa7a0af1a69bc..265c1f8ec14b2ba9a55796501271271ec68a1178 100644 (file)
@@ -52,6 +52,9 @@ $(PROJ_OBJ_DIR)/LLVMConfigVersion.cmake: LLVMConfigVersion.cmake.in
        $(Echo) 'Generating LLVM CMake package version file'
        $(Verb) cat $< | sed \
          -e 's/@PACKAGE_VERSION@/'"$(LLVMVersion)"'/' \
+         -e 's/@LLVM_VERSION_MAJOR@/'"$(LLVM_VERSION_MAJOR)"'/' \
+         -e 's/@LLVM_VERSION_MINOR@/'"$(LLVM_VERSION_MINOR)"'/' \
+         -e 's/@LLVM_VERSION_PATCH@/'"$(LLVM_VERSION_PATCH)"'/' \
          > $@
 
 $(PROJ_OBJ_DIR)/LLVMExports.cmake: $(LLVMBuildCMakeExportsFrag)