blob: 4166e296949b29f7ce05ff47d965fe4fcc5c64db [file] [log] [blame]
# 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("//mojo/public/mojo_application.gni")
import("//mojo/public/tools/bindings/mojom.gni")
import("//testing/test.gni")
group("runner") {
testonly = true
deps = [
":mojo_runner",
"//mojo/runner/child",
"//mojo/runner/host",
]
}
if (is_android) {
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
}
source_set("register_local_aliases_fwd") {
sources = [
"register_local_aliases.h",
]
}
source_set("mojo_runner_lib") {
sources = []
deps = [
":lib",
"//base",
"//build/config/sanitizers:deps",
"//mojo/common",
"//mojo/environment:chromium",
"//mojo/message_pump",
"//mojo/runner/host:lib",
"//mojo/runner/host:switches",
]
if (!is_android) {
sources += [
"desktop/main.cc",
"register_local_aliases.cc",
"register_local_aliases.h",
]
deps += [
"//components/tracing:startup_tracing",
"//third_party/icu:icudata",
]
} else {
sources += [
"android/context_init.h",
"android/library_loader.cc",
"android/main.cc",
"android/main.h",
]
deps += [
":jni_headers",
"//components/mus",
"//components/mus/ws:lib",
"//mojo/shell",
"//ui/gl",
"//ui/platform_window/android",
]
}
}
executable("mojo_runner") {
deps = [
":mojo_runner_lib",
"//build/config/sanitizers:deps",
]
if (is_android) {
sources = [
"android/context_init.cc",
"register_local_aliases.cc",
]
deps += [
":lib",
":register_local_aliases_fwd",
"//third_party/mojo/src/mojo/edk/system",
]
# 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" ]
}
}
source_set("init") {
sources = [
"init.cc",
"init.h",
]
deps = [
"//base",
"//base:base_static",
"//base:i18n",
"//mojo/runner/host:switches",
]
}
source_set("lib") {
sources = [
"context.cc",
"context.h",
"scoped_user_data_dir.cc",
"scoped_user_data_dir.h",
"task_runners.cc",
"task_runners.h",
"tracer.cc",
"tracer.h",
]
deps = [
":init",
"//base",
"//base:base_static",
"//base/third_party/dynamic_annotations",
"//components/devtools_service/public/cpp",
"//components/devtools_service/public/interfaces",
"//components/tracing:startup_tracing",
"//mojo/application/public/cpp",
"//mojo/message_pump",
"//mojo/runner/child:interfaces",
"//mojo/runner/host:lib",
"//mojo/services/network/public/interfaces",
"//mojo/services/tracing/public/cpp",
"//mojo/services/tracing/public/interfaces",
"//mojo/shell",
"//mojo/shell/package_manager",
"//mojo/util:filename_util",
"//third_party/mojo/src/mojo/edk/system",
"//ui/gl",
"//url",
]
public_deps = [
":init",
":switches",
"//mojo/shell",
]
if (!is_component_build) {
data_deps = [
"//components/devtools_service",
"//mojo/services/tracing",
]
}
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/ui_application_loader_android.cc",
"android/ui_application_loader_android.h",
]
deps += [
":jni_headers",
":run_android_application_function",
"//components/mus/gles2",
"//mojo/application/public/cpp:content_handler",
]
} else {
sources += [
"desktop/launcher_process.cc",
"desktop/launcher_process.h",
"desktop/main_helper.cc",
"desktop/main_helper.h",
]
}
# 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("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/ShellMain.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",
"register_local_aliases.cc",
"register_local_aliases.h",
]
deps = [
":jni_headers",
":lib",
":run_android_application_function",
"//base",
"//build/config/sanitizers:deps",
]
}
# 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/MojoShellActivity.java",
"android/apk/src/org/chromium/mojo/shell/MojoShellApplication.java",
"android/apk/src/org/chromium/mojo/shell/ShellMain.java",
]
deps = [
":resources",
"//base:base_java",
]
}
android_resources("resources") {
resource_dirs = [ "android/apk/res" ]
custom_package = "org.chromium.mojo.shell"
}
android_assets("android_assets") {
deps = [
":bootstrap",
":bootstrap_java",
]
sources = [
"$root_out_dir/obj/mojo/runner/bootstrap_java.dex.jar",
"$root_shlib_dir/${shlib_prefix}bootstrap$shlib_extension",
]
}
android_assets("mojo_runner_apptests_assets") {
testonly = true
deps = [
":android_assets",
"//components/clipboard:apptests_assets",
"//components/clipboard:clipboard_assets",
"//components/mus/ws:apptests_assets",
"//components/resource_provider:apptests_assets",
"//components/resource_provider:resource_provider_assets",
"//mojo/services/network:apptests_assets",
"//mojo/services/network:network_assets",
"//third_party/icu:icu_assets",
]
}
copy("copy_mojo_runner") {
sources = [
"$root_out_dir/mojo_runner",
]
outputs = [
"$root_shlib_dir/${shlib_prefix}mojo_runner$shlib_extension",
]
deps = [
":mojo_runner",
]
}
android_apk("mojo_runner_apptests_apk") {
testonly = true
apk_name = "MojoRunnerApptests"
android_manifest = "android/apk/AndroidManifest.xml"
native_libs = [ "${shlib_prefix}mojo_runner$shlib_extension" ]
write_asset_list = true
deps = [
":copy_mojo_runner",
":java",
":mojo_runner_apptests_assets",
":resources",
"//base:base_java",
"//ui/platform_window/android:platform_window_java",
google_play_services_resources,
]
}
}