Index: services/shell/public/cpp/service.gni |
diff --git a/services/shell/public/cpp/service.gni b/services/shell/public/cpp/service.gni |
new file mode 100644 |
index 0000000000000000000000000000000000000000..23162f98d92022198673b2dde983f88662864b00 |
--- /dev/null |
+++ b/services/shell/public/cpp/service.gni |
@@ -0,0 +1,151 @@ |
+# 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/toolchain/toolchain.gni") |
+import("//services/shell/public/constants.gni") |
+ |
+if (is_android) { |
+ import("//build/config/android/rules.gni") |
+ import("//build/config/zip.gni") |
+} |
+ |
+# Generates a Service "package", which includes: |
+# . A self-named subdirectory |
+# . A binary .library |
+# . A resources subdirectory alongside .library that contains the contents of |
+# "resources" |
+# |
+# The parameters of this template are those of a shared library. |
+template("service") { |
+ base_target_name = target_name |
+ if (defined(invoker.output_name)) { |
+ base_target_name = invoker.output_name |
+ } |
+ |
+ final_target_name = target_name |
+ |
+ library_deps = [] |
+ if (defined(invoker.deps)) { |
+ library_deps += invoker.deps |
+ } |
+ |
+ library_data_deps = [] |
+ |
+ if (defined(invoker.resources)) { |
+ copy_step_name = "${base_target_name}__copy_resources" |
+ copy(copy_step_name) { |
+ sources = invoker.resources |
+ outputs = [ |
+ "${root_out_dir}/${packages_directory}/${base_target_name}/resources/{{source_file_part}}", |
+ ] |
+ if (defined(invoker.testonly)) { |
+ testonly = invoker.testonly |
+ } |
+ deps = library_deps |
+ } |
+ library_data_deps += [ ":$copy_step_name" ] |
+ } |
+ |
+ output = base_target_name + ".library" |
+ library_target_name = base_target_name + "_library" |
+ library_name = "${shlib_prefix}${library_target_name}${shlib_extension}" |
+ |
+ 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 |
+ } |
+ |
+ data_deps = [] |
+ if (!defined(invoker.avoid_runner_cycle) || !invoker.avoid_runner_cycle) { |
+ # Give the user an out; as some Services are depended on by the runner. |
+ data_deps += [ "//services/shell/standalone" ] |
+ } |
+ if (defined(invoker.data_deps)) { |
+ data_deps += invoker.data_deps |
+ } |
+ data_deps += library_data_deps |
+ |
+ deps = [ |
+ "//mojo/public/c/system:set_thunks_for_app", |
+ "//services/shell/public/cpp:application_support", |
+ ] |
+ |
+ deps += library_deps |
+ 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 |
+ } |
+ } |
+ |
+ copy(final_target_name) { |
+ forward_variables_from(invoker, |
+ [ |
+ "testonly", |
+ "visibility", |
+ ]) |
+ deps = [ |
+ ":${library_target_name}", |
+ ] |
+ |
+ sources = [ |
+ "${root_shlib_dir}/${library_name}", |
+ ] |
+ outputs = [ |
+ "${root_out_dir}/${packages_directory}/${base_target_name}/${output}", |
+ ] |
+ } |
+} |