Something went wrong. Try again.
lol
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440diff --git a/build/linux/unbundle/icu.gn b/build/linux/unbundle/icu.gnnew file mode 100644index 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.pynew file mode 100755index 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.gnnew file mode 100644index 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.gniindex 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}" ] } }