| Index: build/config/merge_for_jumbo.py
|
| diff --git a/build/config/merge_for_jumbo.py b/build/config/merge_for_jumbo.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..f6eb87dce72d09070b96b9288c0f379ccb043e0f
|
| --- /dev/null
|
| +++ b/build/config/merge_for_jumbo.py
|
| @@ -0,0 +1,62 @@
|
| +#!/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.
|
| +
|
| +"""This script creates a "jumbo" file which merges all incoming files
|
| +for compiling.
|
| +
|
| +"""
|
| +
|
| +from __future__ import print_function
|
| +
|
| +import argparse
|
| +
|
| +
|
| +def main():
|
| + parser = argparse.ArgumentParser()
|
| + parser.add_argument("--outputs", nargs="+", required=True,
|
| + help='List of output files to split input into')
|
| + parser.add_argument("--file-list", required=True)
|
| + parser.add_argument("--verbose", action="store_true")
|
| + args = parser.parse_args()
|
| +
|
| + output_count = len(args.outputs)
|
| +
|
| + lines = []
|
| + # If written with gn |write_file| each file is on its own line.
|
| + with open(args.file_list) as file_list_file:
|
| + lines = [line.strip() for line in file_list_file if line.strip()]
|
| + # If written with gn |response_file_contents| the files are space separated.
|
| + inputs = []
|
| + for line in lines:
|
| + inputs.extend(line.split())
|
| + input_count = len(inputs)
|
| +
|
| + written_inputs = 0
|
| + for output_index, output_file in enumerate(args.outputs):
|
| + # TODO: Check if the file is right already and then do not update it.
|
| + with open(output_file, "w") as out:
|
| + out.write("/* This is a Jumbo file. Don't edit. */\n\n")
|
| + out.write("/* Generated with merge_for_jumbo.py. */\n\n")
|
| + input_limit = (output_index + 1) * input_count / output_count
|
| + while written_inputs < input_limit:
|
| + filename = inputs[written_inputs]
|
| + written_inputs += 1
|
| + # The source list includes headers which should not be
|
| + # compiled, and Objective C files which will be special cased
|
| + # later since they will not compile correctly if included in a
|
| + # C++ file. We will just skip them here for now.
|
| + if filename.endswith((".h", ".mm")):
|
| + continue
|
| +
|
| + out.write("#include \"%s\"\n" % filename)
|
| +
|
| + if args.verbose:
|
| + print("Generated %s (%d files) based on %s" % (str(args.outputs),
|
| + written_inputs,
|
| + args.file_list))
|
| +
|
| +if __name__ == "__main__":
|
| + main()
|
|
|