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

Unified Diff: remoting/webapp/build_template.gni

Issue 1143643003: [Chromoting] Add GN build support for ar_sample_app target. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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: remoting/webapp/build_template.gni
diff --git a/remoting/webapp/build_template.gni b/remoting/webapp/build_template.gni
index 5d4233c9ccd25be43dc0d6ab795db51e2616753f..8930b04e475cf26034252bd7fa14d979a997527d 100644
--- a/remoting/webapp/build_template.gni
+++ b/remoting/webapp/build_template.gni
@@ -15,17 +15,24 @@ import("//remoting/webapp/files.gni")
# to this directory.
remoting_dir = "//remoting"
-template("remoting_webapp") {
- locales_listfile = target_name + "_locales"
- listfile = "$target_gen_dir/${target_name}_locales.txt"
- listfile_rel = rebase_path(listfile, root_build_dir)
+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
- action(locales_listfile) {
script = "../tools/build/remoting_localize.py"
inputs = []
outputs = [
- listfile,
+ locales_listfile_output,
]
args = [
@@ -33,10 +40,88 @@ template("remoting_webapp") {
rebase_path(webapp_locale_dir, root_build_dir) +
"/@{json_suffix}/messages.json",
"--locales_listfile",
- listfile_rel,
+ rebase_path(locales_listfile_output, root_build_dir),
]
args += remoting_locales
}
+}
+
+template("build_webapp_html") {
+ action(target_name) {
+ html_template_file = invoker.html_template_file
+ html_template_files = invoker.html_template_files
+ js_files = invoker.js_files
+ html_output = invoker.html_output
+
+ script = "build-html.py"
+
+ inputs = [ html_template_file ] + html_template_files + js_files
+
+ outputs = [
+ html_output,
+ ]
+
+ 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_files
+ args += [ "--js" ] + rebase_path(js_files, remoting_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_files = []
+ js_files = remoting_webapp_background_html_all_js_files
+ html_output = background_html_output
+ }
+
+ 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_files = []
+ js_files = remoting_webapp_message_window_html_all_js_files
+ html_output = message_window_html_output
+ }
+
+ 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_files = []
+ js_files = remoting_webapp_wcs_sandbox_html_all_js_files
+ html_output = wcs_sandbox_html_output
+ }
+
+ 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_files = remoting_webapp_template_files
+ js_files = remoting_webapp_crd_main_html_all_js_files
+ html_output = main_html_output
+ }
action(target_name) {
script = "build-webapp.py"
@@ -46,39 +131,37 @@ template("remoting_webapp") {
zip_path = invoker.zip_path
extra_files = invoker.extra_files
- inputs = []
+ inputs =
+ [ rebase_path("crd/manifest.json.jinja2", root_build_dir) ] +
+ remoting_version_files +
+ rebase_path(remoting_webapp_crd_files, root_build_dir) + extra_files
+
outputs = [
"$target_gen_dir/$zip_path",
]
deps = [
- ":html",
":$locales_listfile",
+ ":$background_html",
+ ":$message_window_html",
+ ":$wcs_sandbox_html",
+ ":$main_html",
"//remoting/resources",
]
- buildtype = "Dev"
- if (!is_debug) {
- if (is_official_build) {
- buildtype = "Official"
- } else {
- buildtype = "Release"
- }
- }
-
- generated_html_files = [
- "$target_gen_dir/background.html",
- "$target_gen_dir/main.html",
- "$target_gen_dir/message_window.html",
- "$target_gen_dir/wcs_sandbox.html",
+ dr_generated_html_files = [
+ background_html_output,
+ message_window_html_output,
+ wcs_sandbox_html_output,
+ main_html_output,
]
# 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}_file_list.txt"
+ file_list = "$target_gen_dir/${target_name}_files.txt"
files = []
- files += rebase_path(generated_html_files, root_build_dir)
+ 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)
@@ -97,7 +180,7 @@ template("remoting_webapp") {
]
args += [
"--locales_listfile",
- listfile_rel,
+ rebase_path(locales_listfile_output, root_build_dir),
]
args += [
"--use_gcd",
@@ -105,3 +188,198 @@ template("remoting_webapp") {
]
}
}
+
+template("app_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.
+ }
+
+ feedback_consent_html = target_name + "_feedback_consent_html"
+ feedback_consent_html_output =
+ "$target_gen_dir/html/$target_name/feedback_consent.html"
+
+ build_webapp_html(feedback_consent_html) {
+ html_template_file = ar_feedback_consent_template
+ html_template_files = []
+ js_files = ar_feedback_consent_html_all_js_files
+ html_output = feedback_consent_html_output
+ }
+
+ loading_window_html = target_name + "_loading_window_html"
+ loading_window_html_output =
+ "$target_gen_dir/html/$target_name/loading_window.html"
+
+ build_webapp_html(loading_window_html) {
+ html_template_file = ar_loading_window_template
+ html_template_files = []
+
+ # The loading window is just a reskin of the message window -- all JS code
+ # is shared.
+ js_files = remoting_webapp_message_window_html_all_js_files
+ html_output = loading_window_html_output
+ }
+
+ 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_files = []
+ js_files = remoting_webapp_message_window_html_all_js_files
+ html_output = message_window_html_output
+ }
+
+ 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_files = []
+ js_files = remoting_webapp_wcs_sandbox_html_all_js_files
+ html_output = wcs_sandbox_html_output
+ }
+
+ 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 = ar_main_template
+ html_template_files = ar_main_template_files
+ js_files = ar_main_js_files
+ html_output = main_html_output
+ }
+
+ action(target_name) {
+ script = "build-webapp.py"
+
+ app_key = invoker.app_key
+ app_id = invoker.app_id
+ app_client_id = invoker.app_client_id
+ app_name = invoker.app_name
+ app_description = invoker.app_description
+ app_capabilities = invoker.app_capabilities
+ manifest_key = invoker.manifest_key
+
+ # These asserts are so that these variables get marked as being used so
+ # that GN doesn't complain about them.
+ assert(app_key != "" || app_key == "")
+ assert(app_id != "" || app_id == "")
+
+ # TODO(garykac) For internal targets, we need to extract the vendor and app
+ # name from the target.
+ ar_app_name = "sample_app" #target_name
+ ar_app_path = "app_remoting/apps/$ar_app_name"
+ ar_app_manifest = "$ar_app_path/manifest.json.jinja2"
+ ar_app_manifest_common = "app_remoting/manifest_common.json.jinja2"
+
+ output_dir = "remoting/app_remoting/$ar_service_environment/$target_name"
+ zip_path = "remoting/app_remoting/$ar_service_environment/$target_name.zip"
+
+ ar_app_specific_files = [
+ "$ar_app_path/icon16.png",
+ "$ar_app_path/icon48.png",
+ "$ar_app_path/icon128.png",
+ "$ar_app_path/loading_splash.png",
+ ]
+
+ ar_generated_html_files = [
+ feedback_consent_html_output,
+ loading_window_html_output,
+ message_window_html_output,
+ wcs_sandbox_html_output,
+ main_html_output,
+ ]
+
+ ar_webapp_files =
+ ar_app_specific_files + ar_shared_resource_files + ar_all_js_files
+
+ inputs = [
+ rebase_path(ar_app_manifest, root_build_dir),
+ rebase_path(ar_app_manifest_common, root_build_dir),
+ ] + remoting_version_files + ar_webapp_files
+
+ outputs = [
+ "$target_gen_dir/$zip_path",
+ ]
+
+ deps = [
+ ":$locales_listfile",
+ ":$feedback_consent_html",
+ ":$loading_window_html",
+ ":$message_window_html",
+ ":$wcs_sandbox_html",
+ ":$main_html",
+ "//remoting/resources",
+ ]
+
+ # 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(ar_generated_html_files, root_build_dir)
+ files += rebase_path(ar_webapp_files, root_build_dir)
+ write_file(file_list, files)
+
+ args = [
+ buildtype,
+ version_full,
+ output_dir,
+ zip_path,
+ rebase_path(ar_app_manifest, root_build_dir),
+ "app_remoting", # Web app type
+ ]
+ args += [
+ "--files_listfile",
+ rebase_path(file_list, root_build_dir),
+ ]
+ args += [
+ "--locales_listfile",
+ rebase_path(locales_listfile_output, root_build_dir),
+ ]
+ args += [
+ "--jinja_paths",
+ rebase_path("app_remoting", root_build_dir),
+ ]
+
+ if (is_debug) {
+ # Normally, the app-id for the orchestrator is automatically extracted
+ # from the webapp's extension id, but that approach doesn't work for
+ # dev webapp builds (since they all share the same dev extension id).
+ # The --appid arg will create a webapp that registers the given app-id
+ # rather than using the extension id.
+ # This is only done for Dev apps because the app-id for Release apps
+ # *must* match the extension id.
+ args += [
+ "--appid",
+ app_id,
+ ]
+ }
+
+ args += [
+ "--app_name",
+ app_name,
+ ]
+ args += [
+ "--app_description",
+ app_description,
+ ]
+ args += [ "--app_capabilities" ] + app_capabilities
+ args += [
+ "--service_environment",
+ ar_service_environment,
+ ]
+ args += [
+ "--manifest_key",
+ manifest_key,
+ ]
+ args += [
+ "--app_client_id",
+ app_client_id,
+ ]
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698