diff --git a/tools/platformio/platformio-build.py b/tools/platformio/platformio-build.py index a6a5fb395f..99b43481e2 100644 --- a/tools/platformio/platformio-build.py +++ b/tools/platformio/platformio-build.py @@ -23,16 +23,16 @@ """ import json +import sys from os.path import isfile, isdir, join -from platformio.util import get_systype - from SCons.Script import COMMAND_LINE_TARGETS, DefaultEnvironment env = DefaultEnvironment() platform = env.PioPlatform() board_config = env.BoardConfig() +IS_WINDOWS = sys.platform.startswith("win") FRAMEWORK_DIR = platform.get_package_dir("framework-arduinoststm32") CMSIS_DIR = join(platform.get_package_dir("framework-cmsis"), "CMSIS") assert isdir(FRAMEWORK_DIR) @@ -52,7 +52,7 @@ ) variant_dir = join(variants_dir, variant) inc_variant_dir = variant_dir -if "windows" not in get_systype().lower() and not ( +if not IS_WINDOWS and not ( set(["_idedata", "idedata"]) & set(COMMAND_LINE_TARGETS) and " " not in variant_dir ): inc_variant_dir = variant_dir.replace("(", r"\(").replace(")", r"\)") @@ -116,15 +116,14 @@ def process_usb_configuration(cpp_defines): def get_arm_math_lib(cpu): - core = board_config.get("build.cpu") - if "m33" in core: + if "m33" in cpu: return "arm_ARMv8MMLlfsp_math" - elif "m4" in core: + elif "m4" in cpu: return "arm_cortexM4lf_math" - elif "m7" in core: + elif "m7" in cpu: return "arm_cortexM7lfsp_math" - return "arm_cortex%sl_math" % core[7:9].upper() + return "arm_cortex%sl_math" % cpu[7:9].upper() def configure_application_offset(mcu, upload_protocol): @@ -157,16 +156,6 @@ def configure_application_offset(mcu, upload_protocol): env.Append(LINKFLAGS=["-Wl,--defsym=LD_FLASH_OFFSET=%s" % hex(offset)]) -if ( - any(cpu in board_config.get("build.cpu") for cpu in ("cortex-m33", "cortex-m4", "cortex-m7")) - and "stm32wl" not in mcu -): - env.Append( - CCFLAGS=["-mfpu=fpv4-sp-d16", "-mfloat-abi=hard"], - LINKFLAGS=["-mfpu=fpv4-sp-d16", "-mfloat-abi=hard"], - ) - - def load_boards_remap(): remap_file = join(FRAMEWORK_DIR, "tools", "platformio", "boards_remap.json") if not isfile(remap_file): @@ -212,11 +201,23 @@ def get_arduino_board_id(board_config, mcu): return board_id.upper() - board_id = get_arduino_board_id(board_config, mcu) +machine_flags = [ + "-mcpu=%s" % board_config.get("build.cpu"), + "-mthumb", +] + +if ( + any(cpu in board_config.get("build.cpu") for cpu in ("cortex-m33", "cortex-m4", "cortex-m7")) + and "stm32wl" not in mcu +): + machine_flags.extend(["-mfpu=fpv4-sp-d16", "-mfloat-abi=hard"]) env.Append( - ASFLAGS=["-x", "assembler-with-cpp"], + ASFLAGS=machine_flags, + ASPPFLAGS=[ + "-x", "assembler-with-cpp", + ], CFLAGS=["-std=gnu11"], CXXFLAGS=[ "-std=gnu++14", @@ -225,15 +226,12 @@ def get_arduino_board_id(board_config, mcu): "-fno-exceptions", "-fno-use-cxa-atexit", ], - CCFLAGS=[ + CCFLAGS=machine_flags + [ "-Os", # optimize for size - "-mcpu=%s" % board_config.get("build.cpu"), - "-mthumb", "-ffunction-sections", # place each function in its own section "-fdata-sections", "-nostdlib", - "--param", - "max-inline-insns-single=500", + "--param", "max-inline-insns-single=500", ], CPPDEFINES=[ series, @@ -329,10 +327,8 @@ def get_arduino_board_id(board_config, mcu): join(CMSIS_DIR, "DSP", "PrivateInclude"), join(FRAMEWORK_DIR, "cores", "arduino"), ], - LINKFLAGS=[ + LINKFLAGS=machine_flags + [ "-Os", - "-mthumb", - "-mcpu=%s" % board_config.get("build.cpu"), "--specs=nano.specs", "-Wl,--gc-sections,--relax", "-Wl,--check-sections", @@ -388,9 +384,6 @@ def get_arduino_board_id(board_config, mcu): process_usb_speed_configuration(cpp_defines) process_usart_configuration(cpp_defines) -# copy CCFLAGS to ASFLAGS (-x assembler-with-cpp mode) -env.Append(ASFLAGS=env.get("CCFLAGS", [])[:]) - env.Append( LIBSOURCE_DIRS=[ join(FRAMEWORK_DIR, "libraries", "__cores__", "arduino"),