| # 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. |
| |
| # Keep in sync with 'remoting_webapp' target in remoting/remoting_client.gypi. |
| |
| import("//build/config/chrome_build.gni") |
| import("//build/config/features.gni") |
| import("//build/util/version.gni") |
| import("//remoting/remoting_locales.gni") |
| import("//remoting/remoting_options.gni") |
| import("//remoting/remoting_version.gni") |
| import("//remoting/webapp/files.gni") |
| import("//third_party/closure_compiler/closure_args.gni") |
| |
| # The base remoting directory that is used as the root directory for file |
| # references. Many of the scripts rely on the files being specified relative |
| # to this directory. |
| remoting_dir = "//remoting" |
| |
| buildtype = "Dev" |
| if (!is_debug) { |
| if (is_official_build) { |
| buildtype = "Official" |
| } else { |
| buildtype = "Release" |
| } |
| } |
| |
| template("build_locales_listfile") { |
| action(target_name) { |
| locales_listfile_output = invoker.locales_listfile_output |
| |
| script = "../tools/build/remoting_localize.py" |
| |
| inputs = [] |
| outputs = [ |
| locales_listfile_output, |
| ] |
| |
| args = [ |
| "--locale_output", |
| rebase_path(webapp_locale_dir, root_build_dir) + |
| "/@{json_suffix}/messages.json", |
| "--locales_listfile", |
| rebase_path(locales_listfile_output, root_build_dir), |
| ] |
| args += remoting_locales |
| } |
| } |
| |
| template("build_webapp_html") { |
| target_jscompile = "" |
| |
| # Do not enable JSCompile on instrumented builds. |
| if (enable_remoting_jscompile && invoker.instrument_js == []) { |
| target_jscompile = "${target_name}_jscompile" |
| target_jscompile_stamp = "$target_gen_dir/${target_jscompile}.stamp" |
| action(target_jscompile) { |
| js_files = remoting_webapp_js_proto_files + invoker.js_files |
| externs = |
| remoting_webapp_js_externs_files + [ |
| "../../third_party/closure_compiler/externs/chrome_extensions.js", |
| "../../third_party/closure_compiler/externs/metrics_private.js", |
| ] |
| |
| script = "../../third_party/closure_compiler/compile.py" |
| inputs = js_files |
| outputs = [ |
| target_jscompile_stamp, |
| ] |
| |
| extra_closure_args = [ |
| "jscomp_error=reportUnknownTypes", |
| "jscomp_error=duplicate", |
| "jscomp_error=misplacedTypeAnnotation", |
| ] |
| |
| args = rebase_path(js_files, root_build_dir) |
| args += [ |
| "--no_single_file", |
| "--out_file", |
| rebase_path(target_jscompile_stamp, root_build_dir), |
| "--closure_args", |
| ] + closure_args + extra_closure_args |
| args += [ "--externs" ] + rebase_path(externs, root_build_dir) |
| } |
| } |
| |
| action(target_name) { |
| html_template_file = invoker.html_template_file |
| html_template_include_files = invoker.html_template_include_files |
| js_files = invoker.js_files |
| html_output = invoker.html_output |
| exclude_js = invoker.exclude_js |
| instrument_js = invoker.instrument_js |
| |
| script = rebase_path("//remoting/webapp/build-html.py") |
| |
| # Create a file that contains a list of all the JavaScript files needed |
| # to build the unit test page. This is needed to avoid problems on platforms |
| # that limit the size of a command line. |
| file_list = "$target_gen_dir/${target_name}_files.txt" |
| files = rebase_path(js_files, root_build_dir) |
| write_file(file_list, files) |
| |
| inputs = [ html_template_file ] + html_template_include_files + js_files |
| |
| outputs = [ |
| html_output, |
| ] |
| |
| if (target_jscompile != "") { |
| deps = [ |
| ":$target_jscompile", |
| ] |
| } |
| |
| args = [ |
| rebase_path(html_output, root_build_dir), |
| rebase_path(html_template_file, root_build_dir), |
| ] |
| args += [ |
| "--template-dir", |
| rebase_path(remoting_dir, root_build_dir), |
| ] |
| args += [ "--templates" ] + html_template_include_files |
| args += [ |
| "--js-list-file", |
| rebase_path(file_list, root_build_dir), |
| ] |
| args += [ "--templates" ] + html_template_include_files |
| args += [ |
| "--js-list-file", |
| rebase_path(file_list, root_build_dir), |
| ] |
| args += [ "--exclude-js" ] + rebase_path(exclude_js, root_build_dir) |
| args += [ "--instrument-js" ] + rebase_path(instrument_js, root_build_dir) |
| } |
| } |
| |
| template("desktop_remoting_webapp") { |
| locales_listfile = target_name + "_locales" |
| locales_listfile_output = "$target_gen_dir/${target_name}_locales.txt" |
| |
| build_locales_listfile(locales_listfile) { |
| # Template uses locales_listfile_output from outer scope. |
| } |
| |
| background_html = target_name + "_background_html" |
| background_html_output = "$target_gen_dir/html/$target_name/background.html" |
| |
| build_webapp_html(background_html) { |
| html_template_file = remoting_webapp_template_background |
| html_template_include_files = [] |
| js_files = remoting_webapp_background_html_all_js_files |
| html_output = background_html_output |
| exclude_js = [] |
| instrument_js = [] |
| } |
| |
| message_window_html = target_name + "_message_window_html" |
| message_window_html_output = |
| "$target_gen_dir/html/$target_name/message_window.html" |
| |
| build_webapp_html(message_window_html) { |
| html_template_file = remoting_webapp_template_message_window |
| html_template_include_files = [] |
| js_files = remoting_webapp_message_window_html_all_js_files |
| html_output = message_window_html_output |
| exclude_js = [] |
| instrument_js = [] |
| } |
| |
| wcs_sandbox_html = target_name + "_wcs_sandbox_html" |
| wcs_sandbox_html_output = "$target_gen_dir/html/$target_name/wcs_sandbox.html" |
| |
| build_webapp_html(wcs_sandbox_html) { |
| html_template_file = remoting_webapp_template_wcs_sandbox |
| html_template_include_files = [] |
| js_files = remoting_webapp_wcs_sandbox_html_all_js_files |
| html_output = wcs_sandbox_html_output |
| exclude_js = [] |
| instrument_js = [] |
| } |
| |
| main_html = target_name + "_main_html" |
| main_html_output = "$target_gen_dir/html/$target_name/main.html" |
| |
| build_webapp_html(main_html) { |
| html_template_file = remoting_webapp_template_main |
| html_template_include_files = remoting_webapp_template_files |
| js_files = remoting_webapp_crd_main_html_all_js_files |
| html_output = main_html_output |
| exclude_js = [] |
| instrument_js = [] |
| } |
| |
| public_session_html = target_name + "_public_session_html" |
| public_session_html_output = |
| "$target_gen_dir/html/$target_name/public_session.html" |
| |
| build_webapp_html(public_session_html) { |
| html_template_file = remoting_webapp_template_public_session |
| html_template_include_files = remoting_webapp_public_session_template_files |
| js_files = remoting_webapp_public_session_html_all_js_files |
| html_output = public_session_html_output |
| exclude_js = [] |
| instrument_js = [] |
| } |
| |
| action(target_name) { |
| script = "//remoting/webapp/build-webapp.py" |
| |
| output_dir = invoker.output_dir |
| zip_path = invoker.zip_path |
| extra_files = invoker.extra_files |
| |
| dr_generated_html_files = [ |
| background_html_output, |
| message_window_html_output, |
| wcs_sandbox_html_output, |
| main_html_output, |
| public_session_html_output, |
| "$target_gen_dir/credits.html", |
| ] |
| |
| # Windows debug builds of remoting_client_plugin_newlib.pexe trigger OOM in |
| # arm-nacl-ld.gold.exe - enable for release builds only on Windows. |
| if (enable_nacl && (!is_win || !is_debug)) { |
| pnacl_tc = "//build/toolchain/nacl:newlib_pnacl" |
| pexe_label = "//remoting/client/plugin:remoting_client_plugin_newlib" |
| pexe_dir = get_label_info("${pexe_label}($pnacl_tc)", "root_out_dir") |
| |
| extra_files += [ "$pexe_dir/remoting_client_plugin_newlib.pexe" ] |
| if (is_debug) { |
| extra_files += [ "$pexe_dir/remoting_client_plugin_newlib.pexe.debug" ] |
| } |
| } |
| |
| inputs = [ rebase_path("crd/manifest.json.jinja2") ] + |
| remoting_version_files + rebase_path(remoting_webapp_crd_files) + |
| extra_files + dr_generated_html_files |
| |
| outputs = [ |
| zip_path, |
| ] |
| |
| deps = [ |
| ":$background_html", |
| ":$locales_listfile", |
| ":$main_html", |
| ":$message_window_html", |
| ":$public_session_html", |
| ":$wcs_sandbox_html", |
| "//remoting/resources", |
| "//remoting/webapp:credits", |
| ] |
| |
| # Windows debug builds of remoting_client_plugin_newlib.pexe trigger OOM in |
| # arm-nacl-ld.gold.exe - enable for release builds only on Windows. |
| if (enable_nacl && (!is_win || !is_debug)) { |
| deps += [ "${pexe_label}($pnacl_tc)" ] |
| if (is_debug) { |
| deps += [ "${pexe_label}_debug($pnacl_tc)" ] |
| } |
| } |
| |
| # Create a file that contains a list of all the resource files needed |
| # to build the webapp. This is needed to avoid problems on platforms that |
| # limit the size of a command line. |
| file_list = "$target_gen_dir/${target_name}_files.txt" |
| files = [] |
| files += rebase_path(dr_generated_html_files, root_build_dir) |
| files += rebase_path(remoting_webapp_crd_files, root_build_dir) |
| files += rebase_path(extra_files, root_build_dir) |
| write_file(file_list, files) |
| |
| args = [ |
| buildtype, |
| chrome_version_full, |
| rebase_path(output_dir, root_build_dir), |
| rebase_path(zip_path, root_build_dir), |
| rebase_path("crd/manifest.json.jinja2", root_build_dir), |
| ] |
| args += [ |
| "--files_listfile", |
| rebase_path(file_list, root_build_dir), |
| ] |
| args += [ |
| "--locales_listfile", |
| rebase_path(locales_listfile_output, root_build_dir), |
| ] |
| args += [ |
| "--use_gcd", |
| "$remoting_use_gcd", |
| ] |
| } |
| } |