# 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("//components/nacl/features.gni") import("//remoting/remoting_enable.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", ] + default_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 = "//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", ] } }