From daf0a420bec1a08444bd1ded99f5d7427ea74401 Mon Sep 17 00:00:00 2001 From: Dmitry Volosnykh <dmitry.volosnykh@gmail.com> Date: Fri, 16 Feb 2018 00:39:15 +0300 Subject: [PATCH] Support version compatibility checks via find_package command (#4625) --- CMake/FlatbuffersConfigVersion.cmake.in | 11 +++++++++++ CMake/PackageDebian.cmake | 18 +----------------- CMake/Version.cmake | 11 +++++++++++ CMakeLists.txt | 5 ++++- 4 files changed, 27 insertions(+), 18 deletions(-) create mode 100644 CMake/FlatbuffersConfigVersion.cmake.in create mode 100644 CMake/Version.cmake diff --git a/CMake/FlatbuffersConfigVersion.cmake.in b/CMake/FlatbuffersConfigVersion.cmake.in new file mode 100644 index 00000000..a553ab12 --- /dev/null +++ b/CMake/FlatbuffersConfigVersion.cmake.in @@ -0,0 +1,11 @@ +set(PACKAGE_VERSION "@VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@") + +# Check whether the requested PACKAGE_FIND_VERSION is compatible +if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() diff --git a/CMake/PackageDebian.cmake b/CMake/PackageDebian.cmake index ebe89314..6653181c 100644 --- a/CMake/PackageDebian.cmake +++ b/CMake/PackageDebian.cmake @@ -11,22 +11,6 @@ if (UNIX) SET(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/google/flatbuffers") SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Vitaly Isaev <vitalyisaev2@gmail.com>") - # Derive package version from git - EXECUTE_PROCESS( - COMMAND date +%Y%m%d - OUTPUT_VARIABLE DATE - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - EXECUTE_PROCESS( - COMMAND git describe - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} - OUTPUT_VARIABLE GIT_DESCRIBE_DIRTY - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - string(REGEX REPLACE "^v([0-9]+)\\..*" "\\1" VERSION_MAJOR "${GIT_DESCRIBE_DIRTY}") - string(REGEX REPLACE "^v[0-9]+\\.([0-9]+).*" "\\1" VERSION_MINOR "${GIT_DESCRIBE_DIRTY}") - string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" VERSION_PATCH "${GIT_DESCRIBE_DIRTY}") - string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.[0-9]+\\-([0-9]+).*" "\\1" VERSION_COMMIT "${GIT_DESCRIBE_DIRTY}") SET(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR}) SET(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR}) SET(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH}) @@ -49,7 +33,7 @@ if (UNIX) # Package name SET(CPACK_DEBIAN_PACKAGE_NAME "flatbuffers") SET(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE.txt) - SET(CPACK_PACKAGE_FILE_NAME + SET(CPACK_PACKAGE_FILE_NAME "${CPACK_DEBIAN_PACKAGE_NAME}_${CPACK_DEBIAN_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}") endif(UNIX) diff --git a/CMake/Version.cmake b/CMake/Version.cmake new file mode 100644 index 00000000..3522ec6a --- /dev/null +++ b/CMake/Version.cmake @@ -0,0 +1,11 @@ +find_program(GIT git) +execute_process( + COMMAND ${GIT} describe + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_DESCRIBE_DIRTY + OUTPUT_STRIP_TRAILING_WHITESPACE +) +string(REGEX REPLACE "^v([0-9]+)\\..*" "\\1" VERSION_MAJOR "${GIT_DESCRIBE_DIRTY}") +string(REGEX REPLACE "^v[0-9]+\\.([0-9]+).*" "\\1" VERSION_MINOR "${GIT_DESCRIBE_DIRTY}") +string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" VERSION_PATCH "${GIT_DESCRIBE_DIRTY}") +string(REGEX REPLACE "^v[0-9]+\\.[0-9]+\\.[0-9]+\\-([0-9]+).*" "\\1" VERSION_COMMIT "${GIT_DESCRIBE_DIRTY}") diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f2f7c24..16a70b8d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -253,6 +253,8 @@ if(FLATBUFFERS_BUILD_GRPCTEST) target_link_libraries(grpctest grpc++_unsecure grpc_unsecure gpr pthread dl) endif() +include(CMake/Version.cmake) + if(FLATBUFFERS_INSTALL) include(GNUInstallDirs) @@ -260,8 +262,9 @@ if(FLATBUFFERS_INSTALL) set(FB_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/flatbuffers") + configure_file(CMake/FlatbuffersConfigVersion.cmake.in FlatbuffersConfigVersion.cmake @ONLY) install( - FILES "CMake/FlatbuffersConfig.cmake" + FILES "CMake/FlatbuffersConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/FlatbuffersConfigVersion.cmake" DESTINATION ${FB_CMAKE_DIR} ) -- GitLab