Chromium Code Reviews| Index: ios/web/js_compile.gni |
| diff --git a/ios/web/js_compile.gni b/ios/web/js_compile.gni |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..ededdf5f5d306dd52502ddd9746b9b626087acf3 |
| --- /dev/null |
| +++ b/ios/web/js_compile.gni |
| @@ -0,0 +1,186 @@ |
| +# Copyright 2015 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. |
| + |
| +closure_compiler_wrapper = "closure_compiler.py" |
| +closure_compiler_path = "//third_party/closure_compiler/compiler/compiler.jar" |
| + |
| +# Defines a target that create a JavaScript bundle using the closure compiler. |
| +# |
| +# Variables |
| +# sources: |
| +# List of JavaScript files to compile into the bundle. |
| +# |
| +# closure_entry_point: |
| +# Name of the entry point closure module. |
| +# |
| +# deps (optional) |
| +# List of targets required by this target. |
| +# |
| +# visibility (optional) |
| +# Visibility restrictions. |
| +# |
| +# Generates a single JavaScript bundle file that can be put in the application |
| +# bundle. |
| +# |
| +# TODO(eugenebut): this should uses the same error flags as js_compile_checked. |
| +template("js_compile_bundle") { |
| + assert(defined(invoker.sources), |
| + "Need sources in $target_name listing the js files.") |
| + |
| + assert(defined(invoker.closure_entry_point), |
| + "Need closure_entry_point in $target_name for generated js file.") |
| + |
| + action(target_name) { |
| + forward_variables_from(invoker, |
| + [ |
| + "deps", |
| + "visibility", |
| + ]) |
| + |
| + script = closure_compiler_wrapper |
| + inputs = [ |
| + closure_compiler_path, |
| + ] |
| + |
| + outputs = [ |
| + "$target_gen_dir/$target_name.js", |
| + ] |
| + sources = invoker.sources |
| + |
| + args = [ |
| + rebase_path(closure_compiler_path, root_build_dir), |
| + "--compilation_level", |
| + "SIMPLE_OPTIMIZATIONS", |
| + "--js", |
| + ] + rebase_path(sources, root_build_dir) + [ "--js_output_file" ] + |
| + rebase_path(outputs, root_build_dir) + |
| + [ |
| + "--only_closure_dependencies", |
| + "--closure_entry_point", |
| + invoker.closure_entry_point, |
| + ] |
| + |
| + # TODO(sdefresne): add the generated bundle to the list of files to move |
| + # in the application bundle, equivalent to the following gyp code: |
| + # |
| + # "link_settings": { |
| + # "mac_bundle_resources": [ |
| + # "<(SHARED_INTERMEDIATE_DIR)/<(RULE_INPUT_NAME).js", |
| + # ], |
| + # }, |
| + } |
| +} |
| + |
| +# Defines a target that compile JavaScript files with error checking using the |
| +# closure compiler. |
| +# |
| +# Variables |
| +# sources: |
| +# List of JavaScript files to compile. |
| +# |
| +# compile (optional, defaults to true) |
| +# If false or undefined, the JavaScript files will not be compiled but |
|
Eugene But (OOO till 7-30)
2015/10/08 16:10:41
I don't think that this comment is accurate. if in
Dirk Pranke
2015/10/08 17:49:45
Why even have the 'copy' part of this template? Wh
sdefresne
2015/10/09 13:54:45
Removed the comment as I've changed the value to a
|
| +# just copied to the destination. |
| +# |
| +# deps (optional) |
| +# List of targets required by this target. |
| +# |
| +# visibility (optional) |
| +# Visibility restrictions. |
| +# |
| +# TODO(eugenebut): use flags from third_party/closure_compiler/closure_args.gni |
| +# once they are the same. |
| +template("js_compile_checked") { |
| + assert(defined(invoker.sources), |
| + "Need sources in $target_name listing the js files.") |
| + |
| + if (defined(invoker.compile)) { |
| + compile = invoker.compile |
| + } else { |
| + compile = true |
| + } |
| + |
| + if (compile) { |
| + action_foreach(target_name) { |
| + forward_variables_from(invoker, |
| + [ |
| + "deps", |
| + "visibility", |
| + ]) |
| + |
| + script = closure_compiler_wrapper |
| + inputs = [ |
| + closure_compiler_path, |
| + ] |
| + |
| + sources = invoker.sources |
| + |
| + outputs = [ |
| + "$target_gen_dir/{{source_file_part}}", |
| + ] |
| + |
| + # TODO(eugenebut): need to enable the following compilation checks once |
| + # the corresponding errors have been fixed: |
| + # --jscomp_error=checkTypes |
| + # --jscomp_error=checkVars |
| + # --jscomp_error=missingProperties |
| + # --jscomp_error=missingReturn |
| + # --jscomp_error=undefinedVars |
| + |
| + args = [ |
| + rebase_path(closure_compiler_path, root_build_dir), |
| + "--compilation_level", |
| + "SIMPLE_OPTIMIZATIONS", |
| + "--jscomp_error=accessControls", |
| + "--jscomp_error=ambiguousFunctionDecl", |
| + "--jscomp_error=constantProperty", |
| + "--jscomp_error=deprecated", |
| + "--jscomp_error=externsValidation", |
| + "--jscomp_error=globalThis", |
| + "--jscomp_error=invalidCasts", |
| + "--jscomp_error=nonStandardJsDocs", |
| + "--jscomp_error=suspiciousCode", |
| + "--jscomp_error=undefinedNames", |
| + "--jscomp_error=unknownDefines", |
| + "--jscomp_error=uselessCode", |
| + "--jscomp_error=visibility", |
| + "--js", |
| + "{{source}}", |
| + "--js_output_file", |
| + rebase_path("$target_gen_dir/{{source_file_part}}", root_build_dir), |
| + ] |
| + |
| + # TODO(sdefresne): add the generated bundle to the list of files to move |
| + # in the application bundle, equivalent to the following gyp code: |
| + # |
| + # "link_settings": { |
| + # "mac_bundle_resources": [ |
| + # "<(SHARED_INTERMEDIATE_DIR)/<(RULE_INPUT_NAME).js", |
| + # ], |
| + # }, |
| + } |
| + } else { |
| + copy(target_name) { |
| + forward_variables_from(invoker, |
| + [ |
| + "deps", |
| + "visibility", |
| + ]) |
| + |
| + sources = invoker.sources |
| + outputs = [ |
| + "$target_gen_dir/{{source_file_part}}", |
| + ] |
| + |
| + # TODO(sdefresne): add the generated bundle to the list of files to move |
| + # in the application bundle, equivalent to the following gyp code: |
| + # |
| + # "link_settings": { |
| + # "mac_bundle_resources": [ |
| + # "<(SHARED_INTERMEDIATE_DIR)/<(RULE_INPUT_NAME).js", |
| + # ], |
| + # }, |
| + } |
| + } |
| +} |