mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-04-11 12:06:41 +02:00
439 lines
12 KiB
Diff
439 lines
12 KiB
Diff
diff --git a/build/linux/unbundle/icu.gn b/build/linux/unbundle/icu.gn
|
|
new file mode 100644
|
|
index 00000000000..9e54d4efe4e
|
|
--- /dev/null
|
|
+++ b/build/linux/unbundle/icu.gn
|
|
@@ -0,0 +1,262 @@
|
|
+# Copyright 2016 The Chromium Authors
|
|
+# Use of this source code is governed by a BSD-style license that can be
|
|
+# found in the LICENSE file.
|
|
+
|
|
+import("//build/config/linux/pkg_config.gni")
|
|
+import("//build/shim_headers.gni")
|
|
+
|
|
+group("icu") {
|
|
+ public_deps = [
|
|
+ ":icui18n",
|
|
+ ":icuuc",
|
|
+ ]
|
|
+}
|
|
+
|
|
+config("icu_config") {
|
|
+ defines = [
|
|
+ "USING_SYSTEM_ICU=1",
|
|
+ "ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC",
|
|
+
|
|
+ # U_EXPORT (defined in unicode/platform.h) is used to set public visibility
|
|
+ # on classes through the U_COMMON_API and U_I18N_API macros (among others).
|
|
+ # When linking against the system ICU library, we want its symbols to have
|
|
+ # public LTO visibility. This disables CFI checks for the ICU classes and
|
|
+ # allows whole-program optimization to be applied to the rest of Chromium.
|
|
+ #
|
|
+ # Both U_COMMON_API and U_I18N_API macros would be defined to U_EXPORT only
|
|
+ # when U_COMBINED_IMPLEMENTATION is defined (see unicode/utypes.h). Because
|
|
+ # we override the default system UCHAR_TYPE (char16_t), it is not possible
|
|
+ # to use U_COMBINED_IMPLEMENTATION at this moment, meaning the U_COMMON_API
|
|
+ # and U_I18N_API macros are set to U_IMPORT which is an empty definition.
|
|
+ #
|
|
+ # Until building with UCHAR_TYPE=char16_t is supported, one way to apply
|
|
+ # public visibility (and thus public LTO visibility) to all ICU classes is
|
|
+ # to define U_IMPORT to have the same value as U_EXPORT. For more details,
|
|
+ # please see: https://crbug.com/822820
|
|
+ "U_IMPORT=U_EXPORT",
|
|
+ ]
|
|
+}
|
|
+
|
|
+pkg_config("system_icui18n") {
|
|
+ packages = [ "icu-i18n" ]
|
|
+}
|
|
+
|
|
+pkg_config("system_icuuc") {
|
|
+ packages = [ "icu-uc" ]
|
|
+}
|
|
+
|
|
+source_set("icui18n") {
|
|
+ public_deps = [ ":icui18n_shim" ]
|
|
+ public_configs = [
|
|
+ ":icu_config",
|
|
+ ":system_icui18n",
|
|
+ ]
|
|
+}
|
|
+
|
|
+source_set("icuuc") {
|
|
+ public_deps = [ ":icuuc_shim" ]
|
|
+ public_configs = [
|
|
+ ":icu_config",
|
|
+ ":system_icuuc",
|
|
+ ]
|
|
+}
|
|
+
|
|
+group("icui18n_hidden_visibility") {
|
|
+ public_deps = [ ":icui18n" ]
|
|
+}
|
|
+
|
|
+group("icuuc_hidden_visibility") {
|
|
+ public_deps = [ ":icuuc" ]
|
|
+}
|
|
+
|
|
+shim_headers("icui18n_shim") {
|
|
+ root_path = "source/i18n"
|
|
+ headers = [
|
|
+ # This list can easily be updated using the commands below:
|
|
+ # cd third_party/icu/source/i18n
|
|
+ # find unicode -iname '*.h' -printf ' "%p",\n' | LC_ALL=C sort -u
|
|
+ "unicode/alphaindex.h",
|
|
+ "unicode/basictz.h",
|
|
+ "unicode/calendar.h",
|
|
+ "unicode/choicfmt.h",
|
|
+ "unicode/coleitr.h",
|
|
+ "unicode/coll.h",
|
|
+ "unicode/compactdecimalformat.h",
|
|
+ "unicode/curramt.h",
|
|
+ "unicode/currpinf.h",
|
|
+ "unicode/currunit.h",
|
|
+ "unicode/datefmt.h",
|
|
+ "unicode/dcfmtsym.h",
|
|
+ "unicode/decimfmt.h",
|
|
+ "unicode/dtfmtsym.h",
|
|
+ "unicode/dtitvfmt.h",
|
|
+ "unicode/dtitvinf.h",
|
|
+ "unicode/dtptngen.h",
|
|
+ "unicode/dtrule.h",
|
|
+ "unicode/fieldpos.h",
|
|
+ "unicode/fmtable.h",
|
|
+ "unicode/format.h",
|
|
+ "unicode/fpositer.h",
|
|
+ "unicode/gender.h",
|
|
+ "unicode/gregocal.h",
|
|
+ "unicode/listformatter.h",
|
|
+ "unicode/measfmt.h",
|
|
+ "unicode/measunit.h",
|
|
+ "unicode/measure.h",
|
|
+ "unicode/msgfmt.h",
|
|
+ "unicode/numfmt.h",
|
|
+ "unicode/numsys.h",
|
|
+ "unicode/plurfmt.h",
|
|
+ "unicode/plurrule.h",
|
|
+ "unicode/rbnf.h",
|
|
+ "unicode/rbtz.h",
|
|
+ "unicode/regex.h",
|
|
+ "unicode/region.h",
|
|
+ "unicode/reldatefmt.h",
|
|
+ "unicode/scientificnumberformatter.h",
|
|
+ "unicode/search.h",
|
|
+ "unicode/selfmt.h",
|
|
+ "unicode/simpletz.h",
|
|
+ "unicode/smpdtfmt.h",
|
|
+ "unicode/sortkey.h",
|
|
+ "unicode/stsearch.h",
|
|
+ "unicode/tblcoll.h",
|
|
+ "unicode/timezone.h",
|
|
+ "unicode/tmunit.h",
|
|
+ "unicode/tmutamt.h",
|
|
+ "unicode/tmutfmt.h",
|
|
+ "unicode/translit.h",
|
|
+ "unicode/tzfmt.h",
|
|
+ "unicode/tznames.h",
|
|
+ "unicode/tzrule.h",
|
|
+ "unicode/tztrans.h",
|
|
+ "unicode/ucal.h",
|
|
+ "unicode/ucol.h",
|
|
+ "unicode/ucoleitr.h",
|
|
+ "unicode/ucsdet.h",
|
|
+ "unicode/udat.h",
|
|
+ "unicode/udateintervalformat.h",
|
|
+ "unicode/udatpg.h",
|
|
+ "unicode/ufieldpositer.h",
|
|
+ "unicode/uformattable.h",
|
|
+ "unicode/ugender.h",
|
|
+ "unicode/ulocdata.h",
|
|
+ "unicode/umsg.h",
|
|
+ "unicode/unirepl.h",
|
|
+ "unicode/unum.h",
|
|
+ "unicode/unumsys.h",
|
|
+ "unicode/upluralrules.h",
|
|
+ "unicode/uregex.h",
|
|
+ "unicode/uregion.h",
|
|
+ "unicode/ureldatefmt.h",
|
|
+ "unicode/usearch.h",
|
|
+ "unicode/uspoof.h",
|
|
+ "unicode/utmscale.h",
|
|
+ "unicode/utrans.h",
|
|
+ "unicode/vtzone.h",
|
|
+ ]
|
|
+}
|
|
+
|
|
+shim_headers("icuuc_shim") {
|
|
+ root_path = "source/common"
|
|
+ headers = [
|
|
+ # This list can easily be updated using the commands below:
|
|
+ # cd third_party/icu/source/common
|
|
+ # find unicode -iname '*.h' -printf ' "%p",\n' | LC_ALL=C sort -u
|
|
+ "unicode/appendable.h",
|
|
+ "unicode/brkiter.h",
|
|
+ "unicode/bytestream.h",
|
|
+ "unicode/bytestrie.h",
|
|
+ "unicode/bytestriebuilder.h",
|
|
+ "unicode/caniter.h",
|
|
+ "unicode/casemap.h",
|
|
+ "unicode/char16ptr.h",
|
|
+ "unicode/chariter.h",
|
|
+ "unicode/dbbi.h",
|
|
+ "unicode/docmain.h",
|
|
+ "unicode/dtintrv.h",
|
|
+ "unicode/edits.h",
|
|
+ "unicode/enumset.h",
|
|
+ "unicode/errorcode.h",
|
|
+ "unicode/filteredbrk.h",
|
|
+ "unicode/icudataver.h",
|
|
+ "unicode/icuplug.h",
|
|
+ "unicode/idna.h",
|
|
+ "unicode/localematcher.h",
|
|
+ "unicode/localpointer.h",
|
|
+ "unicode/locdspnm.h",
|
|
+ "unicode/locid.h",
|
|
+ "unicode/messagepattern.h",
|
|
+ "unicode/normalizer2.h",
|
|
+ "unicode/normlzr.h",
|
|
+ "unicode/parseerr.h",
|
|
+ "unicode/parsepos.h",
|
|
+ "unicode/platform.h",
|
|
+ "unicode/ptypes.h",
|
|
+ "unicode/putil.h",
|
|
+ "unicode/rbbi.h",
|
|
+ "unicode/rep.h",
|
|
+ "unicode/resbund.h",
|
|
+ "unicode/schriter.h",
|
|
+ "unicode/simpleformatter.h",
|
|
+ "unicode/std_string.h",
|
|
+ "unicode/strenum.h",
|
|
+ "unicode/stringpiece.h",
|
|
+ "unicode/stringtriebuilder.h",
|
|
+ "unicode/symtable.h",
|
|
+ "unicode/ubidi.h",
|
|
+ "unicode/ubiditransform.h",
|
|
+ "unicode/ubrk.h",
|
|
+ "unicode/ucasemap.h",
|
|
+ "unicode/ucat.h",
|
|
+ "unicode/uchar.h",
|
|
+ "unicode/ucharstrie.h",
|
|
+ "unicode/ucharstriebuilder.h",
|
|
+ "unicode/uchriter.h",
|
|
+ "unicode/uclean.h",
|
|
+ "unicode/ucnv.h",
|
|
+ "unicode/ucnv_cb.h",
|
|
+ "unicode/ucnv_err.h",
|
|
+ "unicode/ucnvsel.h",
|
|
+ "unicode/uconfig.h",
|
|
+ "unicode/ucurr.h",
|
|
+ "unicode/udata.h",
|
|
+ "unicode/udisplaycontext.h",
|
|
+ "unicode/uenum.h",
|
|
+ "unicode/uidna.h",
|
|
+ "unicode/uiter.h",
|
|
+ "unicode/uldnames.h",
|
|
+ "unicode/ulistformatter.h",
|
|
+ "unicode/uloc.h",
|
|
+ "unicode/umachine.h",
|
|
+ "unicode/umisc.h",
|
|
+ "unicode/unifilt.h",
|
|
+ "unicode/unifunct.h",
|
|
+ "unicode/unimatch.h",
|
|
+ "unicode/uniset.h",
|
|
+ "unicode/unistr.h",
|
|
+ "unicode/unorm.h",
|
|
+ "unicode/unorm2.h",
|
|
+ "unicode/uobject.h",
|
|
+ "unicode/urename.h",
|
|
+ "unicode/urep.h",
|
|
+ "unicode/ures.h",
|
|
+ "unicode/uscript.h",
|
|
+ "unicode/uset.h",
|
|
+ "unicode/usetiter.h",
|
|
+ "unicode/ushape.h",
|
|
+ "unicode/usprep.h",
|
|
+ "unicode/ustring.h",
|
|
+ "unicode/ustringtrie.h",
|
|
+ "unicode/utext.h",
|
|
+ "unicode/utf.h",
|
|
+ "unicode/utf16.h",
|
|
+ "unicode/utf32.h",
|
|
+ "unicode/utf8.h",
|
|
+ "unicode/utf_old.h",
|
|
+ "unicode/utrace.h",
|
|
+ "unicode/utypes.h",
|
|
+ "unicode/uvernum.h",
|
|
+ "unicode/uversion.h",
|
|
+ ]
|
|
+}
|
|
diff --git a/build/linux/unbundle/replace_gn_files.py b/build/linux/unbundle/replace_gn_files.py
|
|
new file mode 100755
|
|
index 00000000000..1aed7bca99d
|
|
--- /dev/null
|
|
+++ b/build/linux/unbundle/replace_gn_files.py
|
|
@@ -0,0 +1,65 @@
|
|
+#!/usr/bin/env python3
|
|
+# Copyright 2016 The Chromium Authors
|
|
+# Use of this source code is governed by a BSD-style license that can be
|
|
+# found in the LICENSE file.
|
|
+
|
|
+"""
|
|
+Replaces GN files in tree with files from here that
|
|
+make the build use system libraries.
|
|
+"""
|
|
+
|
|
+import argparse
|
|
+import os
|
|
+import shutil
|
|
+import sys
|
|
+
|
|
+
|
|
+REPLACEMENTS = {
|
|
+ 'icu': 'third_party/icu/BUILD.gn',
|
|
+ 'protobuf': 'build/secondary/third_party/protobuf/BUILD.gn',
|
|
+ 'zlib': 'third_party/zlib/BUILD.gn',
|
|
+}
|
|
+
|
|
+
|
|
+def DoMain(argv):
|
|
+ my_dirname = os.path.dirname(__file__)
|
|
+ source_tree_root = os.path.abspath(
|
|
+ os.path.join(my_dirname, '..', '..', '..'))
|
|
+
|
|
+ parser = argparse.ArgumentParser()
|
|
+ parser.add_argument('--system-libraries', nargs='*', default=[])
|
|
+ parser.add_argument('--undo', action='store_true')
|
|
+
|
|
+ args = parser.parse_args(argv)
|
|
+
|
|
+ handled_libraries = set()
|
|
+ for lib, path in REPLACEMENTS.items():
|
|
+ if lib not in args.system_libraries:
|
|
+ continue
|
|
+ handled_libraries.add(lib)
|
|
+
|
|
+ if args.undo:
|
|
+ # Restore original file, and also remove the backup.
|
|
+ # This is meant to restore the source tree to its original state.
|
|
+ os.rename(os.path.join(source_tree_root, path + '.orig'),
|
|
+ os.path.join(source_tree_root, path))
|
|
+ else:
|
|
+ # Create a backup copy for --undo.
|
|
+ shutil.copyfile(os.path.join(source_tree_root, path),
|
|
+ os.path.join(source_tree_root, path + '.orig'))
|
|
+
|
|
+ # Copy the GN file from directory of this script to target path.
|
|
+ shutil.copyfile(os.path.join(my_dirname, '%s.gn' % lib),
|
|
+ os.path.join(source_tree_root, path))
|
|
+
|
|
+ unhandled_libraries = set(args.system_libraries) - handled_libraries
|
|
+ if unhandled_libraries:
|
|
+ print('Unrecognized system libraries requested: %s' % ', '.join(
|
|
+ sorted(unhandled_libraries)), file=sys.stderr)
|
|
+ return 1
|
|
+
|
|
+ return 0
|
|
+
|
|
+
|
|
+if __name__ == '__main__':
|
|
+ sys.exit(DoMain(sys.argv[1:]))
|
|
diff --git a/build/linux/unbundle/zlib.gn b/build/linux/unbundle/zlib.gn
|
|
new file mode 100644
|
|
index 00000000000..fa2bbffd25f
|
|
--- /dev/null
|
|
+++ b/build/linux/unbundle/zlib.gn
|
|
@@ -0,0 +1,63 @@
|
|
+# Copyright 2016 The Chromium Authors
|
|
+# Use of this source code is governed by a BSD-style license that can be
|
|
+# found in the LICENSE file.
|
|
+
|
|
+import("//build/shim_headers.gni")
|
|
+
|
|
+shim_headers("zlib_shim") {
|
|
+ root_path = "."
|
|
+ headers = [ "zlib.h" ]
|
|
+ additional_includes = [ "third_party" ]
|
|
+
|
|
+}
|
|
+
|
|
+config("system_zlib") {
|
|
+ defines = [ "USE_SYSTEM_ZLIB=1" ]
|
|
+}
|
|
+
|
|
+config("zlib_config") {
|
|
+ configs = [ ":system_zlib" ]
|
|
+}
|
|
+
|
|
+source_set("zlib") {
|
|
+ public_deps = [ ":zlib_shim" ]
|
|
+ libs = [ "z" ]
|
|
+ public_configs = [ ":system_zlib" ]
|
|
+}
|
|
+
|
|
+shim_headers("minizip_shim") {
|
|
+ root_path = "contrib"
|
|
+ headers = [
|
|
+ "minizip/crypt.h",
|
|
+ "minizip/ioapi.h",
|
|
+ "minizip/iowin32.h",
|
|
+ "minizip/mztools.h",
|
|
+ "minizip/unzip.h",
|
|
+ "minizip/zip.h",
|
|
+ ]
|
|
+}
|
|
+
|
|
+source_set("minizip") {
|
|
+ deps = [ ":minizip_shim" ]
|
|
+ libs = [ "minizip" ]
|
|
+}
|
|
+
|
|
+static_library("zip") {
|
|
+ sources = [
|
|
+ "google/zip.cc",
|
|
+ "google/zip.h",
|
|
+ "google/zip_internal.cc",
|
|
+ "google/zip_internal.h",
|
|
+ "google/zip_reader.cc",
|
|
+ "google/zip_reader.h",
|
|
+ ]
|
|
+ deps = [ ":minizip" ]
|
|
+}
|
|
+
|
|
+static_library("compression_utils") {
|
|
+ sources = [
|
|
+ "google/compression_utils.cc",
|
|
+ "google/compression_utils.h",
|
|
+ ]
|
|
+ deps = [ ":zlib" ]
|
|
+}
|
|
diff --git a/build/shim_headers.gni b/build/shim_headers.gni
|
|
index dc57d12ed0c..1d24e0ad00e 100644
|
|
--- a/build/shim_headers.gni
|
|
+++ b/build/shim_headers.gni
|
|
@@ -7,6 +7,11 @@ template("shim_headers") {
|
|
shim_headers_path = "${root_gen_dir}/shim_headers/${target_name}"
|
|
config(config_name) {
|
|
include_dirs = [ shim_headers_path ]
|
|
+ if (defined(invoker.additional_includes)) {
|
|
+ foreach(i, invoker.additional_includes) {
|
|
+ include_dirs += [ shim_headers_path + "/" + i ]
|
|
+ }
|
|
+ }
|
|
}
|
|
action(action_name) {
|
|
script = "//tools/generate_shim_headers.py"
|
|
@@ -26,11 +31,12 @@ template("shim_headers") {
|
|
args += invoker.headers
|
|
outputs = []
|
|
foreach(h, invoker.headers) {
|
|
- outputs += [ shim_headers_path + "/" + rebase_path(invoker.root_path,"//") + "/" + h ]
|
|
+ outputs += [ shim_headers_path + "/" +
|
|
+ rebase_path(invoker.root_path, "//") + "/" + h ]
|
|
}
|
|
}
|
|
group(target_name) {
|
|
- deps = [ ":${action_name}" ]
|
|
+ public_deps = [ ":${action_name}" ]
|
|
all_dependent_configs = [ ":${config_name}" ]
|
|
}
|
|
}
|