xref: /aosp_15_r20/external/pigweed/third_party/arduino/BUILD.gn (revision 61c4878ac05f98d0ceed94b57d316916de578985)
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
17import("$dir_pw_arduino_build/arduino.gni")
18import("$dir_pw_build/target_types.gni")
19
20if (pw_arduino_build_CORE_PATH != "") {
21  pw_source_set("arduino_core_sources") {
22    remove_configs = [ "$dir_pw_build:strict_warnings" ]
23
24    _core_c_files =
25        exec_script(arduino_builder_script,
26                    arduino_show_command_args + [ "--core-c-files" ],
27                    "list lines")
28    _core_s_files = filter_exclude(
29            exec_script(arduino_builder_script,
30                        arduino_show_command_args + [ "--core-s-files" ],
31                        "list lines"),
32            # TODO(tonymd): Conditionally remove this source file unless building for cortex-m0.
33            # Exception for adafruit-samd core
34            # pulse_asm.S is for: '.cpu cortex-m0plus .fpu softvfp'
35            [ "*pulse_asm.S\b" ])
36
37    _core_cpp_files =
38        exec_script(arduino_builder_script,
39                    arduino_show_command_args + [ "--core-cpp-files" ],
40                    "list lines")
41    _variant_c_files =
42        exec_script(arduino_builder_script,
43                    arduino_show_command_args + [ "--variant-c-files" ],
44                    "list lines")
45    _variant_s_files =
46        exec_script(arduino_builder_script,
47                    arduino_show_command_args + [ "--variant-s-files" ],
48                    "list lines")
49    _variant_cpp_files =
50        exec_script(arduino_builder_script,
51                    arduino_show_command_args + [ "--variant-cpp-files" ],
52                    "list lines")
53
54    # Some cores have required built in libraries:
55    # - stm32duino requires SrcWrapper.
56    _library_c_files =
57        exec_script(arduino_builder_script,
58                    arduino_show_command_args + [ "--library-c-files" ],
59                    "list lines")
60    _library_s_files =
61        exec_script(arduino_builder_script,
62                    arduino_show_command_args + [ "--library-s-files" ],
63                    "list lines")
64    _library_cpp_files =
65        exec_script(arduino_builder_script,
66                    arduino_show_command_args + [ "--library-cpp-files" ],
67                    "list lines")
68
69    sources = _core_c_files + _core_s_files + _core_cpp_files +
70              _variant_c_files + _variant_s_files + _variant_cpp_files +
71              _library_c_files + _library_s_files + _library_cpp_files
72
73    # Rename main() to ArduinoMain()
74    # See //pw_arduino_build/docs.rst for details on this approach.
75    defines = [ "main(...)=ArduinoMain()" ]
76  }
77} else {
78  group("arduino_core_sources") {
79  }
80}
81