[harfbuzz] Use meson and update to 2.7.0 (#12860)

* [harfbuzz] Use meson

* [harfbuzz] Add config file for CMake

* [harfbuzz,pango] Remove glib option for harfbuzz

* [libass,libmupdf,qt5-base,skia] Fix for harfbuzz

* Back out meson edit already applied in https://github.com/microsoft/vcpkg/pull/15258

* [harfbuzz] Fixup pkgconfig

* [libass] Bump port version

* Revert "[libass,libmupdf,qt5-base,skia] Fix for harfbuzz"

This reverts commit 3ba27c6c1c.

* [harfbuzz] Update to 2.7.4

* update baseline record

* Restore glib feature for harfbuzz and remove vagrant change

* Update port version

* Change over to manifests

* Update port version

Co-authored-by: Ebrahim Byagowi <ebrahim@gnu.org>
Co-authored-by: Billy Robert O'Neal III <bion@microsoft.com>
Co-authored-by: JackBoosY <yuzaiyang@beyondsoft.com>
This commit is contained in:
Martin Vejdarski 2021-01-25 10:47:30 +01:00 committed by GitHub
parent a6fbf20322
commit cc093a8224
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 210 additions and 187 deletions

View File

@ -1,13 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 71830b6f5..a25cb09dd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -712,7 +712,7 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
)
install(EXPORT harfbuzzConfig
NAMESPACE harfbuzz::
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/harfbuzz
+ DESTINATION share/harfbuzz
)
if (HB_HAVE_ICU)
install(TARGETS harfbuzz-icu

View File

@ -1,26 +0,0 @@
diff --git a/src/hb-coretext.cc b/src/hb-coretext.cc
index 85993d1..3e8e642 100644
--- a/src/hb-coretext.cc
+++ b/src/hb-coretext.cc
@@ -1059,21 +1059,6 @@ resize_and_retry:
buffer->len += num_glyphs;
}
- /* Mac OS 10.6 doesn't have kCTTypesetterOptionForcedEmbeddingLevel,
- * or if it does, it doesn't respect it. So we get runs with wrong
- * directions. As such, disable the assert... It wouldn't crash, but
- * cursoring will be off...
- *
- * https://crbug.com/419769
- */
- if (false)
- {
- /* Make sure all runs had the expected direction. */
- HB_UNUSED bool backward = HB_DIRECTION_IS_BACKWARD (buffer->props.direction);
- assert (bool (status_and & kCTRunStatusRightToLeft) == backward);
- assert (bool (status_or & kCTRunStatusRightToLeft) == backward);
- }
-
buffer->clear_positions ();
unsigned int count = buffer->len;

View File

@ -1,18 +0,0 @@
Source: harfbuzz
Version: 2.7.2
Port-Version: 1
Description: HarfBuzz OpenType text shaping engine
Homepage: https://github.com/behdad/harfbuzz
Build-Depends: freetype[core], ragel, gettext (osx)
Feature: graphite2
Build-Depends: graphite2
Description: Graphite2 shaper support
Feature: icu
Build-Depends: icu
Description: icu support for harfbuzz
Feature: glib
Build-Depends: glib
Description: Glib Unicode callbacks support

View File

@ -1,13 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index defd5d6..03f9d4e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -267,7 +267,7 @@ set (subset_project_headers
## Find and include needed header folders and libraries
if (HB_HAVE_FREETYPE)
- include (FindFreetype)
+ find_package(Freetype REQUIRED)
if (NOT FREETYPE_FOUND)
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")
endif ()

View File

@ -1,12 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c4dc524..bfd15ec 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -431,6 +431,7 @@ endif ()
## Define harfbuzz library
add_library(harfbuzz ${project_sources} ${project_extra_sources} ${project_headers})
+target_include_directories(harfbuzz PUBLIC $<INSTALL_INTERFACE:include/harfbuzz>)
target_link_libraries(harfbuzz ${THIRD_PARTY_LIBS})

View File

@ -1,30 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9b21bef2c..ae741ef63 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -213,21 +213,13 @@ endif ()
if (HB_HAVE_GLIB)
add_definitions(-DHAVE_GLIB)
- # https://github.com/WebKit/webkit/blob/master/Source/cmake/FindGLIB.cmake
- find_package(PkgConfig)
- pkg_check_modules(PC_GLIB QUIET glib-2.0)
-
- find_library(GLIB_LIBRARIES NAMES glib-2.0 HINTS ${PC_GLIB_LIBDIR} ${PC_GLIB_LIBRARY_DIRS})
- 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)
- find_path(GLIB_INCLUDE_DIR NAMES glib.h HINTS ${PC_GLIB_INCLUDEDIR} ${PC_GLIB_INCLUDE_DIRS} PATH_SUFFIXES glib-2.0)
-
- include_directories(${GLIBCONFIG_INCLUDE_DIR} ${GLIB_INCLUDE_DIR})
+ find_package(Threads REQUIRED)
+ find_package(Iconv REQUIRED)
+ find_package(unofficial-glib CONFIG REQUIRED)
list(APPEND project_headers ${PROJECT_SOURCE_DIR}/src/hb-glib.h)
- list(APPEND THIRD_PARTY_LIBS ${GLIB_LIBRARIES})
-
- mark_as_advanced(GLIB_LIBRARIES GLIBCONFIG_INCLUDE_DIR GLIB_INCLUDE_DIR)
+ list(APPEND THIRD_PARTY_LIBS unofficial::glib::glib Iconv::Iconv)
endif ()
if (HB_HAVE_ICU)

View File

@ -0,0 +1,58 @@
if(TARGET harfbuzz)
return()
endif()
add_library(harfbuzz INTERFACE IMPORTED GLOBAL)
add_library(harfbuzz::harfbuzz ALIAS harfbuzz)
find_library(HARFBUZZ_LIBRARY_DEBUG NAMES harfbuzz PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug" PATH_SUFFIXES lib NO_DEFAULT_PATH)
if(HARFBUZZ_LIBRARY_DEBUG)
target_link_libraries(harfbuzz INTERFACE $<$<CONFIG:DEBUG>:${HARFBUZZ_LIBRARY_DEBUG}>)
endif()
find_library(HARFBUZZ_LIBRARY_RELEASE NAMES harfbuzz PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}" PATH_SUFFIXES lib NO_DEFAULT_PATH)
if(HARFBUZZ_LIBRARY_RELEASE)
target_link_libraries(harfbuzz INTERFACE $<$<NOT:$<CONFIG:DEBUG>>:${HARFBUZZ_LIBRARY_RELEASE}>)
endif()
set(HARFBUZZ_FEATURES @FEATURES@)
if(APPLE)
find_library(APPLICATIONSERVICES_LIBRARY ApplicationServices)
target_link_libraries(harfbuzz INTERFACE ${APPLICATIONSERVICES_LIBRARY})
endif()
find_package(freetype CONFIG REQUIRED)
target_link_libraries(harfbuzz INTERFACE freetype)
if ("graphite2" IN_LIST HARFBUZZ_FEATURES)
find_library(GRAPHITE2_LIBRARY_DEBUG NAMES graphite2 PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug" PATH_SUFFIXES lib NO_DEFAULT_PATH)
if(GRAPHITE2_LIBRARY_DEBUG)
target_link_libraries(harfbuzz INTERFACE $<$<CONFIG:DEBUG>:${GRAPHITE2_LIBRARY_DEBUG}>)
endif()
find_library(GRAPHITE2_LIBRARY_RELEASE NAMES graphite2 PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}" PATH_SUFFIXES lib NO_DEFAULT_PATH)
if(GRAPHITE2_LIBRARY_RELEASE)
target_link_libraries(harfbuzz INTERFACE $<$<NOT:$<CONFIG:DEBUG>>:${GRAPHITE2_LIBRARY_RELEASE}>)
endif()
endif()
if ("glib" IN_LIST HARFBUZZ_FEATURES)
find_library(GLIB_LIBRARY_DEBUG NAMES glib glib-2.0 PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug" PATH_SUFFIXES lib NO_DEFAULT_PATH)
if(GLIB_LIBRARY_DEBUG)
target_link_libraries(harfbuzz INTERFACE $<$<CONFIG:DEBUG>:${GLIB_LIBRARY_DEBUG}>)
endif()
find_library(GLIB_LIBRARY_RELEASE NAMES glib glib-2.0 PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}" PATH_SUFFIXES lib NO_DEFAULT_PATH)
if(GLIB_LIBRARY_RELEASE)
target_link_libraries(harfbuzz INTERFACE $<$<NOT:$<CONFIG:DEBUG>>:${GLIB_LIBRARY_RELEASE}>)
endif()
endif()
if ("icu" IN_LIST HARFBUZZ_FEATURES)
find_package(ICU 61 COMPONENTS uc REQUIRED)
target_link_libraries(harfbuzz INTERFACE ICU::uc)
endif()
get_filename_component(_INSTALL_DIR "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE)
target_include_directories(harfbuzz INTERFACE ${_INSTALL_DIR}/include/harfbuzz)

View File

@ -1,27 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index eb6cc9007..209128695 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -226,19 +226,13 @@ if (HB_HAVE_ICU)
add_definitions(-DHAVE_ICU)
# https://github.com/WebKit/webkit/blob/master/Source/cmake/FindICU.cmake
- find_package(PkgConfig)
- pkg_check_modules(PC_ICU QUIET icu-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})
+ find_package(ICU COMPONENTS uc REQUIRED)
- include_directories(${ICU_INCLUDE_DIR})
+ include_directories(${ICU_INCLUDE_DIRS})
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_LIBRARIES})
endif ()
if (APPLE AND HB_HAVE_CORETEXT)

View File

@ -1,62 +1,43 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO harfbuzz/harfbuzz
REF 9c98b2b9a9e43669c5e2b37eaa41b1e07de1ede3 # 2.7.2
SHA512 00b61034abce61370a7ff40bf5aa80bc1b3557d1f978ef91725fc30b34c4c00c682a3b9c99233e7e52d579b60694a1ba08714d5c9b01ad13e9fd76828facc720
REF 7236c7e29cef1c2d76c7a284c5081ff4d3aa1127 # 2.7.4
SHA512 d231a788ea4e52231d4c363c1eca76424cb82ed0952b5c24d0b082e88b3dddbda967e7fffe67fffdcb22c7ebfbf0ec923365eb4532be772f2e61fa7d29b51998
HEAD_REF master
PATCHES
0001-fix-cmake-export.patch
0002-fix-uwp-build.patch
0003-remove-broken-test.patch
# This patch is required for propagating the full list of static dependencies from freetype
find-package-freetype-2.patch
# This patch is required for propagating the full list of dependencies from glib
glib-cmake.patch
fix_include.patch
icu.patch
)
file(READ ${SOURCE_PATH}/CMakeLists.txt _contents)
if("${_contents}" MATCHES "include \\(FindFreetype\\)")
message(FATAL_ERROR "Harfbuzz's cmake must not directly include() FindFreetype.")
endif()
if("${_contents}" MATCHES "find_library\\(GLIB_LIBRARIES")
message(FATAL_ERROR "Harfbuzz's cmake must not directly find_library() glib.")
endif()
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
icu HB_HAVE_ICU
graphite2 HB_HAVE_GRAPHITE2
glib HB_HAVE_GLIB
icu icu
graphite2 graphite
glib glib
)
vcpkg_configure_cmake(
string(REPLACE "=ON" "=enabled" FEATURE_OPTIONS "${FEATURE_OPTIONS}")
string(REPLACE "=OFF" "=disabled" FEATURE_OPTIONS "${FEATURE_OPTIONS}")
vcpkg_configure_meson(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
OPTIONS ${FEATURE_OPTIONS}
-DHB_HAVE_FREETYPE=ON
-DHB_BUILD_TESTS=OFF
OPTIONS_DEBUG
-DSKIP_INSTALL_HEADERS=ON
-Dfreetype=enabled
-Dgobject=disabled
-Dcairo=disabled
-Dfontconfig=disabled
-Dintrospection=disabled
-Ddocs=disabled
-Dtests=disabled
-Dbenchmark=disabled
)
vcpkg_install_cmake()
vcpkg_fixup_cmake_targets()
vcpkg_install_meson()
vcpkg_copy_pdbs()
vcpkg_fixup_pkgconfig()
if ("glib" IN_LIST FEATURES)
# Propagate dependency on glib downstream
file(READ "${CURRENT_PACKAGES_DIR}/share/harfbuzz/harfbuzzConfig.cmake" _contents)
file(WRITE "${CURRENT_PACKAGES_DIR}/share/harfbuzz/harfbuzzConfig.cmake" "
include(CMakeFindDependencyMacro)
find_dependency(unofficial-glib CONFIG)
${_contents}
")
endif()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/lib/cmake")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/lib/cmake")
configure_file("${CMAKE_CURRENT_LIST_DIR}/harfbuzzConfig.cmake.in"
"${CURRENT_PACKAGES_DIR}/share/${PORT}/harfbuzzConfig.cmake" @ONLY)
# Handle copyright
file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)

36
ports/harfbuzz/vcpkg.json Normal file
View File

@ -0,0 +1,36 @@
{
"name": "harfbuzz",
"version-string": "2.7.4",
"description": "HarfBuzz OpenType text shaping engine",
"homepage": "https://github.com/harfbuzz/harfbuzz",
"dependencies": [
{
"name": "freetype",
"default-features": false
},
{
"name": "gettext",
"platform": "osx"
}
],
"features": {
"glib": {
"description": "Glib Unicode callbacks support",
"dependencies": [
"glib"
]
},
"graphite2": {
"description": "Graphite2 shaper support",
"dependencies": [
"graphite2"
]
},
"icu": {
"description": "icu support for harfbuzz",
"dependencies": [
"icu"
]
}
}
}

View File

@ -0,0 +1,75 @@
diff --git a/pango/pango-ot-buffer.c b/pango/pango-ot-buffer.c
index 142b2f17..334df746 100644
--- a/pango/pango-ot-buffer.c
+++ b/pango/pango-ot-buffer.c
@@ -40,7 +40,6 @@ pango_ot_buffer_new (PangoFcFont *font)
PangoOTBuffer *buffer = g_slice_new (PangoOTBuffer);
buffer->buffer = hb_buffer_create ();
- hb_buffer_set_unicode_funcs (buffer->buffer, hb_glib_get_unicode_funcs ());
return buffer;
}
diff --git a/pango/pango-ot-private.h b/pango/pango-ot-private.h
index 0d803ec1..d9d86644 100644
--- a/pango/pango-ot-private.h
+++ b/pango/pango-ot-private.h
@@ -22,12 +22,12 @@
#ifndef __PANGO_OT_PRIVATE_H__
#define __PANGO_OT_PRIVATE_H__
+#include <glib.h>
#include <glib-object.h>
#include <pango/pango-ot.h>
#include <hb-ot.h>
#include <hb-ft.h>
-#include <hb-glib.h>
#include "pangofc-private.h"
diff --git a/pango/pango-ot-tag.c b/pango/pango-ot-tag.c
index 610b59d7..3bf4eccd 100644
--- a/pango/pango-ot-tag.c
+++ b/pango/pango-ot-tag.c
@@ -47,7 +47,8 @@ PangoOTTag
pango_ot_tag_from_script (PangoScript script)
{
hb_tag_t tag1, tag2;
- hb_ot_tags_from_script (hb_glib_script_to_script (script), &tag1, &tag2);
+ hb_ot_tags_from_script ((hb_script_t) g_unicode_script_to_iso15924 ((GUnicodeScript) script),
+ &tag1, &tag2);
return (PangoOTTag) tag1;
}
@@ -75,7 +76,7 @@ pango_ot_tag_from_script (PangoScript script)
PangoScript
pango_ot_tag_to_script (PangoOTTag script_tag)
{
- return (PangoScript) hb_glib_script_from_script (hb_ot_tag_to_script ((hb_tag_t) script_tag));
+ return (PangoScript) g_unicode_script_from_iso15924 (hb_ot_tag_to_script ((hb_tag_t) script_tag));
}
diff --git a/pango/pangofc-shape.c b/pango/pangofc-shape.c
index 60f829f3..4cb0ae04 100644
--- a/pango/pangofc-shape.c
+++ b/pango/pangofc-shape.c
@@ -28,7 +28,7 @@
#include "pangofc-private.h"
#include <hb-ft.h>
-#include <hb-glib.h>
+#include <glib.h>
/* cache a single hb_buffer_t */
static hb_buffer_t *cached_buffer = NULL; /* MT-safe */
@@ -362,7 +362,7 @@ _pango_fc_shape (PangoFont *font,
/* setup buffer */
hb_buffer_set_direction (hb_buffer, hb_direction);
- hb_buffer_set_script (hb_buffer, hb_glib_script_to_script (analysis->script));
+ hb_buffer_set_script (hb_buffer, (hb_script_t) g_unicode_script_to_iso15924 (analysis->script));
hb_buffer_set_language (hb_buffer, hb_language_from_string (pango_language_to_string (analysis->language), -1));
#if HB_VERSION_ATLEAST(1,0,3)
hb_buffer_set_cluster_level (hb_buffer, HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS);

View File

@ -1,6 +1,6 @@
Source: pango
Version: 1.40.11
Port-Version: 8
Port-Version: 9
Homepage: https://ftp.gnome.org/pub/GNOME/sources/pango/
Description: Text and font handling library.
Build-Depends: glib, gettext, cairo[gobject], fontconfig, freetype, harfbuzz[glib] (!(windows&static)&!osx)
Build-Depends: glib, gettext, cairo[gobject], fontconfig, freetype, harfbuzz (!(windows&static)&!osx)

View File

@ -8,7 +8,9 @@ vcpkg_extract_source_archive_ex(
OUT_SOURCE_PATH SOURCE_PATH
ARCHIVE ${ARCHIVE}
REF ${PANGO_VERSION}
PATCHES 0001-fix-static-symbols-export.diff
PATCHES
0001-fix-static-symbols-export.diff
0002-remove-hb-glib.diff
)
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
file(COPY ${CMAKE_CURRENT_LIST_DIR}/config.h.unix DESTINATION ${SOURCE_PATH})

View File

@ -2321,8 +2321,8 @@
"port-version": 0
},
"harfbuzz": {
"baseline": "2.7.2",
"port-version": 1
"baseline": "2.7.4",
"port-version": 0
},
"hayai": {
"baseline": "2019-08-10",
@ -4402,7 +4402,7 @@
},
"pango": {
"baseline": "1.40.11",
"port-version": 8
"port-version": 9
},
"pangolin": {
"baseline": "0.5",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "bb9ea75cd35a35e57fb0bf79ff78818c95148fcf",
"version-string": "2.7.4",
"port-version": 0
},
{
"git-tree": "2a196719fa9c0b074b71119ee781233eecf2a455",
"version-string": "2.7.2",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "6b8dd172fe2f62afd4508431bd89c50d2510e997",
"version-string": "1.40.11",
"port-version": 9
},
{
"git-tree": "c0585c64466afdd652539982316d65c086b3d4f6",
"version-string": "1.40.11",