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

Unified Diff: mojo/shell/BUILD.gn

Issue 1049993002: Get mojo_shell building inside chromium checkout. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix presubmit Created 5 years, 9 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
« no previous file with comments | « mojo/services/window_manager/window_manager_test_util.cc ('k') | mojo/shell/DEPS » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/shell/BUILD.gn
diff --git a/mojo/shell/BUILD.gn b/mojo/shell/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..c121d575c9b49eaaf0ce44c040279786586a94c2
--- /dev/null
+++ b/mojo/shell/BUILD.gn
@@ -0,0 +1,473 @@
+# Copyright 2014 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/ui.gni")
+import("//third_party/mojo/src/mojo/public/mojo.gni")
+import("//third_party/mojo/src/mojo/public/mojo_application.gni")
+import("//third_party/mojo/src/mojo/public/tools/bindings/mojom.gni")
+import("//testing/test.gni")
+
+# We don't support building in the component build since mojo apps are
+# inherently components.
+assert(!is_component_build)
+
+group("shell") {
+ testonly = true
+
+ deps = [
+ ":mojo_shell",
+ ":tests",
+ ]
+
+ if (!is_win) {
+ deps += [ ":mojo_launcher" ]
+ }
+
+ if (is_android) {
+ deps += [
+ ":mojo_shell_apk",
+ ":mojo_shell_tests_apk",
+ ]
+ }
+}
+
+group("tests") {
+ testonly = true
+ deps = [
+ ":mojo_shell_tests",
+ "//mojo/shell/application_manager:mojo_application_manager_unittests",
+ ]
+}
+
+if (is_android) {
+ import("//build/config/android/config.gni")
+ import("//build/config/android/rules.gni")
+}
+
+executable("mojo_shell") {
+ sources = []
+
+ deps = [
+ ":init",
+ ":lib",
+ "//base",
+ "//build/config/sanitizers:deps",
+ "//mojo/common",
+ "//mojo/environment:chromium",
+ ]
+
+ if (!is_android) {
+ sources += [ "desktop/main.cc" ]
+ } else {
+ sources += [
+ "android/library_loader.cc",
+ "android/main.cc",
+ "android/main.h",
+ ]
+
+ # On android, the executable is also the native library used by the apk.
+ # It means dynamic symbols must be preserved and exported.
+ ldflags = [ "-Wl,--export-dynamic" ]
+
+ deps += [
+ ":jni_headers",
+ "//mojo/services/native_viewport:lib",
+ "//mojo/shell/application_manager",
+ "//ui/gl",
+ ]
+ }
+}
+
+executable("mojo_launcher") {
+ sources = [
+ "launcher_main.cc",
+ ]
+
+ deps = [
+ ":init",
+ ":in_process_native_runner",
+ "//base",
+ "//build/config/sanitizers:deps",
+ "//mojo/common",
+ "//third_party/mojo/src/mojo/edk/system",
+ "//mojo/environment:chromium",
+ "//url",
+ ]
+}
+
+source_set("init") {
+ sources = [
+ "init.cc",
+ "init.h",
+ ]
+
+ deps = [
+ "//base",
+ ]
+}
+
+source_set("in_process_native_runner") {
+ sources = [
+ "in_process_native_runner.cc",
+ "in_process_native_runner.h",
+ ]
+
+ public_deps = [
+ ":native_application_support",
+ "//mojo/shell/application_manager",
+ ]
+
+ deps = [
+ "//base",
+ ]
+}
+
+source_set("lib") {
+ sources = [
+ "app_child_process.cc",
+ "app_child_process.h",
+ "app_child_process_host.cc",
+ "app_child_process_host.h",
+ "child_process.cc",
+ "child_process.h",
+ "child_process_host.cc",
+ "child_process_host.h",
+ "command_line_util.cc",
+ "command_line_util.h",
+ "context.cc",
+ "context.h",
+ "filename_util.cc",
+ "filename_util.h",
+ "out_of_process_native_runner.cc",
+ "out_of_process_native_runner.h",
+ "task_runners.cc",
+ "task_runners.h",
+ "url_resolver.cc",
+ "url_resolver.h",
+ ]
+
+ deps = [
+ ":app_child_process_bindings",
+ ":init",
+ ":in_process_native_runner",
+ ":native_application_support",
+ "//base",
+ "//base/third_party/dynamic_annotations",
+ "//base:base_static",
+ "//mojo/application",
+ "//mojo/common",
+ "//mojo/common:tracing_impl",
+ "//third_party/mojo/src/mojo/edk/system",
+ "//third_party/mojo/src/mojo/public/cpp/bindings",
+ "//third_party/mojo/src/mojo/public/interfaces/application",
+ "//mojo/services/network/public/interfaces",
+ "//mojo/shell/application_manager",
+ "//mojo/services/tracing:bindings",
+ "//url",
+ ]
+
+ public_deps = [
+ ":switches",
+ ]
+
+ if (is_android) {
+ sources += [
+ "android/android_handler.cc",
+ "android/android_handler.h",
+ "android/android_handler_loader.cc",
+ "android/android_handler_loader.h",
+ "android/background_application_loader.cc",
+ "android/background_application_loader.h",
+ "android/keyboard_impl.cc",
+ "android/keyboard_impl.h",
+ "android/native_viewport_application_loader.cc",
+ "android/native_viewport_application_loader.h",
+ "android/ui_application_loader_android.cc",
+ "android/ui_application_loader_android.h",
+ ]
+
+ deps += [
+ ":jni_headers",
+ ":run_android_application_function",
+ "//mojo/application:content_handler",
+ "//mojo/services/keyboard/public/interfaces",
+ "//mojo/services/gles2",
+ "//mojo/services/native_viewport:lib",
+ ]
+ }
+
+ # This target includes some files behind #ifdef OS... guards. Since gn is not
+ # smart enough to understand preprocess includes, it does complains about
+ # these includes when not using the build files for that OS. Suppress checking
+ # so we can enable checking for the rest of the targets in this file.
+ # TODO: Might be better to split the files with OS-specific includes out to a
+ # separate source_set so we can leave checking on for the rest of the target.
+ check_includes = false
+}
+
+source_set("native_application_support") {
+ sources = [
+ "native_application_support.cc",
+ "native_application_support.h",
+ ]
+
+ public_deps = [
+ "//third_party/mojo/src/mojo/public/cpp/bindings",
+ ]
+
+ deps = [
+ "//base",
+ "//mojo/gles2",
+ ]
+
+ # This target has to include the public thunk headers, which generally
+ # shouldn't be included without picking an implementation. We are providing
+ # the implementation but the thunk header target cannot declare that we are
+ # permitted to include it since it's in the public SDK and we are not.
+ # Suppress include checking so we can still check the rest of the targets in
+ # this file.
+ check_includes = false
+}
+
+source_set("switches") {
+ sources = [
+ "switches.cc",
+ "switches.h",
+ ]
+
+ deps = [
+ "//base",
+ ]
+}
+
+if (is_android) {
+ generate_jni("jni_headers") {
+ sources = [
+ "android/apk/src/org/chromium/mojo/shell/AndroidHandler.java",
+ "android/apk/src/org/chromium/mojo/shell/Bootstrap.java",
+ "android/apk/src/org/chromium/mojo/shell/Keyboard.java",
+ "android/apk/src/org/chromium/mojo/shell/ShellMain.java",
+ "android/tests/src/org/chromium/mojo/shell/ShellTestBase.java",
+ ]
+ jni_package = "mojo/shell"
+ }
+
+ android_library("bootstrap_java") {
+ java_files = [ "android/apk/src/org/chromium/mojo/shell/Bootstrap.java" ]
+
+ deps = [
+ "//base:base_java",
+ ]
+
+ dex_path = "$target_out_dir/bootstrap_java.dex.jar"
+ }
+
+ shared_library("bootstrap") {
+ sources = [
+ "android/bootstrap.cc",
+ ]
+ deps = [
+ ":jni_headers",
+ ":lib",
+ ":run_android_application_function",
+ "//base",
+ ]
+ }
+
+ # Shared header between the bootstrap and the main shell .so.
+ source_set("run_android_application_function") {
+ sources = [
+ "android/run_android_application_function.h",
+ ]
+
+ deps = [
+ "//base",
+ ]
+ }
+
+ android_library("java") {
+ java_files = [
+ "android/apk/src/org/chromium/mojo/shell/AndroidHandler.java",
+ "android/apk/src/org/chromium/mojo/shell/FileHelper.java",
+ "android/apk/src/org/chromium/mojo/shell/Keyboard.java",
+ "android/apk/src/org/chromium/mojo/shell/MojoShellActivity.java",
+ "android/apk/src/org/chromium/mojo/shell/MojoShellApplication.java",
+ "android/apk/src/org/chromium/mojo/shell/ShellMain.java",
+ ]
+
+ deps = [
+ "//base:base_java",
+ ]
+ }
+
+ android_resources("resources") {
+ resource_dirs = [ "android/apk/res" ]
+ custom_package = "org.chromium.mojo.shell"
+ }
+
+ mojo_shell_assets_dir = "$root_build_dir/mojo_shell_assets"
+ mojo_shell_test_assets_dir = "$root_build_dir/mojo_shell_test_assets"
+
+ copy_ex("copy_mojo_shell_assets") {
+ clear_dir = true
+ dest = mojo_shell_assets_dir
+ sources = [
+ "$root_out_dir/lib.stripped/libbootstrap.so",
+ "$root_out_dir/network_service.mojo",
+ "$root_out_dir/obj/mojo/shell/bootstrap_java.dex.jar",
+ ]
+ }
+
+ copy("copy_mojo_shell") {
+ sources = [
+ "$root_out_dir/exe.stripped/mojo_shell",
+ ]
+ outputs = [
+ "$root_out_dir/lib.stripped/libmojo_shell.so",
+ ]
+ }
+
+ copy_ex("copy_mojo_shell_test_assets") {
+ clear_dir = true
+ dest = mojo_shell_test_assets_dir
+ sources = [
+ "$root_out_dir/test_app.mojo",
+ "$root_out_dir/test_request_tracker_app.mojo",
+ ]
+ }
+
+ android_apk("mojo_shell_apk") {
+ apk_name = "MojoShell"
+
+ android_manifest = "android/apk/AndroidManifest.xml"
+
+ native_libs = [ "libmojo_shell.so" ]
+
+ asset_location = mojo_shell_assets_dir
+
+ deps = [
+ ":copy_mojo_shell",
+ ":copy_mojo_shell_assets",
+ ":java",
+ ":resources",
+ "//base:base_java",
+ "//mojo/services/native_viewport:native_viewport_java",
+ "//third_party/android_tools:google_play_services_default_resources",
+ ]
+ }
+
+ android_library("mojo_shell_tests_java") {
+ java_files =
+ [ "android/tests/src/org/chromium/mojo/shell/ShellTestBase.java" ]
+
+ deps = [
+ ":java",
+ "//base:base_java",
+ ]
+ }
+}
+
+mojom("app_child_process_bindings") {
+ sources = [
+ "app_child_process.mojom",
+ ]
+
+ deps = [
+ "//third_party/mojo/src/mojo/public/interfaces/application",
+ ]
+}
+
+# GYP version: mojo/mojo.gyp:mojo_shell_tests
+test("mojo_shell_tests") {
+ sources = [
+ "app_child_process_host_unittest.cc",
+ "command_line_util_unittest.cc",
+ "data_pipe_peek_unittest.cc",
+ "in_process_native_runner_unittest.cc",
+ "native_runner_unittest.cc",
+ "shell_test_base.cc",
+ "shell_test_base.h",
+ "shell_test_base_android.cc",
+ "shell_test_base_unittest.cc",
+ "shell_test_main.cc",
+ "url_resolver_unittest.cc",
+ ]
+
+ deps = [
+ ":in_process_native_runner",
+ ":lib",
+ "//base",
+ "//base:i18n",
+ "//base/test:test_support",
+ "//testing/gtest",
+ "//url",
+ "//mojo/common",
+ "//third_party/mojo/src/mojo/edk/system",
+ "//mojo/environment:chromium",
+ "//third_party/mojo/src/mojo/public/cpp/bindings",
+ "//mojo/services/test_service:bindings",
+ "//mojo/shell/application_manager",
+ ]
+
+ datadeps = [
+ "//mojo/services/test_service:test_app",
+ "//mojo/services/test_service:test_request_tracker_app",
+ ]
+
+ if (is_android) {
+ sources += [ "android/background_application_loader_unittest.cc" ]
+
+ deps += [ ":jni_headers" ]
+
+ apk_deps = [
+ ":copy_mojo_shell_test_assets",
+ ":mojo_shell_tests_java",
+ ]
+
+ apk_asset_location = mojo_shell_test_assets_dir
+ }
+}
+
+# GYP version: mojo/mojo.gyp:mojo_shell_test_support
+source_set("test_support") {
+ sources = [
+ "shell_test_helper.cc",
+ "shell_test_helper.h",
+ ]
+
+ deps = [
+ ":init",
+ ":lib",
+ "//base",
+ "//third_party/mojo/src/mojo/edk/system",
+ "//mojo/shell/application_manager",
+ ]
+}
+
+mojo_native_application("apptests") {
+ output_name = "shell_apptests"
+
+ testonly = true
+
+ sources = [
+ # TODO(jam): needs http_server service.
+ #"shell_apptest.cc",
+ ]
+
+ deps = [
+ "//base",
+ "//mojo/application",
+ "//mojo/application:test_support",
+ "//mojo/common:common",
+ "//third_party/mojo/src/mojo/public/cpp/bindings:callback",
+ "//third_party/mojo/src/mojo/public/cpp/environment",
+ "//third_party/mojo/src/mojo/public/cpp/system:system",
+ # "//mojo/services/http_server/public/cpp",
+ # "//mojo/services/http_server/public/interfaces",
+ "//mojo/services/network/public/interfaces",
+ "//mojo/shell/test:bindings",
+ ]
+
+ #data_deps = [ "//services/http_server:http_server($default_toolchain)" ]
+}
« no previous file with comments | « mojo/services/window_manager/window_manager_test_util.cc ('k') | mojo/shell/DEPS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698