xref: /aosp_15_r20/external/pigweed/third_party/ambiq/BUILD.gn (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1# Copyright 2023 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_build/target_types.gni")
18import("$dir_pw_docgen/docs.gni")
19import("ambiq.gni")
20
21pw_doc_group("docs") {
22  sources = [ "docs.rst" ]
23}
24
25# This file defines a GN source_set for an external installation of Ambiq SDK.
26# To use, checkout the Ambiq Apollo4 SDK source into a directory, then set
27# the build arg dir_pw_third_party_ambiq_SDK to point to that directory. The
28# Ambiq Apollo 4 SDK library will be available in GN
29# at "$dir_pw_third_party/apollo4".
30if (dir_pw_third_party_ambiq_SDK != "") {
31  config("apollo4p_sdk_defines") {
32    defines = [
33      "AM_PART_APOLLO4P=1",
34      "apollo4p_evb=1",
35      "gcc=1",
36      "AM_PACKAGE_BGA=1",
37    ]
38    visibility = [ ":*" ]
39  }
40
41  config("apollo4b_sdk_defines") {
42    defines = [
43      "AM_PART_APOLLO4B=1",
44      "apollo4b_evb=1",
45      "gcc=1",
46      "AM_PACKAGE_BGA=1",
47    ]
48    visibility = [ ":*" ]
49  }
50
51  config("disable_warnings") {
52    cflags = [
53      "-Wno-sign-compare",
54      "-Wno-unused-parameter",
55      "-Wno-cast-qual",
56      "-Wno-shadow",
57      "-Wno-implicit-fallthrough",
58      "-Wno-maybe-uninitialized",
59    ]
60    cflags_c = [ "-Wno-old-style-declaration" ]
61    visibility = [ ":*" ]
62  }
63
64  config("apollo4_include_dirs") {
65    include_dirs = [
66      "$dir_pw_third_party_ambiq_SDK/devices",
67      "$dir_pw_third_party_ambiq_SDK/utils",
68      "$dir_pw_third_party_ambiq_SDK/CMSIS/ARM/Include",
69      "$dir_pw_third_party_ambiq_SDK/CMSIS/AmbiqMicro/Include",
70    ]
71  }
72
73  config("apollo4p_include_dirs") {
74    include_dirs = [
75      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu",
76      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal",
77      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p",
78      "$dir_pw_third_party_ambiq_SDK/boards/apollo4p_evb/bsp",
79    ]
80  }
81
82  config("apollo4b_include_dirs") {
83    include_dirs = [
84      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu",
85      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal",
86      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b",
87      "$dir_pw_third_party_ambiq_SDK/boards/apollo4b_evb/bsp",
88    ]
89  }
90
91  pw_source_set("apollo4p") {
92    remove_configs = [ "$dir_pw_build:extra_strict_warnings" ]
93
94    public_configs = [
95      ":disable_warnings",
96      ":apollo4_include_dirs",
97      ":apollo4p_include_dirs",
98      ":apollo4p_sdk_defines",
99    ]
100
101    sources = [
102      "$dir_pw_third_party_ambiq_SDK/boards/apollo4p_evb/bsp/am_bsp.c",
103      "$dir_pw_third_party_ambiq_SDK/boards/apollo4p_evb/bsp/am_bsp_pins.c",
104      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/am_hal_access.c",
105      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/am_hal_adc.c",
106      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/am_hal_audadc.c",
107      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/am_hal_dcu.c",
108      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/am_hal_global.c",
109      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/am_hal_gpio.c",
110      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/am_hal_i2s.c",
111      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/am_hal_otp.c",
112      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/am_hal_pdm.c",
113      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/am_hal_pin.c",
114      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/am_hal_pwrctrl.c",
115      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/am_hal_queue.c",
116      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/am_hal_security.c",
117      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/am_hal_stimer.c",
118      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/am_hal_timer.c",
119      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/am_hal_usb.c",
120      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/am_hal_wdt.c",
121      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_bootrom_helper.c",
122      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_cachectrl.c",
123      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_card.c",
124      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_card_host.c",
125      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_clkgen.c",
126      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_cmdq.c",
127      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_dsi.c",
128      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_fault.c",
129      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_interrupt.c",
130      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_iom.c",
131      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_ios.c",
132      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_itm.c",
133      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_itm.h",
134      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_mcuctrl.c",
135      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_mpu.c",
136      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_mram.c",
137      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_mspi.c",
138      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_reset.c",
139      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_rtc.c",
140      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_sdhc.c",
141      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_secure_ota.c",
142      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_sysctrl.c",
143      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_systick.c",
144      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_tpiu.c",
145      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_uart.c",
146      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4p/hal/mcu/am_hal_utils.c",
147    ]
148  }
149
150  pw_source_set("apollo4b") {
151    remove_configs = [ "$dir_pw_build:extra_strict_warnings" ]
152
153    public_configs = [
154      ":disable_warnings",
155      ":apollo4_include_dirs",
156      ":apollo4b_include_dirs",
157      ":apollo4b_sdk_defines",
158    ]
159
160    sources = [
161      "$dir_pw_third_party_ambiq_SDK/boards/apollo4b_evb/bsp/am_bsp.c",
162      "$dir_pw_third_party_ambiq_SDK/boards/apollo4b_evb/bsp/am_bsp_pins.c",
163      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/am_hal_access.c",
164      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/am_hal_adc.c",
165      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/am_hal_audadc.c",
166      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/am_hal_dcu.c",
167      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/am_hal_global.c",
168      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/am_hal_gpio.c",
169      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/am_hal_i2s.c",
170      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/am_hal_otp.c",
171      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/am_hal_pdm.c",
172      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/am_hal_pin.c",
173      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/am_hal_pwrctrl.c",
174      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/am_hal_queue.c",
175      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/am_hal_security.c",
176      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/am_hal_stimer.c",
177      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/am_hal_timer.c",
178      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/am_hal_usb.c",
179      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/am_hal_wdt.c",
180      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_bootrom_helper.c",
181      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_cachectrl.c",
182      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_card.c",
183      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_card_host.c",
184      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_clkgen.c",
185      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_cmdq.c",
186      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_dsi.c",
187      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_fault.c",
188      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_interrupt.c",
189      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_iom.c",
190      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_ios.c",
191      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_itm.c",
192      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_itm.h",
193      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_mcuctrl.c",
194      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_mpu.c",
195      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_mram.c",
196      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_mspi.c",
197      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_reset.c",
198      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_rtc.c",
199      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_sdhc.c",
200      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_secure_ota.c",
201      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_sysctrl.c",
202      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_systick.c",
203      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_tpiu.c",
204      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_uart.c",
205      "$dir_pw_third_party_ambiq_SDK/mcu/apollo4b/hal/mcu/am_hal_utils.c",
206    ]
207  }
208
209  pw_source_set("sdk") {
210    if (pw_third_party_ambiq_PRODUCT == "apollo4p") {
211      public_deps = [ ":apollo4p" ]
212    } else if (pw_third_party_ambiq_PRODUCT == "apollo4b") {
213      public_deps = [ ":apollo4b" ]
214    }
215  }
216}
217