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# Try to find Harfbuzz include and library directories. 28# 29# After successful discovery, this will set for inclusion where needed: 30# HARFBUZZ_INCLUDE_DIRS - containg the HarfBuzz headers 31# HARFBUZZ_LIBRARIES - containg the HarfBuzz library 32 33include(FindPkgConfig) 34pkg_check_modules(PC_HARFBUZZ QUIET harfbuzz) 35 36find_path(HARFBUZZ_INCLUDE_DIRS 37 NAMES hb.h 38 HINTS ${PC_HARFBUZZ_INCLUDEDIR} 39 ${PC_HARFBUZZ_INCLUDE_DIRS} 40 PATH_SUFFIXES harfbuzz 41) 42 43find_library(HARFBUZZ_LIBRARIES NAMES harfbuzz 44 HINTS ${PC_HARFBUZZ_LIBDIR} 45 ${PC_HARFBUZZ_LIBRARY_DIRS} 46) 47 48if (HARFBUZZ_INCLUDE_DIRS) 49 if (EXISTS "${HARFBUZZ_INCLUDE_DIRS}/hb-version.h") 50 file(READ "${HARFBUZZ_INCLUDE_DIRS}/hb-version.h" _harfbuzz_version_content) 51 52 string(REGEX MATCH "#define +HB_VERSION_STRING +\"([0-9]+\\.[0-9]+\\.[0-9]+)\"" _dummy "${_harfbuzz_version_content}") 53 set(HARFBUZZ_VERSION "${CMAKE_MATCH_1}") 54 endif () 55endif () 56 57if ("${harfbuzz_FIND_VERSION}" VERSION_GREATER "${HARFBUZZ_VERSION}") 58 message(FATAL_ERROR "Required version (" ${harfbuzz_FIND_VERSION} ") is higher than found version (" ${HARFBUZZ_VERSION} ")") 59endif () 60 61include(FindPackageHandleStandardArgs) 62FIND_PACKAGE_HANDLE_STANDARD_ARGS( 63 harfbuzz 64 REQUIRED_VARS HARFBUZZ_INCLUDE_DIRS HARFBUZZ_LIBRARIES 65 VERSION_VAR HARFBUZZ_VERSION) 66 67mark_as_advanced( 68 HARFBUZZ_INCLUDE_DIRS 69 HARFBUZZ_LIBRARIES 70) 71 72# Allows easy linking as in 73# target_link_libraries(freetype PRIVATE Harfbuzz::Harfbuzz) 74if (NOT CMAKE_VERSION VERSION_LESS 3.1) 75 if (HARFBUZZ_FOUND AND NOT TARGET Harfbuzz::Harfbuzz) 76 add_library(Harfbuzz::Harfbuzz INTERFACE IMPORTED) 77 set_target_properties( 78 Harfbuzz::Harfbuzz PROPERTIES 79 INTERFACE_INCLUDE_DIRECTORIES "${HARFBUZZ_INCLUDE_DIRS}") 80 endif () 81endif () 82