1*2d1272b8SAndroid Build Coastguard Workercmake_minimum_required(VERSION 3.12) 2*2d1272b8SAndroid Build Coastguard Workerproject(harfbuzz) 3*2d1272b8SAndroid Build Coastguard Worker 4*2d1272b8SAndroid Build Coastguard Workermessage(WARN "HarfBuzz has a Meson port and tries to migrate all the other build systems to it, please consider using it as we might remove our cmake port soon.") 5*2d1272b8SAndroid Build Coastguard Worker 6*2d1272b8SAndroid Build Coastguard Workerset(CMAKE_CXX_STANDARD 11) 7*2d1272b8SAndroid Build Coastguard Workerset(CMAKE_CXX_STANDARD_REQUIRED ON) 8*2d1272b8SAndroid Build Coastguard Worker 9*2d1272b8SAndroid Build Coastguard Worker## Limit framework build to Xcode generator 10*2d1272b8SAndroid Build Coastguard Workerif (BUILD_FRAMEWORK) 11*2d1272b8SAndroid Build Coastguard Worker # for a framework build on macOS, use: 12*2d1272b8SAndroid Build Coastguard Worker # cmake -DBUILD_FRAMEWORK=ON -Bbuild -H. -GXcode && cmake --build build 13*2d1272b8SAndroid Build Coastguard Worker if (NOT "${CMAKE_GENERATOR}" STREQUAL "Xcode") 14*2d1272b8SAndroid Build Coastguard Worker message(FATAL_ERROR 15*2d1272b8SAndroid Build Coastguard Worker "You should use Xcode generator with BUILD_FRAMEWORK enabled") 16*2d1272b8SAndroid Build Coastguard Worker endif () 17*2d1272b8SAndroid Build Coastguard Worker set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_64_BIT)") 18*2d1272b8SAndroid Build Coastguard Worker set (CMAKE_MACOSX_RPATH ON) 19*2d1272b8SAndroid Build Coastguard Worker set (BUILD_SHARED_LIBS ON) 20*2d1272b8SAndroid Build Coastguard Workerendif () 21*2d1272b8SAndroid Build Coastguard Worker 22*2d1272b8SAndroid Build Coastguard Worker 23*2d1272b8SAndroid Build Coastguard Worker## Disallow in-source builds, as CMake generated make files can collide with autotools ones 24*2d1272b8SAndroid Build Coastguard Workerif (NOT MSVC AND "${PROJECT_BINARY_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}") 25*2d1272b8SAndroid Build Coastguard Worker message(FATAL_ERROR 26*2d1272b8SAndroid Build Coastguard Worker " 27*2d1272b8SAndroid Build Coastguard WorkerIn-source builds are not permitted! Make a separate folder for" 28*2d1272b8SAndroid Build Coastguard Worker " building, e.g.," 29*2d1272b8SAndroid Build Coastguard Worker " 30*2d1272b8SAndroid Build Coastguard Worker mkdir build; cd build; cmake .." 31*2d1272b8SAndroid Build Coastguard Worker " 32*2d1272b8SAndroid Build Coastguard WorkerBefore that, remove the files created by this failed run with" 33*2d1272b8SAndroid Build Coastguard Worker " 34*2d1272b8SAndroid Build Coastguard Worker rm -rf CMakeCache.txt CMakeFiles") 35*2d1272b8SAndroid Build Coastguard Workerendif () 36*2d1272b8SAndroid Build Coastguard Worker 37*2d1272b8SAndroid Build Coastguard Worker 38*2d1272b8SAndroid Build Coastguard Worker## HarfBuzz build configurations 39*2d1272b8SAndroid Build Coastguard Workeroption(HB_HAVE_CAIRO "Enable cairo interop helpers" OFF) 40*2d1272b8SAndroid Build Coastguard Workeroption(HB_HAVE_FREETYPE "Enable freetype interop helpers" OFF) 41*2d1272b8SAndroid Build Coastguard Workeroption(HB_HAVE_GRAPHITE2 "Enable Graphite2 complementary shaper" OFF) 42*2d1272b8SAndroid Build Coastguard Workeroption(HB_HAVE_GLIB "Enable glib unicode functions" OFF) 43*2d1272b8SAndroid Build Coastguard Workeroption(HB_HAVE_ICU "Enable icu unicode functions" OFF) 44*2d1272b8SAndroid Build Coastguard Workerif (TARGET freetype) 45*2d1272b8SAndroid Build Coastguard Worker set (HB_HAVE_FREETYPE ON) 46*2d1272b8SAndroid Build Coastguard Worker add_definitions(-DHAVE_FREETYPE=1) 47*2d1272b8SAndroid Build Coastguard Workerendif () 48*2d1272b8SAndroid Build Coastguard Workerif (APPLE) 49*2d1272b8SAndroid Build Coastguard Worker option(HB_HAVE_CORETEXT "Enable CoreText shaper backend on macOS" ON) 50*2d1272b8SAndroid Build Coastguard Worker set (CMAKE_MACOSX_RPATH ON) 51*2d1272b8SAndroid Build Coastguard Workerendif () 52*2d1272b8SAndroid Build Coastguard Workerif (WIN32) 53*2d1272b8SAndroid Build Coastguard Worker option(HB_HAVE_UNISCRIBE "Enable Uniscribe shaper backend on Windows" OFF) 54*2d1272b8SAndroid Build Coastguard Worker option(HB_HAVE_GDI "Enable GDI integration helpers on Windows" OFF) 55*2d1272b8SAndroid Build Coastguard Worker option(HB_HAVE_DIRECTWRITE "Enable DirectWrite shaper backend on Windows" OFF) 56*2d1272b8SAndroid Build Coastguard Workerendif () 57*2d1272b8SAndroid Build Coastguard Workeroption(HB_BUILD_UTILS "Build harfbuzz utils, needs cairo, freetype, and glib properly be installed" OFF) 58*2d1272b8SAndroid Build Coastguard Workerif (HB_BUILD_UTILS) 59*2d1272b8SAndroid Build Coastguard Worker set (HB_HAVE_GLIB ON) 60*2d1272b8SAndroid Build Coastguard Worker set (HB_HAVE_FREETYPE ON) 61*2d1272b8SAndroid Build Coastguard Workerendif () 62*2d1272b8SAndroid Build Coastguard Worker 63*2d1272b8SAndroid Build Coastguard Workeroption(HB_BUILD_SUBSET "Build harfbuzz-subset" ON) 64*2d1272b8SAndroid Build Coastguard Worker 65*2d1272b8SAndroid Build Coastguard Workeroption(HB_HAVE_GOBJECT "Enable GObject Bindings" OFF) 66*2d1272b8SAndroid Build Coastguard Workerif (HB_HAVE_GOBJECT) 67*2d1272b8SAndroid Build Coastguard Worker set (HB_HAVE_GLIB ON) 68*2d1272b8SAndroid Build Coastguard Workerendif () 69*2d1272b8SAndroid Build Coastguard Worker 70*2d1272b8SAndroid Build Coastguard Workeroption(HB_HAVE_INTROSPECTION "Enable building introspection (.gir/.typelib) files" OFF) 71*2d1272b8SAndroid Build Coastguard Workerif (HB_HAVE_INTROSPECTION) 72*2d1272b8SAndroid Build Coastguard Worker set (HB_HAVE_GOBJECT ON) 73*2d1272b8SAndroid Build Coastguard Worker set (HB_HAVE_GLIB ON) 74*2d1272b8SAndroid Build Coastguard Workerendif () 75*2d1272b8SAndroid Build Coastguard Worker 76*2d1272b8SAndroid Build Coastguard Workerinclude_directories(AFTER 77*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src 78*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_BINARY_DIR}/src 79*2d1272b8SAndroid Build Coastguard Worker) 80*2d1272b8SAndroid Build Coastguard Worker 81*2d1272b8SAndroid Build Coastguard Worker# We need Python3_EXECUTABLE to be set for running the tests... 82*2d1272b8SAndroid Build Coastguard Workerfind_package(Python3 COMPONENTS Interpreter) 83*2d1272b8SAndroid Build Coastguard Worker 84*2d1272b8SAndroid Build Coastguard Worker## Functions and headers 85*2d1272b8SAndroid Build Coastguard Workerinclude (CheckFunctionExists) 86*2d1272b8SAndroid Build Coastguard Workerinclude (CheckIncludeFile) 87*2d1272b8SAndroid Build Coastguard Workerinclude (CheckIncludeFiles) 88*2d1272b8SAndroid Build Coastguard Workermacro (check_funcs) # Similar to AC_CHECK_FUNCS of autotools 89*2d1272b8SAndroid Build Coastguard Worker foreach (func_name ${ARGN}) 90*2d1272b8SAndroid Build Coastguard Worker string(TOUPPER ${func_name} definition_to_add) 91*2d1272b8SAndroid Build Coastguard Worker check_function_exists(${func_name} HAVE_${definition_to_add}) 92*2d1272b8SAndroid Build Coastguard Worker if (${HAVE_${definition_to_add}}) 93*2d1272b8SAndroid Build Coastguard Worker add_definitions(-DHAVE_${definition_to_add}) 94*2d1272b8SAndroid Build Coastguard Worker endif () 95*2d1272b8SAndroid Build Coastguard Worker endforeach () 96*2d1272b8SAndroid Build Coastguard Workerendmacro () 97*2d1272b8SAndroid Build Coastguard Workerif (UNIX) 98*2d1272b8SAndroid Build Coastguard Worker list(APPEND CMAKE_REQUIRED_LIBRARIES m) 99*2d1272b8SAndroid Build Coastguard Workerendif () 100*2d1272b8SAndroid Build Coastguard Workercheck_funcs(atexit mprotect sysconf getpagesize mmap isatty) 101*2d1272b8SAndroid Build Coastguard Workercheck_include_file(unistd.h HAVE_UNISTD_H) 102*2d1272b8SAndroid Build Coastguard Workerif (${HAVE_UNISTD_H}) 103*2d1272b8SAndroid Build Coastguard Worker add_definitions(-DHAVE_UNISTD_H) 104*2d1272b8SAndroid Build Coastguard Workerendif () 105*2d1272b8SAndroid Build Coastguard Workercheck_include_file(sys/mman.h HAVE_SYS_MMAN_H) 106*2d1272b8SAndroid Build Coastguard Workerif (${HAVE_SYS_MMAN_H}) 107*2d1272b8SAndroid Build Coastguard Worker add_definitions(-DHAVE_SYS_MMAN_H) 108*2d1272b8SAndroid Build Coastguard Workerendif () 109*2d1272b8SAndroid Build Coastguard Workercheck_include_file(stdbool.h HAVE_STDBOOL_H) 110*2d1272b8SAndroid Build Coastguard Workerif (${HAVE_STDBOOL_H}) 111*2d1272b8SAndroid Build Coastguard Worker add_definitions(-DHAVE_STDBOOL_H) 112*2d1272b8SAndroid Build Coastguard Workerendif () 113*2d1272b8SAndroid Build Coastguard Worker 114*2d1272b8SAndroid Build Coastguard Worker# These will be used while making pkg-config .pc files 115*2d1272b8SAndroid Build Coastguard Workerset(PC_REQUIRES_PRIV "") 116*2d1272b8SAndroid Build Coastguard Workerset(PC_LIBS_PRIV "") 117*2d1272b8SAndroid Build Coastguard Worker 118*2d1272b8SAndroid Build Coastguard Workerif (NOT MSVC) 119*2d1272b8SAndroid Build Coastguard Worker set(THREADS_PREFER_PTHREAD_FLAG ON) 120*2d1272b8SAndroid Build Coastguard Worker find_package(Threads) 121*2d1272b8SAndroid Build Coastguard Worker if (CMAKE_USE_PTHREADS_INIT) 122*2d1272b8SAndroid Build Coastguard Worker add_definitions("-DHAVE_PTHREAD") 123*2d1272b8SAndroid Build Coastguard Worker list(APPEND THIRD_PARTY_LIBS Threads::Threads) 124*2d1272b8SAndroid Build Coastguard Worker list(APPEND PC_LIBS_PRIV -pthread) 125*2d1272b8SAndroid Build Coastguard Worker endif () 126*2d1272b8SAndroid Build Coastguard Workerendif () 127*2d1272b8SAndroid Build Coastguard Worker 128*2d1272b8SAndroid Build Coastguard Workerif (MSVC) 129*2d1272b8SAndroid Build Coastguard Worker add_definitions(-wd4244 -wd4267 -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS) 130*2d1272b8SAndroid Build Coastguard Worker add_definitions(-bigobj) 131*2d1272b8SAndroid Build Coastguard Workerendif () 132*2d1272b8SAndroid Build Coastguard Worker 133*2d1272b8SAndroid Build Coastguard Worker 134*2d1272b8SAndroid Build Coastguard Worker## Detect if we are running inside a distribution or regular repository folder 135*2d1272b8SAndroid Build Coastguard Worker# if (EXISTS "${PROJECT_SOURCE_DIR}/ChangeLog") 136*2d1272b8SAndroid Build Coastguard Worker# # perhaps we are on dist directory 137*2d1272b8SAndroid Build Coastguard Worker# set (IN_HB_DIST TRUE) 138*2d1272b8SAndroid Build Coastguard Worker# #set (HB_VERSION_H "${PROJECT_SOURCE_DIR}/src/hb-version.h") 139*2d1272b8SAndroid Build Coastguard Worker# endif () 140*2d1272b8SAndroid Build Coastguard Worker 141*2d1272b8SAndroid Build Coastguard Workerfile(READ meson.build MESONBUILD) 142*2d1272b8SAndroid Build Coastguard Workerstring(REGEX MATCH "version: '(([0-9]+)\\.([0-9]+)\\.([0-9]+))'," HB_VERSION_MATCH ${MESONBUILD}) 143*2d1272b8SAndroid Build Coastguard Workerset (HB_VERSION ${CMAKE_MATCH_1}) 144*2d1272b8SAndroid Build Coastguard Workerset (HB_VERSION_MAJOR ${CMAKE_MATCH_2}) 145*2d1272b8SAndroid Build Coastguard Workerset (HB_VERSION_MINOR ${CMAKE_MATCH_3}) 146*2d1272b8SAndroid Build Coastguard Workerset (HB_VERSION_MICRO ${CMAKE_MATCH_4}) 147*2d1272b8SAndroid Build Coastguard Worker 148*2d1272b8SAndroid Build Coastguard Worker## Define sources and headers of the project 149*2d1272b8SAndroid Build Coastguard Workerset (project_sources ${PROJECT_SOURCE_DIR}/src/harfbuzz.cc) # use amalgam source 150*2d1272b8SAndroid Build Coastguard Workerset (subset_project_sources 151*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-number.cc 152*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-number.hh 153*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-ot-cff1-table.cc 154*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-ot-cff2-table.cc 155*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-ot-post-table-v2subset.hh 156*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-static.cc 157*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-subset-cff-common.cc 158*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-subset-cff-common.hh 159*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-subset-cff1.cc 160*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-subset-cff2.cc 161*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-subset-input.cc 162*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-subset-input.hh 163*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-subset-instancer-iup.hh 164*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-subset-instancer-iup.cc 165*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-subset-instancer-solver.hh 166*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-subset-instancer-solver.cc 167*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-subset-accelerator.hh 168*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-subset-plan.cc 169*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-subset-plan.hh 170*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-subset-plan-member-list.hh 171*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-subset-repacker.cc 172*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-subset.cc 173*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-subset.hh 174*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-repacker.hh 175*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/graph/graph.hh 176*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/graph/gsubgpos-graph.hh 177*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/graph/gsubgpos-context.hh 178*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/graph/gsubgpos-context.cc 179*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/graph/coverage-graph.hh 180*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/graph/classdef-graph.hh 181*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/graph/pairpos-graph.hh 182*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/graph/markbasepos-graph.hh 183*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/graph/split-helpers.hh 184*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/graph/serialize.hh 185*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/OT/Color/COLR/colrv1-closure.hh 186*2d1272b8SAndroid Build Coastguard Worker) 187*2d1272b8SAndroid Build Coastguard Workerset (project_extra_sources) 188*2d1272b8SAndroid Build Coastguard Workerset (project_headers 189*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-aat-layout.h 190*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-aat.h 191*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-blob.h 192*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-buffer.h 193*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-common.h 194*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-cplusplus.hh 195*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-deprecated.h 196*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-draw.h 197*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-face.h 198*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-font.h 199*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-map.h 200*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-ot-color.h 201*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-ot-deprecated.h 202*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-ot-font.h 203*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-ot-layout.h 204*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-ot-math.h 205*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-ot-meta.h 206*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-ot-metrics.h 207*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-ot-name.h 208*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-ot-shape.h 209*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-ot-var.h 210*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-ot.h 211*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-paint.h 212*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-set.h 213*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-shape-plan.h 214*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-shape.h 215*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-style.h 216*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-unicode.h 217*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-version.h 218*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb.h 219*2d1272b8SAndroid Build Coastguard Worker) 220*2d1272b8SAndroid Build Coastguard Workerset (subset_project_headers 221*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-subset.h 222*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-subset-repacker.h 223*2d1272b8SAndroid Build Coastguard Worker) 224*2d1272b8SAndroid Build Coastguard Worker 225*2d1272b8SAndroid Build Coastguard Worker## Find and include needed header folders and libraries 226*2d1272b8SAndroid Build Coastguard Workerif (HB_HAVE_FREETYPE AND NOT TARGET freetype) 227*2d1272b8SAndroid Build Coastguard Worker include (FindFreetype) 228*2d1272b8SAndroid Build Coastguard Worker if (NOT FREETYPE_FOUND) 229*2d1272b8SAndroid Build Coastguard Worker message(FATAL_ERROR "HB_HAVE_FREETYPE was set, but we failed to find it. Maybe add a CMAKE_PREFIX_PATH= to your Freetype2 install prefix") 230*2d1272b8SAndroid Build Coastguard Worker endif () 231*2d1272b8SAndroid Build Coastguard Worker 232*2d1272b8SAndroid Build Coastguard Worker list(APPEND THIRD_PARTY_LIBS ${FREETYPE_LIBRARIES}) 233*2d1272b8SAndroid Build Coastguard Worker include_directories(AFTER ${FREETYPE_INCLUDE_DIRS}) 234*2d1272b8SAndroid Build Coastguard Worker add_definitions(-DHAVE_FREETYPE=1) 235*2d1272b8SAndroid Build Coastguard Worker 236*2d1272b8SAndroid Build Coastguard Worker list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-ft.h) 237*2d1272b8SAndroid Build Coastguard Worker 238*2d1272b8SAndroid Build Coastguard Worker # So check_funcs can find its headers 239*2d1272b8SAndroid Build Coastguard Worker set (CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${FREETYPE_INCLUDE_DIRS}) 240*2d1272b8SAndroid Build Coastguard Worker set (CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${FREETYPE_LIBRARIES}) 241*2d1272b8SAndroid Build Coastguard Worker 242*2d1272b8SAndroid Build Coastguard Worker check_funcs(FT_Get_Var_Blend_Coordinates FT_Set_Var_Blend_Coordinates FT_Done_MM_Var) 243*2d1272b8SAndroid Build Coastguard Workerendif () 244*2d1272b8SAndroid Build Coastguard Worker 245*2d1272b8SAndroid Build Coastguard Workerif (HB_HAVE_FREETYPE) 246*2d1272b8SAndroid Build Coastguard Worker list(APPEND PC_REQUIRES_PRIV "freetype2 >= 12.0.6") 247*2d1272b8SAndroid Build Coastguard Workerendif () 248*2d1272b8SAndroid Build Coastguard Worker 249*2d1272b8SAndroid Build Coastguard Workerif (HB_HAVE_GRAPHITE2) 250*2d1272b8SAndroid Build Coastguard Worker add_definitions(-DHAVE_GRAPHITE2) 251*2d1272b8SAndroid Build Coastguard Worker 252*2d1272b8SAndroid Build Coastguard Worker find_path(GRAPHITE2_INCLUDE_DIR graphite2/Font.h) 253*2d1272b8SAndroid Build Coastguard Worker find_library(GRAPHITE2_LIBRARY graphite2) 254*2d1272b8SAndroid Build Coastguard Worker 255*2d1272b8SAndroid Build Coastguard Worker include_directories(${GRAPHITE2_INCLUDE_DIR}) 256*2d1272b8SAndroid Build Coastguard Worker 257*2d1272b8SAndroid Build Coastguard Worker list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-graphite2.h) 258*2d1272b8SAndroid Build Coastguard Worker 259*2d1272b8SAndroid Build Coastguard Worker list(APPEND THIRD_PARTY_LIBS ${GRAPHITE2_LIBRARY}) 260*2d1272b8SAndroid Build Coastguard Worker 261*2d1272b8SAndroid Build Coastguard Worker list(APPEND PC_REQUIRES_PRIV "graphite2 >= 1.2.0") 262*2d1272b8SAndroid Build Coastguard Worker 263*2d1272b8SAndroid Build Coastguard Worker mark_as_advanced(GRAPHITE2_INCLUDE_DIR GRAPHITE2_LIBRARY) 264*2d1272b8SAndroid Build Coastguard Workerendif () 265*2d1272b8SAndroid Build Coastguard Worker 266*2d1272b8SAndroid Build Coastguard Workerif (HB_HAVE_GLIB) 267*2d1272b8SAndroid Build Coastguard Worker add_definitions(-DHAVE_GLIB) 268*2d1272b8SAndroid Build Coastguard Worker 269*2d1272b8SAndroid Build Coastguard Worker # https://github.com/WebKit/webkit/blob/master/Source/cmake/FindGLIB.cmake 270*2d1272b8SAndroid Build Coastguard Worker find_package(PkgConfig) 271*2d1272b8SAndroid Build Coastguard Worker pkg_check_modules(PC_GLIB QUIET glib-2.0) 272*2d1272b8SAndroid Build Coastguard Worker 273*2d1272b8SAndroid Build Coastguard Worker find_library(GLIB_LIBRARIES NAMES glib-2.0 HINTS ${PC_GLIB_LIBDIR} ${PC_GLIB_LIBRARY_DIRS}) 274*2d1272b8SAndroid Build Coastguard Worker find_path(GLIBCONFIG_INCLUDE_DIR NAMES glibconfig.h HINTS ${PC_LIBDIR} ${PC_LIBRARY_DIRS} ${PC_GLIB_INCLUDEDIR} ${PC_GLIB_INCLUDE_DIRS} PATH_SUFFIXES glib-2.0/include) 275*2d1272b8SAndroid Build Coastguard Worker find_path(GLIB_INCLUDE_DIR NAMES glib.h HINTS ${PC_GLIB_INCLUDEDIR} ${PC_GLIB_INCLUDE_DIRS} PATH_SUFFIXES glib-2.0) 276*2d1272b8SAndroid Build Coastguard Worker 277*2d1272b8SAndroid Build Coastguard Worker include_directories(${GLIBCONFIG_INCLUDE_DIR} ${GLIB_INCLUDE_DIR}) 278*2d1272b8SAndroid Build Coastguard Worker 279*2d1272b8SAndroid Build Coastguard Worker list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-glib.h) 280*2d1272b8SAndroid Build Coastguard Worker 281*2d1272b8SAndroid Build Coastguard Worker list(APPEND THIRD_PARTY_LIBS ${GLIB_LIBRARIES}) 282*2d1272b8SAndroid Build Coastguard Worker 283*2d1272b8SAndroid Build Coastguard Worker list(APPEND PC_REQUIRES_PRIV "glib-2.0 >= 2.19.1") 284*2d1272b8SAndroid Build Coastguard Worker 285*2d1272b8SAndroid Build Coastguard Worker mark_as_advanced(GLIB_LIBRARIES GLIBCONFIG_INCLUDE_DIR GLIB_INCLUDE_DIR) 286*2d1272b8SAndroid Build Coastguard Workerendif () 287*2d1272b8SAndroid Build Coastguard Worker 288*2d1272b8SAndroid Build Coastguard Workerif (HB_HAVE_ICU) 289*2d1272b8SAndroid Build Coastguard Worker add_definitions(-DHAVE_ICU) 290*2d1272b8SAndroid Build Coastguard Worker 291*2d1272b8SAndroid Build Coastguard Worker find_package(ICU REQUIRED COMPONENTS uc) 292*2d1272b8SAndroid Build Coastguard Worker 293*2d1272b8SAndroid Build Coastguard Worker if (ICU_VERSION VERSION_GREATER_EQUAL 75.1) 294*2d1272b8SAndroid Build Coastguard Worker set(CMAKE_CXX_STANDARD 17) 295*2d1272b8SAndroid Build Coastguard Worker endif () 296*2d1272b8SAndroid Build Coastguard Worker 297*2d1272b8SAndroid Build Coastguard Worker list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-icu.h) 298*2d1272b8SAndroid Build Coastguard Worker 299*2d1272b8SAndroid Build Coastguard Worker list(APPEND THIRD_PARTY_LIBS ICU::uc) 300*2d1272b8SAndroid Build Coastguard Workerendif () 301*2d1272b8SAndroid Build Coastguard Worker 302*2d1272b8SAndroid Build Coastguard Workerif (APPLE AND HB_HAVE_CORETEXT) 303*2d1272b8SAndroid Build Coastguard Worker # Apple Advanced Typography 304*2d1272b8SAndroid Build Coastguard Worker add_definitions(-DHAVE_CORETEXT) 305*2d1272b8SAndroid Build Coastguard Worker 306*2d1272b8SAndroid Build Coastguard Worker list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-coretext.h) 307*2d1272b8SAndroid Build Coastguard Worker 308*2d1272b8SAndroid Build Coastguard Worker if (HB_IOS) 309*2d1272b8SAndroid Build Coastguard Worker find_library(COREFOUNDATION CoreFoundation) 310*2d1272b8SAndroid Build Coastguard Worker if (COREFOUNDATION) 311*2d1272b8SAndroid Build Coastguard Worker list(APPEND THIRD_PARTY_LIBS ${COREFOUNDATION}) 312*2d1272b8SAndroid Build Coastguard Worker list(APPEND PC_LIBS_PRIV "-framework CoreFoundation") 313*2d1272b8SAndroid Build Coastguard Worker endif () 314*2d1272b8SAndroid Build Coastguard Worker mark_as_advanced(COREFOUNDATION) 315*2d1272b8SAndroid Build Coastguard Worker 316*2d1272b8SAndroid Build Coastguard Worker find_library(CORETEXT CoreText) 317*2d1272b8SAndroid Build Coastguard Worker if (CORETEXT) 318*2d1272b8SAndroid Build Coastguard Worker list(APPEND THIRD_PARTY_LIBS ${CORETEXT}) 319*2d1272b8SAndroid Build Coastguard Worker list(APPEND PC_LIBS_PRIV "-framework CoreText") 320*2d1272b8SAndroid Build Coastguard Worker endif () 321*2d1272b8SAndroid Build Coastguard Worker mark_as_advanced(CORETEXT) 322*2d1272b8SAndroid Build Coastguard Worker 323*2d1272b8SAndroid Build Coastguard Worker find_library(COREGRAPHICS CoreGraphics) 324*2d1272b8SAndroid Build Coastguard Worker if (COREGRAPHICS) 325*2d1272b8SAndroid Build Coastguard Worker list(APPEND THIRD_PARTY_LIBS ${COREGRAPHICS}) 326*2d1272b8SAndroid Build Coastguard Worker list(APPEND PC_LIBS_PRIV "-framework CoreGraphics") 327*2d1272b8SAndroid Build Coastguard Worker endif () 328*2d1272b8SAndroid Build Coastguard Worker mark_as_advanced(COREGRAPHICS) 329*2d1272b8SAndroid Build Coastguard Worker else () 330*2d1272b8SAndroid Build Coastguard Worker find_library(APPLICATION_SERVICES_FRAMEWORK ApplicationServices) 331*2d1272b8SAndroid Build Coastguard Worker if (APPLICATION_SERVICES_FRAMEWORK) 332*2d1272b8SAndroid Build Coastguard Worker list(APPEND THIRD_PARTY_LIBS ${APPLICATION_SERVICES_FRAMEWORK}) 333*2d1272b8SAndroid Build Coastguard Worker list(APPEND PC_LIBS_PRIV "-framework ApplicationServices") 334*2d1272b8SAndroid Build Coastguard Worker endif () 335*2d1272b8SAndroid Build Coastguard Worker 336*2d1272b8SAndroid Build Coastguard Worker mark_as_advanced(APPLICATION_SERVICES_FRAMEWORK) 337*2d1272b8SAndroid Build Coastguard Worker endif () 338*2d1272b8SAndroid Build Coastguard Workerendif () 339*2d1272b8SAndroid Build Coastguard Worker 340*2d1272b8SAndroid Build Coastguard Workerif (WIN32 AND HB_HAVE_GDI) 341*2d1272b8SAndroid Build Coastguard Worker add_definitions(-DHAVE_GDI) 342*2d1272b8SAndroid Build Coastguard Worker list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-gdi.h) 343*2d1272b8SAndroid Build Coastguard Worker list(APPEND THIRD_PARTY_LIBS gdi32) 344*2d1272b8SAndroid Build Coastguard Worker list(APPEND PC_LIBS_PRIV -lgdi32) 345*2d1272b8SAndroid Build Coastguard Workerendif () 346*2d1272b8SAndroid Build Coastguard Worker 347*2d1272b8SAndroid Build Coastguard Workerif (WIN32 AND HB_HAVE_UNISCRIBE) 348*2d1272b8SAndroid Build Coastguard Worker add_definitions(-DHAVE_UNISCRIBE) 349*2d1272b8SAndroid Build Coastguard Worker list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-uniscribe.h) 350*2d1272b8SAndroid Build Coastguard Worker list(APPEND THIRD_PARTY_LIBS usp10 gdi32 rpcrt4) 351*2d1272b8SAndroid Build Coastguard Worker list(APPEND PC_LIBS_PRIV -lusp10 -lgdi32 -lrpcrt4) 352*2d1272b8SAndroid Build Coastguard Workerendif () 353*2d1272b8SAndroid Build Coastguard Worker 354*2d1272b8SAndroid Build Coastguard Workerif (WIN32 AND HB_HAVE_DIRECTWRITE) 355*2d1272b8SAndroid Build Coastguard Worker if (CMAKE_VERSION VERSION_GREATER 3.12) 356*2d1272b8SAndroid Build Coastguard Worker check_include_files("windows.h;dwrite_1.h" HAVE_DWRITE_1_H LANGUAGE CXX) 357*2d1272b8SAndroid Build Coastguard Worker else () 358*2d1272b8SAndroid Build Coastguard Worker check_include_files("windows.h;dwrite_1.h" HAVE_DWRITE_1_H) 359*2d1272b8SAndroid Build Coastguard Worker endif () 360*2d1272b8SAndroid Build Coastguard Worker if (NOT HAVE_DWRITE_1_H) 361*2d1272b8SAndroid Build Coastguard Worker message(FATAL_ERROR "DirectWrite was enabled explicitly, but required header is missing") 362*2d1272b8SAndroid Build Coastguard Worker endif () 363*2d1272b8SAndroid Build Coastguard Worker add_definitions(-DHAVE_DIRECTWRITE) 364*2d1272b8SAndroid Build Coastguard Worker list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-directwrite.h) 365*2d1272b8SAndroid Build Coastguard Workerendif () 366*2d1272b8SAndroid Build Coastguard Worker 367*2d1272b8SAndroid Build Coastguard Workerif (HB_HAVE_CAIRO) 368*2d1272b8SAndroid Build Coastguard Worker # https://github.com/WebKit/webkit/blob/master/Source/cmake/FindCairo.cmake 369*2d1272b8SAndroid Build Coastguard Worker find_package(PkgConfig) 370*2d1272b8SAndroid Build Coastguard Worker pkg_check_modules(PC_CAIRO QUIET cairo) 371*2d1272b8SAndroid Build Coastguard Worker 372*2d1272b8SAndroid Build Coastguard Worker find_path(CAIRO_INCLUDE_DIRS NAMES cairo.h HINTS ${PC_CAIRO_INCLUDEDIR} ${PC_CAIRO_INCLUDE_DIRS} PATH_SUFFIXES cairo) 373*2d1272b8SAndroid Build Coastguard Worker find_library(CAIRO_LIBRARIESNAMES cairo HINTS ${PC_CAIRO_LIBDIR} ${PC_CAIRO_LIBRARY_DIRS}) 374*2d1272b8SAndroid Build Coastguard Worker if (NOT CAIRO_LIBRARIESNAMES) 375*2d1272b8SAndroid Build Coastguard Worker message(FATAL_ERROR "HB_HAVE_CAIRO is ON but Cairo libraries are not found") 376*2d1272b8SAndroid Build Coastguard Worker endif() 377*2d1272b8SAndroid Build Coastguard Worker include_directories(${CAIRO_INCLUDE_DIRS}) 378*2d1272b8SAndroid Build Coastguard Worker mark_as_advanced(CAIRO_INCLUDE_DIRS CAIRO_LIBRARIESNAMES) 379*2d1272b8SAndroid Build Coastguard Worker add_definitions(-DHAVE_CAIRO=1) 380*2d1272b8SAndroid Build Coastguard Worker list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-cairo.h) 381*2d1272b8SAndroid Build Coastguard Worker list(APPEND THIRD_PARTY_LIBS ${CAIRO_LIBRARIESNAMES}) 382*2d1272b8SAndroid Build Coastguard Workerendif() 383*2d1272b8SAndroid Build Coastguard Worker 384*2d1272b8SAndroid Build Coastguard Workerif (HB_HAVE_GOBJECT) 385*2d1272b8SAndroid Build Coastguard Worker add_definitions(-DHAVE_GOBJECT) 386*2d1272b8SAndroid Build Coastguard Worker include (FindPerl) 387*2d1272b8SAndroid Build Coastguard Worker 388*2d1272b8SAndroid Build Coastguard Worker # Use the hints from glib-2.0.pc to find glib-mkenums 389*2d1272b8SAndroid Build Coastguard Worker find_package(PkgConfig) 390*2d1272b8SAndroid Build Coastguard Worker pkg_check_modules(PC_GLIB QUIET glib-2.0) 391*2d1272b8SAndroid Build Coastguard Worker find_program(GLIB_MKENUMS glib-mkenums 392*2d1272b8SAndroid Build Coastguard Worker HINTS ${PC_glib_mkenums} 393*2d1272b8SAndroid Build Coastguard Worker ) 394*2d1272b8SAndroid Build Coastguard Worker set (GLIB_MKENUMS_CMD) 395*2d1272b8SAndroid Build Coastguard Worker 396*2d1272b8SAndroid Build Coastguard Worker if (WIN32 AND NOT MINGW) 397*2d1272b8SAndroid Build Coastguard Worker # In Visual Studio builds, shebang lines are not supported 398*2d1272b8SAndroid Build Coastguard Worker # in the standard cmd.exe shell that we use, so we need to 399*2d1272b8SAndroid Build Coastguard Worker # first determine whether glib-mkenums is a Python or PERL 400*2d1272b8SAndroid Build Coastguard Worker # script 401*2d1272b8SAndroid Build Coastguard Worker execute_process(COMMAND "${Python3_EXECUTABLE}" "${GLIB_MKENUMS}" --version 402*2d1272b8SAndroid Build Coastguard Worker RESULT_VARIABLE GLIB_MKENUMS_PYTHON 403*2d1272b8SAndroid Build Coastguard Worker OUTPUT_QUIET ERROR_QUIET 404*2d1272b8SAndroid Build Coastguard Worker ) 405*2d1272b8SAndroid Build Coastguard Worker if (GLIB_MKENUMS_PYTHON EQUAL 0) 406*2d1272b8SAndroid Build Coastguard Worker message("${GLIB_MKENUMS} is a Python script.") 407*2d1272b8SAndroid Build Coastguard Worker set (GLIB_MKENUMS_CMD "${Python3_EXECUTABLE}" "${GLIB_MKENUMS}") 408*2d1272b8SAndroid Build Coastguard Worker else () 409*2d1272b8SAndroid Build Coastguard Worker execute_process(COMMAND "${PERL_EXECUTABLE}" "${GLIB_MKENUMS}" --version 410*2d1272b8SAndroid Build Coastguard Worker RESULT_VARIABLE GLIB_MKENUMS_PERL 411*2d1272b8SAndroid Build Coastguard Worker OUTPUT_QUIET ERROR_QUIET 412*2d1272b8SAndroid Build Coastguard Worker ) 413*2d1272b8SAndroid Build Coastguard Worker if (GLIB_MKENUMS_PERL EQUAL 0) 414*2d1272b8SAndroid Build Coastguard Worker message("${GLIB_MKENUMS} is a PERL script.") 415*2d1272b8SAndroid Build Coastguard Worker set (GLIB_MKENUMS_CMD "${PERL_EXECUTABLE}" "${GLIB_MKENUMS}") 416*2d1272b8SAndroid Build Coastguard Worker endif () 417*2d1272b8SAndroid Build Coastguard Worker if (NOT GLIB_MKENUMS_PERL EQUAL 0 AND NOT GLIB_MKENUMS_PYTHON EQUAL 0) 418*2d1272b8SAndroid Build Coastguard Worker message(FATAL_ERROR "Unable to determine type of glib-mkenums script") 419*2d1272b8SAndroid Build Coastguard Worker endif () 420*2d1272b8SAndroid Build Coastguard Worker endif () 421*2d1272b8SAndroid Build Coastguard Worker else () 422*2d1272b8SAndroid Build Coastguard Worker set (GLIB_MKENUMS_CMD "${GLIB_MKENUMS}") 423*2d1272b8SAndroid Build Coastguard Worker endif () 424*2d1272b8SAndroid Build Coastguard Worker if (NOT GLIB_MKENUMS_CMD) 425*2d1272b8SAndroid Build Coastguard Worker message(FATAL_ERROR "HB_HAVE_GOBJECT was set, but we failed to find glib-mkenums, which is required") 426*2d1272b8SAndroid Build Coastguard Worker endif () 427*2d1272b8SAndroid Build Coastguard Worker 428*2d1272b8SAndroid Build Coastguard Worker pkg_check_modules(PC_GOBJECT QUIET gobject-2.0) 429*2d1272b8SAndroid Build Coastguard Worker 430*2d1272b8SAndroid Build Coastguard Worker find_library(GOBJECT_LIBRARIES NAMES gobject-2.0 HINTS ${PC_GLIB_LIBDIR} ${PC_GLIB_LIBRARY_DIRS}) 431*2d1272b8SAndroid Build Coastguard Worker find_path(GOBJECT_INCLUDE_DIR NAMES glib-object.h HINTS ${PC_GLIB_INCLUDEDIR} ${PC_GLIB_INCLUDE_DIRS} PATH_SUFFIXES glib-2.0) 432*2d1272b8SAndroid Build Coastguard Worker 433*2d1272b8SAndroid Build Coastguard Worker include_directories(${GOBJECTCONFIG_INCLUDE_DIR} ${GOBJECT_INCLUDE_DIR}) 434*2d1272b8SAndroid Build Coastguard Worker mark_as_advanced(GOBJECT_LIBRARIES GOBJECT_INCLUDE_DIR) 435*2d1272b8SAndroid Build Coastguard Worker 436*2d1272b8SAndroid Build Coastguard Worker list(APPEND hb_gobject_sources ${PROJECT_SOURCE_DIR}/src/hb-gobject-structs.cc) 437*2d1272b8SAndroid Build Coastguard Worker list(APPEND hb_gobject_gen_sources 438*2d1272b8SAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.cc 439*2d1272b8SAndroid Build Coastguard Worker ) 440*2d1272b8SAndroid Build Coastguard Worker list(APPEND hb_gobject_structs_headers 441*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-gobject-structs.h 442*2d1272b8SAndroid Build Coastguard Worker ) 443*2d1272b8SAndroid Build Coastguard Worker list(APPEND hb_gobject_headers 444*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/hb-gobject.h 445*2d1272b8SAndroid Build Coastguard Worker ${hb_gobject_structs_headers} 446*2d1272b8SAndroid Build Coastguard Worker ) 447*2d1272b8SAndroid Build Coastguard Worker list(APPEND hb_gobject_gen_headers 448*2d1272b8SAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.h 449*2d1272b8SAndroid Build Coastguard Worker ) 450*2d1272b8SAndroid Build Coastguard Worker 451*2d1272b8SAndroid Build Coastguard Worker add_custom_command( 452*2d1272b8SAndroid Build Coastguard Worker OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.h 453*2d1272b8SAndroid Build Coastguard Worker COMMAND ${GLIB_MKENUMS_CMD} 454*2d1272b8SAndroid Build Coastguard Worker --template=${PROJECT_SOURCE_DIR}/src/hb-gobject-enums.h.tmpl 455*2d1272b8SAndroid Build Coastguard Worker --identifier-prefix hb_ 456*2d1272b8SAndroid Build Coastguard Worker --symbol-prefix hb_gobject 457*2d1272b8SAndroid Build Coastguard Worker ${hb_gobject_structs_headers} 458*2d1272b8SAndroid Build Coastguard Worker ${project_headers} 459*2d1272b8SAndroid Build Coastguard Worker > ${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.h.tmp 460*2d1272b8SAndroid Build Coastguard Worker COMMAND "${CMAKE_COMMAND}" 461*2d1272b8SAndroid Build Coastguard Worker "-DENUM_INPUT_SRC=${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.h.tmp" 462*2d1272b8SAndroid Build Coastguard Worker "-DENUM_OUTPUT_SRC=${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.h" 463*2d1272b8SAndroid Build Coastguard Worker -P ${PROJECT_SOURCE_DIR}/replace-enum-strings.cmake 464*2d1272b8SAndroid Build Coastguard Worker DEPENDS ${PROJECT_SOURCE_DIR}/src/hb-gobject-enums.h.tmpl 465*2d1272b8SAndroid Build Coastguard Worker ${hb_gobject_header} 466*2d1272b8SAndroid Build Coastguard Worker ${project_headers} 467*2d1272b8SAndroid Build Coastguard Worker ) 468*2d1272b8SAndroid Build Coastguard Worker 469*2d1272b8SAndroid Build Coastguard Worker add_custom_command( 470*2d1272b8SAndroid Build Coastguard Worker OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.cc 471*2d1272b8SAndroid Build Coastguard Worker COMMAND ${GLIB_MKENUMS_CMD} 472*2d1272b8SAndroid Build Coastguard Worker --template=${PROJECT_SOURCE_DIR}/src/hb-gobject-enums.cc.tmpl 473*2d1272b8SAndroid Build Coastguard Worker --identifier-prefix hb_ 474*2d1272b8SAndroid Build Coastguard Worker --symbol-prefix hb_gobject 475*2d1272b8SAndroid Build Coastguard Worker ${hb_gobject_header} 476*2d1272b8SAndroid Build Coastguard Worker ${project_headers} 477*2d1272b8SAndroid Build Coastguard Worker > ${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.cc.tmp 478*2d1272b8SAndroid Build Coastguard Worker COMMAND "${CMAKE_COMMAND}" 479*2d1272b8SAndroid Build Coastguard Worker "-DENUM_INPUT_SRC=${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.cc.tmp" 480*2d1272b8SAndroid Build Coastguard Worker "-DENUM_OUTPUT_SRC=${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.cc" 481*2d1272b8SAndroid Build Coastguard Worker -P ${PROJECT_SOURCE_DIR}/replace-enum-strings.cmake 482*2d1272b8SAndroid Build Coastguard Worker DEPENDS ${PROJECT_SOURCE_DIR}/src/hb-gobject-enums.cc.tmpl 483*2d1272b8SAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR}/src/hb-gobject-enums.h 484*2d1272b8SAndroid Build Coastguard Worker ${hb_gobject_header} 485*2d1272b8SAndroid Build Coastguard Worker ${project_headers} 486*2d1272b8SAndroid Build Coastguard Worker ) 487*2d1272b8SAndroid Build Coastguard Workerendif () 488*2d1272b8SAndroid Build Coastguard Worker 489*2d1272b8SAndroid Build Coastguard Worker 490*2d1272b8SAndroid Build Coastguard Worker## Define harfbuzz library 491*2d1272b8SAndroid Build Coastguard Workeradd_library(harfbuzz ${project_sources} ${project_extra_sources} ${project_headers}) 492*2d1272b8SAndroid Build Coastguard Workertarget_link_libraries(harfbuzz ${THIRD_PARTY_LIBS}) 493*2d1272b8SAndroid Build Coastguard Workertarget_include_directories(harfbuzz PUBLIC 494*2d1272b8SAndroid Build Coastguard Worker "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>" 495*2d1272b8SAndroid Build Coastguard Worker "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/harfbuzz>") 496*2d1272b8SAndroid Build Coastguard Workerif (HB_HAVE_FREETYPE AND TARGET freetype) 497*2d1272b8SAndroid Build Coastguard Worker target_link_libraries(harfbuzz freetype) 498*2d1272b8SAndroid Build Coastguard Workerendif () 499*2d1272b8SAndroid Build Coastguard Worker 500*2d1272b8SAndroid Build Coastguard Worker 501*2d1272b8SAndroid Build Coastguard Worker## Define harfbuzz-icu library 502*2d1272b8SAndroid Build Coastguard Workerif (HB_HAVE_ICU) 503*2d1272b8SAndroid Build Coastguard Worker add_library(harfbuzz-icu ${PROJECT_SOURCE_DIR}/src/hb-icu.cc ${PROJECT_SOURCE_DIR}/src/hb-icu.h) 504*2d1272b8SAndroid Build Coastguard Worker add_dependencies(harfbuzz-icu harfbuzz) 505*2d1272b8SAndroid Build Coastguard Worker target_link_libraries(harfbuzz-icu harfbuzz ${THIRD_PARTY_LIBS}) 506*2d1272b8SAndroid Build Coastguard Worker 507*2d1272b8SAndroid Build Coastguard Worker if (BUILD_SHARED_LIBS) 508*2d1272b8SAndroid Build Coastguard Worker set_target_properties(harfbuzz harfbuzz-icu PROPERTIES VISIBILITY_INLINES_HIDDEN TRUE) 509*2d1272b8SAndroid Build Coastguard Worker endif () 510*2d1272b8SAndroid Build Coastguard Workerendif () 511*2d1272b8SAndroid Build Coastguard Worker 512*2d1272b8SAndroid Build Coastguard Worker 513*2d1272b8SAndroid Build Coastguard Worker## Define harfbuzz-subset library 514*2d1272b8SAndroid Build Coastguard Workerif (HB_BUILD_SUBSET) 515*2d1272b8SAndroid Build Coastguard Worker add_library(harfbuzz-subset ${subset_project_sources} ${subset_project_headers}) 516*2d1272b8SAndroid Build Coastguard Worker list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-subset.h ${PROJECT_SOURCE_DIR}/src/hb-subset-repacker.h) 517*2d1272b8SAndroid Build Coastguard Worker add_dependencies(harfbuzz-subset harfbuzz) 518*2d1272b8SAndroid Build Coastguard Worker target_link_libraries(harfbuzz-subset harfbuzz ${THIRD_PARTY_LIBS}) 519*2d1272b8SAndroid Build Coastguard Worker 520*2d1272b8SAndroid Build Coastguard Worker if (BUILD_SHARED_LIBS) 521*2d1272b8SAndroid Build Coastguard Worker set_target_properties(harfbuzz harfbuzz-subset PROPERTIES VISIBILITY_INLINES_HIDDEN TRUE) 522*2d1272b8SAndroid Build Coastguard Worker endif () 523*2d1272b8SAndroid Build Coastguard Workerendif () 524*2d1272b8SAndroid Build Coastguard Worker 525*2d1272b8SAndroid Build Coastguard Workerif (UNIX OR MINGW OR VITA) 526*2d1272b8SAndroid Build Coastguard Worker # Make symbols link locally 527*2d1272b8SAndroid Build Coastguard Worker include (CheckCXXCompilerFlag) 528*2d1272b8SAndroid Build Coastguard Worker CHECK_CXX_COMPILER_FLAG(-Bsymbolic-functions CXX_SUPPORTS_FLAG_BSYMB_FUNCS) 529*2d1272b8SAndroid Build Coastguard Worker if (CXX_SUPPORTS_FLAG_BSYMB_FUNCS) 530*2d1272b8SAndroid Build Coastguard Worker link_libraries(-Bsymbolic-functions) 531*2d1272b8SAndroid Build Coastguard Worker endif () 532*2d1272b8SAndroid Build Coastguard Worker 533*2d1272b8SAndroid Build Coastguard Worker # As of CMake 3.0.0, the compiler id for Apple-provided Clang is now "AppleClang"; 534*2d1272b8SAndroid Build Coastguard Worker # thus we use MATCHES instead of STREQUAL to include either regular Clang or AppleClang 535*2d1272b8SAndroid Build Coastguard Worker if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU") 536*2d1272b8SAndroid Build Coastguard Worker # Make sure we don't link to libstdc++ 537*2d1272b8SAndroid Build Coastguard Worker set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -fno-exceptions") 538*2d1272b8SAndroid Build Coastguard Worker set (CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "m") # libm 539*2d1272b8SAndroid Build Coastguard Worker set (CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "") 540*2d1272b8SAndroid Build Coastguard Worker set_target_properties(harfbuzz PROPERTIES LINKER_LANGUAGE C) 541*2d1272b8SAndroid Build Coastguard Worker if (HB_BUILD_SUBSET) 542*2d1272b8SAndroid Build Coastguard Worker set_target_properties(harfbuzz-subset PROPERTIES LINKER_LANGUAGE C) 543*2d1272b8SAndroid Build Coastguard Worker endif () 544*2d1272b8SAndroid Build Coastguard Worker 545*2d1272b8SAndroid Build Coastguard Worker # No threadsafe statics as we do it ourselves 546*2d1272b8SAndroid Build Coastguard Worker set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-threadsafe-statics") 547*2d1272b8SAndroid Build Coastguard Worker endif () 548*2d1272b8SAndroid Build Coastguard Worker 549*2d1272b8SAndroid Build Coastguard Worker CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) 550*2d1272b8SAndroid Build Coastguard Worker if (COMPILER_SUPPORTS_CXX11) 551*2d1272b8SAndroid Build Coastguard Worker set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 552*2d1272b8SAndroid Build Coastguard Worker else() 553*2d1272b8SAndroid Build Coastguard Worker message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.") 554*2d1272b8SAndroid Build Coastguard Worker endif() 555*2d1272b8SAndroid Build Coastguard Workerendif () 556*2d1272b8SAndroid Build Coastguard Worker 557*2d1272b8SAndroid Build Coastguard Worker 558*2d1272b8SAndroid Build Coastguard Worker## Define harfbuzz-gobject library 559*2d1272b8SAndroid Build Coastguard Workerif (HB_HAVE_GOBJECT) 560*2d1272b8SAndroid Build Coastguard Worker add_library(harfbuzz-gobject 561*2d1272b8SAndroid Build Coastguard Worker ${hb_gobject_sources} 562*2d1272b8SAndroid Build Coastguard Worker ${hb_gobject_gen_sources} 563*2d1272b8SAndroid Build Coastguard Worker ${hb_gobject_headers} 564*2d1272b8SAndroid Build Coastguard Worker ${hb_gobject_gen_headers} 565*2d1272b8SAndroid Build Coastguard Worker ) 566*2d1272b8SAndroid Build Coastguard Worker include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}/src) 567*2d1272b8SAndroid Build Coastguard Worker add_dependencies(harfbuzz-gobject harfbuzz) 568*2d1272b8SAndroid Build Coastguard Worker target_link_libraries(harfbuzz-gobject harfbuzz ${GOBJECT_LIBRARIES} ${THIRD_PARTY_LIBS}) 569*2d1272b8SAndroid Build Coastguard Worker 570*2d1272b8SAndroid Build Coastguard Worker if (BUILD_SHARED_LIBS) 571*2d1272b8SAndroid Build Coastguard Worker set_target_properties(harfbuzz-gobject PROPERTIES VISIBILITY_INLINES_HIDDEN TRUE) 572*2d1272b8SAndroid Build Coastguard Worker endif () 573*2d1272b8SAndroid Build Coastguard Workerendif () 574*2d1272b8SAndroid Build Coastguard Worker 575*2d1272b8SAndroid Build Coastguard Worker## Define harfbuzz-cairo library 576*2d1272b8SAndroid Build Coastguard Workerif (HB_HAVE_CAIRO) 577*2d1272b8SAndroid Build Coastguard Worker include_directories(${CAIRO_INCLUDE_DIRS}) 578*2d1272b8SAndroid Build Coastguard Worker add_library(harfbuzz-cairo ${PROJECT_SOURCE_DIR}/src/hb-cairo.cc ${PROJECT_SOURCE_DIR}/src/hb-static.cc ${PROJECT_SOURCE_DIR}/src/hb-cairo.h) 579*2d1272b8SAndroid Build Coastguard Worker add_dependencies(harfbuzz-cairo harfbuzz) 580*2d1272b8SAndroid Build Coastguard Worker target_link_libraries(harfbuzz-cairo harfbuzz ${THIRD_PARTY_LIBS}) 581*2d1272b8SAndroid Build Coastguard Worker 582*2d1272b8SAndroid Build Coastguard Worker if (BUILD_SHARED_LIBS) 583*2d1272b8SAndroid Build Coastguard Worker set_target_properties(harfbuzz-cairo PROPERTIES VISIBILITY_INLINES_HIDDEN TRUE) 584*2d1272b8SAndroid Build Coastguard Worker endif () 585*2d1272b8SAndroid Build Coastguard Workerendif() 586*2d1272b8SAndroid Build Coastguard Worker 587*2d1272b8SAndroid Build Coastguard Workerif (BUILD_SHARED_LIBS AND WIN32 AND NOT MINGW) 588*2d1272b8SAndroid Build Coastguard Worker add_definitions("-DHB_DLL_EXPORT") 589*2d1272b8SAndroid Build Coastguard Workerendif () 590*2d1272b8SAndroid Build Coastguard Worker 591*2d1272b8SAndroid Build Coastguard Worker# On Windows, g-ir-scanner requires a DLL build in order for it to work 592*2d1272b8SAndroid Build Coastguard Workerif (WIN32) 593*2d1272b8SAndroid Build Coastguard Worker if (NOT BUILD_SHARED_LIBS) 594*2d1272b8SAndroid Build Coastguard Worker message("Building introspection files on Windows requires BUILD_SHARED_LIBS to be enabled.") 595*2d1272b8SAndroid Build Coastguard Worker set (HB_HAVE_INTROSPECTION OFF) 596*2d1272b8SAndroid Build Coastguard Worker endif () 597*2d1272b8SAndroid Build Coastguard Workerendif () 598*2d1272b8SAndroid Build Coastguard Worker 599*2d1272b8SAndroid Build Coastguard Workerif (HB_HAVE_INTROSPECTION) 600*2d1272b8SAndroid Build Coastguard Worker find_package(PkgConfig) 601*2d1272b8SAndroid Build Coastguard Worker pkg_check_modules(PC_GI QUIET gobject-introspection-1.0) 602*2d1272b8SAndroid Build Coastguard Worker 603*2d1272b8SAndroid Build Coastguard Worker find_program(G_IR_SCANNER g-ir-scanner 604*2d1272b8SAndroid Build Coastguard Worker HINTS ${PC_g_ir_scanner} 605*2d1272b8SAndroid Build Coastguard Worker ) 606*2d1272b8SAndroid Build Coastguard Worker 607*2d1272b8SAndroid Build Coastguard Worker find_program(G_IR_COMPILER g-ir-compiler 608*2d1272b8SAndroid Build Coastguard Worker HINTS ${PC_g_ir_compiler} 609*2d1272b8SAndroid Build Coastguard Worker ) 610*2d1272b8SAndroid Build Coastguard Worker 611*2d1272b8SAndroid Build Coastguard Worker if (WIN32 AND NOT MINGW) 612*2d1272b8SAndroid Build Coastguard Worker # Note that since we already enable HB_HAVE_GOBJECT 613*2d1272b8SAndroid Build Coastguard Worker # we would already have Python3_EXECUTABLE handy 614*2d1272b8SAndroid Build Coastguard Worker set (G_IR_SCANNER_CMD "${Python3_EXECUTABLE}" "${G_IR_SCANNER}") 615*2d1272b8SAndroid Build Coastguard Worker else () 616*2d1272b8SAndroid Build Coastguard Worker set (G_IR_SCANNER_CMD "${G_IR_SCANNER}") 617*2d1272b8SAndroid Build Coastguard Worker endif () 618*2d1272b8SAndroid Build Coastguard Worker 619*2d1272b8SAndroid Build Coastguard Worker # We need to account for the varying output directories 620*2d1272b8SAndroid Build Coastguard Worker # when we build using Visual Studio projects 621*2d1272b8SAndroid Build Coastguard Worker if ("${CMAKE_GENERATOR}" MATCHES "Visual Studio*") 622*2d1272b8SAndroid Build Coastguard Worker set (hb_libpath "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>") 623*2d1272b8SAndroid Build Coastguard Worker else () 624*2d1272b8SAndroid Build Coastguard Worker set (hb_libpath "$<TARGET_FILE_DIR:harfbuzz-gobject>") 625*2d1272b8SAndroid Build Coastguard Worker endif () 626*2d1272b8SAndroid Build Coastguard Worker 627*2d1272b8SAndroid Build Coastguard Worker # Get the CFlags that we used to build HarfBuzz/HarfBuzz-GObject 628*2d1272b8SAndroid Build Coastguard Worker set (hb_defines_cflags "") 629*2d1272b8SAndroid Build Coastguard Worker foreach (hb_cflag ${hb_cflags}) 630*2d1272b8SAndroid Build Coastguard Worker list(APPEND hb_defines_cflags "-D${hb_cflag}") 631*2d1272b8SAndroid Build Coastguard Worker endforeach (hb_cflag) 632*2d1272b8SAndroid Build Coastguard Worker 633*2d1272b8SAndroid Build Coastguard Worker # Get the other dependent libraries we used to build HarfBuzz/HarfBuzz-GObject 634*2d1272b8SAndroid Build Coastguard Worker set (extra_libs "") 635*2d1272b8SAndroid Build Coastguard Worker foreach (extra_lib ${THIRD_PARTY_LIBS}) 636*2d1272b8SAndroid Build Coastguard Worker # We don't want the .lib extension here... 637*2d1272b8SAndroid Build Coastguard Worker string(REPLACE ".lib" "" extra_lib_stripped "${extra_lib}") 638*2d1272b8SAndroid Build Coastguard Worker list(APPEND extra_libs "--extra-library=${extra_lib_stripped}") 639*2d1272b8SAndroid Build Coastguard Worker endforeach () 640*2d1272b8SAndroid Build Coastguard Worker 641*2d1272b8SAndroid Build Coastguard Worker set (introspected_sources) 642*2d1272b8SAndroid Build Coastguard Worker foreach (f 643*2d1272b8SAndroid Build Coastguard Worker ${project_headers} 644*2d1272b8SAndroid Build Coastguard Worker ${project_sources} 645*2d1272b8SAndroid Build Coastguard Worker ${hb_gobject_gen_sources} 646*2d1272b8SAndroid Build Coastguard Worker ${hb_gobject_gen_headers} 647*2d1272b8SAndroid Build Coastguard Worker ${hb_gobject_sources} 648*2d1272b8SAndroid Build Coastguard Worker ${hb_gobject_headers} 649*2d1272b8SAndroid Build Coastguard Worker ) 650*2d1272b8SAndroid Build Coastguard Worker if (WIN32) 651*2d1272b8SAndroid Build Coastguard Worker # Nasty issue: We need to make drive letters lower case, 652*2d1272b8SAndroid Build Coastguard Worker # otherwise g-ir-scanner won't like it and give us a bunch 653*2d1272b8SAndroid Build Coastguard Worker # of invalid items and unresolved types... 654*2d1272b8SAndroid Build Coastguard Worker STRING(SUBSTRING "${f}" 0 1 drive) 655*2d1272b8SAndroid Build Coastguard Worker STRING(SUBSTRING "${f}" 1 -1 path) 656*2d1272b8SAndroid Build Coastguard Worker if (drive MATCHES "[A-Z]") 657*2d1272b8SAndroid Build Coastguard Worker STRING(TOLOWER ${drive} drive_lower) 658*2d1272b8SAndroid Build Coastguard Worker list(APPEND introspected_sources "${drive_lower}${path}") 659*2d1272b8SAndroid Build Coastguard Worker else () 660*2d1272b8SAndroid Build Coastguard Worker list(APPEND introspected_sources "${f}") 661*2d1272b8SAndroid Build Coastguard Worker endif () 662*2d1272b8SAndroid Build Coastguard Worker else () 663*2d1272b8SAndroid Build Coastguard Worker list(APPEND introspected_sources "${f}") 664*2d1272b8SAndroid Build Coastguard Worker endif () 665*2d1272b8SAndroid Build Coastguard Worker endforeach () 666*2d1272b8SAndroid Build Coastguard Worker 667*2d1272b8SAndroid Build Coastguard Worker file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/src/hb_gir_list) 668*2d1272b8SAndroid Build Coastguard Worker foreach (s ${introspected_sources}) 669*2d1272b8SAndroid Build Coastguard Worker file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/src/hb_gir_list "${s}\n") 670*2d1272b8SAndroid Build Coastguard Worker endforeach () 671*2d1272b8SAndroid Build Coastguard Worker 672*2d1272b8SAndroid Build Coastguard Worker # Finally, build the introspection files... 673*2d1272b8SAndroid Build Coastguard Worker add_custom_command( 674*2d1272b8SAndroid Build Coastguard Worker TARGET harfbuzz-gobject 675*2d1272b8SAndroid Build Coastguard Worker POST_BUILD 676*2d1272b8SAndroid Build Coastguard Worker COMMAND ${G_IR_SCANNER_CMD} 677*2d1272b8SAndroid Build Coastguard Worker --warn-all --no-libtool --verbose 678*2d1272b8SAndroid Build Coastguard Worker --namespace=HarfBuzz 679*2d1272b8SAndroid Build Coastguard Worker --nsversion=0.0 680*2d1272b8SAndroid Build Coastguard Worker --symbol-prefix=hb 681*2d1272b8SAndroid Build Coastguard Worker --symbol-prefix=hb_gobject 682*2d1272b8SAndroid Build Coastguard Worker --identifier-prefix=hb_ 683*2d1272b8SAndroid Build Coastguard Worker --include GObject-2.0 684*2d1272b8SAndroid Build Coastguard Worker --pkg-export=harfbuzz-gobject 685*2d1272b8SAndroid Build Coastguard Worker --c-include=hb-gobject.h 686*2d1272b8SAndroid Build Coastguard Worker --cflags-begin 687*2d1272b8SAndroid Build Coastguard Worker -I${PROJECT_SOURCE_DIR}/src 688*2d1272b8SAndroid Build Coastguard Worker -I${PROJECT_BINARY_DIR}/src 689*2d1272b8SAndroid Build Coastguard Worker ${hb_includedir_cflags} 690*2d1272b8SAndroid Build Coastguard Worker ${hb_defines_cflags} 691*2d1272b8SAndroid Build Coastguard Worker -DHB_NO_SINGLE_HEADER_ERROR 692*2d1272b8SAndroid Build Coastguard Worker -DHB_HAVE_GOBJECT 693*2d1272b8SAndroid Build Coastguard Worker -DHB_EXTERN= 694*2d1272b8SAndroid Build Coastguard Worker --cflags-end 695*2d1272b8SAndroid Build Coastguard Worker --library=harfbuzz-gobject 696*2d1272b8SAndroid Build Coastguard Worker --library=harfbuzz 697*2d1272b8SAndroid Build Coastguard Worker -L${hb_libpath} 698*2d1272b8SAndroid Build Coastguard Worker ${extra_libs} 699*2d1272b8SAndroid Build Coastguard Worker --filelist ${CMAKE_CURRENT_BINARY_DIR}/src/hb_gir_list 700*2d1272b8SAndroid Build Coastguard Worker -o ${hb_libpath}/HarfBuzz-0.0.gir 701*2d1272b8SAndroid Build Coastguard Worker DEPENDS harfbuzz-gobject harfbuzz ${CMAKE_CURRENT_BINARY_DIR}/src/hb_gir_list 702*2d1272b8SAndroid Build Coastguard Worker ) 703*2d1272b8SAndroid Build Coastguard Worker 704*2d1272b8SAndroid Build Coastguard Worker add_custom_command( 705*2d1272b8SAndroid Build Coastguard Worker TARGET harfbuzz-gobject 706*2d1272b8SAndroid Build Coastguard Worker POST_BUILD 707*2d1272b8SAndroid Build Coastguard Worker COMMAND "${G_IR_COMPILER}" 708*2d1272b8SAndroid Build Coastguard Worker --verbose --debug 709*2d1272b8SAndroid Build Coastguard Worker --includedir ${CMAKE_CURRENT_BINARY_DIR} 710*2d1272b8SAndroid Build Coastguard Worker ${hb_libpath}/HarfBuzz-0.0.gir 711*2d1272b8SAndroid Build Coastguard Worker -o ${hb_libpath}/HarfBuzz-0.0.typelib 712*2d1272b8SAndroid Build Coastguard Worker DEPENDS ${hb_libpath}/HarfBuzz-0.0.gir harfbuzz-gobject 713*2d1272b8SAndroid Build Coastguard Worker ) 714*2d1272b8SAndroid Build Coastguard Workerendif () 715*2d1272b8SAndroid Build Coastguard Worker 716*2d1272b8SAndroid Build Coastguard Worker 717*2d1272b8SAndroid Build Coastguard Worker## Additional framework build configs 718*2d1272b8SAndroid Build Coastguard Workerif (BUILD_FRAMEWORK) 719*2d1272b8SAndroid Build Coastguard Worker set (CMAKE_MACOSX_RPATH ON) 720*2d1272b8SAndroid Build Coastguard Worker set_target_properties(harfbuzz PROPERTIES 721*2d1272b8SAndroid Build Coastguard Worker FRAMEWORK TRUE 722*2d1272b8SAndroid Build Coastguard Worker PUBLIC_HEADER "${project_headers}" 723*2d1272b8SAndroid Build Coastguard Worker XCODE_ATTRIBUTE_INSTALL_PATH "@rpath" 724*2d1272b8SAndroid Build Coastguard Worker ) 725*2d1272b8SAndroid Build Coastguard Worker set (MACOSX_FRAMEWORK_IDENTIFIER "harfbuzz") 726*2d1272b8SAndroid Build Coastguard Worker set (MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${HB_VERSION}") 727*2d1272b8SAndroid Build Coastguard Worker set (MACOSX_FRAMEWORK_BUNDLE_VERSION "${HB_VERSION}") 728*2d1272b8SAndroid Build Coastguard Workerendif () 729*2d1272b8SAndroid Build Coastguard Worker 730*2d1272b8SAndroid Build Coastguard Worker 731*2d1272b8SAndroid Build Coastguard Worker## Additional harfbuzz build artifacts 732*2d1272b8SAndroid Build Coastguard Workerif (HB_BUILD_UTILS) 733*2d1272b8SAndroid Build Coastguard Worker add_definitions("-DPACKAGE_NAME=\"HarfBuzz\"") 734*2d1272b8SAndroid Build Coastguard Worker add_definitions("-DPACKAGE_VERSION=\"${HB_VERSION}\"") 735*2d1272b8SAndroid Build Coastguard Worker 736*2d1272b8SAndroid Build Coastguard Worker if (HB_HAVE_CAIRO) 737*2d1272b8SAndroid Build Coastguard Worker add_executable(hb-view 738*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/ansi-print.hh 739*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/face-options.hh 740*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/font-options.hh 741*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/hb-view.cc 742*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/helper-cairo-ansi.hh 743*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/helper-cairo-ft.hh 744*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/helper-cairo.hh 745*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/main-font-text.hh 746*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/options.hh 747*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/output-options.hh 748*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/shape-consumer.hh 749*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/shape-options.hh 750*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/text-options.hh 751*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/view-cairo.hh 752*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/view-options.hh 753*2d1272b8SAndroid Build Coastguard Worker ) 754*2d1272b8SAndroid Build Coastguard Worker target_link_libraries(hb-view harfbuzz-cairo harfbuzz ${CAIRO_LIBRARIESNAMES}) 755*2d1272b8SAndroid Build Coastguard Worker endif() 756*2d1272b8SAndroid Build Coastguard Worker 757*2d1272b8SAndroid Build Coastguard Worker add_executable(hb-shape 758*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/batch.hh 759*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/face-options.hh 760*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/font-options.hh 761*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/hb-shape.cc 762*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/main-font-text.hh 763*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/options.hh 764*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/output-options.hh 765*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/shape-consumer.hh 766*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/shape-format.hh 767*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/shape-options.hh 768*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/shape-output.hh 769*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/text-options.hh 770*2d1272b8SAndroid Build Coastguard Worker ) 771*2d1272b8SAndroid Build Coastguard Worker target_link_libraries(hb-shape harfbuzz) 772*2d1272b8SAndroid Build Coastguard Worker 773*2d1272b8SAndroid Build Coastguard Worker add_executable(hb-subset 774*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/batch.hh 775*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/face-options.hh 776*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/hb-subset.cc 777*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/main-font-text.hh 778*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/options.hh 779*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/output-options.hh 780*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/text-options.hh 781*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/helper-subset.hh 782*2d1272b8SAndroid Build Coastguard Worker ) 783*2d1272b8SAndroid Build Coastguard Worker target_link_libraries(hb-subset harfbuzz harfbuzz-subset) 784*2d1272b8SAndroid Build Coastguard Worker 785*2d1272b8SAndroid Build Coastguard Worker add_executable(hb-ot-shape-closure 786*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/face-options.hh 787*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/font-options.hh 788*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/hb-ot-shape-closure.cc 789*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/main-font-text.hh 790*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/options.hh 791*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/text-options.hh 792*2d1272b8SAndroid Build Coastguard Worker ) 793*2d1272b8SAndroid Build Coastguard Worker target_link_libraries(hb-ot-shape-closure harfbuzz) 794*2d1272b8SAndroid Build Coastguard Worker 795*2d1272b8SAndroid Build Coastguard Worker if (HB_HAVE_GOBJECT) 796*2d1272b8SAndroid Build Coastguard Worker add_executable(hb-info 797*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/batch.hh 798*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/face-options.hh 799*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/font-options.hh 800*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/hb-info.cc 801*2d1272b8SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/util/options.hh 802*2d1272b8SAndroid Build Coastguard Worker ) 803*2d1272b8SAndroid Build Coastguard Worker target_link_libraries(hb-info harfbuzz-gobject harfbuzz) 804*2d1272b8SAndroid Build Coastguard Worker endif() 805*2d1272b8SAndroid Build Coastguard Workerendif () 806*2d1272b8SAndroid Build Coastguard Worker 807*2d1272b8SAndroid Build Coastguard Worker 808*2d1272b8SAndroid Build Coastguard Worker## Install 809*2d1272b8SAndroid Build Coastguard Workerinclude (GNUInstallDirs) 810*2d1272b8SAndroid Build Coastguard Worker 811*2d1272b8SAndroid Build Coastguard Workerif (NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL) 812*2d1272b8SAndroid Build Coastguard Worker install(FILES ${project_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/harfbuzz) 813*2d1272b8SAndroid Build Coastguard Worker if (HB_HAVE_GOBJECT) 814*2d1272b8SAndroid Build Coastguard Worker install(FILES ${hb_gobject_headers} ${hb_gobject_gen_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/harfbuzz) 815*2d1272b8SAndroid Build Coastguard Worker endif () 816*2d1272b8SAndroid Build Coastguard Workerendif () 817*2d1272b8SAndroid Build Coastguard Worker 818*2d1272b8SAndroid Build Coastguard Worker# get these variables in the required format 819*2d1272b8SAndroid Build Coastguard Workerlist(REMOVE_DUPLICATES PC_REQUIRES_PRIV) 820*2d1272b8SAndroid Build Coastguard Workerstring(REPLACE ";" ", " PC_REQUIRES_PRIV "${PC_REQUIRES_PRIV}") 821*2d1272b8SAndroid Build Coastguard Workerlist(REMOVE_DUPLICATES PC_LIBS_PRIV) 822*2d1272b8SAndroid Build Coastguard Workerstring(REPLACE ";" " " PC_LIBS_PRIV "${PC_LIBS_PRIV}") 823*2d1272b8SAndroid Build Coastguard Worker 824*2d1272b8SAndroid Build Coastguard Worker# Macro to write pkg-config .pc configuration files 825*2d1272b8SAndroid Build Coastguard Workermacro ( make_pkgconfig_pc_file name ) 826*2d1272b8SAndroid Build Coastguard Worker file(READ "${PROJECT_SOURCE_DIR}/src/${name}.pc.in" FSTR) 827*2d1272b8SAndroid Build Coastguard Worker 828*2d1272b8SAndroid Build Coastguard Worker string(REPLACE "%prefix%" "${CMAKE_INSTALL_PREFIX}" FSTR ${FSTR}) 829*2d1272b8SAndroid Build Coastguard Worker string(REPLACE "%exec_prefix%" "\${prefix}" FSTR ${FSTR}) 830*2d1272b8SAndroid Build Coastguard Worker 831*2d1272b8SAndroid Build Coastguard Worker if (IS_ABSOLUTE "${CMAKE_INSTALL_INCLUDEDIR}") 832*2d1272b8SAndroid Build Coastguard Worker string(REPLACE "%includedir%" "${CMAKE_INSTALL_INCLUDEDIR}" FSTR ${FSTR}) 833*2d1272b8SAndroid Build Coastguard Worker else () 834*2d1272b8SAndroid Build Coastguard Worker string(REPLACE "%includedir%" "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}" FSTR ${FSTR}) 835*2d1272b8SAndroid Build Coastguard Worker endif () 836*2d1272b8SAndroid Build Coastguard Worker 837*2d1272b8SAndroid Build Coastguard Worker if (IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}") 838*2d1272b8SAndroid Build Coastguard Worker string(REPLACE "%libdir%" "${CMAKE_INSTALL_LIBDIR}" FSTR ${FSTR}) 839*2d1272b8SAndroid Build Coastguard Worker else () 840*2d1272b8SAndroid Build Coastguard Worker string(REPLACE "%libdir%" "\${prefix}/${CMAKE_INSTALL_LIBDIR}" FSTR ${FSTR}) 841*2d1272b8SAndroid Build Coastguard Worker endif () 842*2d1272b8SAndroid Build Coastguard Worker 843*2d1272b8SAndroid Build Coastguard Worker string(REPLACE "%VERSION%" "${HB_VERSION}" FSTR ${FSTR}) 844*2d1272b8SAndroid Build Coastguard Worker string(REPLACE "%requires_private%" "${PC_REQUIRES_PRIV}" FSTR ${FSTR}) 845*2d1272b8SAndroid Build Coastguard Worker string(REPLACE "%libs_private%" "${PC_LIBS_PRIV}" FSTR ${FSTR}) 846*2d1272b8SAndroid Build Coastguard Worker 847*2d1272b8SAndroid Build Coastguard Worker file(WRITE "${PROJECT_BINARY_DIR}/${name}.pc" ${FSTR}) 848*2d1272b8SAndroid Build Coastguard Worker 849*2d1272b8SAndroid Build Coastguard Worker install( 850*2d1272b8SAndroid Build Coastguard Worker FILES "${PROJECT_BINARY_DIR}/${name}.pc" 851*2d1272b8SAndroid Build Coastguard Worker DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig" 852*2d1272b8SAndroid Build Coastguard Worker COMPONENT pkgconfig 853*2d1272b8SAndroid Build Coastguard Worker ) 854*2d1272b8SAndroid Build Coastguard Workerendmacro ( make_pkgconfig_pc_file ) 855*2d1272b8SAndroid Build Coastguard Worker 856*2d1272b8SAndroid Build Coastguard Worker# Generate hb-features.h with the features we enabled 857*2d1272b8SAndroid Build Coastguard Workermacro (make_hb_features_h) 858*2d1272b8SAndroid Build Coastguard Worker file(READ "${PROJECT_SOURCE_DIR}/src/hb-features.h.in" feature_h_in) 859*2d1272b8SAndroid Build Coastguard Worker foreach(arg cairo coretext directwrite freetype gdi glib gobject graphite icu uniscribe wasm) 860*2d1272b8SAndroid Build Coastguard Worker string(TOUPPER ${arg} feature_caps) 861*2d1272b8SAndroid Build Coastguard Worker set(feature_instring "#mesondefine HB_HAS_${feature_caps}") 862*2d1272b8SAndroid Build Coastguard Worker if (HB_HAVE_${feature_caps}) 863*2d1272b8SAndroid Build Coastguard Worker set(feature_outstring "#define HB_HAS_${feature_caps} 1") 864*2d1272b8SAndroid Build Coastguard Worker else () 865*2d1272b8SAndroid Build Coastguard Worker set(feature_outstring "/* #undef HB_HAS_${feature_caps} */") 866*2d1272b8SAndroid Build Coastguard Worker endif() 867*2d1272b8SAndroid Build Coastguard Worker string(REPLACE ${feature_instring} ${feature_outstring} feature_h_in ${feature_h_in}) 868*2d1272b8SAndroid Build Coastguard Worker endforeach() 869*2d1272b8SAndroid Build Coastguard Worker file(WRITE "${PROJECT_BINARY_DIR}/src/hb-features.h" ${feature_h_in}) 870*2d1272b8SAndroid Build Coastguard Worker if (NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL) 871*2d1272b8SAndroid Build Coastguard Worker install( 872*2d1272b8SAndroid Build Coastguard Worker FILES "${PROJECT_BINARY_DIR}/src/hb-features.h" 873*2d1272b8SAndroid Build Coastguard Worker DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/harfbuzz" 874*2d1272b8SAndroid Build Coastguard Worker ) 875*2d1272b8SAndroid Build Coastguard Worker endif() 876*2d1272b8SAndroid Build Coastguard Workerendmacro (make_hb_features_h) 877*2d1272b8SAndroid Build Coastguard Worker 878*2d1272b8SAndroid Build Coastguard Workerif (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) 879*2d1272b8SAndroid Build Coastguard Worker install(TARGETS harfbuzz 880*2d1272b8SAndroid Build Coastguard Worker EXPORT harfbuzzConfig 881*2d1272b8SAndroid Build Coastguard Worker ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 882*2d1272b8SAndroid Build Coastguard Worker LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 883*2d1272b8SAndroid Build Coastguard Worker RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 884*2d1272b8SAndroid Build Coastguard Worker FRAMEWORK DESTINATION Library/Frameworks 885*2d1272b8SAndroid Build Coastguard Worker ) 886*2d1272b8SAndroid Build Coastguard Worker make_pkgconfig_pc_file("harfbuzz") 887*2d1272b8SAndroid Build Coastguard Worker install(EXPORT harfbuzzConfig 888*2d1272b8SAndroid Build Coastguard Worker NAMESPACE harfbuzz:: 889*2d1272b8SAndroid Build Coastguard Worker DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/harfbuzz 890*2d1272b8SAndroid Build Coastguard Worker ) 891*2d1272b8SAndroid Build Coastguard Worker if (HB_HAVE_ICU) 892*2d1272b8SAndroid Build Coastguard Worker install(TARGETS harfbuzz-icu 893*2d1272b8SAndroid Build Coastguard Worker ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 894*2d1272b8SAndroid Build Coastguard Worker LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 895*2d1272b8SAndroid Build Coastguard Worker RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 896*2d1272b8SAndroid Build Coastguard Worker FRAMEWORK DESTINATION Library/Frameworks 897*2d1272b8SAndroid Build Coastguard Worker ) 898*2d1272b8SAndroid Build Coastguard Worker make_pkgconfig_pc_file("harfbuzz-icu") 899*2d1272b8SAndroid Build Coastguard Worker endif () 900*2d1272b8SAndroid Build Coastguard Worker if (HB_HAVE_CAIRO) 901*2d1272b8SAndroid Build Coastguard Worker install(TARGETS harfbuzz-cairo 902*2d1272b8SAndroid Build Coastguard Worker ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 903*2d1272b8SAndroid Build Coastguard Worker LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 904*2d1272b8SAndroid Build Coastguard Worker RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 905*2d1272b8SAndroid Build Coastguard Worker FRAMEWORK DESTINATION Library/Frameworks 906*2d1272b8SAndroid Build Coastguard Worker ) 907*2d1272b8SAndroid Build Coastguard Worker make_pkgconfig_pc_file("harfbuzz-cairo") 908*2d1272b8SAndroid Build Coastguard Worker endif () 909*2d1272b8SAndroid Build Coastguard Worker if (HB_BUILD_SUBSET) 910*2d1272b8SAndroid Build Coastguard Worker install(TARGETS harfbuzz-subset 911*2d1272b8SAndroid Build Coastguard Worker ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 912*2d1272b8SAndroid Build Coastguard Worker ) 913*2d1272b8SAndroid Build Coastguard Worker make_pkgconfig_pc_file("harfbuzz-subset") 914*2d1272b8SAndroid Build Coastguard Worker endif () 915*2d1272b8SAndroid Build Coastguard Worker if (HB_BUILD_UTILS) 916*2d1272b8SAndroid Build Coastguard Worker if (WIN32 AND BUILD_SHARED_LIBS) 917*2d1272b8SAndroid Build Coastguard Worker install(TARGETS harfbuzz-subset 918*2d1272b8SAndroid Build Coastguard Worker RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 919*2d1272b8SAndroid Build Coastguard Worker ) 920*2d1272b8SAndroid Build Coastguard Worker endif () 921*2d1272b8SAndroid Build Coastguard Worker if (HB_HAVE_CAIRO) 922*2d1272b8SAndroid Build Coastguard Worker install(TARGETS hb-view 923*2d1272b8SAndroid Build Coastguard Worker RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 924*2d1272b8SAndroid Build Coastguard Worker ) 925*2d1272b8SAndroid Build Coastguard Worker endif() 926*2d1272b8SAndroid Build Coastguard Worker install(TARGETS hb-subset 927*2d1272b8SAndroid Build Coastguard Worker RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 928*2d1272b8SAndroid Build Coastguard Worker ) 929*2d1272b8SAndroid Build Coastguard Worker 930*2d1272b8SAndroid Build Coastguard Worker install(TARGETS hb-shape 931*2d1272b8SAndroid Build Coastguard Worker RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 932*2d1272b8SAndroid Build Coastguard Worker ) 933*2d1272b8SAndroid Build Coastguard Worker 934*2d1272b8SAndroid Build Coastguard Worker if (HB_HAVE_GOBJECT) 935*2d1272b8SAndroid Build Coastguard Worker install(TARGETS hb-info 936*2d1272b8SAndroid Build Coastguard Worker RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 937*2d1272b8SAndroid Build Coastguard Worker ) 938*2d1272b8SAndroid Build Coastguard Worker endif() 939*2d1272b8SAndroid Build Coastguard Worker 940*2d1272b8SAndroid Build Coastguard Worker install(TARGETS hb-ot-shape-closure 941*2d1272b8SAndroid Build Coastguard Worker RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 942*2d1272b8SAndroid Build Coastguard Worker ) 943*2d1272b8SAndroid Build Coastguard Worker endif () 944*2d1272b8SAndroid Build Coastguard Worker if (HB_HAVE_GOBJECT) 945*2d1272b8SAndroid Build Coastguard Worker install(TARGETS harfbuzz-gobject 946*2d1272b8SAndroid Build Coastguard Worker ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 947*2d1272b8SAndroid Build Coastguard Worker LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 948*2d1272b8SAndroid Build Coastguard Worker RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 949*2d1272b8SAndroid Build Coastguard Worker ) 950*2d1272b8SAndroid Build Coastguard Worker make_pkgconfig_pc_file("harfbuzz-gobject") 951*2d1272b8SAndroid Build Coastguard Worker if (HB_HAVE_INTROSPECTION) 952*2d1272b8SAndroid Build Coastguard Worker if ("${CMAKE_GENERATOR}" MATCHES "Visual Studio*") 953*2d1272b8SAndroid Build Coastguard Worker set (hb_libpath "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>") 954*2d1272b8SAndroid Build Coastguard Worker else () 955*2d1272b8SAndroid Build Coastguard Worker set (hb_libpath "$<TARGET_FILE_DIR:harfbuzz-gobject>") 956*2d1272b8SAndroid Build Coastguard Worker endif () 957*2d1272b8SAndroid Build Coastguard Worker 958*2d1272b8SAndroid Build Coastguard Worker install(FILES "${hb_libpath}/HarfBuzz-0.0.gir" 959*2d1272b8SAndroid Build Coastguard Worker DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/gir-1.0 960*2d1272b8SAndroid Build Coastguard Worker ) 961*2d1272b8SAndroid Build Coastguard Worker 962*2d1272b8SAndroid Build Coastguard Worker install(FILES "${hb_libpath}/HarfBuzz-0.0.typelib" 963*2d1272b8SAndroid Build Coastguard Worker DESTINATION ${CMAKE_INSTALL_LIBDIR}/girepository-1.0 964*2d1272b8SAndroid Build Coastguard Worker ) 965*2d1272b8SAndroid Build Coastguard Worker endif () 966*2d1272b8SAndroid Build Coastguard Worker endif () 967*2d1272b8SAndroid Build Coastguard Worker make_hb_features_h() 968*2d1272b8SAndroid Build Coastguard Workerendif () 969