Warning, /graphics/krita/cmake/modules/FindHarfBuzz.cmake is written in an unsupported language. File is not indexed.
0001 # Copyright (c) 2012, Intel Corporation 0002 # Copyright (c) 2019 Sony Interactive Entertainment Inc. 0003 # 0004 # Redistribution and use in source and binary forms, with or without 0005 # modification, are permitted provided that the following conditions are met: 0006 # 0007 # * Redistributions of source code must retain the above copyright notice, this 0008 # list of conditions and the following disclaimer. 0009 # * Redistributions in binary form must reproduce the above copyright notice, 0010 # this list of conditions and the following disclaimer in the documentation 0011 # and/or other materials provided with the distribution. 0012 # * Neither the name of Intel Corporation nor the names of its contributors may 0013 # be used to endorse or promote products derived from this software without 0014 # specific prior written permission. 0015 # 0016 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 0017 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 0018 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 0019 # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 0020 # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 0021 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 0022 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 0023 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 0024 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 0025 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 0026 # POSSIBILITY OF SUCH DAMAGE. 0027 # 0028 # Try to find Harfbuzz include and library directories. 0029 # 0030 # After successful discovery, this will set for inclusion where needed: 0031 # HarfBuzz_INCLUDE_DIRS - containg the HarfBuzz headers 0032 # HarfBuzz_LIBRARIES - containg the HarfBuzz library 0033 0034 #[=======================================================================[.rst: 0035 FindHarfBuzz 0036 -------------- 0037 0038 Find HarfBuzz headers and libraries. 0039 0040 Imported Targets 0041 ^^^^^^^^^^^^^^^^ 0042 0043 ``HarfBuzz::HarfBuzz`` 0044 The HarfBuzz library, if found. 0045 0046 ``HarfBuzz::ICU`` 0047 The HarfBuzz ICU library, if found. 0048 0049 Result Variables 0050 ^^^^^^^^^^^^^^^^ 0051 0052 This will define the following variables in your project: 0053 0054 ``HarfBuzz_FOUND`` 0055 true if (the requested version of) HarfBuzz is available. 0056 ``HarfBuzz_VERSION`` 0057 the version of HarfBuzz. 0058 ``HarfBuzz_LIBRARIES`` 0059 the libraries to link against to use HarfBuzz. 0060 ``HarfBuzz_INCLUDE_DIRS`` 0061 where to find the HarfBuzz headers. 0062 ``HarfBuzz_COMPILE_OPTIONS`` 0063 this should be passed to target_compile_options(), if the 0064 target is not used for linking 0065 0066 #]=======================================================================] 0067 0068 find_package(PkgConfig QUIET) 0069 pkg_check_modules(PC_HARFBUZZ QUIET harfbuzz) 0070 set(HarfBuzz_COMPILE_OPTIONS ${PC_HARFBUZZ_CFLAGS_OTHER}) 0071 set(HarfBuzz_VERSION ${PC_HARFBUZZ_CFLAGS_VERSION}) 0072 0073 find_path(HarfBuzz_INCLUDE_DIR 0074 NAMES hb.h 0075 HINTS ${PC_HARFBUZZ_INCLUDEDIR} ${PC_HARFBUZZ_INCLUDE_DIRS} 0076 PATH_SUFFIXES harfbuzz 0077 ) 0078 0079 find_library(HarfBuzz_LIBRARY 0080 NAMES ${HarfBuzz_NAMES} harfbuzz 0081 HINTS ${PC_HARFBUZZ_LIBDIR} ${PC_HARFBUZZ_LIBRARY_DIRS} 0082 ) 0083 0084 if (HarfBuzz_INCLUDE_DIR AND NOT HarfBuzz_VERSION) 0085 if (EXISTS "${HarfBuzz_INCLUDE_DIR}/hb-version.h") 0086 file(READ "${HarfBuzz_INCLUDE_DIR}/hb-version.h" _harfbuzz_version_content) 0087 0088 string(REGEX MATCH "#define HB_VERSION_STRING +\"([0-9]+\.[0-9]+\.[0-9]+)\"" _dummy "${_harfbuzz_version_content}") 0089 set(HarfBuzz_VERSION "${CMAKE_MATCH_1}") 0090 endif () 0091 endif () 0092 0093 if ("${HarfBuzz_FIND_VERSION}" VERSION_GREATER "${HarfBuzz_VERSION}") 0094 message(FATAL_ERROR "Required version (" ${HarfBuzz_FIND_VERSION} ") is higher than found version (" ${HarfBuzz_VERSION} ")") 0095 endif () 0096 0097 # Find components 0098 if (HarfBuzz_INCLUDE_DIR AND HarfBuzz_LIBRARY) 0099 set(_HarfBuzz_REQUIRED_LIBS_FOUND ON) 0100 set(HarfBuzz_LIBS_FOUND "HarfBuzz (required): ${HarfBuzz_LIBRARY}") 0101 else () 0102 set(_HarfBuzz_REQUIRED_LIBS_FOUND OFF) 0103 set(HarfBuzz_LIBS_NOT_FOUND "HarfBuzz (required)") 0104 endif () 0105 0106 if ("ICU" IN_LIST HarfBuzz_FIND_COMPONENTS) 0107 pkg_check_modules(PC_HARFBUZZ_ICU QUIET harfbuzz-icu) 0108 set(HarfBuzz_ICU_COMPILE_OPTIONS ${PC_HARFBUZZ_ICU_CFLAGS_OTHER}) 0109 0110 find_path(HarfBuzz_ICU_INCLUDE_DIR 0111 NAMES hb-icu.h 0112 HINTS ${PC_HARFBUZZ_ICU_INCLUDEDIR} ${PC_HARFBUZZ_ICU_INCLUDE_DIRS} 0113 PATH_SUFFIXES harfbuzz 0114 ) 0115 0116 find_library(HarfBuzz_ICU_LIBRARY 0117 NAMES ${HarfBuzz_ICU_NAMES} harfbuzz-icu 0118 HINTS ${PC_HARFBUZZ_ICU_LIBDIR} ${PC_HARFBUZZ_ICU_LIBRARY_DIRS} 0119 ) 0120 0121 if (HarfBuzz_ICU_LIBRARY) 0122 if (HarfBuzz_FIND_REQUIRED_ICU) 0123 list(APPEND HarfBuzz_LIBS_FOUND "ICU (required): ${HarfBuzz_ICU_LIBRARY}") 0124 else () 0125 list(APPEND HarfBuzz_LIBS_FOUND "ICU (optional): ${HarfBuzz_ICU_LIBRARY}") 0126 endif () 0127 else () 0128 if (HarfBuzz_FIND_REQUIRED_ICU) 0129 set(_HarfBuzz_REQUIRED_LIBS_FOUND OFF) 0130 list(APPEND HarfBuzz_LIBS_NOT_FOUND "ICU (required)") 0131 else () 0132 list(APPEND HarfBuzz_LIBS_NOT_FOUND "ICU (optional)") 0133 endif () 0134 endif () 0135 endif () 0136 0137 if (NOT HarfBuzz_FIND_QUIETLY) 0138 if (HarfBuzz_LIBS_FOUND) 0139 message(STATUS "Found the following HarfBuzz libraries:") 0140 foreach (found ${HarfBuzz_LIBS_FOUND}) 0141 message(STATUS " ${found}") 0142 endforeach () 0143 endif () 0144 if (HarfBuzz_LIBS_NOT_FOUND) 0145 message(STATUS "The following HarfBuzz libraries were not found:") 0146 foreach (found ${HarfBuzz_LIBS_NOT_FOUND}) 0147 message(STATUS " ${found}") 0148 endforeach () 0149 endif () 0150 endif () 0151 0152 include(FindPackageHandleStandardArgs) 0153 find_package_handle_standard_args(HarfBuzz 0154 FOUND_VAR HarfBuzz_FOUND 0155 REQUIRED_VARS HarfBuzz_INCLUDE_DIR HarfBuzz_LIBRARY _HarfBuzz_REQUIRED_LIBS_FOUND 0156 VERSION_VAR HarfBuzz_VERSION 0157 ) 0158 0159 if (HarfBuzz_LIBRARY AND NOT TARGET HarfBuzz::HarfBuzz) 0160 add_library(HarfBuzz::HarfBuzz UNKNOWN IMPORTED GLOBAL) 0161 set_target_properties(HarfBuzz::HarfBuzz PROPERTIES 0162 IMPORTED_LOCATION "${HarfBuzz_LIBRARY}" 0163 INTERFACE_COMPILE_OPTIONS "${HarfBuzz_COMPILE_OPTIONS}" 0164 INTERFACE_INCLUDE_DIRECTORIES "${HarfBuzz_INCLUDE_DIR}" 0165 ) 0166 endif () 0167 0168 if (HarfBuzz_ICU_LIBRARY AND NOT TARGET HarfBuzz::ICU) 0169 add_library(HarfBuzz::ICU UNKNOWN IMPORTED GLOBAL) 0170 set_target_properties(HarfBuzz::ICU PROPERTIES 0171 IMPORTED_LOCATION "${HarfBuzz_ICU_LIBRARY}" 0172 INTERFACE_COMPILE_OPTIONS "${HarfBuzz_ICU_COMPILE_OPTIONS}" 0173 INTERFACE_INCLUDE_DIRECTORIES "${HarfBuzz_ICU_INCLUDE_DIR}" 0174 ) 0175 endif () 0176 0177 mark_as_advanced( 0178 HarfBuzz_INCLUDE_DIR 0179 HarfBuzz_ICU_INCLUDE_DIR 0180 HarfBuzz_LIBRARY 0181 HarfBuzz_ICU_LIBRARY 0182 ) 0183 0184 if (HarfBuzz_FOUND) 0185 set(HarfBuzz_LIBRARIES ${HarfBuzz_LIBRARY} ${HarfBuzz_ICU_LIBRARY}) 0186 set(HarfBuzz_INCLUDE_DIRS ${HarfBuzz_INCLUDE_DIR} ${HarfBuzz_ICU_INCLUDE_DIR}) 0187 endif ()