From 940b4d1848e8c70ab7642901a68594e8016caffc Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 27 Apr 2024 18:51:28 +0200 Subject: Adding upstream version 1:7.0.4. Signed-off-by: Daniel Baumann --- external/harfbuzz/ExternalProject_harfbuzz.mk | 59 ++++++++++++++++++++++ external/harfbuzz/Makefile | 7 +++ external/harfbuzz/Module_harfbuzz.mk | 17 +++++++ external/harfbuzz/README | 1 + external/harfbuzz/UnpackedTarball_harfbuzz.mk | 25 +++++++++ .../icu-65-api-macros-with-semicolon.patch.1 | 12 +++++ external/harfbuzz/ubsan.patch | 20 ++++++++ 7 files changed, 141 insertions(+) create mode 100644 external/harfbuzz/ExternalProject_harfbuzz.mk create mode 100644 external/harfbuzz/Makefile create mode 100644 external/harfbuzz/Module_harfbuzz.mk create mode 100644 external/harfbuzz/README create mode 100644 external/harfbuzz/UnpackedTarball_harfbuzz.mk create mode 100644 external/harfbuzz/icu-65-api-macros-with-semicolon.patch.1 create mode 100644 external/harfbuzz/ubsan.patch (limited to 'external/harfbuzz') diff --git a/external/harfbuzz/ExternalProject_harfbuzz.mk b/external/harfbuzz/ExternalProject_harfbuzz.mk new file mode 100644 index 000000000..7219d402d --- /dev/null +++ b/external/harfbuzz/ExternalProject_harfbuzz.mk @@ -0,0 +1,59 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_ExternalProject_ExternalProject,harfbuzz)) + +$(eval $(call gb_ExternalProject_use_autoconf,harfbuzz,build)) + +$(eval $(call gb_ExternalProject_register_targets,harfbuzz,\ + build \ +)) + +$(eval $(call gb_ExternalProject_use_externals,harfbuzz,\ + icu \ + graphite \ +)) + +$(call gb_ExternalProject_get_state_target,harfbuzz,build) : + $(call gb_Trace_StartRange,harfbuzz,EXTERNAL) + $(call gb_ExternalProject_run,build,\ + $(if $(CROSS_COMPILING),ICU_CONFIG=$(SRCDIR)/external/icu/cross-bin/icu-config) \ + $(if $(SYSTEM_ICU),,ICU_CONFIG=$(SRCDIR)/external/icu/cross-bin/icu-config) \ + GRAPHITE2_CFLAGS="$(GRAPHITE_CFLAGS)" \ + GRAPHITE2_LIBS="$(GRAPHITE_LIBS)" \ + ./configure \ + --enable-static \ + --disable-shared \ + --disable-gtk-doc \ + --with-pic \ + --with-icu=builtin \ + --with-freetype=no \ + --with-fontconfig=no \ + --with-cairo=no \ + --with-glib=no \ + --with-graphite2=yes \ + $(if $(verbose),--disable-silent-rules,--enable-silent-rules) \ + $(if $(gb_FULLDEPS),,--disable-dependency-tracking) \ + --libdir=$(call gb_UnpackedTarball_get_dir,harfbuzz/src/.libs) \ + $(if $(CROSS_COMPILING),--build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)) \ + CXXFLAGS=' \ + $(if $(filter ANDROID,$(OS)),-DHB_NO_MMAP=1,) \ + $(if $(call gb_Module__symbols_enabled,harfbuzz),$(gb_DEBUGINFO_FLAGS)) \ + $(if $(ENABLE_OPTIMIZED), \ + $(gb_COMPILEROPTFLAGS),$(gb_COMPILERNOOPTFLAGS)) \ + $(if $(ENABLE_RUNTIME_OPTIMIZATIONS),,-frtti) \ + $(CXXFLAGS) $(CXXFLAGS_CXX11) \ + $(ICU_UCHAR_TYPE) \ + $(if $(filter LINUX,$(OS)),-fvisibility=hidden)' \ + MAKE=$(MAKE) \ + && (cd $(EXTERNAL_WORKDIR)/src && $(MAKE) lib) \ + ) + $(call gb_Trace_EndRange,harfbuzz,EXTERNAL) + +# vim: set noet sw=4 ts=4: diff --git a/external/harfbuzz/Makefile b/external/harfbuzz/Makefile new file mode 100644 index 000000000..e4968cf85 --- /dev/null +++ b/external/harfbuzz/Makefile @@ -0,0 +1,7 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- + +module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST)))) + +include $(module_directory)/../../solenv/gbuild/partial_build.mk + +# vim: set noet sw=4 ts=4: diff --git a/external/harfbuzz/Module_harfbuzz.mk b/external/harfbuzz/Module_harfbuzz.mk new file mode 100644 index 000000000..ffbadd710 --- /dev/null +++ b/external/harfbuzz/Module_harfbuzz.mk @@ -0,0 +1,17 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_Module_Module,harfbuzz)) + +$(eval $(call gb_Module_add_targets,harfbuzz,\ + ExternalProject_harfbuzz \ + UnpackedTarball_harfbuzz \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/external/harfbuzz/README b/external/harfbuzz/README new file mode 100644 index 000000000..d2af8b559 --- /dev/null +++ b/external/harfbuzz/README @@ -0,0 +1 @@ +HarfBuzz is an OpenType text shaping engine. From [http://harfbuzz.org/]. diff --git a/external/harfbuzz/UnpackedTarball_harfbuzz.mk b/external/harfbuzz/UnpackedTarball_harfbuzz.mk new file mode 100644 index 000000000..adec72ed0 --- /dev/null +++ b/external/harfbuzz/UnpackedTarball_harfbuzz.mk @@ -0,0 +1,25 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_UnpackedTarball_UnpackedTarball,harfbuzz)) + +$(eval $(call gb_UnpackedTarball_set_tarball,harfbuzz,$(HARFBUZZ_TARBALL),,harfbuzz)) + +$(eval $(call gb_UnpackedTarball_update_autoconf_configs,harfbuzz)) + +$(eval $(call gb_UnpackedTarball_set_patchlevel,harfbuzz,0)) + +# icu-65-api-macros-with-semicolon.patch.1 +# See http://site.icu-project.org/download/65 Migration Issues +$(eval $(call gb_UnpackedTarball_add_patches,harfbuzz, \ + external/harfbuzz/ubsan.patch \ + external/harfbuzz/icu-65-api-macros-with-semicolon.patch.1 \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/external/harfbuzz/icu-65-api-macros-with-semicolon.patch.1 b/external/harfbuzz/icu-65-api-macros-with-semicolon.patch.1 new file mode 100644 index 000000000..55344bc63 --- /dev/null +++ b/external/harfbuzz/icu-65-api-macros-with-semicolon.patch.1 @@ -0,0 +1,12 @@ +diff -ur harfbuzz.org/src/hb-icu.cc harfbuzz/src/hb-icu.cc +--- harfbuzz.org/src/hb-icu.cc 2019-06-26 22:30:55.000000000 +0200 ++++ harfbuzz/src/hb-icu.cc 2019-10-28 23:21:42.198460246 +0100 +@@ -53,7 +53,7 @@ + + /* ICU doesn't do-while(0) around their statements. Ugh! + * https://unicode-org.atlassian.net/browse/CLDR-13027 */ +-#define HB_ICU_STMT(S) do { S } while (0) ++#define HB_ICU_STMT(S) do { S; } while (0) + + hb_script_t + hb_icu_script_to_script (UScriptCode script) diff --git a/external/harfbuzz/ubsan.patch b/external/harfbuzz/ubsan.patch new file mode 100644 index 000000000..a9d1b72ef --- /dev/null +++ b/external/harfbuzz/ubsan.patch @@ -0,0 +1,20 @@ +--- src/hb-ot-layout-gsubgpos.hh ++++ src/hb-ot-layout-gsubgpos.hh +@@ -387,7 +387,7 @@ + skip == matcher_t::SKIP_NO)) + { + num_items--; +- match_glyph_data++; ++ if (match_glyph_data != nullptr) match_glyph_data++; + return true; + } + +@@ -414,7 +414,7 @@ + skip == matcher_t::SKIP_NO)) + { + num_items--; +- match_glyph_data++; ++ if (match_glyph_data != nullptr) match_glyph_data++; + return true; + } + -- cgit v1.2.3