| # Copyright 2021 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Defines a template for Swift source files. The default module_name |
| # of the target is the entire target label (without the leading //) |
| # with all "/" and ":" replaced with "_". |
| template("swift_source_set") { |
| _target_name = target_name |
| source_set(target_name) { |
| forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY) |
| forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) |
| if (!defined(module_name)) { |
| _target_label = get_label_info(":$_target_name", "label_no_toolchain") |
| |
| # Strip the // from the beginning of the label. |
| _target_label = string_replace(_target_label, "//", "", 1) |
| module_name = |
| string_replace(string_replace(_target_label, "/", "_"), ":", "_") |
| } |
| } |
| } |
| set_defaults("swift_source_set") { |
| configs = default_compiler_configs |
| } |