Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2966)

Unified Diff: chrome/browser/resources/chromeos/chromevox/BUILD.gn

Issue 1145243006: Port chromevox build to GN. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@externs
Patch Set: Workaround hardlink related spuroius rebuild issue by using a stamp file (not ideal). Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/chromeos/chromevox/BUILD.gn
diff --git a/chrome/browser/resources/chromeos/chromevox/BUILD.gn b/chrome/browser/resources/chromeos/chromevox/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..1538cc8b0f9a75b29247faa8418a436b8e047feb
--- /dev/null
+++ b/chrome/browser/resources/chromeos/chromevox/BUILD.gn
@@ -0,0 +1,393 @@
+# 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.
+
+import("//build/config/features.gni")
+import("//testing/test.gni")
+import("//chrome/test/base/js2gtest.gni")
+import("chromevox.gni")
+
+assert(is_chromeos)
+
+declare_args() {
+ # Whether to compress the main Chromevox javascript files or load the
+ # modules individually from source files.
+ chromevox_compress_js = !is_debug
+}
+
+chromevox_out_dir = "$root_out_dir/resources/chromeos/chromevox"
+
+group("chromevox") {
+ deps = [
+ "//chrome/browser/resources/chromeos/braille_ime:braille_ime_manifest",
+ "//chrome/browser/resources/chromeos/chromevox/strings:chromevox_strings",
+ "//chrome/third_party/chromevox:chromevox_third_party_resources",
+ "//third_party/liblouis",
+
+ #<(DEPTH)/third_party/liblouis/liblouis_nacl.gyp:liblouis_nacl_wrapper_nacl' # TODO(GYP)
+ ":chromevox_copied_files",
+ ":chromevox_manifest",
+ ":chromevox_guest_manifest",
+ ]
+ if (chromevox_compress_js) {
+ deps += [
+ ":chromevox1_background_script",
+ ":chromevox1_content_script",
+ ":chromevox1_kbexplorer_script",
+ ":chromevox1_options_script",
+ ":chromevox2_background_script",
+ ]
+ } else {
+ deps += [ ":chromevox_deps_js" ]
+ }
+}
+
+template("run_jsbundler") {
+ assert(defined(invoker.mode))
+ assert(defined(invoker.sources))
+ if (defined(invoker.modules)) {
+ modules = invoker.modules
+ } else {
+ modules = []
+ }
+ if (defined(invoker.rewrite_rules)) {
+ rewrite_rules = invoker.rewrite_rules
+ } else {
+ rewrite_rules = []
+ }
+ action(target_name) {
+ script = "tools/jsbundler.py"
+ inputs = jsbundler_modules
+ sources = invoker.sources
+ if (defined(invoker.output_file)) {
+ if (defined(invoker.modules)) {
+ depfile = "$target_out_dir/" +
+ get_path_info(invoker.output_file, "name") + ".d"
+ }
+ outputs = [
+ invoker.output_file,
+ ]
+ } else {
+ assert(!defined(invoker.modules))
+ stampfile = "$target_out_dir/${target_name}_copy.stamp"
+ outputs = [
+ stampfile,
+ ]
+ }
+ args = [
+ "-m",
+ invoker.mode,
+ ]
+ if (defined(depfile)) {
+ args += [
+ "--depfile",
+ rebase_path(depfile, root_build_dir),
+ ]
+ }
+ if (defined(stampfile)) {
+ args += [
+ "--stampfile",
+ rebase_path(stampfile, root_build_dir),
+ ]
+ }
+ if (defined(invoker.output_file)) {
+ args += [
+ "-o",
+ rebase_path(invoker.output_file, root_build_dir),
+ ]
+ }
+ if (defined(invoker.dest_dir)) {
+ args += [
+ "-d",
+ rebase_path(invoker.dest_dir, root_build_dir),
+ ]
+ }
+ foreach(module, modules) {
+ args += [
+ "-M",
+ rebase_path(module, root_build_dir),
+ ]
+ }
+ foreach(rule, rewrite_rules) {
+ args += [
+ "-w",
+ rule,
+ ]
+ }
+ args += rebase_path(sources, root_build_dir)
+ }
+}
+
+chromevox_assets_gypi_values =
+ exec_script("//build/gypi_to_gn.py",
+ [ rebase_path("chromevox_assets.gypi") ],
+ "scope",
+ [ "chromevox_assets.gypi" ])
+
+chromevox_vars_gypi_values = exec_script("//build/gypi_to_gn.py",
+ [ rebase_path("chromevox_vars.gypi") ],
+ "scope",
+ [ "chromevox_vars.gypi" ])
+
+# Instead of setting up one copy target for each subdirectory, use a script
+# to copy all files.
+run_jsbundler("chromevox_copied_files") {
+ mode = "copy"
+ dest_dir = chromevox_out_dir
+ sources = chromevox_assets_gypi_values.chromevox_assets_chromevox
+ sources +=
+ chromevox_assets_gypi_values.chromevox_assets_chromevox_background_earcons
+ sources +=
+ chromevox_assets_gypi_values.chromevox_assets_chromevox_background_keymaps
+ sources += chromevox_assets_gypi_values.chromevox_assets_chromevox_background_mathmaps_functions
+ sources += chromevox_assets_gypi_values.chromevox_assets_chromevox_background_mathmaps_symbols
+ sources += [
+ "chromevox/background/background.html",
+ "chromevox/background/kbexplorer.html",
+ "chromevox/background/options.html",
+ "chromevox/injected/api.js",
+ "cvox2/background/background.html",
+ ]
+ if (chromevox_compress_js) {
+ sources += [ "chromevox/injected/api_util.js" ]
+ } else {
+ sources += chromevox_modules
+ sources += [
+ "closure/closure_preinit.js",
+ chromevox_vars_gypi_values.chromevox1_background_script_loader_file,
+ chromevox_vars_gypi_values.chromevox1_content_script_loader_file,
+ chromevox_vars_gypi_values.chromevox1_kbexplorer_loader_file,
+ chromevox_vars_gypi_values.chromevox1_options_script_loader_file,
+ chromevox_vars_gypi_values.chromevox2_background_script_loader_file,
+ ]
+ }
+ if (!chromevox_compress_js) {
+ sources += closure_library_modules
+ }
+ rewrite_rules = [
+ rebase_path(".", root_build_dir) + ":",
+ rebase_path(closure_library_dir, root_build_dir) + ":closure",
+ ]
+}
+
+template("manifest") {
+ version_file = "//chrome/VERSION"
+ version_script = "//build/util/version.py"
+ template_file = "manifest.json.jinja2"
+ output_file = invoker.output_file
+ key = chromevox_vars_gypi_values.chromevox_extension_key
+ action(target_name) {
+ script = "tools/generate_manifest.py"
+ inputs = [
+ version_file,
+ version_script,
+ ]
+ sources = [
+ template_file,
+ ]
+ outputs = [
+ output_file,
+ ]
+ args = [
+ "--key=$key",
+ "--version_file=" + rebase_path(version_file, root_build_dir),
+ "--output_manifest=" + rebase_path(output_file, root_build_dir),
+ ]
+ if (defined(invoker.is_guest_manifest) && invoker.is_guest_manifest) {
+ args += [ "--is_guest_manifest=1" ]
+ }
+ if (!chromevox_compress_js) {
+ args += [ "--is_js_compressed=0" ]
+ }
+ args += rebase_path(sources, root_build_dir)
+ }
+}
+
+manifest("chromevox_manifest") {
+ output_file = "$chromevox_out_dir/manifest.json"
+}
+
+manifest("chromevox_guest_manifest") {
+ output_file = "$chromevox_out_dir/manifest_guest.json"
+ is_guest_manifest = true
+}
+
+template("generate_deps_js") {
+ if (defined(invoker.rewrite_rules)) {
+ rewrite_rules = invoker.rewrite_rules
+ } else {
+ rewrite_rules = []
+ }
+ action(target_name) {
+ if (defined(invoker.testonly)) {
+ testonly = invoker.testonly
+ }
+ script = "tools/generate_deps.py"
+ inputs = jsbundler_modules
+ sources = invoker.sources
+ outputs = [
+ invoker.output_file,
+ ]
+ args = [
+ "-o",
+ rebase_path(invoker.output_file, root_build_dir),
+ ]
+ foreach(rule, rewrite_rules) {
+ args += [
+ "-w",
+ rule,
+ ]
+ }
+ args += rebase_path(sources, root_build_dir)
+ if (defined(invoker.deps)) {
+ deps = invoker.deps
+ }
+ }
+}
+
+if (chromevox_compress_js) {
+ template("compress_js") {
+ run_jsbundler(target_name) {
+ assert(defined(invoker.output_file))
+ mode = "compressed_bundle"
+ modules = chromevox_modules + closure_library_modules
+ sources = invoker.sources
+ output_file = invoker.output_file
+ }
+ }
+
+ compress_js("chromevox1_background_script") {
+ sources = [
+ chromevox_vars_gypi_values.chromevox1_background_script_loader_file,
+ ]
+ output_file = "$chromevox_out_dir/chromeVoxChromeBackgroundScript.js"
+ }
+
+ compress_js("chromevox1_content_script") {
+ sources = [
+ chromevox_vars_gypi_values.chromevox1_content_script_loader_file,
+ ]
+ output_file = "$chromevox_out_dir/chromeVoxChromePageScript.js"
+ }
+
+ compress_js("chromevox1_kbexplorer_script") {
+ sources = [
+ chromevox_vars_gypi_values.chromevox1_kbexplorer_loader_file,
+ ]
+ output_file = "$chromevox_out_dir/chromeVoxKbExplorerScript.js"
+ }
+
+ compress_js("chromevox1_options_script") {
+ sources = [
+ chromevox_vars_gypi_values.chromevox1_options_script_loader_file,
+ ]
+ output_file = "$chromevox_out_dir/chromeVoxChromeOptionsScript.js"
+ }
+
+ compress_js("chromevox2_background_script") {
+ sources = [
+ chromevox_vars_gypi_values.chromevox1_background_script_loader_file,
+ chromevox_vars_gypi_values.chromevox2_background_script_loader_file,
+ ]
+ output_file = "$chromevox_out_dir/chromeVox2ChromeBackgroundScript.js"
+ }
+} else {
+ generate_deps_js("chromevox_deps_js") {
+ sources = chromevox_modules + closure_library_modules
+ output_file = "$chromevox_out_dir/deps.js"
+ rewrite_rules = [
+ rebase_path(".", root_build_dir) + ":..",
+ rebase_path(closure_library_dir, root_build_dir) + ":../closure",
+ ]
+ }
+}
+
+chromevox_tests_gypi_values =
+ exec_script("//build/gypi_to_gn.py",
+ [ rebase_path("chromevox_tests.gypi") ],
+ "scope",
+ [ "chromevox_tests.gypi" ])
+
+test("chromevox_tests") {
+ sources = chromevox_tests_gypi_values.chromevox_tests_sources
+
+ deps = [
+ "//base",
+ "//base:i18n",
+ "//base/test:test_support",
+ "//chrome:browser_tests_pak",
+ "//chrome:packed_extra_resources",
+ "//chrome:packed_resources",
+ "//chrome:resources",
+ "//chrome:strings",
+ "//chrome/browser",
+ "//chrome/renderer",
+ "//chrome/test:test_support",
+ "//testing/gmock",
+ "//testing/gtest",
+ ":chromevox_extjs_tests",
+ ":chromevox_unitjs_tests",
+ ]
+ if (cld_version == 0 || cld_version == 2) {
+ # Because the browser_tests use translate, they need CLD data.
+ deps += [ "//third_party/cld_2:cld2_platform_impl" ]
+ }
+}
+
+action("chromevox_test_messages_js") {
+ script = "tools/generate_test_messages.py"
+ sources = [
+ "$chromevox_out_dir/_locales/en/messages.json",
+ ]
+ output_file = "$root_out_dir/test_data/chrome/browser/resources/chromeos/chromevox/host/testing/test_messages.js"
+ outputs = [
+ output_file,
+ ]
+ deps = [
+ "strings:chromevox_strings",
+ ]
+ args = [
+ "-o",
+ rebase_path(output_file, root_build_dir),
+ ] + rebase_path(sources, root_build_dir)
+}
+
+chromevox_test_modules = [
+ "host/testing/earcons.js",
+ "host/testing/host.js",
+ "host/testing/mathjax.js",
+ "host/testing/tts.js",
+ "testing/spoken_list_builder.js",
+ "testing/test_msgs.js",
+ "testing/tester.js",
+ ] + get_target_outputs(":chromevox_test_messages_js")
+
+generate_deps_js("chromevox_test_deps_js") {
+ sources = closure_library_modules + chromevox_modules + chromevox_test_modules
+ output_file = "$target_gen_dir/test_deps.js"
+ rewrite_rules = [
+ rebase_path("//", root_build_dir) + ":",
+ rebase_path("$root_out_dir/test_data", root_build_dir) + ":",
+ ]
+ deps = [
+ ":chromevox_test_messages_js",
+ ]
+}
+
+js2gtest("chromevox_unitjs_tests") {
+ test_type = "webui"
+ sources = chromevox_tests_gypi_values.chromevox_tests_unitjs_sources
+ test_deps_js_outputs = get_target_outputs(":chromevox_test_deps_js")
+ deps_js = test_deps_js_outputs[0]
+ deps = [
+ ":chromevox_test_deps_js",
+ ]
+ defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
+}
+
+js2gtest("chromevox_extjs_tests") {
+ test_type = "extension"
+ sources = chromevox_tests_gypi_values.chromevox_tests_extjs_sources
+ sources -= [ "braille/liblouis_test.extjs" ] # TODO(GYP)
+ defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
+}
« no previous file with comments | « chrome/browser/resources/chromeos/braille_ime/BUILD.gn ('k') | chrome/browser/resources/chromeos/chromevox/chromevox.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698