update harfbuzz to 10.1.0

This commit is contained in:
Sasha Szpakowski
2024-11-08 20:45:28 -04:00
parent 7ca40027e0
commit aecb572558
3449 changed files with 101770 additions and 22266 deletions
+232 -97
View File
@@ -3,6 +3,9 @@ project(harfbuzz)
message(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.")
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
## Limit framework build to Xcode generator
if (BUILD_FRAMEWORK)
# for a framework build on macOS, use:
@@ -33,6 +36,7 @@ endif ()
## HarfBuzz build configurations
option(HB_HAVE_CAIRO "Enable cairo interop helpers" OFF)
option(HB_HAVE_FREETYPE "Enable freetype interop helpers" OFF)
option(HB_HAVE_GRAPHITE2 "Enable Graphite2 complementary shaper" OFF)
option(HB_HAVE_GLIB "Enable glib unicode functions" OFF)
@@ -74,8 +78,8 @@ include_directories(AFTER
${PROJECT_BINARY_DIR}/src
)
# We need PYTHON_EXECUTABLE to be set for running the tests...
include (FindPythonInterp)
# We need Python3_EXECUTABLE to be set for running the tests...
find_package(Python3 COMPONENTS Interpreter)
## Functions and headers
include (CheckFunctionExists)
@@ -123,6 +127,7 @@ endif ()
if (MSVC)
add_definitions(-wd4244 -wd4267 -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS)
add_definitions(-bigobj)
endif ()
@@ -133,54 +138,8 @@ endif ()
# #set (HB_VERSION_H "${PROJECT_SOURCE_DIR}/src/hb-version.h")
# endif ()
## Extract variables from Makefile files
function (extract_make_variable variable makefile_source)
string(REGEX MATCH "${variable} = ([^$]+)\\$" temp "${makefile_source}")
string(REGEX MATCHALL "[^ \n\t\\]+" listVar "${CMAKE_MATCH_1}")
set (${variable} ${listVar} PARENT_SCOPE)
endfunction ()
# https://stackoverflow.com/a/27630120
function (add_prefix_to_list var prefix)
set (listVar "")
foreach (f ${${var}})
list(APPEND listVar "${prefix}${f}")
endforeach ()
set (${var} "${listVar}" PARENT_SCOPE)
endfunction ()
file(READ ${PROJECT_SOURCE_DIR}/src/Makefile.sources SRCSOURCES)
file(READ ${PROJECT_SOURCE_DIR}/util/Makefile.sources UTILSOURCES)
extract_make_variable(HB_BASE_headers ${SRCSOURCES})
add_prefix_to_list(HB_BASE_headers "${PROJECT_SOURCE_DIR}/src/")
extract_make_variable(HB_SUBSET_sources ${SRCSOURCES})
add_prefix_to_list(HB_SUBSET_sources "${PROJECT_SOURCE_DIR}/src/")
extract_make_variable(HB_SUBSET_headers ${SRCSOURCES})
add_prefix_to_list(HB_SUBSET_headers "${PROJECT_SOURCE_DIR}/src/")
extract_make_variable(HB_BASE_RAGEL_GENERATED_sources ${SRCSOURCES})
#if (IN_HB_DIST)
add_prefix_to_list(HB_BASE_RAGEL_GENERATED_sources "${PROJECT_SOURCE_DIR}/src/")
#else ()
# add_prefix_to_list(HB_BASE_RAGEL_GENERATED_sources "${PROJECT_BINARY_DIR}/src/")
#endif ()
extract_make_variable(HB_VIEW_sources ${UTILSOURCES})
add_prefix_to_list(HB_VIEW_sources "${PROJECT_SOURCE_DIR}/util/")
extract_make_variable(HB_SHAPE_sources ${UTILSOURCES})
add_prefix_to_list(HB_SHAPE_sources "${PROJECT_SOURCE_DIR}/util/")
extract_make_variable(HB_SUBSET_CLI_sources ${UTILSOURCES})
add_prefix_to_list(HB_SUBSET_CLI_sources "${PROJECT_SOURCE_DIR}/util/")
extract_make_variable(HB_OT_SHAPE_CLOSURE_sources ${UTILSOURCES})
add_prefix_to_list(HB_OT_SHAPE_CLOSURE_sources "${PROJECT_SOURCE_DIR}/util/")
file(READ configure.ac CONFIGUREAC)
string(REGEX MATCH "\\[(([0-9]+)\\.([0-9]+)\\.([0-9]+))\\]" HB_VERSION_MATCH ${CONFIGUREAC})
file(READ meson.build MESONBUILD)
string(REGEX MATCH "version: '(([0-9]+)\\.([0-9]+)\\.([0-9]+))'," HB_VERSION_MATCH ${MESONBUILD})
set (HB_VERSION ${CMAKE_MATCH_1})
set (HB_VERSION_MAJOR ${CMAKE_MATCH_2})
set (HB_VERSION_MINOR ${CMAKE_MATCH_3})
@@ -188,10 +147,80 @@ set (HB_VERSION_MICRO ${CMAKE_MATCH_4})
## Define sources and headers of the project
set (project_sources ${PROJECT_SOURCE_DIR}/src/harfbuzz.cc) # use amalgam source
set (subset_project_sources ${HB_SUBSET_sources})
set (subset_project_sources
${PROJECT_SOURCE_DIR}/src/hb-number.cc
${PROJECT_SOURCE_DIR}/src/hb-number.hh
${PROJECT_SOURCE_DIR}/src/hb-ot-cff1-table.cc
${PROJECT_SOURCE_DIR}/src/hb-ot-cff2-table.cc
${PROJECT_SOURCE_DIR}/src/hb-ot-post-table-v2subset.hh
${PROJECT_SOURCE_DIR}/src/hb-static.cc
${PROJECT_SOURCE_DIR}/src/hb-subset-cff-common.cc
${PROJECT_SOURCE_DIR}/src/hb-subset-cff-common.hh
${PROJECT_SOURCE_DIR}/src/hb-subset-cff1.cc
${PROJECT_SOURCE_DIR}/src/hb-subset-cff2.cc
${PROJECT_SOURCE_DIR}/src/hb-subset-input.cc
${PROJECT_SOURCE_DIR}/src/hb-subset-input.hh
${PROJECT_SOURCE_DIR}/src/hb-subset-instancer-iup.hh
${PROJECT_SOURCE_DIR}/src/hb-subset-instancer-iup.cc
${PROJECT_SOURCE_DIR}/src/hb-subset-instancer-solver.hh
${PROJECT_SOURCE_DIR}/src/hb-subset-instancer-solver.cc
${PROJECT_SOURCE_DIR}/src/hb-subset-accelerator.hh
${PROJECT_SOURCE_DIR}/src/hb-subset-plan.cc
${PROJECT_SOURCE_DIR}/src/hb-subset-plan.hh
${PROJECT_SOURCE_DIR}/src/hb-subset-plan-member-list.hh
${PROJECT_SOURCE_DIR}/src/hb-subset-repacker.cc
${PROJECT_SOURCE_DIR}/src/hb-subset.cc
${PROJECT_SOURCE_DIR}/src/hb-subset.hh
${PROJECT_SOURCE_DIR}/src/hb-repacker.hh
${PROJECT_SOURCE_DIR}/src/graph/graph.hh
${PROJECT_SOURCE_DIR}/src/graph/gsubgpos-graph.hh
${PROJECT_SOURCE_DIR}/src/graph/gsubgpos-context.hh
${PROJECT_SOURCE_DIR}/src/graph/gsubgpos-context.cc
${PROJECT_SOURCE_DIR}/src/graph/coverage-graph.hh
${PROJECT_SOURCE_DIR}/src/graph/classdef-graph.hh
${PROJECT_SOURCE_DIR}/src/graph/pairpos-graph.hh
${PROJECT_SOURCE_DIR}/src/graph/markbasepos-graph.hh
${PROJECT_SOURCE_DIR}/src/graph/split-helpers.hh
${PROJECT_SOURCE_DIR}/src/graph/serialize.hh
${PROJECT_SOURCE_DIR}/src/OT/Color/COLR/colrv1-closure.hh
)
set (project_extra_sources)
set (project_headers ${HB_BASE_headers})
set (subset_project_headers ${HB_SUBSET_headers})
set (project_headers
${PROJECT_SOURCE_DIR}/src/hb-aat-layout.h
${PROJECT_SOURCE_DIR}/src/hb-aat.h
${PROJECT_SOURCE_DIR}/src/hb-blob.h
${PROJECT_SOURCE_DIR}/src/hb-buffer.h
${PROJECT_SOURCE_DIR}/src/hb-common.h
${PROJECT_SOURCE_DIR}/src/hb-cplusplus.hh
${PROJECT_SOURCE_DIR}/src/hb-deprecated.h
${PROJECT_SOURCE_DIR}/src/hb-draw.h
${PROJECT_SOURCE_DIR}/src/hb-face.h
${PROJECT_SOURCE_DIR}/src/hb-font.h
${PROJECT_SOURCE_DIR}/src/hb-map.h
${PROJECT_SOURCE_DIR}/src/hb-ot-color.h
${PROJECT_SOURCE_DIR}/src/hb-ot-deprecated.h
${PROJECT_SOURCE_DIR}/src/hb-ot-font.h
${PROJECT_SOURCE_DIR}/src/hb-ot-layout.h
${PROJECT_SOURCE_DIR}/src/hb-ot-math.h
${PROJECT_SOURCE_DIR}/src/hb-ot-meta.h
${PROJECT_SOURCE_DIR}/src/hb-ot-metrics.h
${PROJECT_SOURCE_DIR}/src/hb-ot-name.h
${PROJECT_SOURCE_DIR}/src/hb-ot-shape.h
${PROJECT_SOURCE_DIR}/src/hb-ot-var.h
${PROJECT_SOURCE_DIR}/src/hb-ot.h
${PROJECT_SOURCE_DIR}/src/hb-paint.h
${PROJECT_SOURCE_DIR}/src/hb-set.h
${PROJECT_SOURCE_DIR}/src/hb-shape-plan.h
${PROJECT_SOURCE_DIR}/src/hb-shape.h
${PROJECT_SOURCE_DIR}/src/hb-style.h
${PROJECT_SOURCE_DIR}/src/hb-unicode.h
${PROJECT_SOURCE_DIR}/src/hb-version.h
${PROJECT_SOURCE_DIR}/src/hb.h
)
set (subset_project_headers
${PROJECT_SOURCE_DIR}/src/hb-subset.h
${PROJECT_SOURCE_DIR}/src/hb-subset-repacker.h
)
## Find and include needed header folders and libraries
if (HB_HAVE_FREETYPE AND NOT TARGET freetype)
@@ -259,20 +288,15 @@ endif ()
if (HB_HAVE_ICU)
add_definitions(-DHAVE_ICU)
# https://github.com/WebKit/webkit/blob/fdd7733f2f30eab7fe096a9791f98c60f62f49c0/Source/cmake/FindICU.cmake
find_package(PkgConfig)
pkg_check_modules(PC_ICU QUIET icu-uc)
find_package(ICU REQUIRED COMPONENTS uc)
find_path(ICU_INCLUDE_DIR NAMES unicode/utypes.h HINTS ${PC_ICU_INCLUDE_DIRS} ${PC_ICU_INCLUDEDIR})
find_library(ICU_LIBRARY NAMES libicuuc cygicuuc cygicuuc32 icuuc HINTS ${PC_ICU_LIBRARY_DIRS} ${PC_ICU_LIBDIR})
include_directories(${ICU_INCLUDE_DIR})
if (ICU_VERSION VERSION_GREATER_EQUAL 75.1)
set(CMAKE_CXX_STANDARD 17)
endif ()
list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-icu.h)
list(APPEND THIRD_PARTY_LIBS ${ICU_LIBRARY})
mark_as_advanced(ICU_INCLUDE_DIR ICU_LIBRARY)
list(APPEND THIRD_PARTY_LIBS ICU::uc)
endif ()
if (APPLE AND HB_HAVE_CORETEXT)
@@ -340,6 +364,23 @@ if (WIN32 AND HB_HAVE_DIRECTWRITE)
list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-directwrite.h)
endif ()
if (HB_HAVE_CAIRO)
# https://github.com/WebKit/webkit/blob/master/Source/cmake/FindCairo.cmake
find_package(PkgConfig)
pkg_check_modules(PC_CAIRO QUIET cairo)
find_path(CAIRO_INCLUDE_DIRS NAMES cairo.h HINTS ${PC_CAIRO_INCLUDEDIR} ${PC_CAIRO_INCLUDE_DIRS} PATH_SUFFIXES cairo)
find_library(CAIRO_LIBRARIESNAMES cairo HINTS ${PC_CAIRO_LIBDIR} ${PC_CAIRO_LIBRARY_DIRS})
if (NOT CAIRO_LIBRARIESNAMES)
message(FATAL_ERROR "HB_HAVE_CAIRO is ON but Cairo libraries are not found")
endif()
include_directories(${CAIRO_INCLUDE_DIRS})
mark_as_advanced(CAIRO_INCLUDE_DIRS CAIRO_LIBRARIESNAMES)
add_definitions(-DHAVE_CAIRO=1)
list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-cairo.h)
list(APPEND THIRD_PARTY_LIBS ${CAIRO_LIBRARIESNAMES})
endif()
if (HB_HAVE_GOBJECT)
add_definitions(-DHAVE_GOBJECT)
include (FindPerl)
@@ -357,13 +398,13 @@ if (HB_HAVE_GOBJECT)
# in the standard cmd.exe shell that we use, so we need to
# first determine whether glib-mkenums is a Python or PERL
# script
execute_process(COMMAND "${PYTHON_EXECUTABLE}" "${GLIB_MKENUMS}" --version
execute_process(COMMAND "${Python3_EXECUTABLE}" "${GLIB_MKENUMS}" --version
RESULT_VARIABLE GLIB_MKENUMS_PYTHON
OUTPUT_QUIET ERROR_QUIET
)
if (GLIB_MKENUMS_PYTHON EQUAL 0)
message("${GLIB_MKENUMS} is a Python script.")
set (GLIB_MKENUMS_CMD "${PYTHON_EXECUTABLE}" "${GLIB_MKENUMS}")
set (GLIB_MKENUMS_CMD "${Python3_EXECUTABLE}" "${GLIB_MKENUMS}")
else ()
execute_process(COMMAND "${PERL_EXECUTABLE}" "${GLIB_MKENUMS}" --version
RESULT_VARIABLE GLIB_MKENUMS_PERL
@@ -472,7 +513,7 @@ endif ()
## Define harfbuzz-subset library
if (HB_BUILD_SUBSET)
add_library(harfbuzz-subset ${subset_project_sources} ${subset_project_headers})
list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-subset.h)
list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-subset.h ${PROJECT_SOURCE_DIR}/src/hb-subset-repacker.h)
add_dependencies(harfbuzz-subset harfbuzz)
target_link_libraries(harfbuzz-subset harfbuzz ${THIRD_PARTY_LIBS})
@@ -481,7 +522,7 @@ if (HB_BUILD_SUBSET)
endif ()
endif ()
if (UNIX OR MINGW)
if (UNIX OR MINGW OR VITA)
# Make symbols link locally
include (CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG(-Bsymbolic-functions CXX_SUPPORTS_FLAG_BSYMB_FUNCS)
@@ -531,6 +572,18 @@ if (HB_HAVE_GOBJECT)
endif ()
endif ()
## Define harfbuzz-cairo library
if (HB_HAVE_CAIRO)
include_directories(${CAIRO_INCLUDE_DIRS})
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)
add_dependencies(harfbuzz-cairo harfbuzz)
target_link_libraries(harfbuzz-cairo harfbuzz ${THIRD_PARTY_LIBS})
if (BUILD_SHARED_LIBS)
set_target_properties(harfbuzz-cairo PROPERTIES VISIBILITY_INLINES_HIDDEN TRUE)
endif ()
endif()
if (BUILD_SHARED_LIBS AND WIN32 AND NOT MINGW)
add_definitions("-DHB_DLL_EXPORT")
endif ()
@@ -557,8 +610,8 @@ if (HB_HAVE_INTROSPECTION)
if (WIN32 AND NOT MINGW)
# Note that since we already enable HB_HAVE_GOBJECT
# we would already have PYTHON_EXECUTABLE handy
set (G_IR_SCANNER_CMD "${PYTHON_EXECUTABLE}" "${G_IR_SCANNER}")
# we would already have Python3_EXECUTABLE handy
set (G_IR_SCANNER_CMD "${Python3_EXECUTABLE}" "${G_IR_SCANNER}")
else ()
set (G_IR_SCANNER_CMD "${G_IR_SCANNER}")
endif ()
@@ -566,7 +619,7 @@ if (HB_HAVE_INTROSPECTION)
# We need to account for the varying output directories
# when we build using Visual Studio projects
if ("${CMAKE_GENERATOR}" MATCHES "Visual Studio*")
set (hb_libpath "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>")
set (hb_libpath "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>")
else ()
set (hb_libpath "$<TARGET_FILE_DIR:harfbuzz-gobject>")
endif ()
@@ -635,14 +688,8 @@ if (HB_HAVE_INTROSPECTION)
-I${PROJECT_BINARY_DIR}/src
${hb_includedir_cflags}
${hb_defines_cflags}
-DHB_H
-DHB_H_IN
-DHB_OT_H
-DHB_OT_H_IN
-DHB_AAT_H
-DHB_AAT_H_IN
-DHB_GOBJECT_H
-DHB_GOBJECT_H_IN
-DHB_NO_SINGLE_HEADER_ERROR
-DHB_HAVE_GOBJECT
-DHB_EXTERN=
--cflags-end
--library=harfbuzz-gobject
@@ -683,30 +730,78 @@ endif ()
## Additional harfbuzz build artifacts
if (HB_BUILD_UTILS)
# https://github.com/WebKit/webkit/blob/master/Source/cmake/FindCairo.cmake
find_package(PkgConfig)
pkg_check_modules(PC_CAIRO QUIET cairo)
find_path(CAIRO_INCLUDE_DIRS NAMES cairo.h HINTS ${PC_CAIRO_INCLUDEDIR} ${PC_CAIRO_INCLUDE_DIRS} PATH_SUFFIXES cairo)
find_library(CAIRO_LIBRARIESNAMES cairo HINTS ${PC_CAIRO_LIBDIR} ${PC_CAIRO_LIBRARY_DIRS})
add_definitions("-DPACKAGE_NAME=\"HarfBuzz\"")
add_definitions("-DPACKAGE_VERSION=\"${HB_VERSION}\"")
include_directories(${CAIRO_INCLUDE_DIRS})
add_executable(hb-view ${HB_VIEW_sources})
target_link_libraries(hb-view harfbuzz ${CAIRO_LIBRARIESNAMES})
if (HB_HAVE_CAIRO)
add_executable(hb-view
${PROJECT_SOURCE_DIR}/util/ansi-print.hh
${PROJECT_SOURCE_DIR}/util/face-options.hh
${PROJECT_SOURCE_DIR}/util/font-options.hh
${PROJECT_SOURCE_DIR}/util/hb-view.cc
${PROJECT_SOURCE_DIR}/util/helper-cairo-ansi.hh
${PROJECT_SOURCE_DIR}/util/helper-cairo-ft.hh
${PROJECT_SOURCE_DIR}/util/helper-cairo.hh
${PROJECT_SOURCE_DIR}/util/main-font-text.hh
${PROJECT_SOURCE_DIR}/util/options.hh
${PROJECT_SOURCE_DIR}/util/output-options.hh
${PROJECT_SOURCE_DIR}/util/shape-consumer.hh
${PROJECT_SOURCE_DIR}/util/shape-options.hh
${PROJECT_SOURCE_DIR}/util/text-options.hh
${PROJECT_SOURCE_DIR}/util/view-cairo.hh
${PROJECT_SOURCE_DIR}/util/view-options.hh
)
target_link_libraries(hb-view harfbuzz-cairo harfbuzz ${CAIRO_LIBRARIESNAMES})
endif()
add_executable(hb-shape ${HB_SHAPE_sources})
add_executable(hb-shape
${PROJECT_SOURCE_DIR}/util/batch.hh
${PROJECT_SOURCE_DIR}/util/face-options.hh
${PROJECT_SOURCE_DIR}/util/font-options.hh
${PROJECT_SOURCE_DIR}/util/hb-shape.cc
${PROJECT_SOURCE_DIR}/util/main-font-text.hh
${PROJECT_SOURCE_DIR}/util/options.hh
${PROJECT_SOURCE_DIR}/util/output-options.hh
${PROJECT_SOURCE_DIR}/util/shape-consumer.hh
${PROJECT_SOURCE_DIR}/util/shape-format.hh
${PROJECT_SOURCE_DIR}/util/shape-options.hh
${PROJECT_SOURCE_DIR}/util/shape-output.hh
${PROJECT_SOURCE_DIR}/util/text-options.hh
)
target_link_libraries(hb-shape harfbuzz)
add_executable(hb-subset ${HB_SUBSET_CLI_sources})
add_executable(hb-subset
${PROJECT_SOURCE_DIR}/util/batch.hh
${PROJECT_SOURCE_DIR}/util/face-options.hh
${PROJECT_SOURCE_DIR}/util/hb-subset.cc
${PROJECT_SOURCE_DIR}/util/main-font-text.hh
${PROJECT_SOURCE_DIR}/util/options.hh
${PROJECT_SOURCE_DIR}/util/output-options.hh
${PROJECT_SOURCE_DIR}/util/text-options.hh
${PROJECT_SOURCE_DIR}/util/helper-subset.hh
)
target_link_libraries(hb-subset harfbuzz harfbuzz-subset)
add_executable(hb-ot-shape-closure ${HB_OT_SHAPE_CLOSURE_sources})
add_executable(hb-ot-shape-closure
${PROJECT_SOURCE_DIR}/util/face-options.hh
${PROJECT_SOURCE_DIR}/util/font-options.hh
${PROJECT_SOURCE_DIR}/util/hb-ot-shape-closure.cc
${PROJECT_SOURCE_DIR}/util/main-font-text.hh
${PROJECT_SOURCE_DIR}/util/options.hh
${PROJECT_SOURCE_DIR}/util/text-options.hh
)
target_link_libraries(hb-ot-shape-closure harfbuzz)
mark_as_advanced(CAIRO_INCLUDE_DIRS CAIRO_LIBRARIESNAMES)
if (HB_HAVE_GOBJECT)
add_executable(hb-info
${PROJECT_SOURCE_DIR}/util/batch.hh
${PROJECT_SOURCE_DIR}/util/face-options.hh
${PROJECT_SOURCE_DIR}/util/font-options.hh
${PROJECT_SOURCE_DIR}/util/hb-info.cc
${PROJECT_SOURCE_DIR}/util/options.hh
)
target_link_libraries(hb-info harfbuzz-gobject harfbuzz)
endif()
endif ()
if (MEGA)
@@ -746,7 +841,7 @@ macro ( make_pkgconfig_pc_file name )
string(REPLACE "%libdir%" "${CMAKE_INSTALL_LIBDIR}" FSTR ${FSTR})
else ()
string(REPLACE "%libdir%" "\${prefix}/${CMAKE_INSTALL_LIBDIR}" FSTR ${FSTR})
endif ()
endif ()
string(REPLACE "%VERSION%" "${HB_VERSION}" FSTR ${FSTR})
string(REPLACE "%requires_private%" "${PC_REQUIRES_PRIV}" FSTR ${FSTR})
@@ -761,6 +856,28 @@ macro ( make_pkgconfig_pc_file name )
)
endmacro ( make_pkgconfig_pc_file )
# Generate hb-features.h with the features we enabled
macro (make_hb_features_h)
file(READ "${PROJECT_SOURCE_DIR}/src/hb-features.h.in" feature_h_in)
foreach(arg cairo coretext directwrite freetype gdi glib gobject graphite icu uniscribe wasm)
string(TOUPPER ${arg} feature_caps)
set(feature_instring "#mesondefine HB_HAS_${feature_caps}")
if (HB_HAVE_${feature_caps})
set(feature_outstring "#define HB_HAS_${feature_caps} 1")
else ()
set(feature_outstring "/* #undef HB_HAS_${feature_caps} */")
endif()
string(REPLACE ${feature_instring} ${feature_outstring} feature_h_in ${feature_h_in})
endforeach()
file(WRITE "${PROJECT_BINARY_DIR}/src/hb-features.h" ${feature_h_in})
if (NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL)
install(
FILES "${PROJECT_BINARY_DIR}/src/hb-features.h"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/harfbuzz"
)
endif()
endmacro (make_hb_features_h)
if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
install(TARGETS harfbuzz
EXPORT harfbuzzConfig
@@ -783,6 +900,15 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
)
make_pkgconfig_pc_file("harfbuzz-icu")
endif ()
if (HB_HAVE_CAIRO)
install(TARGETS harfbuzz-cairo
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
FRAMEWORK DESTINATION Library/Frameworks
)
make_pkgconfig_pc_file("harfbuzz-cairo")
endif ()
if (HB_BUILD_SUBSET)
install(TARGETS harfbuzz-subset
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
@@ -795,9 +921,11 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
endif ()
install(TARGETS hb-view
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
if (HB_HAVE_CAIRO)
install(TARGETS hb-view
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
endif()
install(TARGETS hb-subset
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
@@ -806,6 +934,12 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
if (HB_HAVE_GOBJECT)
install(TARGETS hb-info
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
endif()
install(TARGETS hb-ot-shape-closure
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
@@ -819,7 +953,7 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
make_pkgconfig_pc_file("harfbuzz-gobject")
if (HB_HAVE_INTROSPECTION)
if ("${CMAKE_GENERATOR}" MATCHES "Visual Studio*")
set (hb_libpath "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>")
set (hb_libpath "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>")
else ()
set (hb_libpath "$<TARGET_FILE_DIR:harfbuzz-gobject>")
endif ()
@@ -833,4 +967,5 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
)
endif ()
endif ()
make_hb_features_h()
endif ()