|
|
@@ -0,0 +1,174 @@
|
|
|
+#[=======================================================================[.rst
|
|
|
+FindLibqrcodegencpp
|
|
|
+-------------------
|
|
|
+
|
|
|
+FindModule for Libqrcodegencpp and associated libraries
|
|
|
+
|
|
|
+Imported Targets
|
|
|
+^^^^^^^^^^^^^^^^
|
|
|
+
|
|
|
+.. versionadded:: 3.0
|
|
|
+
|
|
|
+This module defines the :prop_tgt:`IMPORTED` target ``Libqrcodegencpp::Libqrcodegencpp``.
|
|
|
+
|
|
|
+Result Variables
|
|
|
+^^^^^^^^^^^^^^^^
|
|
|
+
|
|
|
+This module sets the following variables:
|
|
|
+
|
|
|
+``Libqrcodegencpp_FOUND``
|
|
|
+ True, if all required components and the core library were found.
|
|
|
+``Libqrcodegencpp_VERSION``
|
|
|
+ Detected version of found Libqrcodegencpp libraries.
|
|
|
+
|
|
|
+Cache variables
|
|
|
+^^^^^^^^^^^^^^^
|
|
|
+
|
|
|
+The following cache variables may also be set:
|
|
|
+
|
|
|
+``Libqrcodegencpp_LIBRARY``
|
|
|
+ Path to the library component of Libqrcodegencpp.
|
|
|
+``Libqrcodegencpp_INCLUDE_DIR``
|
|
|
+ Directory containing ``qrcodegen.hpp``.
|
|
|
+
|
|
|
+#]=======================================================================]
|
|
|
+
|
|
|
+# cmake-format: off
|
|
|
+# cmake-lint: disable=C0103
|
|
|
+# cmake-lint: disable=C0301
|
|
|
+# cmake-format: on
|
|
|
+
|
|
|
+include(FindPackageHandleStandardArgs)
|
|
|
+
|
|
|
+find_package(PkgConfig QUIET)
|
|
|
+if(PKG_CONFIG_FOUND)
|
|
|
+ pkg_search_module(PC_Libqrcodegencpp QUIET qrcodegencpp)
|
|
|
+endif()
|
|
|
+
|
|
|
+# Libqrcodegencpp_set_soname: Set SONAME on imported library target
|
|
|
+macro(Libqrcodegencpp_set_soname)
|
|
|
+ if(CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin")
|
|
|
+ execute_process(
|
|
|
+ COMMAND sh -c "otool -D '${Libqrcodegencpp_LIBRARY}' | grep -v '${Libqrcodegencpp_LIBRARY}'"
|
|
|
+ OUTPUT_VARIABLE _output
|
|
|
+ RESULT_VARIABLE _result)
|
|
|
+
|
|
|
+ if(_result EQUAL 0 AND _output MATCHES "^@rpath/")
|
|
|
+ set_property(TARGET Libqrcodegencpp::Libqrcodegencpp PROPERTY IMPORTED_SONAME "${_output}")
|
|
|
+ endif()
|
|
|
+ elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux|FreeBSD")
|
|
|
+ execute_process(
|
|
|
+ COMMAND sh -c "${CMAKE_OBJDUMP} -p '${Libqrcodegencpp_LIBRARY}' | grep SONAME"
|
|
|
+ OUTPUT_VARIABLE _output
|
|
|
+ RESULT_VARIABLE _result)
|
|
|
+
|
|
|
+ if(_result EQUAL 0)
|
|
|
+ string(REGEX REPLACE "[ \t]+SONAME[ \t]+([^ \t]+)" "\\1" _soname "${_output}")
|
|
|
+ set_property(TARGET Libqrcodegencpp::Libqrcodegencpp PROPERTY IMPORTED_SONAME "${_soname}")
|
|
|
+ unset(_soname)
|
|
|
+ endif()
|
|
|
+ endif()
|
|
|
+ unset(_output)
|
|
|
+ unset(_result)
|
|
|
+endmacro()
|
|
|
+
|
|
|
+# Libqrcodegencpp_find_dll: Find DLL for corresponding import library
|
|
|
+macro(Libqrcodegencpp_find_dll)
|
|
|
+ cmake_path(GET Libqrcodegencpp_IMPLIB PARENT_PATH _implib_path)
|
|
|
+ cmake_path(SET _bin_path NORMALIZE "${_implib_path}/../bin")
|
|
|
+
|
|
|
+ string(REGEX REPLACE "[0-9]+\\.([0-9]+)\\.[0-9]+" "\\1" _dll_version "${Libqrcodegencpp_VERSION}")
|
|
|
+
|
|
|
+ find_program(
|
|
|
+ Libqrcodegencpp_LIBRARY
|
|
|
+ NAMES qrcodegencpp.dll
|
|
|
+ HINTS ${_implib_path} ${_bin_path}
|
|
|
+ DOC "Libqrcodegencpp DLL location")
|
|
|
+
|
|
|
+ if(NOT Libqrcodegencpp_LIBRARY)
|
|
|
+ set(Libqrcodegencpp_LIBRARY "${Libqrcodegencpp_IMPLIB}")
|
|
|
+ endif()
|
|
|
+ unset(_implib_path)
|
|
|
+ unset(_bin_path)
|
|
|
+ unset(_dll_version)
|
|
|
+endmacro()
|
|
|
+
|
|
|
+find_path(
|
|
|
+ Libqrcodegencpp_INCLUDE_DIR
|
|
|
+ NAMES qrcodegen.hpp
|
|
|
+ HINTS ${PC_Libqrcodegencpp_INCLUDE_DIRS}
|
|
|
+ PATHS /usr/include /usr/local/include
|
|
|
+ PATH_SUFFIXES qrcodegencpp qrcodegen
|
|
|
+ DOC "Libqrcodegencpp include directory")
|
|
|
+
|
|
|
+if(PC_Libqrcodegencpp_VERSION VERSION_GREATER 0)
|
|
|
+ set(Libqrcodegencpp_VERSION ${PC_Libqrcodegencpp_VERSION})
|
|
|
+else()
|
|
|
+ if(NOT Libqrcodegencpp_FIND_QUIETLY)
|
|
|
+ message(AUTHOR_WARNING "Failed to find Libqrcodegencpp version.")
|
|
|
+ endif()
|
|
|
+ set(Libqrcodegencpp_VERSION 0.0.0)
|
|
|
+endif()
|
|
|
+
|
|
|
+if(CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
|
|
|
+ find_library(
|
|
|
+ Libqrcodegencpp_IMPLIB
|
|
|
+ NAMES libqrcodegencpp qrcodegencpp
|
|
|
+ DOC "Libqrcodegencpp import library location")
|
|
|
+
|
|
|
+ libqrcodegencpp_find_dll()
|
|
|
+else()
|
|
|
+ find_library(
|
|
|
+ Libqrcodegencpp_LIBRARY
|
|
|
+ NAMES libqrcodegencpp qrcodegencpp
|
|
|
+ HINTS ${PC_Libqrcodegencpp_LIBRARY_DIRS}
|
|
|
+ PATHS /usr/lib /usr/local/lib
|
|
|
+ DOC "Libqrcodegencpp location")
|
|
|
+endif()
|
|
|
+
|
|
|
+if(CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin|Windows")
|
|
|
+ set(Libqrcodegencpp_ERROR_REASON "Ensure that a qrcodegencpp distribution is provided as part of CMAKE_PREFIX_PATH.")
|
|
|
+elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux|FreeBSD")
|
|
|
+ set(Libqrcodegencpp_ERROR_REASON "Ensure that qrcodegencpp is installed on the system.")
|
|
|
+endif()
|
|
|
+
|
|
|
+find_package_handle_standard_args(
|
|
|
+ Libqrcodegencpp
|
|
|
+ REQUIRED_VARS Libqrcodegencpp_LIBRARY Libqrcodegencpp_INCLUDE_DIR
|
|
|
+ VERSION_VAR Libqrcodegencpp_VERSION REASON_FAILURE_MESSAGE "${Libqrcodegencpp_ERROR_REASON}")
|
|
|
+mark_as_advanced(Libqrcodegencpp_INCLUDE_DIR Libqrcodegencpp_LIBRARY Libqrcodegencpp_IMPLIB)
|
|
|
+unset(Libqrcodegencpp_ERROR_REASON)
|
|
|
+
|
|
|
+if(Libqrcodegencpp_FOUND)
|
|
|
+ if(NOT TARGET Libqrcodegencpp::Libqrcodegencpp)
|
|
|
+ if(IS_ABSOLUTE "${Libqrcodegencpp_LIBRARY}")
|
|
|
+ if(DEFINED Libqrcodegencpp_IMPLIB)
|
|
|
+ if(Libqrcodegencpp_IMPLIB STREQUAL Libqrcodegencpp_LIBRARY)
|
|
|
+ add_library(Libqrcodegencpp::Libqrcodegencpp STATIC IMPORTED)
|
|
|
+ else()
|
|
|
+ add_library(Libqrcodegencpp::Libqrcodegencpp SHARED IMPORTED)
|
|
|
+ set_property(TARGET Libqrcodegencpp::Libqrcodegencpp PROPERTY IMPORTED_IMPLIB "${Libqrcodegencpp_IMPLIB}")
|
|
|
+ endif()
|
|
|
+ else()
|
|
|
+ add_library(Libqrcodegencpp::Libqrcodegencpp UNKNOWN IMPORTED)
|
|
|
+ endif()
|
|
|
+ set_property(TARGET Libqrcodegencpp::Libqrcodegencpp PROPERTY IMPORTED_LOCATION "${Libqrcodegencpp_LIBRARY}")
|
|
|
+ else()
|
|
|
+ add_library(Libqrcodegencpp::Libqrcodegencpp INTERFACE IMPORTED)
|
|
|
+ set_property(TARGET Libqrcodegencpp::Libqrcodegencpp PROPERTY IMPORTED_LIBNAME "${Libqrcodegencpp_LIBRARY}")
|
|
|
+ endif()
|
|
|
+
|
|
|
+ libqrcodegencpp_set_soname()
|
|
|
+ set_target_properties(
|
|
|
+ Libqrcodegencpp::Libqrcodegencpp
|
|
|
+ PROPERTIES INTERFACE_COMPILE_OPTIONS "${PC_Libqrcodegencpp_CFLAGS_OTHER}"
|
|
|
+ INTERFACE_INCLUDE_DIRECTORIES "${Libqrcodegencpp_INCLUDE_DIR}"
|
|
|
+ VERSION ${Libqrcodegencpp_VERSION})
|
|
|
+ endif()
|
|
|
+endif()
|
|
|
+
|
|
|
+include(FeatureSummary)
|
|
|
+set_package_properties(
|
|
|
+ Libqrcodegencpp PROPERTIES
|
|
|
+ URL "https://www.nayuki.io/page/qr-code-generator-library"
|
|
|
+ DESCRIPTION "This project aims to be the best, clearest library for generating QR Codes in C++.")
|