blob: e7d4c8b7306c4d1cf296c1c8d6d998c019eb4f74 [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.gni")
# Generate a binary mojo application.The parameters of this template are those
# of a shared library.
template("mojo_native_application") {
if (defined(invoker.output_name)) {
output = invoker.output_name + ".mojo"
library_target_name = invoker.output_name + "_library"
} else {
output = target_name + ".mojo"
library_target_name = target_name + "_library"
}
if (is_linux || is_android) {
library_name = "lib${library_target_name}.so"
} else if (is_win) {
library_name = "${library_target_name}.dll"
} else if (is_mac) {
library_name = "${library_target_name}.so"
} else {
assert(false, "Platform not supported.")
}
final_target_name = target_name
shared_library(library_target_name) {
if (defined(invoker.cflags)) {
cflags = invoker.cflags
}
if (defined(invoker.cflags_c)) {
cflags_c = invoker.cflags_c
}
if (defined(invoker.cflags_cc)) {
cflags_cc = invoker.cflags_cc
}
if (defined(invoker.cflags_objc)) {
cflags_objc = invoker.cflags_objc
}
if (defined(invoker.cflags_objcc)) {
cflags_objcc = invoker.cflags_objcc
}
if (defined(invoker.defines)) {
defines = invoker.defines
}
if (defined(invoker.include_dirs)) {
include_dirs = invoker.include_dirs
}
if (defined(invoker.ldflags)) {
ldflags = invoker.ldflags
}
if (defined(invoker.lib_dirs)) {
lib_dirs = invoker.lib_dirs
}
if (defined(invoker.libs)) {
libs = invoker.libs
}
# Copy the prebuilt mojo_shell if using it.
if (defined(invoker.datadeps)) {
datadeps = invoker.datadeps
if (use_prebuilt_mojo_shell) {
datadeps += [ "//mojo/public/tools:copy_mojo_shell" ]
}
} else {
if (use_prebuilt_mojo_shell) {
datadeps = [ "//mojo/public/tools:copy_mojo_shell" ]
}
}
if (defined(invoker.deps)) {
deps = invoker.deps
}
if (defined(invoker.forward_dependent_configs_from)) {
forward_dependent_configs_from = invoker.forward_dependent_configs_from
}
if (defined(invoker.public_deps)) {
public_deps = invoker.public_deps
}
if (defined(invoker.all_dependent_configs)) {
all_dependent_configs = invoker.all_dependent_configs
}
if (defined(invoker.public_configs)) {
public_configs = invoker.public_configs
}
if (defined(invoker.check_includes)) {
check_includes = invoker.check_includes
}
if (defined(invoker.configs)) {
configs = invoker.configs
}
if (defined(invoker.data)) {
data = invoker.data
}
if (defined(invoker.inputs)) {
inputs = invoker.inputs
}
if (defined(invoker.public)) {
public = invoker.public
}
if (defined(invoker.sources)) {
sources = invoker.sources
}
if (defined(invoker.testonly)) {
testonly = invoker.testonly
}
visibility = [
":${final_target_name}",
]
}
copy(final_target_name) {
if (defined(invoker.testonly)) {
testonly = invoker.testonly
}
if (defined(invoker.visibility)) {
visibility = invoker.visibility
}
deps = [
":${library_target_name}",
]
sources = [ "${root_out_dir}/${library_name}" ]
outputs = [ "${root_out_dir}/${output}" ]
}
}