| # 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") { |
| libs = [ "nosys" ] |
| } |
| |
| 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 |
| rustflags = [ "--target=thumbv7m-none-eabi" ] |
| } |
| |
| 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 |
| } |
| |
| pw_clang_arm_config("cortex_m55") { |
| cflags = [ "-mcpu=cortex-m55" ] |
| cflags += cortex_m_common_flags |
| cflags += cortex_m_software_fpu_flags |
| asmflags = cflags |
| ldflags = cflags |
| } |