| # Copyright 2016 The Chromium Authors | 
 | # Use of this source code is governed by a BSD-style license that can be | 
 | # found in the LICENSE file. | 
 |  | 
 | import("//testing/test.gni") | 
 |  | 
 | cc_remove_configs = [] | 
 | cc_add_configs = [ | 
 |   "//build/config:precompiled_headers", | 
 |   "//build/config/compiler:wexit_time_destructors", | 
 | ] | 
 |  | 
 | if (!is_debug) { | 
 |   cc_remove_configs += [ "//build/config/compiler:default_optimization" ] | 
 |   cc_add_configs += [ "//build/config/compiler:optimize_max" ] | 
 | } | 
 |  | 
 | template("cc_component") { | 
 |   component(target_name) { | 
 |     forward_variables_from(invoker, "*", [ "configs" ]) | 
 |     if (defined(invoker.configs)) { | 
 |       configs += invoker.configs | 
 |     } | 
 |     configs -= cc_remove_configs | 
 |     configs += cc_add_configs | 
 |   } | 
 | } | 
 |  | 
 | template("cc_test_static_library") { | 
 |   static_library(target_name) { | 
 |     forward_variables_from(invoker, "*", [ "configs" ]) | 
 |     if (defined(invoker.configs)) { | 
 |       configs += invoker.configs | 
 |     } | 
 |     configs -= cc_remove_configs | 
 |     configs += cc_add_configs | 
 |  | 
 |     # Not needed in test code. | 
 |     configs -= [ "//build/config/compiler:wexit_time_destructors" ] | 
 |  | 
 |     # TODO(crbug.com/40031409): Fix code that adds exit-time destructors and | 
 |     # enable the diagnostic by removing this line. | 
 |     configs += [ "//build/config/compiler:no_exit_time_destructors" ] | 
 |   } | 
 | } | 
 |  | 
 | template("cc_test") { | 
 |   test(target_name) { | 
 |     forward_variables_from(invoker, "*", [ "configs" ]) | 
 |     if (defined(invoker.configs)) { | 
 |       configs += invoker.configs | 
 |     } | 
 |     configs -= cc_remove_configs | 
 |     configs += cc_add_configs | 
 |  | 
 |     # Not needed in test code. | 
 |     configs -= [ "//build/config/compiler:wexit_time_destructors" ] | 
 |  | 
 |     # TODO(crbug.com/40031409): Fix code that adds exit-time destructors and | 
 |     # enable the diagnostic by removing this line. | 
 |     configs += [ "//build/config/compiler:no_exit_time_destructors" ] | 
 |   } | 
 | } |