xref: /aosp_15_r20/external/pigweed/targets/android/target_toolchains.gni (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1# Copyright 2021 The Pigweed Authors
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4# use this file except in compliance with the License. You may obtain a copy of
5# the License at
6#
7#     https://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations under
13# the License.
14
15import("//build_overrides/pigweed.gni")
16
17import("$dir_pigweed/targets/common/stl.gni")
18import("$dir_pw_android_toolchain/android.gni")
19import("$dir_pw_log/backend.gni")
20import("$dir_pw_sys_io/backend.gni")
21
22if (pw_android_toolchain_NDK_PATH != "") {
23  import("$dir_pw_android_toolchain/generate_toolchain.gni")
24  import("$dir_pw_android_toolchain/toolchains.gni")
25
26  _target_config = {
27    # This target uses C++ standard library backend implementations.
28    forward_variables_from(pw_targets_STL_BACKEND_GROUP, "*")
29
30    # Configuration options for Pigweed executable targets.
31    pw_build_EXECUTABLE_TARGET_TYPE = "executable"
32
33    # Facade backends
34    pw_assert_BACKEND = dir_pw_assert_basic
35    pw_log_BACKEND = dir_pw_log_basic
36    pw_sys_io_BACKEND = dir_pw_sys_io_stdio
37
38    pw_build_LINK_DEPS = []
39    pw_build_LINK_DEPS += [
40      "$dir_pw_assert:impl",
41      "$dir_pw_log:impl",
42    ]
43  }
44
45  _toolchain_properties = {
46  }
47
48  _target_default_configs = []
49
50  pw_target_toolchain_android = {
51    _excluded_members = [
52      "defaults",
53      "name",
54    ]
55
56    debug = {
57      name = "android_debug"
58      _toolchain_base = pw_toolchain_android.debug
59      forward_variables_from(_toolchain_base, "*", _excluded_members)
60      forward_variables_from(_toolchain_properties, "*")
61      defaults = {
62        forward_variables_from(_toolchain_base.defaults, "*")
63        forward_variables_from(_target_config, "*")
64        default_configs += _target_default_configs
65      }
66    }
67
68    speed_optimized = {
69      name = "android_speed_optimized"
70      _toolchain_base = pw_toolchain_android.speed_optimized
71      forward_variables_from(_toolchain_base, "*", _excluded_members)
72      forward_variables_from(_toolchain_properties, "*")
73      defaults = {
74        forward_variables_from(_toolchain_base.defaults, "*")
75        forward_variables_from(_target_config, "*")
76        default_configs += _target_default_configs
77      }
78    }
79
80    size_optimized = {
81      name = "android_size_optimized"
82      _toolchain_base = pw_toolchain_android.size_optimized
83      forward_variables_from(_toolchain_base, "*", _excluded_members)
84      forward_variables_from(_toolchain_properties, "*")
85      defaults = {
86        forward_variables_from(_toolchain_base.defaults, "*")
87        forward_variables_from(_target_config, "*")
88        default_configs += _target_default_configs
89      }
90    }
91  }
92
93  # This list just contains the members of the above scope for convenience to make
94  # it trivial to generate all the toolchains in this file via a
95  # `pw_generate_android_toolchains` target.
96  pw_target_toolchain_android_list = [
97    pw_target_toolchain_android.debug,
98    pw_target_toolchain_android.speed_optimized,
99    pw_target_toolchain_android.size_optimized,
100  ]
101}
102