• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2020 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
17# Specifies the tools used by ARM GCC toolchains.
18arm_gcc_toolchain_tools = {
19  _tool_name_root = "arm-none-eabi-"
20  ar = _tool_name_root + "ar"
21  cc = _tool_name_root + "gcc"
22  cxx = _tool_name_root + "g++"
23
24  link_whole_archive = true
25}
26
27# Common configs shared by all ARM GCC toolchains.
28_arm_gcc = [ "$dir_pw_toolchain/arm_gcc:disable_psabi_warning" ]
29
30_cortex_m0plus = [
31  "$dir_pw_toolchain/arm_gcc:cortex_common",
32  "$dir_pw_toolchain/arm_gcc:cortex_m0plus",
33  "$dir_pw_toolchain/arm_gcc:cortex_software_fpu",
34]
35
36# Configs specific to different architectures.
37_cortex_m3 = [
38  "$dir_pw_toolchain/arm_gcc:cortex_common",
39  "$dir_pw_toolchain/arm_gcc:cortex_m3",
40  "$dir_pw_toolchain/arm_gcc:cortex_software_fpu",
41]
42
43_cortex_m4 = [
44  "$dir_pw_toolchain/arm_gcc:cortex_common",
45  "$dir_pw_toolchain/arm_gcc:cortex_m4",
46  "$dir_pw_toolchain/arm_gcc:cortex_software_fpu",
47]
48
49_cortex_m4f = [
50  "$dir_pw_toolchain/arm_gcc:cortex_common",
51  "$dir_pw_toolchain/arm_gcc:cortex_m4",
52  "$dir_pw_toolchain/arm_gcc:cortex_hardware_fpu",
53]
54
55_cortex_m7 = [
56  "$dir_pw_toolchain/arm_gcc:cortex_common",
57  "$dir_pw_toolchain/arm_gcc:cortex_m7",
58  "$dir_pw_toolchain/arm_gcc:cortex_software_fpu",
59]
60
61_cortex_m7f = [
62  "$dir_pw_toolchain/arm_gcc:cortex_common",
63  "$dir_pw_toolchain/arm_gcc:cortex_m7",
64  "$dir_pw_toolchain/arm_gcc:cortex_hardware_fpu_v5",
65]
66
67# Describes ARM GCC toolchains for specific targets.
68pw_toolchain_arm_gcc = {
69  cortex_m0plus_debug = {
70    name = "arm_gcc_cortex_m0plus_debug"
71    forward_variables_from(arm_gcc_toolchain_tools, "*")
72    defaults = {
73      default_configs =
74          _arm_gcc + _cortex_m0plus + [ "$dir_pw_build:optimize_debugging" ]
75    }
76  }
77  cortex_m0plus_speed_optimized = {
78    name = "arm_gcc_cortex_m0plus_speed_optimized"
79    forward_variables_from(arm_gcc_toolchain_tools, "*")
80    defaults = {
81      default_configs =
82          _arm_gcc + _cortex_m0plus + [ "$dir_pw_build:optimize_speed" ]
83    }
84  }
85  cortex_m0plus_size_optimized = {
86    name = "arm_gcc_cortex_m0plus_size_optimized"
87    forward_variables_from(arm_gcc_toolchain_tools, "*")
88    defaults = {
89      default_configs =
90          _arm_gcc + _cortex_m0plus + [ "$dir_pw_build:optimize_size" ]
91    }
92  }
93  cortex_m3_debug = {
94    name = "arm_gcc_cortex_m3_debug"
95    forward_variables_from(arm_gcc_toolchain_tools, "*")
96    defaults = {
97      default_configs =
98          _arm_gcc + _cortex_m3 + [ "$dir_pw_build:optimize_debugging" ]
99    }
100  }
101  cortex_m3_speed_optimized = {
102    name = "arm_gcc_cortex_m3_speed_optimized"
103    forward_variables_from(arm_gcc_toolchain_tools, "*")
104    defaults = {
105      default_configs =
106          _arm_gcc + _cortex_m3 + [ "$dir_pw_build:optimize_speed" ]
107    }
108  }
109  cortex_m3_size_optimized = {
110    name = "arm_gcc_cortex_m3_size_optimized"
111    forward_variables_from(arm_gcc_toolchain_tools, "*")
112    defaults = {
113      default_configs =
114          _arm_gcc + _cortex_m3 + [ "$dir_pw_build:optimize_size" ]
115    }
116  }
117  cortex_m4_debug = {
118    name = "arm_gcc_cortex_m4_debug"
119    forward_variables_from(arm_gcc_toolchain_tools, "*")
120    defaults = {
121      default_configs =
122          _arm_gcc + _cortex_m4 + [ "$dir_pw_build:optimize_debugging" ]
123    }
124  }
125  cortex_m4_speed_optimized = {
126    name = "arm_gcc_cortex_m4_speed_optimized"
127    forward_variables_from(arm_gcc_toolchain_tools, "*")
128    defaults = {
129      default_configs =
130          _arm_gcc + _cortex_m4 + [ "$dir_pw_build:optimize_speed" ]
131    }
132  }
133  cortex_m4_size_optimized = {
134    name = "arm_gcc_cortex_m4_size_optimized"
135    forward_variables_from(arm_gcc_toolchain_tools, "*")
136    defaults = {
137      default_configs =
138          _arm_gcc + _cortex_m4 + [ "$dir_pw_build:optimize_size" ]
139    }
140  }
141  cortex_m4f_debug = {
142    name = "arm_gcc_cortex_m4f_debug"
143    forward_variables_from(arm_gcc_toolchain_tools, "*")
144    defaults = {
145      default_configs =
146          _arm_gcc + _cortex_m4f + [ "$dir_pw_build:optimize_debugging" ]
147    }
148  }
149  cortex_m4f_speed_optimized = {
150    name = "arm_gcc_cortex_m4f_speed_optimized"
151    forward_variables_from(arm_gcc_toolchain_tools, "*")
152    defaults = {
153      default_configs =
154          _arm_gcc + _cortex_m4f + [ "$dir_pw_build:optimize_speed" ]
155    }
156  }
157  cortex_m4f_size_optimized = {
158    name = "arm_gcc_cortex_m4f_size_optimized"
159    forward_variables_from(arm_gcc_toolchain_tools, "*")
160    defaults = {
161      default_configs =
162          _arm_gcc + _cortex_m4f + [ "$dir_pw_build:optimize_size" ]
163    }
164  }
165  cortex_m7_debug = {
166    name = "arm_gcc_cortex_m7_debug"
167    forward_variables_from(arm_gcc_toolchain_tools, "*")
168    defaults = {
169      default_configs =
170          _arm_gcc + _cortex_m7 + [ "$dir_pw_build:optimize_debugging" ]
171    }
172  }
173  cortex_m7_speed_optimized = {
174    name = "arm_gcc_cortex_m7_speed_optimized"
175    forward_variables_from(arm_gcc_toolchain_tools, "*")
176    defaults = {
177      default_configs =
178          _arm_gcc + _cortex_m7 + [ "$dir_pw_build:optimize_speed" ]
179    }
180  }
181  cortex_m7_size_optimized = {
182    name = "arm_gcc_cortex_m7_size_optimized"
183    forward_variables_from(arm_gcc_toolchain_tools, "*")
184    defaults = {
185      default_configs =
186          _arm_gcc + _cortex_m7 + [ "$dir_pw_build:optimize_size" ]
187    }
188  }
189  cortex_m7f_debug = {
190    name = "arm_gcc_cortex_m7f_debug"
191    forward_variables_from(arm_gcc_toolchain_tools, "*")
192    defaults = {
193      default_configs =
194          _arm_gcc + _cortex_m7f + [ "$dir_pw_build:optimize_debugging" ]
195    }
196  }
197  cortex_m7f_speed_optimized = {
198    name = "arm_gcc_cortex_m7f_speed_optimized"
199    forward_variables_from(arm_gcc_toolchain_tools, "*")
200    defaults = {
201      default_configs =
202          _arm_gcc + _cortex_m7f + [ "$dir_pw_build:optimize_speed" ]
203    }
204  }
205  cortex_m7f_size_optimized = {
206    name = "arm_gcc_cortex_m7f_size_optimized"
207    forward_variables_from(arm_gcc_toolchain_tools, "*")
208    defaults = {
209      default_configs =
210          _arm_gcc + _cortex_m7f + [ "$dir_pw_build:optimize_size" ]
211    }
212  }
213}
214
215# This list just contains the members of the above scope for convenience to make
216# it trivial to generate all the toolchains in this file via a
217# `generate_toolchains` target.
218pw_toolchain_arm_gcc_list = [
219  pw_toolchain_arm_gcc.cortex_m0plus_debug,
220  pw_toolchain_arm_gcc.cortex_m0plus_speed_optimized,
221  pw_toolchain_arm_gcc.cortex_m0plus_size_optimized,
222  pw_toolchain_arm_gcc.cortex_m3_debug,
223  pw_toolchain_arm_gcc.cortex_m3_speed_optimized,
224  pw_toolchain_arm_gcc.cortex_m3_size_optimized,
225  pw_toolchain_arm_gcc.cortex_m4_debug,
226  pw_toolchain_arm_gcc.cortex_m4_speed_optimized,
227  pw_toolchain_arm_gcc.cortex_m4_size_optimized,
228  pw_toolchain_arm_gcc.cortex_m4f_debug,
229  pw_toolchain_arm_gcc.cortex_m4f_speed_optimized,
230  pw_toolchain_arm_gcc.cortex_m4f_size_optimized,
231  pw_toolchain_arm_gcc.cortex_m7_debug,
232  pw_toolchain_arm_gcc.cortex_m7_speed_optimized,
233  pw_toolchain_arm_gcc.cortex_m7_size_optimized,
234  pw_toolchain_arm_gcc.cortex_m7f_debug,
235  pw_toolchain_arm_gcc.cortex_m7f_speed_optimized,
236  pw_toolchain_arm_gcc.cortex_m7f_size_optimized,
237]
238