| 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)" ]
|
| +}
|
|
|