# Copyright 2021 The Pigweed Authors # # Licensed under the Apache License, Version 2.0 (the "License"); you may not # use this file except in compliance with the License. You may obtain a copy of # the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations under # the License. import("//build_overrides/pigweed.gni") import("clang_config.gni") cortex_m_common_flags = [ "-mabi=aapcs", "-mthumb", ] cortex_m_software_fpu_flags = [ "-mfloat-abi=soft" ] cortex_m_hardware_fpu_flags_common = [ "-mfloat-abi=hard", # Used by some pigweed tests/targets to correctly handle hardware FPU # behavior. "-DPW_ARMV7M_ENABLE_FPU=1", ] cortex_m_hardware_fpu_flags = cortex_m_hardware_fpu_flags_common + [ "-mfpu=fpv4-sp-d16" ] cortex_m_hardware_fpu_v5_flags = cortex_m_hardware_fpu_flags_common + [ "-mfpu=fpv5-d16" ] cortex_m_hardware_fpu_v5_sp_flags = cortex_m_hardware_fpu_flags_common + [ "-mfpu=fpv5-sp-d16" ] # Default config added to all the ARM cortex M targets to link `nosys` library. config("nosys") { # TODO(prabhukr): libs = ["nosys"] did not work as expected (pwrev/133110). ldflags = [ "-lnosys" ] } config("enable_float_printf") { ldflags = [ "-Wl,-u_printf_float" ] } pw_clang_arm_config("cortex_m0plus") { cflags = [ "-mcpu=cortex-m0plus" ] cflags += cortex_m_common_flags cflags += cortex_m_software_fpu_flags asmflags = cflags ldflags = cflags } pw_clang_arm_config("cortex_m3") { cflags = [ "-mcpu=cortex-m3" ] cflags += cortex_m_common_flags cflags += cortex_m_software_fpu_flags asmflags = cflags ldflags = cflags } pw_clang_arm_config("cortex_m4") { cflags = [ "-mcpu=cortex-m4" ] cflags += cortex_m_common_flags cflags += cortex_m_software_fpu_flags asmflags = cflags ldflags = cflags } pw_clang_arm_config("cortex_m4f") { cflags = [ "-mcpu=cortex-m4" ] cflags += cortex_m_common_flags cflags += cortex_m_hardware_fpu_flags asmflags = cflags ldflags = cflags } pw_clang_arm_config("cortex_m7") { cflags = [ "-mcpu=cortex-m7" ] cflags += cortex_m_common_flags cflags += cortex_m_software_fpu_flags asmflags = cflags ldflags = cflags } pw_clang_arm_config("cortex_m7f") { cflags = [ "-mcpu=cortex-m7" ] cflags += cortex_m_common_flags cflags += cortex_m_hardware_fpu_v5_flags asmflags = cflags ldflags = cflags } pw_clang_arm_config("cortex_m33") { cflags = [ "-mcpu=cortex-m33" ] cflags += cortex_m_common_flags cflags += cortex_m_software_fpu_flags asmflags = cflags ldflags = cflags } pw_clang_arm_config("cortex_m33f") { cflags = [ "-mcpu=cortex-m33" ] cflags += cortex_m_common_flags cflags += cortex_m_hardware_fpu_v5_sp_flags asmflags = cflags ldflags = cflags }