1# Copyright (c) 2012, Intel Corporation 2# 3# Redistribution and use in source and binary forms, with or without 4# modification, are permitted provided that the following conditions are met: 5# 6# * Redistributions of source code must retain the above copyright notice, this 7# list of conditions and the following disclaimer. 8# * Redistributions in binary form must reproduce the above copyright notice, 9# this list of conditions and the following disclaimer in the documentation 10# and/or other materials provided with the distribution. 11# * Neither the name of Intel Corporation nor the names of its contributors may 12# be used to endorse or promote products derived from this software without 13# specific prior written permission. 14# 15# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 16# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 19# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25# POSSIBILITY OF SUCH DAMAGE. 26 27 28# Try to find HarfBuzz include and library directories. 29# 30# After successful discovery, this will set for inclusion where needed: 31# 32# HARFBUZZ_INCLUDE_DIRS - containg the HarfBuzz headers 33# HARFBUZZ_LIBRARIES - containg the HarfBuzz library 34 35include(FindPkgConfig) 36pkg_check_modules(PC_HARFBUZZ QUIET harfbuzz) 37 38find_path(HARFBUZZ_INCLUDE_DIRS 39 NAMES hb.h 40 HINTS ${PC_HARFBUZZ_INCLUDEDIR} 41 ${PC_HARFBUZZ_INCLUDE_DIRS} 42 PATH_SUFFIXES harfbuzz) 43 44find_library(HARFBUZZ_LIBRARIES 45 NAMES harfbuzz 46 HINTS ${PC_HARFBUZZ_LIBDIR} 47 ${PC_HARFBUZZ_LIBRARY_DIRS}) 48 49if (HARFBUZZ_INCLUDE_DIRS) 50 if (EXISTS "${HARFBUZZ_INCLUDE_DIRS}/hb-version.h") 51 file(READ "${HARFBUZZ_INCLUDE_DIRS}/hb-version.h" _harfbuzz_version_content) 52 53 string(REGEX MATCH 54 "#define +HB_VERSION_STRING +\"([0-9]+\\.[0-9]+\\.[0-9]+)\"" 55 _dummy "${_harfbuzz_version_content}") 56 set(HARFBUZZ_VERSION "${CMAKE_MATCH_1}") 57 endif () 58endif () 59 60if ("${harfbuzz_FIND_VERSION}" VERSION_GREATER "${HARFBUZZ_VERSION}") 61 message(FATAL_ERROR 62 "Required version (" ${harfbuzz_FIND_VERSION} ")" 63 " is higher than found version (" ${HARFBUZZ_VERSION} ")") 64endif () 65 66include(FindPackageHandleStandardArgs) 67find_package_handle_standard_args( 68 harfbuzz 69 REQUIRED_VARS HARFBUZZ_INCLUDE_DIRS HARFBUZZ_LIBRARIES 70 VERSION_VAR HARFBUZZ_VERSION) 71 72mark_as_advanced( 73 HARFBUZZ_INCLUDE_DIRS 74 HARFBUZZ_LIBRARIES) 75 76# Allow easy linking as in 77# 78# target_link_libraries(freetype PRIVATE Harfbuzz::Harfbuzz) 79# 80if (NOT CMAKE_VERSION VERSION_LESS 3.1) 81 if (HARFBUZZ_FOUND AND NOT TARGET Harfbuzz::Harfbuzz) 82 add_library(Harfbuzz::Harfbuzz INTERFACE IMPORTED) 83 set_target_properties( 84 Harfbuzz::Harfbuzz PROPERTIES 85 INTERFACE_INCLUDE_DIRECTORIES "${HARFBUZZ_INCLUDE_DIRS}") 86 endif () 87endif () 88