add harfbuzz fallback

This commit is contained in:
Mathis Logemann 2021-07-06 22:46:07 +02:00
parent cdb598e67b
commit 3397fff8ea

View file

@ -109,6 +109,9 @@ message(STATUS "Installing plugins to ${PLUGINS_INSTALL_DIR}")
set(FONTS_INSTALL_DIR ${MAPNIK_BIN_DIR}/fonts CACHE STRING "installs the fonts in the specified directory") set(FONTS_INSTALL_DIR ${MAPNIK_BIN_DIR}/fonts CACHE STRING "installs the fonts in the specified directory")
message(STATUS "Installing fonts to ${FONTS_INSTALL_DIR}") message(STATUS "Installing fonts to ${FONTS_INSTALL_DIR}")
set(MAPNIK_COMPILE_DEFS "")
set(MAPNIK_OPTIONAL_LIBS "")
set(MAPNIK_OPTIONAL_LIBS_INCLUDE "")
# Begin project configuration # Begin project configuration
mapnik_find_threads() mapnik_find_threads()
@ -119,8 +122,19 @@ if(USE_BOOST_REGEX_ICU_WORKAROUND)
endif() endif()
mapnik_find_package(Freetype REQUIRED) mapnik_find_package(Freetype REQUIRED)
# we use our "own" FindHarfBuzz. See https://github.com/mapnik/mapnik/pull/4191#issuecomment-874728157 for more details
mapnik_find_package(HarfBuzz 0.9.34 REQUIRED COMPONENTS ICU) # try to find harfbuzz with the native configuration and fallback to our "own" FindHarfBuzz
set(HARFBUZZ_MINIMUM_VERSION 0.9.34)
mapnik_find_package(harfbuzz CONFIG QUIET)
if(harfbuzz_FOUND)
message(STATUS "Found harfbuzz native cmake")
list(APPEND MAPNIK_OPTIONAL_LIBS harfbuzz::harfbuzz)
else()
# we use our "own" FindHarfBuzz. See https://github.com/mapnik/mapnik/pull/4191#issuecomment-874728157 for more details
message(STATUS "Fallback to FindHarfBuzz")
mapnik_find_package(HarfBuzz ${HARFBUZZ_MINIMUM_VERSION} REQUIRED COMPONENTS ICU)
list(APPEND MAPNIK_OPTIONAL_LIBS HarfBuzz::HarfBuzz HarfBuzz::ICU)
endif()
if(USE_EXTERNAL_MAPBOX_GEOMETRY) if(USE_EXTERNAL_MAPBOX_GEOMETRY)
# this is used to provide a way to specify include dirs with CACHE VARIABLES # this is used to provide a way to specify include dirs with CACHE VARIABLES
@ -179,9 +193,6 @@ if(NOT MAPBOX_VARIANT_INCLUDE_DIRS)
message(FATAL_ERROR "Set MAPBOX_VARIANT_INCLUDE_DIRS to the mapbox/variant include dir") message(FATAL_ERROR "Set MAPBOX_VARIANT_INCLUDE_DIRS to the mapbox/variant include dir")
endif() endif()
set(MAPNIK_COMPILE_DEFS "")
set(MAPNIK_OPTIONAL_LIBS "")
set(MAPNIK_OPTIONAL_LIBS_INCLUDE "")
# (used by MapnikInstall.cmake. properties are needed since "set(...)" will be out of scope # (used by MapnikInstall.cmake. properties are needed since "set(...)" will be out of scope
set_property(GLOBAL PROPERTY TARGETS "") set_property(GLOBAL PROPERTY TARGETS "")
set_property(GLOBAL PROPERTY PLUGINS "") set_property(GLOBAL PROPERTY PLUGINS "")
@ -278,8 +289,6 @@ target_link_libraries(core INTERFACE
Boost::regex Boost::regex
Boost::filesystem Boost::filesystem
Freetype::Freetype Freetype::Freetype
HarfBuzz::HarfBuzz
HarfBuzz::ICU
${MAPNIK_OPTIONAL_LIBS} ${MAPNIK_OPTIONAL_LIBS}
) )
target_compile_definitions(core INTERFACE ${MAPNIK_COMPILE_DEFS}) target_compile_definitions(core INTERFACE ${MAPNIK_COMPILE_DEFS})