Skip to content

Commit

Permalink
- bump version from 0.4.1->0.5.0
Browse files Browse the repository at this point in the history
- upload a custom version of BasicConfigVersion-SameMinorVersion.cmake.in and WriteBasicConfigVersionFile.cmake to guarantee compatibility with cmake < 3.11
- compatibility ensured only if the required version is 0.5.*
  • Loading branch information
GiulioRomualdi committed Sep 23, 2019
1 parent 2369d49 commit ac2a551
Show file tree
Hide file tree
Showing 4 changed files with 111 additions and 2 deletions.
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED 11)

project(OsqpEigen
LANGUAGES CXX
VERSION 0.4.1)
VERSION 0.5.0)

# add GNU dirs
include(GNUInstallDirs)
Expand Down Expand Up @@ -102,7 +102,7 @@ install(TARGETS ${LIBRARY_TARGET_NAME}
include(InstallBasicPackageFiles)
install_basic_package_files(${PROJECT_NAME}
VERSION ${${PROJECT_NAME}_VERSION}
COMPATIBILITY AnyNewerVersion
COMPATIBILITY SameMinorVersion
VARS_PREFIX ${PROJECT_NAME}
NO_CHECK_REQUIRED_COMPONENTS_MACRO
CONFIG_TEMPLATE ${CMAKE_SOURCE_DIR}/cmake/OsqpEigenConfig.cmake.in)
Expand Down
55 changes: 55 additions & 0 deletions cmake/BasicConfigVersion-SameMinorVersion.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# 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,
# but only if the requested major and minor versions are the same as the current
# one.
# The variable CVF_VERSION must be set before calling configure_file().


set(PACKAGE_VERSION "@CVF_VERSION@")

if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()

if("@CVF_VERSION@" MATCHES "^([0-9]+)\\.([0-9]+)")
set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
set(CVF_VERSION_MINOR "${CMAKE_MATCH_2}")
else()
set(CVF_VERSION_MAJOR "@CVF_VERSION@")
set(CVF_VERSION_MINOR "")
endif()

if((PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) AND
(PACKAGE_FIND_VERSION_MINOR STREQUAL CVF_VERSION_MINOR))
set(PACKAGE_VERSION_COMPATIBLE TRUE)
else()
set(PACKAGE_VERSION_COMPATIBLE FALSE)
endif()

if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
set(PACKAGE_VERSION_EXACT TRUE)
endif()
endif()


# if the installed project requested no architecture check, don't perform the check
if("@CVF_ARCH_INDEPENDENT@")
return()
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 "@CMAKE_SIZEOF_VOID_P@" 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 "@CMAKE_SIZEOF_VOID_P@")
math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8")
set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
set(PACKAGE_VERSION_UNSUITABLE TRUE)
endif()
3 changes: 3 additions & 0 deletions cmake/InstallBasicPackageFiles.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,9 @@ include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
include(CMakeParseArguments)

# custom version of the write_basic_package_version_file
# available only from cmake 3.11
include(WriteBasicConfigVersionFile)

function(INSTALL_BASIC_PACKAGE_FILES _Name)

Expand Down
51 changes: 51 additions & 0 deletions cmake/WriteBasicConfigVersionFile.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.

#[=======================================================================[.rst:
WriteBasicConfigVersionFile
---------------------------

.. deprecated:: 3.0

Use the identical command :command:`write_basic_package_version_file()`
from module :module:`CMakePackageConfigHelpers`.

::

WRITE_BASIC_CONFIG_VERSION_FILE( filename
[VERSION major.minor.patch]
COMPATIBILITY (AnyNewerVersion|SameMajorVersion|SameMinorVersion|ExactVersion)
[ARCH_INDEPENDENT]
)


#]=======================================================================]

function(WRITE_BASIC_CONFIG_VERSION_FILE _filename)

set(options ARCH_INDEPENDENT )
set(oneValueArgs VERSION COMPATIBILITY )
set(multiValueArgs )

cmake_parse_arguments(CVF "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})

if(CVF_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Unknown keywords given to WRITE_BASIC_CONFIG_VERSION_FILE(): \"${CVF_UNPARSED_ARGUMENTS}\"")
endif()

set(versionTemplateFile "${CMAKE_CURRENT_SOURCE_DIR}/cmake/BasicConfigVersion-${CVF_COMPATIBILITY}.cmake.in")
if(NOT EXISTS "${versionTemplateFile}")
message(FATAL_ERROR "Bad COMPATIBILITY value used for WRITE_BASIC_CONFIG_VERSION_FILE(): \"${CVF_COMPATIBILITY}\"")
endif()

if("${CVF_VERSION}" STREQUAL "")
if ("${PROJECT_VERSION}" STREQUAL "")
message(FATAL_ERROR "No VERSION specified for WRITE_BASIC_CONFIG_VERSION_FILE()")
else()
set(CVF_VERSION "${PROJECT_VERSION}")
endif()
endif()

configure_file("${versionTemplateFile}" "${_filename}" @ONLY)

endfunction()

0 comments on commit ac2a551

Please sign in to comment.