Chromium Code Reviews| Index: testing/rules.gni |
| diff --git a/testing/rules.gni b/testing/rules.gni |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..929e5c09f62ed0fdaefe745f52b085bd53d57e4c |
| --- /dev/null |
| +++ b/testing/rules.gni |
| @@ -0,0 +1,236 @@ |
| +# Copyright 2015 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. |
| + |
| +# ============================================================================== |
| +# TEST SETUP |
| +# ============================================================================== |
| + |
| +# Define a test as an executable (or apk on Android) with the "testonly" flag |
| +# set. |
| +template("test") { |
| + if (is_android) { |
| + import("//build/config/android/config.gni") |
| + import("//build/config/android/rules.gni") |
| + |
| + main_target_name = target_name |
| + library_name = "${target_name}__library" |
| + apk_name = "${target_name}_apk" |
| + |
| + shared_library(library_name) { |
| + # Configs will always be defined since we set_defaults for a component |
| + # in the main config. We want to use those rather than whatever came with |
| + # the nested shared/static library inside the component. |
| + configs = [] # Prevent list overwriting warning. |
| + configs = invoker.configs |
| + |
| + # See above call. |
|
cjhopman
2015/01/12 18:36:12
Might want to bring the relevant comment from BUIL
|
| + set_sources_assignment_filter([]) |
| + |
| + testonly = true |
| + |
| + if (defined(invoker.all_dependent_configs)) { |
| + all_dependent_configs = invoker.all_dependent_configs |
| + } |
| + if (defined(invoker.allow_circular_includes_from)) { |
| + allow_circular_includes_from = invoker.allow_circular_includes_from |
| + } |
| + 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.check_includes)) { |
| + check_includes = invoker.check_includes |
| + } |
| + if (defined(invoker.data)) { |
| + data = invoker.data |
| + } |
| + if (defined(invoker.data_deps)) { |
| + data_deps = invoker.data_deps |
| + } |
| + if (defined(invoker.datadeps)) { |
| + datadeps = invoker.datadeps |
| + } |
| + if (defined(invoker.defines)) { |
| + defines = invoker.defines |
| + } |
| + deps = [ |
| + "//testing/android:native_test_native_code", |
|
cjhopman
2015/01/12 19:10:22
This is actually the added dependency on //testing
|
| + ] |
| + if (defined(invoker.deps)) { |
| + deps += invoker.deps |
| + } |
| + if (defined(invoker.direct_dependent_configs)) { |
| + direct_dependent_configs = invoker.direct_dependent_configs |
| + } |
| + if (defined(invoker.forward_dependent_configs_from)) { |
| + forward_dependent_configs_from = invoker.forward_dependent_configs_from |
| + } |
| + 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 |
| + } |
| + if (defined(invoker.output_extension)) { |
| + output_extension = invoker.output_extension |
| + } |
| + if (defined(invoker.output_name)) { |
| + output_name = invoker.output_name |
| + } |
| + if (defined(invoker.public)) { |
| + public = invoker.public |
| + } |
| + if (defined(invoker.public_configs)) { |
| + public_configs = invoker.public_configs |
| + } |
| + if (defined(invoker.public_deps)) { |
| + public_deps = invoker.public_deps |
| + } |
| + if (defined(invoker.sources)) { |
| + sources = invoker.sources |
| + } |
| + if (defined(invoker.visibility)) { |
| + visibility = invoker.visibility |
| + } |
| + } |
| + |
| + unittest_apk(apk_name) { |
| + unittests_dep = ":$library_name" |
| + apk_name = main_target_name |
| + if (defined(invoker.output_name)) { |
| + test_output_name = invoker.output_name |
| + unittests_binary = "lib${test_output_name}.so" |
| + } |
| + deps = [ |
| + ":$library_name", |
| + ] |
| + if (defined(invoker.apk_deps)) { |
| + deps += invoker.apk_deps |
| + } |
| + } |
| + |
| + group(target_name) { |
| + testonly = true |
| + |
| + deps = [ |
| + ":$library_name", |
| + ":$apk_name", |
| + ] |
| + } |
| + } else { |
| + executable(target_name) { |
| + # See above. |
| + configs = [] # Prevent list overwriting warning. |
| + configs = invoker.configs |
| + |
| + # See above call. |
| + set_sources_assignment_filter([]) |
| + |
| + testonly = true |
| + |
| + if (defined(invoker.all_dependent_configs)) { |
| + all_dependent_configs = invoker.all_dependent_configs |
| + } |
| + if (defined(invoker.allow_circular_includes_from)) { |
| + allow_circular_includes_from = invoker.allow_circular_includes_from |
| + } |
| + 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.check_includes)) { |
| + check_includes = invoker.check_includes |
| + } |
| + if (defined(invoker.data)) { |
| + data = invoker.data |
| + } |
| + if (defined(invoker.data_deps)) { |
| + data_deps = invoker.data_deps |
| + } |
| + if (defined(invoker.datadeps)) { |
| + datadeps = invoker.datadeps |
| + } |
| + if (defined(invoker.defines)) { |
| + defines = invoker.defines |
| + } |
| + |
| + # All shared libraries must have the sanitizer deps to properly link in |
| + # asan mode (this target will be empty in other cases). |
| + if (defined(invoker.deps)) { |
| + deps = invoker.deps + [ "//build/config/sanitizers:deps" ] |
| + } else { |
| + deps = [ |
| + "//build/config/sanitizers:deps", |
| + ] |
| + } |
| + if (defined(invoker.direct_dependent_configs)) { |
| + direct_dependent_configs = invoker.direct_dependent_configs |
| + } |
| + if (defined(invoker.forward_dependent_configs_from)) { |
| + forward_dependent_configs_from = invoker.forward_dependent_configs_from |
| + } |
| + 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 |
| + } |
| + if (defined(invoker.output_extension)) { |
| + output_extension = invoker.output_extension |
| + } |
| + if (defined(invoker.output_name)) { |
| + output_name = invoker.output_name |
| + } |
| + if (defined(invoker.public)) { |
| + public = invoker.public |
| + } |
| + if (defined(invoker.public_configs)) { |
| + public_configs = invoker.public_configs |
| + } |
| + if (defined(invoker.public_deps)) { |
| + public_deps = invoker.public_deps |
| + } |
| + if (defined(invoker.sources)) { |
| + sources = invoker.sources |
| + } |
| + if (defined(invoker.visibility)) { |
| + visibility = invoker.visibility |
| + } |
| + } |
| + } |
| +} |