1*61c4878aSAndroid Build Coastguard Worker# Copyright 2023 The Pigweed Authors 2*61c4878aSAndroid Build Coastguard Worker# 3*61c4878aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); you may not 4*61c4878aSAndroid Build Coastguard Worker# use this file except in compliance with the License. You may obtain a copy of 5*61c4878aSAndroid Build Coastguard Worker# the License at 6*61c4878aSAndroid Build Coastguard Worker# 7*61c4878aSAndroid Build Coastguard Worker# https://www.apache.org/licenses/LICENSE-2.0 8*61c4878aSAndroid Build Coastguard Worker# 9*61c4878aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 10*61c4878aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11*61c4878aSAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12*61c4878aSAndroid Build Coastguard Worker# License for the specific language governing permissions and limitations under 13*61c4878aSAndroid Build Coastguard Worker# the License. 14*61c4878aSAndroid Build Coastguard Worker 15*61c4878aSAndroid Build Coastguard Workerimport("//build_overrides/pigweed.gni") 16*61c4878aSAndroid Build Coastguard Worker 17*61c4878aSAndroid Build Coastguard Workerimport("$dir_pigweed/third_party/ambiq/ambiq.gni") 18*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/error.gni") 19*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/linker_script.gni") 20*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/target_types.gni") 21*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_cpu_exception/backend.gni") 22*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_docgen/docs.gni") 23*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_malloc/backend.gni") 24*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_system/backend.gni") 25*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_toolchain/generate_toolchain.gni") 26*61c4878aSAndroid Build Coastguard Workerimport("target_toolchains.gni") 27*61c4878aSAndroid Build Coastguard Worker 28*61c4878aSAndroid Build Coastguard Workergenerate_toolchains("target_toolchains") { 29*61c4878aSAndroid Build Coastguard Worker toolchains = pw_target_toolchain_apollo4_list 30*61c4878aSAndroid Build Coastguard Worker} 31*61c4878aSAndroid Build Coastguard Worker 32*61c4878aSAndroid Build Coastguard Workerpw_build_assert("check_ambiq_product_defined") { 33*61c4878aSAndroid Build Coastguard Worker condition = pw_third_party_ambiq_PRODUCT == "apollo4p" || 34*61c4878aSAndroid Build Coastguard Worker pw_third_party_ambiq_PRODUCT == "apollo4b" 35*61c4878aSAndroid Build Coastguard Worker message = "Build argument pw_third_party_ambiq_PRODUCT must be one of " + 36*61c4878aSAndroid Build Coastguard Worker "the following values: 'apollo4p' or 'apollo4b'." 37*61c4878aSAndroid Build Coastguard Worker visibility = [ ":*" ] 38*61c4878aSAndroid Build Coastguard Worker} 39*61c4878aSAndroid Build Coastguard Worker 40*61c4878aSAndroid Build Coastguard Workerconfig("disable_warnings") { 41*61c4878aSAndroid Build Coastguard Worker cflags = [ "-Wno-undef" ] 42*61c4878aSAndroid Build Coastguard Worker visibility = [ ":*" ] 43*61c4878aSAndroid Build Coastguard Worker} 44*61c4878aSAndroid Build Coastguard Worker 45*61c4878aSAndroid Build Coastguard Workerconfig("pw_malloc_active") { 46*61c4878aSAndroid Build Coastguard Worker if (pw_malloc_BACKEND != "") { 47*61c4878aSAndroid Build Coastguard Worker defines = [ "PW_MALLOC_ACTIVE=1" ] 48*61c4878aSAndroid Build Coastguard Worker } else { 49*61c4878aSAndroid Build Coastguard Worker defines = [ "PW_MALLOC_ACTIVE=0" ] 50*61c4878aSAndroid Build Coastguard Worker } 51*61c4878aSAndroid Build Coastguard Worker} 52*61c4878aSAndroid Build Coastguard Worker 53*61c4878aSAndroid Build Coastguard Workerconfig("pw_system_active") { 54*61c4878aSAndroid Build Coastguard Worker if (pw_system_TARGET_HOOKS_BACKEND != "") { 55*61c4878aSAndroid Build Coastguard Worker ldflags = [ 56*61c4878aSAndroid Build Coastguard Worker "-Wl,--defsym=SysTick_Handler=xPortSysTickHandler", 57*61c4878aSAndroid Build Coastguard Worker "-Wl,--defsym=PendSV_Handler=xPortPendSVHandler", 58*61c4878aSAndroid Build Coastguard Worker "-Wl,--defsym=SVC_Handler=vPortSVCHandler", 59*61c4878aSAndroid Build Coastguard Worker ] 60*61c4878aSAndroid Build Coastguard Worker } 61*61c4878aSAndroid Build Coastguard Worker} 62*61c4878aSAndroid Build Coastguard Worker 63*61c4878aSAndroid Build Coastguard Workerconfig("pw_cpu_exception_active") { 64*61c4878aSAndroid Build Coastguard Worker if (pw_cpu_exception_ENTRY_BACKEND != "") { 65*61c4878aSAndroid Build Coastguard Worker ldflags = [ 66*61c4878aSAndroid Build Coastguard Worker "-Wl,--defsym=HardFault_Handler=pw_cpu_exception_Entry", 67*61c4878aSAndroid Build Coastguard Worker "-Wl,--defsym=MemManage_Handler=pw_cpu_exception_Entry", 68*61c4878aSAndroid Build Coastguard Worker "-Wl,--defsym=BusFault_Handler=pw_cpu_exception_Entry", 69*61c4878aSAndroid Build Coastguard Worker "-Wl,--defsym=UsageFault_Handler=pw_cpu_exception_Entry", 70*61c4878aSAndroid Build Coastguard Worker "-Wl,--defsym=NMI_Handler=pw_cpu_exception_Entry", 71*61c4878aSAndroid Build Coastguard Worker ] 72*61c4878aSAndroid Build Coastguard Worker } 73*61c4878aSAndroid Build Coastguard Worker} 74*61c4878aSAndroid Build Coastguard Worker 75*61c4878aSAndroid Build Coastguard Workerif (current_toolchain != default_toolchain) { 76*61c4878aSAndroid Build Coastguard Worker pw_source_set("boot") { 77*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":pw_malloc_active" ] 78*61c4878aSAndroid Build Coastguard Worker 79*61c4878aSAndroid Build Coastguard Worker all_dependent_configs = [ 80*61c4878aSAndroid Build Coastguard Worker ":pw_system_active", 81*61c4878aSAndroid Build Coastguard Worker ":pw_cpu_exception_active", 82*61c4878aSAndroid Build Coastguard Worker ] 83*61c4878aSAndroid Build Coastguard Worker 84*61c4878aSAndroid Build Coastguard Worker public_deps = [ "$dir_pw_third_party/ambiq:sdk" ] 85*61c4878aSAndroid Build Coastguard Worker 86*61c4878aSAndroid Build Coastguard Worker deps = [ 87*61c4878aSAndroid Build Coastguard Worker ":check_ambiq_product_defined", 88*61c4878aSAndroid Build Coastguard Worker "$dir_pw_boot", 89*61c4878aSAndroid Build Coastguard Worker "$dir_pw_boot_cortex_m", 90*61c4878aSAndroid Build Coastguard Worker "$dir_pw_preprocessor", 91*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sys_io_ambiq_sdk", 92*61c4878aSAndroid Build Coastguard Worker ] 93*61c4878aSAndroid Build Coastguard Worker 94*61c4878aSAndroid Build Coastguard Worker if (pw_malloc_BACKEND != "") { 95*61c4878aSAndroid Build Coastguard Worker deps += [ "$dir_pw_malloc" ] 96*61c4878aSAndroid Build Coastguard Worker } 97*61c4878aSAndroid Build Coastguard Worker 98*61c4878aSAndroid Build Coastguard Worker sources = [ 99*61c4878aSAndroid Build Coastguard Worker "boot.cc", 100*61c4878aSAndroid Build Coastguard Worker "vector_table.c", 101*61c4878aSAndroid Build Coastguard Worker ] 102*61c4878aSAndroid Build Coastguard Worker } 103*61c4878aSAndroid Build Coastguard Worker} 104*61c4878aSAndroid Build Coastguard Worker 105*61c4878aSAndroid Build Coastguard Workerpw_doc_group("target_docs") { 106*61c4878aSAndroid Build Coastguard Worker sources = [ "target_docs.rst" ] 107*61c4878aSAndroid Build Coastguard Worker} 108