import argparse
import os
import shutil
import sys
REPLACEMENTS = {
'absl_algorithm': 'third_party/abseil-cpp/absl/algorithm/BUILD.gn',
'absl_base': 'third_party/abseil-cpp/absl/base/BUILD.gn',
'absl_cleanup': 'third_party/abseil-cpp/absl/cleanup/BUILD.gn',
'absl_container': 'third_party/abseil-cpp/absl/container/BUILD.gn',
'absl_crc': 'third_party/abseil-cpp/absl/crc/BUILD.gn',
'absl_debugging': 'third_party/abseil-cpp/absl/debugging/BUILD.gn',
'absl_flags': 'third_party/abseil-cpp/absl/flags/BUILD.gn',
'absl_functional': 'third_party/abseil-cpp/absl/functional/BUILD.gn',
'absl_hash': 'third_party/abseil-cpp/absl/hash/BUILD.gn',
'absl_log': 'third_party/abseil-cpp/absl/log/BUILD.gn',
'absl_log_internal': 'third_party/abseil-cpp/absl/log/internal/BUILD.gn',
'absl_memory': 'third_party/abseil-cpp/absl/memory/BUILD.gn',
'absl_meta': 'third_party/abseil-cpp/absl/meta/BUILD.gn',
'absl_numeric': 'third_party/abseil-cpp/absl/numeric/BUILD.gn',
'absl_random': 'third_party/abseil-cpp/absl/random/BUILD.gn',
'absl_status': 'third_party/abseil-cpp/absl/status/BUILD.gn',
'absl_strings': 'third_party/abseil-cpp/absl/strings/BUILD.gn',
'absl_synchronization':
'third_party/abseil-cpp/absl/synchronization/BUILD.gn',
'absl_time': 'third_party/abseil-cpp/absl/time/BUILD.gn',
'absl_types': 'third_party/abseil-cpp/absl/types/BUILD.gn',
'absl_utility': 'third_party/abseil-cpp/absl/utility/BUILD.gn',
'brotli': 'third_party/brotli/BUILD.gn',
'crc32c': 'third_party/crc32c/BUILD.gn',
'dav1d': 'third_party/dav1d/BUILD.gn',
'double-conversion': 'base/third_party/double_conversion/BUILD.gn',
'ffmpeg': 'third_party/ffmpeg/BUILD.gn',
'flac': 'third_party/flac/BUILD.gn',
'flatbuffers': 'third_party/flatbuffers/BUILD.gn',
'fontconfig': 'third_party/fontconfig/BUILD.gn',
'freetype': 'build/config/freetype/freetype.gni',
'harfbuzz-ng': 'third_party/harfbuzz-ng/harfbuzz.gni',
'highway': 'third_party/highway/BUILD.gn',
'icu': 'third_party/icu/BUILD.gn',
'jsoncpp': 'third_party/jsoncpp/BUILD.gn',
'libaom': 'third_party/libaom/BUILD.gn',
'libdrm': 'third_party/libdrm/BUILD.gn',
'libjpeg': 'third_party/libjpeg.gni',
'libpng': 'third_party/libpng/BUILD.gn',
'libsecret': 'third_party/libsecret/BUILD.gn',
'libusb': 'third_party/libusb/BUILD.gn',
'libvpx': 'third_party/libvpx/BUILD.gn',
'libwebp': 'third_party/libwebp/BUILD.gn',
'libxml': 'third_party/libxml/BUILD.gn',
'libXNVCtrl': 'third_party/angle/src/third_party/libXNVCtrl/BUILD.gn',
'libxslt': 'third_party/libxslt/BUILD.gn',
'libyuv': 'third_party/libyuv/BUILD.gn',
'openh264': 'third_party/openh264/BUILD.gn',
'opus': 'third_party/opus/BUILD.gn',
're2': 'third_party/re2/BUILD.gn',
'simdutf': 'third_party/simdutf/BUILD.gn',
'snappy': 'third_party/snappy/BUILD.gn',
'swiftshader-SPIRV-Headers':
'third_party/swiftshader/third_party/SPIRV-Headers/BUILD.gn',
'swiftshader-SPIRV-Tools':
'third_party/swiftshader/third_party/SPIRV-Tools/BUILD.gn',
'vulkan-SPIRV-Headers': 'third_party/spirv-headers/src/BUILD.gn',
'vulkan-SPIRV-Tools': 'third_party/spirv-tools/src/BUILD.gn',
'vulkan_memory_allocator': 'third_party/vulkan_memory_allocator/BUILD.gn',
'woff2': 'third_party/woff2/BUILD.gn',
'zlib': 'third_party/zlib/BUILD.gn',
'zstd': 'third_party/zstd/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:
os.rename(os.path.join(source_tree_root, path + '.orig'),
os.path.join(source_tree_root, path))
else:
shutil.copyfile(os.path.join(source_tree_root, path),
os.path.join(source_tree_root, path + '.orig'))
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:]))