From dc9f6f27512dff06d8549488956ca3e5bbf36904 Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Mon, 15 Jul 2019 18:52:14 +0200 Subject: [PATCH] cmake: Added find_package module for fontconfig which is not available with cmake < 3.14 This file has been taken from cmake 3.14 --- CMakeModules/FindFontconfig.cmake | 101 ++++++++++++++++++++++++++++++ src/osgText/CMakeLists.txt | 2 +- 2 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 CMakeModules/FindFontconfig.cmake diff --git a/CMakeModules/FindFontconfig.cmake b/CMakeModules/FindFontconfig.cmake new file mode 100644 index 000000000..96e1e7608 --- /dev/null +++ b/CMakeModules/FindFontconfig.cmake @@ -0,0 +1,101 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +#[=======================================================================[.rst: +FindFontconfig +-------------- + +Find Fontconfig headers and library. + +Imported Targets +^^^^^^^^^^^^^^^^ + +``Fontconfig::Fontconfig`` + The Fontconfig library, if found. + +Result Variables +^^^^^^^^^^^^^^^^ + +This will define the following variables in your project: + +``FONTCONFIG_FOUND`` + true if (the requested version of) Fontconfig is available. +``FONTCONFIG_VERSION`` + the version of Fontconfig. +``FONTCONFIG_LIBRARIES`` + the libraries to link against to use Fontconfig. +``FONTCONFIG_INCLUDE_DIRS`` + where to find the Fontconfig headers. +``FONTCONFIG_COMPILE_OPTIONS`` + this should be passed to target_compile_options(), if the + target is not used for linking + +#]=======================================================================] + + +# use pkg-config to get the directories and then use these values +# in the FIND_PATH() and FIND_LIBRARY() calls +find_package(PkgConfig QUIET) +pkg_check_modules(PKG_FONTCONFIG QUIET fontconfig) +set(FONTCONFIG_COMPILE_OPTIONS ${PKG_FONTCONFIG_CFLAGS_OTHER}) +set(FONTCONFIG_VERSION ${PKG_FONTCONFIG_VERSION}) + +find_path( FONTCONFIG_INCLUDE_DIR + NAMES + fontconfig/fontconfig.h + HINTS + ${PKG_FONTCONFIG_INCLUDE_DIRS} + /usr/X11/include +) + +find_library( FONTCONFIG_LIBRARY + NAMES + fontconfig + PATHS + ${PKG_FONTCONFIG_LIBRARY_DIRS} +) + +if (FONTCONFIG_INCLUDE_DIR AND NOT FONTCONFIG_VERSION) + file(STRINGS ${FONTCONFIG_INCLUDE_DIR}/fontconfig/fontconfig.h _contents REGEX "^#define[ \t]+FC_[A-Z]+[ \t]+[0-9]+$") + unset(FONTCONFIG_VERSION) + foreach(VPART MAJOR MINOR REVISION) + foreach(VLINE ${_contents}) + if(VLINE MATCHES "^#define[\t ]+FC_${VPART}[\t ]+([0-9]+)$") + set(FONTCONFIG_VERSION_PART "${CMAKE_MATCH_1}") + if(FONTCONFIG_VERSION) + string(APPEND FONTCONFIG_VERSION ".${FONTCONFIG_VERSION_PART}") + else() + set(FONTCONFIG_VERSION "${FONTCONFIG_VERSION_PART}") + endif() + endif() + endforeach() + endforeach() +endif () + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Fontconfig + FOUND_VAR + FONTCONFIG_FOUND + REQUIRED_VARS + FONTCONFIG_LIBRARY + FONTCONFIG_INCLUDE_DIR + VERSION_VAR + FONTCONFIG_VERSION +) + + +if(FONTCONFIG_FOUND AND NOT TARGET Fontconfig::Fontconfig) + add_library(Fontconfig::Fontconfig UNKNOWN IMPORTED) + set_target_properties(Fontconfig::Fontconfig PROPERTIES + IMPORTED_LOCATION "${FONTCONFIG_LIBRARY}" + INTERFACE_COMPILE_OPTIONS "${FONTCONFIG_COMPILE_OPTIONS}" + INTERFACE_INCLUDE_DIRECTORIES "${FONTCONFIG_INCLUDE_DIR}" + ) +endif() + +mark_as_advanced(FONTCONFIG_LIBRARY FONTCONFIG_INCLUDE_DIR) + +if(FONTCONFIG_FOUND) + set(FONTCONFIG_LIBRARIES ${FONTCONFIG_LIBRARY}) + set(FONTCONFIG_INCLUDE_DIRS ${FONTCONFIG_INCLUDE_DIR}) +endif() diff --git a/src/osgText/CMakeLists.txt b/src/osgText/CMakeLists.txt index 062f5555e..b974179ae 100644 --- a/src/osgText/CMakeLists.txt +++ b/src/osgText/CMakeLists.txt @@ -1,4 +1,4 @@ -find_package(Fontconfig MODULE QUIET) +find_package(Fontconfig MODULE) IF(DYNAMIC_OPENSCENEGRAPH) ADD_DEFINITIONS(-DOSGTEXT_LIBRARY)