diff options
Diffstat (limited to '992ed23c322c9abb9a108a6d119c09aada50ca9c.patch')
-rw-r--r-- | 992ed23c322c9abb9a108a6d119c09aada50ca9c.patch | 1253 |
1 files changed, 0 insertions, 1253 deletions
diff --git a/992ed23c322c9abb9a108a6d119c09aada50ca9c.patch b/992ed23c322c9abb9a108a6d119c09aada50ca9c.patch deleted file mode 100644 index 4cebdc6..0000000 --- a/992ed23c322c9abb9a108a6d119c09aada50ca9c.patch +++ /dev/null @@ -1,1253 +0,0 @@ -From 992ed23c322c9abb9a108a6d119c09aada50ca9c Mon Sep 17 00:00:00 2001 -From: Thomas Klausner <tk@giga.or.at> -Date: Mon, 13 Jul 2020 12:21:32 +0200 -Subject: [PATCH] Add FindBZip2 and FindLibLZMA files from cmake 3.17 for - backwards compat. - ---- - CMakeLists.txt | 3 + - cmake-compat/CMakePushCheckState.cmake | 91 ++++ - cmake-compat/CheckLibraryExists.cmake | 99 ++++ - cmake-compat/CheckSymbolExists.cmake | 166 +++++++ - cmake-compat/FindBZip2.cmake | 104 ++++ - cmake-compat/FindLibLZMA.cmake | 124 +++++ - .../FindPackageHandleStandardArgs.cmake | 453 ++++++++++++++++++ - cmake-compat/FindPackageMessage.cmake | 48 ++ - .../SelectLibraryConfigurations.cmake | 80 ++++ - 9 files changed, 1168 insertions(+) - create mode 100644 cmake-compat/CMakePushCheckState.cmake - create mode 100644 cmake-compat/CheckLibraryExists.cmake - create mode 100644 cmake-compat/CheckSymbolExists.cmake - create mode 100644 cmake-compat/FindBZip2.cmake - create mode 100644 cmake-compat/FindLibLZMA.cmake - create mode 100644 cmake-compat/FindPackageHandleStandardArgs.cmake - create mode 100644 cmake-compat/FindPackageMessage.cmake - create mode 100644 cmake-compat/SelectLibraryConfigurations.cmake - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 8013d2ea..061ba4df 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -1,6 +1,9 @@ - cmake_minimum_required(VERSION 3.0.2) - - list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) -+if (${CMAKE_VERSION} VERSION_LESS "3.17.0") -+ list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake-compat) -+endif() - - project(libzip - VERSION 1.7.2 -diff --git a/cmake-compat/CMakePushCheckState.cmake b/cmake-compat/CMakePushCheckState.cmake -new file mode 100644 -index 00000000..3e519ee5 ---- /dev/null -+++ b/cmake-compat/CMakePushCheckState.cmake -@@ -0,0 +1,91 @@ -+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -+# file Copyright.txt or https://cmake.org/licensing for details. -+ -+#[=======================================================================[.rst: -+CMakePushCheckState -+------------------- -+ -+ -+ -+This module defines three macros: ``CMAKE_PUSH_CHECK_STATE()`` -+``CMAKE_POP_CHECK_STATE()`` and ``CMAKE_RESET_CHECK_STATE()`` These macros can -+be used to save, restore and reset (i.e., clear contents) the state of -+the variables ``CMAKE_REQUIRED_FLAGS``, ``CMAKE_REQUIRED_DEFINITIONS``, -+``CMAKE_REQUIRED_LINK_OPTIONS``, ``CMAKE_REQUIRED_LIBRARIES``, -+``CMAKE_REQUIRED_INCLUDES`` and ``CMAKE_EXTRA_INCLUDE_FILES`` used by the -+various Check-files coming with CMake, like e.g. ``check_function_exists()`` -+etc. -+The variable contents are pushed on a stack, pushing multiple times is -+supported. This is useful e.g. when executing such tests in a Find-module, -+where they have to be set, but after the Find-module has been executed they -+should have the same value as they had before. -+ -+``CMAKE_PUSH_CHECK_STATE()`` macro receives optional argument ``RESET``. -+Whether it's specified, ``CMAKE_PUSH_CHECK_STATE()`` will set all -+``CMAKE_REQUIRED_*`` variables to empty values, same as -+``CMAKE_RESET_CHECK_STATE()`` call will do. -+ -+Usage: -+ -+.. code-block:: cmake -+ -+ cmake_push_check_state(RESET) -+ set(CMAKE_REQUIRED_DEFINITIONS -DSOME_MORE_DEF) -+ check_function_exists(...) -+ cmake_reset_check_state() -+ set(CMAKE_REQUIRED_DEFINITIONS -DANOTHER_DEF) -+ check_function_exists(...) -+ cmake_pop_check_state() -+#]=======================================================================] -+ -+macro(CMAKE_RESET_CHECK_STATE) -+ -+ set(CMAKE_EXTRA_INCLUDE_FILES) -+ set(CMAKE_REQUIRED_INCLUDES) -+ set(CMAKE_REQUIRED_DEFINITIONS) -+ set(CMAKE_REQUIRED_LINK_OPTIONS) -+ set(CMAKE_REQUIRED_LIBRARIES) -+ set(CMAKE_REQUIRED_FLAGS) -+ set(CMAKE_REQUIRED_QUIET) -+ -+endmacro() -+ -+macro(CMAKE_PUSH_CHECK_STATE) -+ -+ if(NOT DEFINED _CMAKE_PUSH_CHECK_STATE_COUNTER) -+ set(_CMAKE_PUSH_CHECK_STATE_COUNTER 0) -+ endif() -+ -+ math(EXPR _CMAKE_PUSH_CHECK_STATE_COUNTER "${_CMAKE_PUSH_CHECK_STATE_COUNTER}+1") -+ -+ set(_CMAKE_EXTRA_INCLUDE_FILES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_EXTRA_INCLUDE_FILES}) -+ set(_CMAKE_REQUIRED_INCLUDES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_INCLUDES}) -+ set(_CMAKE_REQUIRED_DEFINITIONS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_DEFINITIONS}) -+ set(_CMAKE_REQUIRED_LINK_OPTIONS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_LINK_OPTIONS}) -+ set(_CMAKE_REQUIRED_LIBRARIES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_LIBRARIES}) -+ set(_CMAKE_REQUIRED_FLAGS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_FLAGS}) -+ set(_CMAKE_REQUIRED_QUIET_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_QUIET}) -+ -+ if (${ARGC} GREATER 0 AND "${ARGV0}" STREQUAL "RESET") -+ cmake_reset_check_state() -+ endif() -+ -+endmacro() -+ -+macro(CMAKE_POP_CHECK_STATE) -+ -+# don't pop more than we pushed -+ if("${_CMAKE_PUSH_CHECK_STATE_COUNTER}" GREATER "0") -+ -+ set(CMAKE_EXTRA_INCLUDE_FILES ${_CMAKE_EXTRA_INCLUDE_FILES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}}) -+ set(CMAKE_REQUIRED_INCLUDES ${_CMAKE_REQUIRED_INCLUDES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}}) -+ set(CMAKE_REQUIRED_DEFINITIONS ${_CMAKE_REQUIRED_DEFINITIONS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}}) -+ set(CMAKE_REQUIRED_LINK_OPTIONS ${_CMAKE_REQUIRED_LINK_OPTIONS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}}) -+ set(CMAKE_REQUIRED_LIBRARIES ${_CMAKE_REQUIRED_LIBRARIES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}}) -+ set(CMAKE_REQUIRED_FLAGS ${_CMAKE_REQUIRED_FLAGS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}}) -+ set(CMAKE_REQUIRED_QUIET ${_CMAKE_REQUIRED_QUIET_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}}) -+ -+ math(EXPR _CMAKE_PUSH_CHECK_STATE_COUNTER "${_CMAKE_PUSH_CHECK_STATE_COUNTER}-1") -+ endif() -+ -+endmacro() -diff --git a/cmake-compat/CheckLibraryExists.cmake b/cmake-compat/CheckLibraryExists.cmake -new file mode 100644 -index 00000000..6470dfd0 ---- /dev/null -+++ b/cmake-compat/CheckLibraryExists.cmake -@@ -0,0 +1,99 @@ -+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -+# file Copyright.txt or https://cmake.org/licensing for details. -+ -+#[=======================================================================[.rst: -+CheckLibraryExists -+------------------ -+ -+Check if the function exists. -+ -+.. command:: CHECK_LIBRARY_EXISTS -+ -+ .. code-block:: cmake -+ -+ CHECK_LIBRARY_EXISTS(LIBRARY FUNCTION LOCATION VARIABLE) -+ -+ :: -+ -+ LIBRARY - the name of the library you are looking for -+ FUNCTION - the name of the function -+ LOCATION - location where the library should be found -+ VARIABLE - variable to store the result -+ Will be created as an internal cache variable. -+ -+ -+ -+The following variables may be set before calling this macro to modify -+the way the check is run: -+ -+:: -+ -+ CMAKE_REQUIRED_FLAGS = string of compile command line flags -+ CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) -+ CMAKE_REQUIRED_LINK_OPTIONS = list of options to pass to link command -+ CMAKE_REQUIRED_LIBRARIES = list of libraries to link -+ CMAKE_REQUIRED_QUIET = execute quietly without messages -+#]=======================================================================] -+ -+include_guard(GLOBAL) -+ -+macro(CHECK_LIBRARY_EXISTS LIBRARY FUNCTION LOCATION VARIABLE) -+ if(NOT DEFINED "${VARIABLE}") -+ set(MACRO_CHECK_LIBRARY_EXISTS_DEFINITION -+ "-DCHECK_FUNCTION_EXISTS=${FUNCTION} ${CMAKE_REQUIRED_FLAGS}") -+ if(NOT CMAKE_REQUIRED_QUIET) -+ message(CHECK_START "Looking for ${FUNCTION} in ${LIBRARY}") -+ endif() -+ set(CHECK_LIBRARY_EXISTS_LINK_OPTIONS) -+ if(CMAKE_REQUIRED_LINK_OPTIONS) -+ set(CHECK_LIBRARY_EXISTS_LINK_OPTIONS -+ LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS}) -+ endif() -+ set(CHECK_LIBRARY_EXISTS_LIBRARIES ${LIBRARY}) -+ if(CMAKE_REQUIRED_LIBRARIES) -+ set(CHECK_LIBRARY_EXISTS_LIBRARIES -+ ${CHECK_LIBRARY_EXISTS_LIBRARIES} ${CMAKE_REQUIRED_LIBRARIES}) -+ endif() -+ -+ if(CMAKE_C_COMPILER_LOADED) -+ set(_cle_source ${CMAKE_ROOT}/Modules/CheckFunctionExists.c) -+ elseif(CMAKE_CXX_COMPILER_LOADED) -+ set(_cle_source ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CheckLibraryExists/CheckFunctionExists.cxx) -+ configure_file(${CMAKE_ROOT}/Modules/CheckFunctionExists.c "${_cle_source}" COPYONLY) -+ else() -+ message(FATAL_ERROR "CHECK_FUNCTION_EXISTS needs either C or CXX language enabled") -+ endif() -+ -+ try_compile(${VARIABLE} -+ ${CMAKE_BINARY_DIR} -+ ${_cle_source} -+ COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} -+ ${CHECK_LIBRARY_EXISTS_LINK_OPTIONS} -+ LINK_LIBRARIES ${CHECK_LIBRARY_EXISTS_LIBRARIES} -+ CMAKE_FLAGS -+ -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_LIBRARY_EXISTS_DEFINITION} -+ -DLINK_DIRECTORIES:STRING=${LOCATION} -+ OUTPUT_VARIABLE OUTPUT) -+ unset(_cle_source) -+ -+ if(${VARIABLE}) -+ if(NOT CMAKE_REQUIRED_QUIET) -+ message(CHECK_PASS "found") -+ endif() -+ set(${VARIABLE} 1 CACHE INTERNAL "Have library ${LIBRARY}") -+ file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log -+ "Determining if the function ${FUNCTION} exists in the ${LIBRARY} " -+ "passed with the following output:\n" -+ "${OUTPUT}\n\n") -+ else() -+ if(NOT CMAKE_REQUIRED_QUIET) -+ message(CHECK_FAIL "not found") -+ endif() -+ set(${VARIABLE} "" CACHE INTERNAL "Have library ${LIBRARY}") -+ file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log -+ "Determining if the function ${FUNCTION} exists in the ${LIBRARY} " -+ "failed with the following output:\n" -+ "${OUTPUT}\n\n") -+ endif() -+ endif() -+endmacro() -diff --git a/cmake-compat/CheckSymbolExists.cmake b/cmake-compat/CheckSymbolExists.cmake -new file mode 100644 -index 00000000..4f202c41 ---- /dev/null -+++ b/cmake-compat/CheckSymbolExists.cmake -@@ -0,0 +1,166 @@ -+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -+# file Copyright.txt or https://cmake.org/licensing for details. -+ -+#[=======================================================================[.rst: -+CheckSymbolExists -+----------------- -+ -+Provides a macro to check if a symbol exists as a function, variable, -+or macro in ``C``. -+ -+.. command:: check_symbol_exists -+ -+ .. code-block:: cmake -+ -+ check_symbol_exists(<symbol> <files> <variable>) -+ -+ Check that the ``<symbol>`` is available after including given header -+ ``<files>`` and store the result in a ``<variable>``. Specify the list -+ of files in one argument as a semicolon-separated list. -+ ``<variable>`` will be created as an internal cache variable. -+ -+If the header files define the symbol as a macro it is considered -+available and assumed to work. If the header files declare the symbol -+as a function or variable then the symbol must also be available for -+linking (so intrinsics may not be detected). -+If the symbol is a type, enum value, or intrinsic it will not be recognized -+(consider using :module:`CheckTypeSize` or :module:`CheckCSourceCompiles`). -+If the check needs to be done in C++, consider using -+:module:`CheckCXXSymbolExists` instead. -+ -+The following variables may be set before calling this macro to modify -+the way the check is run: -+ -+``CMAKE_REQUIRED_FLAGS`` -+ string of compile command line flags. -+``CMAKE_REQUIRED_DEFINITIONS`` -+ a :ref:`;-list <CMake Language Lists>` of macros to define (-DFOO=bar). -+``CMAKE_REQUIRED_INCLUDES`` -+ a :ref:`;-list <CMake Language Lists>` of header search paths to pass to -+ the compiler. -+``CMAKE_REQUIRED_LINK_OPTIONS`` -+ a :ref:`;-list <CMake Language Lists>` of options to add to the link command. -+``CMAKE_REQUIRED_LIBRARIES`` -+ a :ref:`;-list <CMake Language Lists>` of libraries to add to the link -+ command. See policy :policy:`CMP0075`. -+``CMAKE_REQUIRED_QUIET`` -+ execute quietly without messages. -+ -+For example: -+ -+.. code-block:: cmake -+ -+ include(CheckSymbolExists) -+ -+ # Check for macro SEEK_SET -+ check_symbol_exists(SEEK_SET "stdio.h" HAVE_SEEK_SET) -+ # Check for function fopen -+ check_symbol_exists(fopen "stdio.h" HAVE_FOPEN) -+#]=======================================================================] -+ -+include_guard(GLOBAL) -+ -+cmake_policy(PUSH) -+cmake_policy(SET CMP0054 NEW) # if() quoted variables not dereferenced -+ -+macro(CHECK_SYMBOL_EXISTS SYMBOL FILES VARIABLE) -+ if(CMAKE_C_COMPILER_LOADED) -+ __CHECK_SYMBOL_EXISTS_IMPL("${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckSymbolExists.c" "${SYMBOL}" "${FILES}" "${VARIABLE}" ) -+ elseif(CMAKE_CXX_COMPILER_LOADED) -+ __CHECK_SYMBOL_EXISTS_IMPL("${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckSymbolExists.cxx" "${SYMBOL}" "${FILES}" "${VARIABLE}" ) -+ else() -+ message(FATAL_ERROR "CHECK_SYMBOL_EXISTS needs either C or CXX language enabled") -+ endif() -+endmacro() -+ -+macro(__CHECK_SYMBOL_EXISTS_IMPL SOURCEFILE SYMBOL FILES VARIABLE) -+ if(NOT DEFINED "${VARIABLE}" OR "x${${VARIABLE}}" STREQUAL "x${VARIABLE}") -+ set(CMAKE_CONFIGURABLE_FILE_CONTENT "/* */\n") -+ set(MACRO_CHECK_SYMBOL_EXISTS_FLAGS ${CMAKE_REQUIRED_FLAGS}) -+ if(CMAKE_REQUIRED_LINK_OPTIONS) -+ set(CHECK_SYMBOL_EXISTS_LINK_OPTIONS -+ LINK_OPTIONS ${CMAKE_REQUIRED_LINK_OPTIONS}) -+ else() -+ set(CHECK_SYMBOL_EXISTS_LINK_OPTIONS) -+ endif() -+ if(CMAKE_REQUIRED_LIBRARIES) -+ set(CHECK_SYMBOL_EXISTS_LIBS -+ LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) -+ else() -+ set(CHECK_SYMBOL_EXISTS_LIBS) -+ endif() -+ if(CMAKE_REQUIRED_INCLUDES) -+ set(CMAKE_SYMBOL_EXISTS_INCLUDES -+ "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}") -+ else() -+ set(CMAKE_SYMBOL_EXISTS_INCLUDES) -+ endif() -+ foreach(FILE ${FILES}) -+ string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT -+ "#include <${FILE}>\n") -+ endforeach() -+ string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT " -+int main(int argc, char** argv) -+{ -+ (void)argv;") -+ set(_CSE_CHECK_NON_MACRO "return ((int*)(&${SYMBOL}))[argc];") -+ if("${SYMBOL}" MATCHES "^[a-zA-Z_][a-zA-Z0-9_]*$") -+ # The SYMBOL has a legal macro name. Test whether it exists as a macro. -+ string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT " -+#ifndef ${SYMBOL} -+ ${_CSE_CHECK_NON_MACRO} -+#else -+ (void)argc; -+ return 0; -+#endif") -+ else() -+ # The SYMBOL cannot be a macro (e.g., a template function). -+ string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT " -+ ${_CSE_CHECK_NON_MACRO}") -+ endif() -+ string(APPEND CMAKE_CONFIGURABLE_FILE_CONTENT " -+}") -+ unset(_CSE_CHECK_NON_MACRO) -+ -+ configure_file("${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in" -+ "${SOURCEFILE}" @ONLY) -+ -+ if(NOT CMAKE_REQUIRED_QUIET) -+ message(CHECK_START "Looking for ${SYMBOL}") -+ endif() -+ try_compile(${VARIABLE} -+ ${CMAKE_BINARY_DIR} -+ "${SOURCEFILE}" -+ COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} -+ ${CHECK_SYMBOL_EXISTS_LINK_OPTIONS} -+ ${CHECK_SYMBOL_EXISTS_LIBS} -+ CMAKE_FLAGS -+ -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_SYMBOL_EXISTS_FLAGS} -+ "${CMAKE_SYMBOL_EXISTS_INCLUDES}" -+ OUTPUT_VARIABLE OUTPUT) -+ if(${VARIABLE}) -+ if(NOT CMAKE_REQUIRED_QUIET) -+ message(CHECK_PASS "found") -+ endif() -+ set(${VARIABLE} 1 CACHE INTERNAL "Have symbol ${SYMBOL}") -+ file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log -+ "Determining if the ${SYMBOL} " -+ "exist passed with the following output:\n" -+ "${OUTPUT}\nFile ${SOURCEFILE}:\n" -+ "${CMAKE_CONFIGURABLE_FILE_CONTENT}\n") -+ else() -+ if(NOT CMAKE_REQUIRED_QUIET) -+ message(CHECK_FAIL "not found") -+ endif() -+ set(${VARIABLE} "" CACHE INTERNAL "Have symbol ${SYMBOL}") -+ file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log -+ "Determining if the ${SYMBOL} " -+ "exist failed with the following output:\n" -+ "${OUTPUT}\nFile ${SOURCEFILE}:\n" -+ "${CMAKE_CONFIGURABLE_FILE_CONTENT}\n") -+ endif() -+ unset(CMAKE_CONFIGURABLE_FILE_CONTENT) -+ endif() -+endmacro() -+ -+cmake_policy(POP) -diff --git a/cmake-compat/FindBZip2.cmake b/cmake-compat/FindBZip2.cmake -new file mode 100644 -index 00000000..98ab72cd ---- /dev/null -+++ b/cmake-compat/FindBZip2.cmake -@@ -0,0 +1,104 @@ -+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -+# file Copyright.txt or https://cmake.org/licensing for details. -+ -+#[=======================================================================[.rst: -+FindBZip2 -+--------- -+ -+Try to find BZip2 -+ -+IMPORTED Targets -+^^^^^^^^^^^^^^^^ -+ -+This module defines :prop_tgt:`IMPORTED` target ``BZip2::BZip2``, if -+BZip2 has been found. -+ -+Result Variables -+^^^^^^^^^^^^^^^^ -+ -+This module defines the following variables: -+ -+``BZIP2_FOUND`` -+ system has BZip2 -+``BZIP2_INCLUDE_DIRS`` -+ the BZip2 include directories -+``BZIP2_LIBRARIES`` -+ Link these to use BZip2 -+``BZIP2_NEED_PREFIX`` -+ this is set if the functions are prefixed with ``BZ2_`` -+``BZIP2_VERSION_STRING`` -+ the version of BZip2 found -+ -+Cache variables -+^^^^^^^^^^^^^^^ -+ -+The following cache variables may also be set: -+ -+``BZIP2_INCLUDE_DIR`` -+ the BZip2 include directory -+#]=======================================================================] -+ -+set(_BZIP2_PATHS PATHS -+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Bzip2;InstallPath]" -+ ) -+ -+find_path(BZIP2_INCLUDE_DIR bzlib.h ${_BZIP2_PATHS} PATH_SUFFIXES include) -+ -+if (NOT BZIP2_LIBRARIES) -+ find_library(BZIP2_LIBRARY_RELEASE NAMES bz2 bzip2 libbz2 libbzip2 ${_BZIP2_PATHS} PATH_SUFFIXES lib) -+ find_library(BZIP2_LIBRARY_DEBUG NAMES bz2d bzip2d libbz2d libbzip2d ${_BZIP2_PATHS} PATH_SUFFIXES lib) -+ -+ include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) -+ SELECT_LIBRARY_CONFIGURATIONS(BZIP2) -+else () -+ file(TO_CMAKE_PATH "${BZIP2_LIBRARIES}" BZIP2_LIBRARIES) -+endif () -+ -+if (BZIP2_INCLUDE_DIR AND EXISTS "${BZIP2_INCLUDE_DIR}/bzlib.h") -+ file(STRINGS "${BZIP2_INCLUDE_DIR}/bzlib.h" BZLIB_H REGEX "bzip2/libbzip2 version [0-9]+\\.[^ ]+ of [0-9]+ ") -+ string(REGEX REPLACE ".* bzip2/libbzip2 version ([0-9]+\\.[^ ]+) of [0-9]+ .*" "\\1" BZIP2_VERSION_STRING "${BZLIB_H}") -+endif () -+ -+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) -+FIND_PACKAGE_HANDLE_STANDARD_ARGS(BZip2 -+ REQUIRED_VARS BZIP2_LIBRARIES BZIP2_INCLUDE_DIR -+ VERSION_VAR BZIP2_VERSION_STRING) -+ -+if (BZIP2_FOUND) -+ set(BZIP2_INCLUDE_DIRS ${BZIP2_INCLUDE_DIR}) -+ include(${CMAKE_CURRENT_LIST_DIR}/CheckSymbolExists.cmake) -+ include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake) -+ cmake_push_check_state() -+ set(CMAKE_REQUIRED_QUIET ${BZip2_FIND_QUIETLY}) -+ set(CMAKE_REQUIRED_INCLUDES ${BZIP2_INCLUDE_DIR}) -+ set(CMAKE_REQUIRED_LIBRARIES ${BZIP2_LIBRARIES}) -+ CHECK_SYMBOL_EXISTS(BZ2_bzCompressInit "bzlib.h" BZIP2_NEED_PREFIX) -+ cmake_pop_check_state() -+ -+ if(NOT TARGET BZip2::BZip2) -+ add_library(BZip2::BZip2 UNKNOWN IMPORTED) -+ set_target_properties(BZip2::BZip2 PROPERTIES -+ INTERFACE_INCLUDE_DIRECTORIES "${BZIP2_INCLUDE_DIRS}") -+ -+ if(BZIP2_LIBRARY_RELEASE) -+ set_property(TARGET BZip2::BZip2 APPEND PROPERTY -+ IMPORTED_CONFIGURATIONS RELEASE) -+ set_target_properties(BZip2::BZip2 PROPERTIES -+ IMPORTED_LOCATION_RELEASE "${BZIP2_LIBRARY_RELEASE}") -+ endif() -+ -+ if(BZIP2_LIBRARY_DEBUG) -+ set_property(TARGET BZip2::BZip2 APPEND PROPERTY -+ IMPORTED_CONFIGURATIONS DEBUG) -+ set_target_properties(BZip2::BZip2 PROPERTIES -+ IMPORTED_LOCATION_DEBUG "${BZIP2_LIBRARY_DEBUG}") -+ endif() -+ -+ if(NOT BZIP2_LIBRARY_RELEASE AND NOT BZIP2_LIBRARY_DEBUG) -+ set_property(TARGET BZip2::BZip2 APPEND PROPERTY -+ IMPORTED_LOCATION "${BZIP2_LIBRARY}") -+ endif() -+ endif() -+endif () -+ -+mark_as_advanced(BZIP2_INCLUDE_DIR) -diff --git a/cmake-compat/FindLibLZMA.cmake b/cmake-compat/FindLibLZMA.cmake -new file mode 100644 -index 00000000..200d6bf8 ---- /dev/null -+++ b/cmake-compat/FindLibLZMA.cmake -@@ -0,0 +1,124 @@ -+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -+# file Copyright.txt or https://cmake.org/licensing for details. -+ -+#[=======================================================================[.rst: -+FindLibLZMA -+----------- -+ -+Find LZMA compression algorithm headers and library. -+ -+ -+Imported Targets -+^^^^^^^^^^^^^^^^ -+ -+This module defines :prop_tgt:`IMPORTED` target ``LibLZMA::LibLZMA``, if -+liblzma has been found. -+ -+Result variables -+^^^^^^^^^^^^^^^^ -+ -+This module will set the following variables in your project: -+ -+``LIBLZMA_FOUND`` -+ True if liblzma headers and library were found. -+``LIBLZMA_INCLUDE_DIRS`` -+ Directory where liblzma headers are located. -+``LIBLZMA_LIBRARIES`` -+ Lzma libraries to link against. -+``LIBLZMA_HAS_AUTO_DECODER`` -+ True if lzma_auto_decoder() is found (required). -+``LIBLZMA_HAS_EASY_ENCODER`` -+ True if lzma_easy_encoder() is found (required). -+``LIBLZMA_HAS_LZMA_PRESET`` -+ True if lzma_lzma_preset() is found (required). -+``LIBLZMA_VERSION_MAJOR`` -+ The major version of lzma -+``LIBLZMA_VERSION_MINOR`` -+ The minor version of lzma -+``LIBLZMA_VERSION_PATCH`` -+ The patch version of lzma -+``LIBLZMA_VERSION_STRING`` -+ version number as a string (ex: "5.0.3") -+#]=======================================================================] -+ -+find_path(LIBLZMA_INCLUDE_DIR lzma.h ) -+if(NOT LIBLZMA_LIBRARY) -+ find_library(LIBLZMA_LIBRARY_RELEASE NAMES lzma liblzma PATH_SUFFIXES lib) -+ find_library(LIBLZMA_LIBRARY_DEBUG NAMES lzmad liblzmad PATH_SUFFIXES lib) -+ include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) -+ select_library_configurations(LIBLZMA) -+else() -+ file(TO_CMAKE_PATH "${LIBLZMA_LIBRARY}" LIBLZMA_LIBRARY) -+endif() -+ -+if(LIBLZMA_INCLUDE_DIR AND EXISTS "${LIBLZMA_INCLUDE_DIR}/lzma/version.h") -+ file(STRINGS "${LIBLZMA_INCLUDE_DIR}/lzma/version.h" LIBLZMA_HEADER_CONTENTS REGEX "#define LZMA_VERSION_[A-Z]+ [0-9]+") -+ -+ string(REGEX REPLACE ".*#define LZMA_VERSION_MAJOR ([0-9]+).*" "\\1" LIBLZMA_VERSION_MAJOR "${LIBLZMA_HEADER_CONTENTS}") -+ string(REGEX REPLACE ".*#define LZMA_VERSION_MINOR ([0-9]+).*" "\\1" LIBLZMA_VERSION_MINOR "${LIBLZMA_HEADER_CONTENTS}") -+ string(REGEX REPLACE ".*#define LZMA_VERSION_PATCH ([0-9]+).*" "\\1" LIBLZMA_VERSION_PATCH "${LIBLZMA_HEADER_CONTENTS}") -+ -+ set(LIBLZMA_VERSION_STRING "${LIBLZMA_VERSION_MAJOR}.${LIBLZMA_VERSION_MINOR}.${LIBLZMA_VERSION_PATCH}") -+ unset(LIBLZMA_HEADER_CONTENTS) -+endif() -+ -+# We're using new code known now as XZ, even library still been called LZMA -+# it can be found in http://tukaani.org/xz/ -+# Avoid using old codebase -+if (LIBLZMA_LIBRARY) -+ include(${CMAKE_CURRENT_LIST_DIR}/CheckLibraryExists.cmake) -+ set(CMAKE_REQUIRED_QUIET_SAVE ${CMAKE_REQUIRED_QUIET}) -+ set(CMAKE_REQUIRED_QUIET ${LibLZMA_FIND_QUIETLY}) -+ if(NOT LIBLZMA_LIBRARY_RELEASE AND NOT LIBLZMA_LIBRARY_DEBUG) -+ set(LIBLZMA_LIBRARY_check ${LIBLZMA_LIBRARY}) -+ elseif(LIBLZMA_LIBRARY_RELEASE) -+ set(LIBLZMA_LIBRARY_check ${LIBLZMA_LIBRARY_RELEASE}) -+ elseif(LIBLZMA_LIBRARY_DEBUG) -+ set(LIBLZMA_LIBRARY_check ${LIBLZMA_LIBRARY_DEBUG}) -+ endif() -+ CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARY_check} lzma_auto_decoder "" LIBLZMA_HAS_AUTO_DECODER) -+ CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARY_check} lzma_easy_encoder "" LIBLZMA_HAS_EASY_ENCODER) -+ CHECK_LIBRARY_EXISTS(${LIBLZMA_LIBRARY_check} lzma_lzma_preset "" LIBLZMA_HAS_LZMA_PRESET) -+ unset(LIBLZMA_LIBRARY_check) -+ set(CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET_SAVE}) -+endif () -+ -+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) -+find_package_handle_standard_args(LibLZMA REQUIRED_VARS LIBLZMA_LIBRARY -+ LIBLZMA_INCLUDE_DIR -+ LIBLZMA_HAS_AUTO_DECODER -+ LIBLZMA_HAS_EASY_ENCODER -+ LIBLZMA_HAS_LZMA_PRESET -+ VERSION_VAR LIBLZMA_VERSION_STRING -+ ) -+mark_as_advanced( LIBLZMA_INCLUDE_DIR LIBLZMA_LIBRARY ) -+ -+if (LIBLZMA_FOUND) -+ set(LIBLZMA_LIBRARIES ${LIBLZMA_LIBRARY}) -+ set(LIBLZMA_INCLUDE_DIRS ${LIBLZMA_INCLUDE_DIR}) -+ if(NOT TARGET LibLZMA::LibLZMA) -+ add_library(LibLZMA::LibLZMA UNKNOWN IMPORTED) -+ set_target_properties(LibLZMA::LibLZMA PROPERTIES -+ INTERFACE_INCLUDE_DIRECTORIES ${LIBLZMA_INCLUDE_DIR} -+ IMPORTED_LINK_INTERFACE_LANGUAGES C) -+ -+ if(LIBLZMA_LIBRARY_RELEASE) -+ set_property(TARGET LibLZMA::LibLZMA APPEND PROPERTY -+ IMPORTED_CONFIGURATIONS RELEASE) -+ set_target_properties(LibLZMA::LibLZMA PROPERTIES -+ IMPORTED_LOCATION_RELEASE "${LIBLZMA_LIBRARY_RELEASE}") -+ endif() -+ -+ if(LIBLZMA_LIBRARY_DEBUG) -+ set_property(TARGET LibLZMA::LibLZMA APPEND PROPERTY -+ IMPORTED_CONFIGURATIONS DEBUG) -+ set_target_properties(LibLZMA::LibLZMA PROPERTIES -+ IMPORTED_LOCATION_DEBUG "${LIBLZMA_LIBRARY_DEBUG}") -+ endif() -+ -+ if(NOT LIBLZMA_LIBRARY_RELEASE AND NOT LIBLZMA_LIBRARY_DEBUG) -+ set_target_properties(LibLZMA::LibLZMA PROPERTIES -+ IMPORTED_LOCATION "${LIBLZMA_LIBRARY}") -+ endif() -+ endif() -+endif () -diff --git a/cmake-compat/FindPackageHandleStandardArgs.cmake b/cmake-compat/FindPackageHandleStandardArgs.cmake -new file mode 100644 -index 00000000..a078049e ---- /dev/null -+++ b/cmake-compat/FindPackageHandleStandardArgs.cmake -@@ -0,0 +1,453 @@ -+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -+# file Copyright.txt or https://cmake.org/licensing for details. -+ -+#[=======================================================================[.rst: -+FindPackageHandleStandardArgs -+----------------------------- -+ -+This module provides a function intended to be used in :ref:`Find Modules` -+implementing :command:`find_package(<PackageName>)` calls. It handles the -+``REQUIRED``, ``QUIET`` and version-related arguments of ``find_package``. -+It also sets the ``<PackageName>_FOUND`` variable. The package is -+considered found if all variables listed contain valid results, e.g. -+valid filepaths. -+ -+.. command:: find_package_handle_standard_args -+ -+ There are two signatures:: -+ -+ find_package_handle_standard_args(<PackageName> -+ (DEFAULT_MSG|<custom-failure-message>) -+ <required-var>... -+ ) -+ -+ find_package_handle_standard_args(<PackageName> -+ [FOUND_VAR <result-var>] -+ [REQUIRED_VARS <required-var>...] -+ [VERSION_VAR <version-var>] -+ [HANDLE_COMPONENTS] -+ [CONFIG_MODE] -+ [NAME_MISMATCHED] -+ [REASON_FAILURE_MESSAGE <reason-failure-message>] -+ [FAIL_MESSAGE <custom-failure-message>] -+ ) -+ -+ The ``<PackageName>_FOUND`` variable will be set to ``TRUE`` if all -+ the variables ``<required-var>...`` are valid and any optional -+ constraints are satisfied, and ``FALSE`` otherwise. A success or -+ failure message may be displayed based on the results and on -+ whether the ``REQUIRED`` and/or ``QUIET`` option was given to -+ the :command:`find_package` call. -+ -+ The options are: -+ -+ ``(DEFAULT_MSG|<custom-failure-message>)`` -+ In the simple signature this specifies the failure message. -+ Use ``DEFAULT_MSG`` to ask for a default message to be computed -+ (recommended). Not valid in the full signature. -+ -+ ``FOUND_VAR <result-var>`` -+ Obsolete. Specifies either ``<PackageName>_FOUND`` or -+ ``<PACKAGENAME>_FOUND`` as the result variable. This exists only -+ for compatibility with older versions of CMake and is now ignored. -+ Result variables of both names are always set for compatibility. -+ -+ ``REQUIRED_VARS <required-var>...`` -+ Specify the variables which are required for this package. -+ These may be named in the generated failure message asking the -+ user to set the missing variable values. Therefore these should -+ typically be cache entries such as ``FOO_LIBRARY`` and not output -+ variables like ``FOO_LIBRARIES``. -+ -+ ``VERSION_VAR <version-var>`` -+ Specify the name of a variable that holds the version of the package -+ that has been found. This version will be checked against the -+ (potentially) specified required version given to the -+ :command:`find_package` call, including its ``EXACT`` option. -+ The default messages include information about the required -+ version and the version which has been actually found, both -+ if the version is ok or not. -+ -+ ``HANDLE_COMPONENTS`` -+ Enable handling of package components. In this case, the command -+ will report which components have been found and which are missing, -+ and the ``<PackageName>_FOUND`` variable will be set to ``FALSE`` -+ if any of the required components (i.e. not the ones listed after -+ the ``OPTIONAL_COMPONENTS`` option of :command:`find_package`) are -+ missing. -+ -+ ``CONFIG_MODE`` -+ Specify that the calling find module is a wrapper around a -+ call to ``find_package(<PackageName> NO_MODULE)``. This implies -+ a ``VERSION_VAR`` value of ``<PackageName>_VERSION``. The command -+ will automatically check whether the package configuration file -+ was found. -+ -+ ``REASON_FAILURE_MESSAGE <reason-failure-message>`` -+ Specify a custom message of the reason for the failure which will be -+ appended to the default generated message. -+ -+ ``FAIL_MESSAGE <custom-failure-message>`` -+ Specify a custom failure message instead of using the default -+ generated message. Not recommended. -+ -+ ``NAME_MISMATCHED`` -+ Indicate that the ``<PackageName>`` does not match -+ ``${CMAKE_FIND_PACKAGE_NAME}``. This is usually a mistake and raises a -+ warning, but it may be intentional for usage of the command for components -+ of a larger package. -+ -+Example for the simple signature: -+ -+.. code-block:: cmake -+ -+ find_package_handle_standard_args(LibXml2 DEFAULT_MSG -+ LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR) -+ -+The ``LibXml2`` package is considered to be found if both -+``LIBXML2_LIBRARY`` and ``LIBXML2_INCLUDE_DIR`` are valid. -+Then also ``LibXml2_FOUND`` is set to ``TRUE``. If it is not found -+and ``REQUIRED`` was used, it fails with a -+:command:`message(FATAL_ERROR)`, independent whether ``QUIET`` was -+used or not. If it is found, success will be reported, including -+the content of the first ``<required-var>``. On repeated CMake runs, -+the same message will not be printed again. -+ -+.. note:: -+ -+ If ``<PackageName>`` does not match ``CMAKE_FIND_PACKAGE_NAME`` for the -+ calling module, a warning that there is a mismatch is given. The -+ ``FPHSA_NAME_MISMATCHED`` variable may be set to bypass the warning if using -+ the old signature and the ``NAME_MISMATCHED`` argument using the new -+ signature. To avoid forcing the caller to require newer versions of CMake for -+ usage, the variable's value will be used if defined when the -+ ``NAME_MISMATCHED`` argument is not passed for the new signature (but using -+ both is an error).. -+ -+Example for the full signature: -+ -+.. code-block:: cmake -+ -+ find_package_handle_standard_args(LibArchive -+ REQUIRED_VARS LibArchive_LIBRARY LibArchive_INCLUDE_DIR -+ VERSION_VAR LibArchive_VERSION) -+ -+In this case, the ``LibArchive`` package is considered to be found if -+both ``LibArchive_LIBRARY`` and ``LibArchive_INCLUDE_DIR`` are valid. -+Also the version of ``LibArchive`` will be checked by using the version -+contained in ``LibArchive_VERSION``. Since no ``FAIL_MESSAGE`` is given, -+the default messages will be printed. -+ -+Another example for the full signature: -+ -+.. code-block:: cmake -+ -+ find_package(Automoc4 QUIET NO_MODULE HINTS /opt/automoc4) -+ find_package_handle_standard_args(Automoc4 CONFIG_MODE) -+ -+In this case, a ``FindAutmoc4.cmake`` module wraps a call to -+``find_package(Automoc4 NO_MODULE)`` and adds an additional search -+directory for ``automoc4``. Then the call to -+``find_package_handle_standard_args`` produces a proper success/failure -+message. -+#]=======================================================================] -+ -+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageMessage.cmake) -+ -+# internal helper macro -+macro(_FPHSA_FAILURE_MESSAGE _msg) -+ set (__msg "${_msg}") -+ if (FPHSA_REASON_FAILURE_MESSAGE) -+ string(APPEND __msg "\n Reason given by package: ${FPHSA_REASON_FAILURE_MESSAGE}\n") -+ endif() -+ if (${_NAME}_FIND_REQUIRED) -+ message(FATAL_ERROR "${__msg}") -+ else () -+ if (NOT ${_NAME}_FIND_QUIETLY) -+ message(STATUS "${__msg}") -+ endif () -+ endif () -+endmacro() -+ -+ -+# internal helper macro to generate the failure message when used in CONFIG_MODE: -+macro(_FPHSA_HANDLE_FAILURE_CONFIG_MODE) -+ # <PackageName>_CONFIG is set, but FOUND is false, this means that some other of the REQUIRED_VARS was not found: -+ if(${_NAME}_CONFIG) -+ _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: missing:${MISSING_VARS} (found ${${_NAME}_CONFIG} ${VERSION_MSG})") -+ else() -+ # If _CONSIDERED_CONFIGS is set, the config-file has been found, but no suitable version. -+ # List them all in the error message: -+ if(${_NAME}_CONSIDERED_CONFIGS) -+ set(configsText "") -+ list(LENGTH ${_NAME}_CONSIDERED_CONFIGS configsCount) -+ math(EXPR configsCount "${configsCount} - 1") -+ foreach(currentConfigIndex RANGE ${configsCount}) -+ list(GET ${_NAME}_CONSIDERED_CONFIGS ${currentConfigIndex} filename) -+ list(GET ${_NAME}_CONSIDERED_VERSIONS ${currentConfigIndex} version) -+ string(APPEND configsText "\n ${filename} (version ${version})") -+ endforeach() -+ if (${_NAME}_NOT_FOUND_MESSAGE) -+ if (FPHSA_REASON_FAILURE_MESSAGE) -+ string(PREPEND FPHSA_REASON_FAILURE_MESSAGE "${${_NAME}_NOT_FOUND_MESSAGE}\n ") -+ else() -+ set(FPHSA_REASON_FAILURE_MESSAGE "${${_NAME}_NOT_FOUND_MESSAGE}") -+ endif() -+ else() -+ string(APPEND configsText "\n") -+ endif() -+ _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} ${VERSION_MSG}, checked the following files:${configsText}") -+ -+ else() -+ # Simple case: No Config-file was found at all: -+ _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: found neither ${_NAME}Config.cmake nor ${_NAME_LOWER}-config.cmake ${VERSION_MSG}") -+ endif() -+ endif() -+endmacro() -+ -+ -+function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG) -+ -+ # Set up the arguments for `cmake_parse_arguments`. -+ set(options CONFIG_MODE HANDLE_COMPONENTS NAME_MISMATCHED) -+ set(oneValueArgs FAIL_MESSAGE REASON_FAILURE_MESSAGE VERSION_VAR FOUND_VAR) -+ set(multiValueArgs REQUIRED_VARS) -+ -+ # Check whether we are in 'simple' or 'extended' mode: -+ set(_KEYWORDS_FOR_EXTENDED_MODE ${options} ${oneValueArgs} ${multiValueArgs} ) -+ list(FIND _KEYWORDS_FOR_EXTENDED_MODE "${_FIRST_ARG}" INDEX) -+ -+ unset(FPHSA_NAME_MISMATCHED_override) -+ if (DEFINED FPHSA_NAME_MISMATCHED) -+ # If the variable NAME_MISMATCHED variable is set, error if it is passed as -+ # an argument. The former is for old signatures, the latter is for new -+ # signatures. -+ list(FIND ARGN "NAME_MISMATCHED" name_mismatched_idx) -+ if (NOT name_mismatched_idx EQUAL "-1") -+ message(FATAL_ERROR -+ "The `NAME_MISMATCHED` argument may only be specified by the argument or " -+ "the variable, not both.") -+ endif () -+ -+ # But use the variable if it is not an argument to avoid forcing minimum -+ # CMake version bumps for calling modules. -+ set(FPHSA_NAME_MISMATCHED_override "${FPHSA_NAME_MISMATCHED}") -+ endif () -+ -+ if(${INDEX} EQUAL -1) -+ set(FPHSA_FAIL_MESSAGE ${_FIRST_ARG}) -+ set(FPHSA_REQUIRED_VARS ${ARGN}) -+ set(FPHSA_VERSION_VAR) -+ else() -+ cmake_parse_arguments(FPHSA "${options}" "${oneValueArgs}" "${multiValueArgs}" ${_FIRST_ARG} ${ARGN}) -+ -+ if(FPHSA_UNPARSED_ARGUMENTS) -+ message(FATAL_ERROR "Unknown keywords given to FIND_PACKAGE_HANDLE_STANDARD_ARGS(): \"${FPHSA_UNPARSED_ARGUMENTS}\"") -+ endif() -+ -+ if(NOT FPHSA_FAIL_MESSAGE) -+ set(FPHSA_FAIL_MESSAGE "DEFAULT_MSG") -+ endif() -+ -+ # In config-mode, we rely on the variable <PackageName>_CONFIG, which is set by find_package() -+ # when it successfully found the config-file, including version checking: -+ if(FPHSA_CONFIG_MODE) -+ list(INSERT FPHSA_REQUIRED_VARS 0 ${_NAME}_CONFIG) -+ list(REMOVE_DUPLICATES FPHSA_REQUIRED_VARS) -+ set(FPHSA_VERSION_VAR ${_NAME}_VERSION) -+ endif() -+ -+ if(NOT FPHSA_REQUIRED_VARS) -+ message(FATAL_ERROR "No REQUIRED_VARS specified for FIND_PACKAGE_HANDLE_STANDARD_ARGS()") -+ endif() -+ endif() -+ -+ if (DEFINED FPHSA_NAME_MISMATCHED_override) -+ set(FPHSA_NAME_MISMATCHED "${FPHSA_NAME_MISMATCHED_override}") -+ endif () -+ -+ if (DEFINED CMAKE_FIND_PACKAGE_NAME -+ AND NOT FPHSA_NAME_MISMATCHED -+ AND NOT _NAME STREQUAL CMAKE_FIND_PACKAGE_NAME) -+ message(AUTHOR_WARNING -+ "The package name passed to `find_package_handle_standard_args` " -+ "(${_NAME}) does not match the name of the calling package " -+ "(${CMAKE_FIND_PACKAGE_NAME}). This can lead to problems in calling " -+ "code that expects `find_package` result variables (e.g., `_FOUND`) " -+ "to follow a certain pattern.") -+ endif () -+ -+# now that we collected all arguments, process them -+ -+ if("x${FPHSA_FAIL_MESSAGE}" STREQUAL "xDEFAULT_MSG") -+ set(FPHSA_FAIL_MESSAGE "Could NOT find ${_NAME}") -+ endif() -+ -+ list(GET FPHSA_REQUIRED_VARS 0 _FIRST_REQUIRED_VAR) -+ -+ string(TOUPPER ${_NAME} _NAME_UPPER) -+ string(TOLOWER ${_NAME} _NAME_LOWER) -+ -+ if(FPHSA_FOUND_VAR) -+ set(_FOUND_VAR_UPPER ${_NAME_UPPER}_FOUND) -+ set(_FOUND_VAR_MIXED ${_NAME}_FOUND) -+ if(FPHSA_FOUND_VAR STREQUAL _FOUND_VAR_MIXED OR FPHSA_FOUND_VAR STREQUAL _FOUND_VAR_UPPER) -+ set(_FOUND_VAR ${FPHSA_FOUND_VAR}) -+ else() -+ message(FATAL_ERROR "The argument for FOUND_VAR is \"${FPHSA_FOUND_VAR}\", but only \"${_FOUND_VAR_MIXED}\" and \"${_FOUND_VAR_UPPER}\" are valid names.") -+ endif() -+ else() -+ set(_FOUND_VAR ${_NAME_UPPER}_FOUND) -+ endif() -+ -+ # collect all variables which were not found, so they can be printed, so the -+ # user knows better what went wrong (#6375) -+ set(MISSING_VARS "") -+ set(DETAILS "") -+ # check if all passed variables are valid -+ set(FPHSA_FOUND_${_NAME} TRUE) -+ foreach(_CURRENT_VAR ${FPHSA_REQUIRED_VARS}) -+ if(NOT ${_CURRENT_VAR}) -+ set(FPHSA_FOUND_${_NAME} FALSE) -+ string(APPEND MISSING_VARS " ${_CURRENT_VAR}") -+ else() -+ string(APPEND DETAILS "[${${_CURRENT_VAR}}]") -+ endif() -+ endforeach() -+ if(FPHSA_FOUND_${_NAME}) -+ set(${_NAME}_FOUND TRUE) -+ set(${_NAME_UPPER}_FOUND TRUE) -+ else() -+ set(${_NAME}_FOUND FALSE) -+ set(${_NAME_UPPER}_FOUND FALSE) -+ endif() -+ -+ # component handling -+ unset(FOUND_COMPONENTS_MSG) -+ unset(MISSING_COMPONENTS_MSG) -+ -+ if(FPHSA_HANDLE_COMPONENTS) -+ foreach(comp ${${_NAME}_FIND_COMPONENTS}) -+ if(${_NAME}_${comp}_FOUND) -+ -+ if(NOT DEFINED FOUND_COMPONENTS_MSG) -+ set(FOUND_COMPONENTS_MSG "found components:") -+ endif() -+ string(APPEND FOUND_COMPONENTS_MSG " ${comp}") -+ -+ else() -+ -+ if(NOT DEFINED MISSING_COMPONENTS_MSG) -+ set(MISSING_COMPONENTS_MSG "missing components:") -+ endif() -+ string(APPEND MISSING_COMPONENTS_MSG " ${comp}") -+ -+ if(${_NAME}_FIND_REQUIRED_${comp}) -+ set(${_NAME}_FOUND FALSE) -+ string(APPEND MISSING_VARS " ${comp}") -+ endif() -+ -+ endif() -+ endforeach() -+ set(COMPONENT_MSG "${FOUND_COMPONENTS_MSG} ${MISSING_COMPONENTS_MSG}") -+ string(APPEND DETAILS "[c${COMPONENT_MSG}]") -+ endif() -+ -+ # version handling: -+ set(VERSION_MSG "") -+ set(VERSION_OK TRUE) -+ -+ # check with DEFINED here as the requested or found version may be "0" -+ if (DEFINED ${_NAME}_FIND_VERSION) -+ if(DEFINED ${FPHSA_VERSION_VAR}) -+ set(_FOUND_VERSION ${${FPHSA_VERSION_VAR}}) -+ -+ if(${_NAME}_FIND_VERSION_EXACT) # exact version required -+ # count the dots in the version string -+ string(REGEX REPLACE "[^.]" "" _VERSION_DOTS "${_FOUND_VERSION}") -+ # add one dot because there is one dot more than there are components -+ string(LENGTH "${_VERSION_DOTS}." _VERSION_DOTS) -+ if (_VERSION_DOTS GREATER ${_NAME}_FIND_VERSION_COUNT) -+ # Because of the C++ implementation of find_package() ${_NAME}_FIND_VERSION_COUNT -+ # is at most 4 here. Therefore a simple lookup table is used. -+ if (${_NAME}_FIND_VERSION_COUNT EQUAL 1) -+ set(_VERSION_REGEX "[^.]*") -+ elseif (${_NAME}_FIND_VERSION_COUNT EQUAL 2) -+ set(_VERSION_REGEX "[^.]*\\.[^.]*") -+ elseif (${_NAME}_FIND_VERSION_COUNT EQUAL 3) -+ set(_VERSION_REGEX "[^.]*\\.[^.]*\\.[^.]*") -+ else () -+ set(_VERSION_REGEX "[^.]*\\.[^.]*\\.[^.]*\\.[^.]*") -+ endif () -+ string(REGEX REPLACE "^(${_VERSION_REGEX})\\..*" "\\1" _VERSION_HEAD "${_FOUND_VERSION}") -+ unset(_VERSION_REGEX) -+ if (NOT ${_NAME}_FIND_VERSION VERSION_EQUAL _VERSION_HEAD) -+ set(VERSION_MSG "Found unsuitable version \"${_FOUND_VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"") -+ set(VERSION_OK FALSE) -+ else () -+ set(VERSION_MSG "(found suitable exact version \"${_FOUND_VERSION}\")") -+ endif () -+ unset(_VERSION_HEAD) -+ else () -+ if (NOT ${_NAME}_FIND_VERSION VERSION_EQUAL _FOUND_VERSION) -+ set(VERSION_MSG "Found unsuitable version \"${_FOUND_VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"") -+ set(VERSION_OK FALSE) -+ else () -+ set(VERSION_MSG "(found suitable exact version \"${_FOUND_VERSION}\")") -+ endif () -+ endif () -+ unset(_VERSION_DOTS) -+ -+ else() # minimum version specified: -+ if (${_NAME}_FIND_VERSION VERSION_GREATER _FOUND_VERSION) -+ set(VERSION_MSG "Found unsuitable version \"${_FOUND_VERSION}\", but required is at least \"${${_NAME}_FIND_VERSION}\"") -+ set(VERSION_OK FALSE) -+ else () -+ set(VERSION_MSG "(found suitable version \"${_FOUND_VERSION}\", minimum required is \"${${_NAME}_FIND_VERSION}\")") -+ endif () -+ endif() -+ -+ else() -+ -+ # if the package was not found, but a version was given, add that to the output: -+ if(${_NAME}_FIND_VERSION_EXACT) -+ set(VERSION_MSG "(Required is exact version \"${${_NAME}_FIND_VERSION}\")") -+ else() -+ set(VERSION_MSG "(Required is at least version \"${${_NAME}_FIND_VERSION}\")") -+ endif() -+ -+ endif() -+ else () -+ # Check with DEFINED as the found version may be 0. -+ if(DEFINED ${FPHSA_VERSION_VAR}) -+ set(VERSION_MSG "(found version \"${${FPHSA_VERSION_VAR}}\")") -+ endif() -+ endif () -+ -+ if(VERSION_OK) -+ string(APPEND DETAILS "[v${${FPHSA_VERSION_VAR}}(${${_NAME}_FIND_VERSION})]") -+ else() -+ set(${_NAME}_FOUND FALSE) -+ endif() -+ -+ -+ # print the result: -+ if (${_NAME}_FOUND) -+ FIND_PACKAGE_MESSAGE(${_NAME} "Found ${_NAME}: ${${_FIRST_REQUIRED_VAR}} ${VERSION_MSG} ${COMPONENT_MSG}" "${DETAILS}") -+ else () -+ -+ if(FPHSA_CONFIG_MODE) -+ _FPHSA_HANDLE_FAILURE_CONFIG_MODE() -+ else() -+ if(NOT VERSION_OK) -+ _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: ${VERSION_MSG} (found ${${_FIRST_REQUIRED_VAR}})") -+ else() -+ _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} (missing:${MISSING_VARS}) ${VERSION_MSG}") -+ endif() -+ endif() -+ -+ endif () -+ -+ set(${_NAME}_FOUND ${${_NAME}_FOUND} PARENT_SCOPE) -+ set(${_NAME_UPPER}_FOUND ${${_NAME}_FOUND} PARENT_SCOPE) -+endfunction() -diff --git a/cmake-compat/FindPackageMessage.cmake b/cmake-compat/FindPackageMessage.cmake -new file mode 100644 -index 00000000..0628b981 ---- /dev/null -+++ b/cmake-compat/FindPackageMessage.cmake -@@ -0,0 +1,48 @@ -+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -+# file Copyright.txt or https://cmake.org/licensing for details. -+ -+#[=======================================================================[.rst: -+FindPackageMessage -+------------------ -+ -+.. code-block:: cmake -+ -+ find_package_message(<name> "message for user" "find result details") -+ -+This function is intended to be used in FindXXX.cmake modules files. -+It will print a message once for each unique find result. This is -+useful for telling the user where a package was found. The first -+argument specifies the name (XXX) of the package. The second argument -+specifies the message to display. The third argument lists details -+about the find result so that if they change the message will be -+displayed again. The macro also obeys the QUIET argument to the -+find_package command. -+ -+Example: -+ -+.. code-block:: cmake -+ -+ if(X11_FOUND) -+ find_package_message(X11 "Found X11: ${X11_X11_LIB}" -+ "[${X11_X11_LIB}][${X11_INCLUDE_DIR}]") -+ else() -+ ... -+ endif() -+#]=======================================================================] -+ -+function(find_package_message pkg msg details) -+ # Avoid printing a message repeatedly for the same find result. -+ if(NOT ${pkg}_FIND_QUIETLY) -+ string(REPLACE "\n" "" details "${details}") -+ set(DETAILS_VAR FIND_PACKAGE_MESSAGE_DETAILS_${pkg}) -+ if(NOT "${details}" STREQUAL "${${DETAILS_VAR}}") -+ # The message has not yet been printed. -+ message(STATUS "${msg}") -+ -+ # Save the find details in the cache to avoid printing the same -+ # message again. -+ set("${DETAILS_VAR}" "${details}" -+ CACHE INTERNAL "Details about finding ${pkg}") -+ endif() -+ endif() -+endfunction() -diff --git a/cmake-compat/SelectLibraryConfigurations.cmake b/cmake-compat/SelectLibraryConfigurations.cmake -new file mode 100644 -index 00000000..4c0e9a8c ---- /dev/null -+++ b/cmake-compat/SelectLibraryConfigurations.cmake -@@ -0,0 +1,80 @@ -+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying -+# file Copyright.txt or https://cmake.org/licensing for details. -+ -+#[=======================================================================[.rst: -+SelectLibraryConfigurations -+--------------------------- -+ -+.. code-block:: cmake -+ -+ select_library_configurations(basename) -+ -+This macro takes a library base name as an argument, and will choose -+good values for the variables -+ -+:: -+ -+ basename_LIBRARY -+ basename_LIBRARIES -+ basename_LIBRARY_DEBUG -+ basename_LIBRARY_RELEASE -+ -+depending on what has been found and set. -+ -+If only ``basename_LIBRARY_RELEASE`` is defined, ``basename_LIBRARY`` will -+be set to the release value, and ``basename_LIBRARY_DEBUG`` will be set -+to ``basename_LIBRARY_DEBUG-NOTFOUND``. If only ``basename_LIBRARY_DEBUG`` -+is defined, then ``basename_LIBRARY`` will take the debug value, and -+``basename_LIBRARY_RELEASE`` will be set to ``basename_LIBRARY_RELEASE-NOTFOUND``. -+ -+If the generator supports configuration types, then ``basename_LIBRARY`` -+and ``basename_LIBRARIES`` will be set with debug and optimized flags -+specifying the library to be used for the given configuration. If no -+build type has been set or the generator in use does not support -+configuration types, then ``basename_LIBRARY`` and ``basename_LIBRARIES`` -+will take only the release value, or the debug value if the release one -+is not set. -+#]=======================================================================] -+ -+# This macro was adapted from the FindQt4 CMake module and is maintained by Will -+# Dicharry <wdicharry@stellarscience.com>. -+ -+macro(select_library_configurations basename) -+ if(NOT ${basename}_LIBRARY_RELEASE) -+ set(${basename}_LIBRARY_RELEASE "${basename}_LIBRARY_RELEASE-NOTFOUND" CACHE FILEPATH "Path to a library.") -+ endif() -+ if(NOT ${basename}_LIBRARY_DEBUG) -+ set(${basename}_LIBRARY_DEBUG "${basename}_LIBRARY_DEBUG-NOTFOUND" CACHE FILEPATH "Path to a library.") -+ endif() -+ -+ get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) -+ if( ${basename}_LIBRARY_DEBUG AND ${basename}_LIBRARY_RELEASE AND -+ NOT ${basename}_LIBRARY_DEBUG STREQUAL ${basename}_LIBRARY_RELEASE AND -+ ( _isMultiConfig OR CMAKE_BUILD_TYPE ) ) -+ # if the generator is multi-config or if CMAKE_BUILD_TYPE is set for -+ # single-config generators, set optimized and debug libraries -+ set( ${basename}_LIBRARY "" ) -+ foreach( _libname IN LISTS ${basename}_LIBRARY_RELEASE ) -+ list( APPEND ${basename}_LIBRARY optimized "${_libname}" ) -+ endforeach() -+ foreach( _libname IN LISTS ${basename}_LIBRARY_DEBUG ) -+ list( APPEND ${basename}_LIBRARY debug "${_libname}" ) -+ endforeach() -+ elseif( ${basename}_LIBRARY_RELEASE ) -+ set( ${basename}_LIBRARY ${${basename}_LIBRARY_RELEASE} ) -+ elseif( ${basename}_LIBRARY_DEBUG ) -+ set( ${basename}_LIBRARY ${${basename}_LIBRARY_DEBUG} ) -+ else() -+ set( ${basename}_LIBRARY "${basename}_LIBRARY-NOTFOUND") -+ endif() -+ -+ set( ${basename}_LIBRARIES "${${basename}_LIBRARY}" ) -+ -+ if( ${basename}_LIBRARY ) -+ set( ${basename}_FOUND TRUE ) -+ endif() -+ -+ mark_as_advanced( ${basename}_LIBRARY_RELEASE -+ ${basename}_LIBRARY_DEBUG -+ ) -+endmacro() |