mirror of
https://github.com/love2d/megasource.git
synced 2026-08-22 21:46:14 +02:00
update harfbuzz to 10.1.0
This commit is contained in:
+232
-97
@@ -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 ()
|
||||
|
||||
Reference in New Issue
Block a user