From 8a2836f122932d309b7b5cfdf0854f37845b2d45 Mon Sep 17 00:00:00 2001 From: Brian Daniels Date: Mon, 8 Apr 2019 11:34:28 -0500 Subject: [PATCH 1/2] Fix detection of supported targets for mbed 2 builds --- tools/build.py | 4 +--- tools/build_api.py | 9 +++++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/tools/build.py b/tools/build.py index 51087c3b1d..7fd477a441 100644 --- a/tools/build.py +++ b/tools/build.py @@ -182,9 +182,8 @@ def main(): except NoValidToolchainException as e: print_end_warnings(e.end_warnings) args_error(parser, str(e)) - tt_id = "%s::%s" % (internal_tc_name, target_name) - if not target_supports_toolchain(target, toolchain): + if not target_supports_toolchain(target, toolchain_name): # Log this later print("%s skipped: toolchain not supported" % tt_id) skipped.append(tt_id) @@ -196,7 +195,6 @@ def main(): if target.is_PSA_secure_target and \ not is_relative_to_root(options.source_dir): options.source_dir = ROOT - if options.source_dir: lib_build_res = build_library( options.source_dir, options.build_dir, target, toolchain_name, diff --git a/tools/build_api.py b/tools/build_api.py index 3c301e7ce3..d65fca5d85 100755 --- a/tools/build_api.py +++ b/tools/build_api.py @@ -988,7 +988,6 @@ def build_mbed_libs(target, toolchain_name, clean=False, macros=None, #then set the default_toolchain to uARM to link AC6 microlib. if(selected_toolchain_name == "ARMC6" and toolchain_name == "uARM"): target.default_toolchain = "uARM" - toolchain_name = selected_toolchain_name if report is not None: start = time() @@ -1003,7 +1002,7 @@ def build_mbed_libs(target, toolchain_name, clean=False, macros=None, prep_properties( properties, target.name, toolchain_name, vendor_label) - if toolchain_name not in target.supported_toolchains: + if not target_supports_toolchain(target, toolchain_name): supported_toolchains_text = ", ".join(target.supported_toolchains) notify.info('The target {} does not support the toolchain {}'.format( target.name, @@ -1023,14 +1022,16 @@ def build_mbed_libs(target, toolchain_name, clean=False, macros=None, try: # Source and Build Paths + build_toolchain = join( - MBED_LIBRARIES, mbed2_obj_path(target.name, toolchain_name)) + MBED_LIBRARIES, mbed2_obj_path(target.name, selected_toolchain_name) + ) mkdir(build_toolchain) tmp_path = join( MBED_LIBRARIES, '.temp', - mbed2_obj_path(target.name, toolchain_name) + mbed2_obj_path(target.name, selected_toolchain_name) ) mkdir(tmp_path) From 11775ef11140b015b8e03061d6dc279f4e155304 Mon Sep 17 00:00:00 2001 From: Brian Daniels Date: Tue, 9 Apr 2019 12:01:48 -0500 Subject: [PATCH 2/2] Force SAMD21 and SAMR21 targets to ARMC5 due to incompatibility. The hal code for this target uses "const volatile" types inside of structs, which are non-trivially copyable in clang (used by ARMC6). This causes the build to fail. Here's the commit that changed this in clang: https://github.com/llvm-mirror/clang/commit/a3d727ba775eaecd4fd69e1c90b81732394716a6 It seems this was reverteed some time ago in clang, but ARMC6 may not be up to date. --- targets/targets.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/targets/targets.json b/targets/targets.json index 1fac9465cd..779c1bb833 100644 --- a/targets/targets.json +++ b/targets/targets.json @@ -6646,7 +6646,7 @@ "TC_ASYNC=true" ], "extra_labels": ["Atmel", "SAM_CortexM0P", "SAMR21"], - "supported_toolchains": ["GCC_ARM", "ARM", "uARM"], + "supported_toolchains": ["GCC_ARM", "ARMC5", "uARM"], "device_has": [ "ANALOGIN", "I2C", @@ -6679,7 +6679,7 @@ "TC_ASYNC=true" ], "extra_labels": ["Atmel", "SAM_CortexM0P", "SAMD21"], - "supported_toolchains": ["GCC_ARM", "ARM", "uARM"], + "supported_toolchains": ["GCC_ARM", "ARMC5", "uARM"], "device_has": [ "ANALOGIN", "ANALOGOUT", @@ -6713,7 +6713,7 @@ "TC_ASYNC=true" ], "extra_labels": ["Atmel", "SAM_CortexM0P", "SAMD21"], - "supported_toolchains": ["GCC_ARM", "ARM", "uARM"], + "supported_toolchains": ["GCC_ARM", "ARMC5", "uARM"], "device_has": [ "ANALOGIN", "ANALOGOUT", @@ -6747,7 +6747,7 @@ "TC_ASYNC=true" ], "extra_labels": ["Atmel", "SAM_CortexM0P", "SAML21"], - "supported_toolchains": ["GCC_ARM", "ARM", "uARM"], + "supported_toolchains": ["GCC_ARM", "ARMC5", "uARM"], "device_has": [ "ANALOGIN", "ANALOGOUT",