Added LibFTDI1ConfigVersion to allow version detection
authorxantares <xantares09@hotmail.com>
Thu, 5 Jun 2014 19:44:41 +0000 (21:44 +0200)
committerThomas Jarosch <thomas.jarosch@intra2net.com>
Thu, 12 Jun 2014 11:49:27 +0000 (13:49 +0200)
CMakeLists.txt
cmake/LibFTDI1ConfigVersion.cmake.in [new file with mode: 0644]

index e8688d4..08e5771 100644 (file)
@@ -201,9 +201,42 @@ set ( LIBFTDI_VERSION_MAJOR ${MAJOR_VERSION} )
 set ( LIBFTDI_VERSION_MINOR ${MINOR_VERSION} )
 
 set ( LIBFTDI_USE_FILE ${CMAKE_INSTALL_PREFIX}/${LIBFTDI_CMAKE_CONFIG_DIR}/UseLibFTDI1.cmake )
-configure_file ( cmake/LibFTDI1Config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/LibFTDI1Config.cmake @ONLY )
-install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/LibFTDI1Config.cmake cmake/UseLibFTDI1.cmake
+
+if(CMAKE_VERSION VERSION_LESS 2.8.8) 
+  configure_file ( cmake/LibFTDI1Config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/LibFTDI1Config.cmake @ONLY )
+  configure_file ( cmake/LibFTDI1ConfigVersion.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/LibFTDI1ConfigVersion.cmake @ONLY )
+else ()
+  include(CMakePackageConfigHelpers)    
+  
+  configure_package_config_file (
+    cmake/LibFTDI1Config.cmake.in
+    ${CMAKE_CURRENT_BINARY_DIR}/LibFTDI1Config.cmake
+    INSTALL_DESTINATION ${LIBFTDI_CMAKE_CONFIG_DIR}
+    PATH_VARS
+      LIBFTDI_USE_FILE
+      LIBFTDI_ROOT_DIR
+      LIBFTDI_INCLUDE_DIR
+      LIBFTDI_INCLUDE_DIRS
+      LIBFTDI_LIBRARY_DIRS
+    NO_CHECK_REQUIRED_COMPONENTS_MACRO
+  )
+  write_basic_package_version_file (
+    LibFTDI1ConfigVersion.cmake 
+    VERSION ${LIBFTDI_VERSION_STRING} 
+    COMPATIBILITY AnyNewerVersion
+  ) 
+endif ()        
+
+
+install ( FILES 
+            ${CMAKE_CURRENT_BINARY_DIR}/LibFTDI1Config.cmake
+            ${CMAKE_CURRENT_BINARY_DIR}/LibFTDI1ConfigVersion.cmake
+            cmake/UseLibFTDI1.cmake
+            
           DESTINATION ${LIBFTDI_CMAKE_CONFIG_DIR}
         )
 
+
+        
+        
 include(CPack)
diff --git a/cmake/LibFTDI1ConfigVersion.cmake.in b/cmake/LibFTDI1ConfigVersion.cmake.in
new file mode 100644 (file)
index 0000000..ed0d463
--- /dev/null
@@ -0,0 +1,31 @@
+# This is a basic version file for the Config-mode of find_package().
+# It is used by write_basic_package_version_file() as input file for configure_file()
+# to create a version-file which can be installed along a config.cmake file.
+#
+# The created file sets PACKAGE_VERSION_EXACT if the current version string and
+# the requested version string are exactly the same and it sets
+# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version.
+# The variable CVF_VERSION must be set before calling configure_file().
+
+set(PACKAGE_VERSION "@LIBFTDI_VERSION_STRING@")
+
+if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" )
+  set(PACKAGE_VERSION_COMPATIBLE FALSE)
+else()
+  set(PACKAGE_VERSION_COMPATIBLE TRUE)
+  if( "${PACKAGE_FIND_VERSION}" STREQUAL "${PACKAGE_VERSION}")
+    set(PACKAGE_VERSION_EXACT TRUE)
+  endif()
+endif()
+
+# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
+if("${CMAKE_SIZEOF_VOID_P}"  STREQUAL ""  OR "8" STREQUAL "")
+   return()
+endif()
+
+# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
+if(NOT "${CMAKE_SIZEOF_VOID_P}"  STREQUAL  "8")
+   math(EXPR installedBits "8 * 8")
+   set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
+   set(PACKAGE_VERSION_UNSUITABLE TRUE)
+endif()