diff options
Diffstat (limited to 'third_party/libwebrtc/build/linux/unbundle/replace_gn_files.py')
-rwxr-xr-x | third_party/libwebrtc/build/linux/unbundle/replace_gn_files.py | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/third_party/libwebrtc/build/linux/unbundle/replace_gn_files.py b/third_party/libwebrtc/build/linux/unbundle/replace_gn_files.py new file mode 100755 index 0000000000..eba4bd1fb3 --- /dev/null +++ b/third_party/libwebrtc/build/linux/unbundle/replace_gn_files.py @@ -0,0 +1,83 @@ +#!/usr/bin/env python +# Copyright 2016 The Chromium Authors. All rights reserved. +# 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. +""" + +from __future__ import print_function + +import argparse +import os +import shutil +import sys + + +REPLACEMENTS = { + 'ffmpeg': 'third_party/ffmpeg/BUILD.gn', + 'flac': 'third_party/flac/BUILD.gn', + 'fontconfig': 'third_party/fontconfig/BUILD.gn', + 'freetype': 'build/config/freetype/freetype.gni', + 'harfbuzz-ng': 'third_party/harfbuzz-ng/harfbuzz.gni', + 'icu': 'third_party/icu/BUILD.gn', + 'libdrm': 'third_party/libdrm/BUILD.gn', + 'libevent': 'base/third_party/libevent/BUILD.gn', + 'libjpeg': 'third_party/libjpeg.gni', + 'libpng': 'third_party/libpng/BUILD.gn', + 'libvpx': 'third_party/libvpx/BUILD.gn', + 'libwebp': 'third_party/libwebp/BUILD.gn', + 'libxml': 'third_party/libxml/BUILD.gn', + 'libxslt': 'third_party/libxslt/BUILD.gn', + 'openh264': 'third_party/openh264/BUILD.gn', + 'opus': 'third_party/opus/BUILD.gn', + 're2': 'third_party/re2/BUILD.gn', + 'snappy': 'third_party/snappy/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:])) |