From a92bf1c3b8f9c12d414ce2824dc7bee57ae8b04d Mon Sep 17 00:00:00 2001 From: 0xc0170 Date: Mon, 13 Jun 2016 10:13:09 +0100 Subject: [PATCH 1/5] Tools/project - project dir should be the list The project dir if using just project.py shall be a list of directories. --- tools/project.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/project.py b/tools/project.py index b28d50dfae..ed16822651 100644 --- a/tools/project.py +++ b/tools/project.py @@ -205,12 +205,12 @@ if __name__ == '__main__': # Build the project with the same directory structure of the mbed online IDE project_name = test.id - project_dir = join(EXPORT_WORKSPACE, project_name) + project_dir = [join(EXPORT_WORKSPACE, project_name)] project_temp = EXPORT_TMP - setup_user_prj(project_dir, test.source_dir, test.dependencies) + setup_user_prj(project_dir[0], test.source_dir, test.dependencies) # Export to selected toolchain - tmp_path, report = export(project_dir, project_name, ide, mcu, project_dir, project_temp, clean=clean, zip=zip, extra_symbols=lib_symbols, relative=sources_relative) + tmp_path, report = export(project_dir, project_name, ide, mcu, project_dir[0], project_temp, clean=clean, zip=zip, extra_symbols=lib_symbols, relative=sources_relative) if report['success']: zip_path = join(EXPORT_DIR, "%s_%s_%s.zip" % (project_name, ide, mcu)) if zip: From 0b2c37a17c5c72793f67b74a7cdcf59fb4ea01e1 Mon Sep 17 00:00:00 2001 From: 0xc0170 Date: Mon, 13 Jun 2016 16:44:33 +0100 Subject: [PATCH 2/5] uvision exporter - fix cxx flag - remove ld flags This was a bug, as ld flags should not be part of cxx flags. They result as some options not recognized. --- tools/export/uvision4.py | 2 +- tools/export/uvision5.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/export/uvision4.py b/tools/export/uvision4.py index fe47ada320..018ce87b78 100644 --- a/tools/export/uvision4.py +++ b/tools/export/uvision4.py @@ -71,7 +71,7 @@ class Uvision4(Exporter): project_data['tool_specific']['uvision']['misc']['c_flags'] = list(set(self.toolchain.flags['common'] + self.toolchain.flags['c'])) # not compatible with c99 flag set in the template project_data['tool_specific']['uvision']['misc']['c_flags'].remove("--c99") - project_data['tool_specific']['uvision']['misc']['cxx_flags'] = list(set(self.toolchain.flags['common'] + self.toolchain.flags['ld'])) + project_data['tool_specific']['uvision']['misc']['cxx_flags'] = list(set(self.toolchain.flags['common'])) project_data['tool_specific']['uvision']['misc']['ld_flags'] = self.toolchain.flags['ld'] i = 0 diff --git a/tools/export/uvision5.py b/tools/export/uvision5.py index 7662ffdfb2..36f51057d5 100644 --- a/tools/export/uvision5.py +++ b/tools/export/uvision5.py @@ -71,7 +71,7 @@ class Uvision5(Exporter): project_data['tool_specific']['uvision5']['misc']['c_flags'] = list(set(self.toolchain.flags['common'] + self.toolchain.flags['c'])) # not compatible with c99 flag set in the template project_data['tool_specific']['uvision5']['misc']['c_flags'].remove("--c99") - project_data['tool_specific']['uvision5']['misc']['cxx_flags'] = list(set(self.toolchain.flags['common'] + self.toolchain.flags['ld'])) + project_data['tool_specific']['uvision5']['misc']['cxx_flags'] = list(set(self.toolchain.flags['common'])) project_data['tool_specific']['uvision5']['misc']['ld_flags'] = self.toolchain.flags['ld'] i = 0 From 160030052bed0ff48a603385aa43f1cda8966620 Mon Sep 17 00:00:00 2001 From: 0xc0170 Date: Mon, 13 Jun 2016 16:55:56 +0100 Subject: [PATCH 3/5] armcc - fix include path for armcc bin file correction --- tools/toolchains/arm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/toolchains/arm.py b/tools/toolchains/arm.py index c50289dc3f..b6063dc8e6 100644 --- a/tools/toolchains/arm.py +++ b/tools/toolchains/arm.py @@ -35,7 +35,7 @@ class ARM(mbedToolchain): DEFAULT_FLAGS = { 'common': ["-c", "--gnu", "-Otime", "--split_sections", "--apcs=interwork", - "--brief_diagnostics", "--restrict", "--multibyte_chars", "-I", "\""+ARM_INC+"\""], + "--brief_diagnostics", "--restrict", "--multibyte_chars", "-I \""+ARM_INC+"\""], 'asm': [], 'c': ["--md", "--no_depend_system_headers", "--c99", "-D__ASSERT_MSG"], 'cxx': ["--cpp", "--no_rtti"], From dbc940b9b30093bafa84f8be2780e6d9fc1de8c0 Mon Sep 17 00:00:00 2001 From: 0xc0170 Date: Mon, 13 Jun 2016 17:19:55 +0100 Subject: [PATCH 4/5] uvision exporter - use only c flags cxx flags are not needed as uvision uses C/C++ tab (thus c_flags only) --- tools/export/uvision4.py | 4 ++-- tools/export/uvision5.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/export/uvision4.py b/tools/export/uvision4.py index 018ce87b78..1d639bebb3 100644 --- a/tools/export/uvision4.py +++ b/tools/export/uvision4.py @@ -68,10 +68,10 @@ class Uvision4(Exporter): # get flags from toolchain and apply project_data['tool_specific']['uvision']['misc'] = {} project_data['tool_specific']['uvision']['misc']['asm_flags'] = list(set(self.toolchain.flags['common'] + self.toolchain.flags['asm'])) - project_data['tool_specific']['uvision']['misc']['c_flags'] = list(set(self.toolchain.flags['common'] + self.toolchain.flags['c'])) + # cxx flags included, as uvision have them all in one tab + project_data['tool_specific']['uvision']['misc']['c_flags'] = list(set(self.toolchain.flags['common'] + self.toolchain.flags['c'] + self.toolchain.flags['cxx'])) # not compatible with c99 flag set in the template project_data['tool_specific']['uvision']['misc']['c_flags'].remove("--c99") - project_data['tool_specific']['uvision']['misc']['cxx_flags'] = list(set(self.toolchain.flags['common'])) project_data['tool_specific']['uvision']['misc']['ld_flags'] = self.toolchain.flags['ld'] i = 0 diff --git a/tools/export/uvision5.py b/tools/export/uvision5.py index 36f51057d5..02aba22244 100644 --- a/tools/export/uvision5.py +++ b/tools/export/uvision5.py @@ -68,10 +68,10 @@ class Uvision5(Exporter): # get flags from toolchain and apply project_data['tool_specific']['uvision5']['misc'] = {} project_data['tool_specific']['uvision5']['misc']['asm_flags'] = list(set(self.toolchain.flags['common'] + self.toolchain.flags['asm'])) - project_data['tool_specific']['uvision5']['misc']['c_flags'] = list(set(self.toolchain.flags['common'] + self.toolchain.flags['c'])) + # cxx flags included, as uvision have them all in one tab + project_data['tool_specific']['uvision5']['misc']['c_flags'] = list(set(self.toolchain.flags['common'] + self.toolchain.flags['c'] + self.toolchain.flags['cxx'])) # not compatible with c99 flag set in the template project_data['tool_specific']['uvision5']['misc']['c_flags'].remove("--c99") - project_data['tool_specific']['uvision5']['misc']['cxx_flags'] = list(set(self.toolchain.flags['common'])) project_data['tool_specific']['uvision5']['misc']['ld_flags'] = self.toolchain.flags['ld'] i = 0 From 724715002a173ba5a676c854a936465f056b2e3b Mon Sep 17 00:00:00 2001 From: 0xc0170 Date: Mon, 13 Jun 2016 17:23:29 +0100 Subject: [PATCH 5/5] uvision - flags consolidation Remove error for include system path in the exporters. Assembly does not use armcc flags, fails to build, as those are not valid armasm. --- tools/export/uvision4.py | 6 +++++- tools/export/uvision5.py | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/export/uvision4.py b/tools/export/uvision4.py index 1d639bebb3..9e9d2c61db 100644 --- a/tools/export/uvision4.py +++ b/tools/export/uvision4.py @@ -19,6 +19,7 @@ from project_generator_definitions.definitions import ProGenDef from tools.export.exporters import Exporter from tools.targets import TARGET_MAP, TARGET_NAMES +from tools.settings import ARM_INC # If you wish to add a new target, add it to project_generator_definitions, and then # define progen_target name in the target class (`` self.progen_target = 'my_target_name' ``) @@ -67,11 +68,14 @@ class Uvision4(Exporter): # get flags from toolchain and apply project_data['tool_specific']['uvision']['misc'] = {} - project_data['tool_specific']['uvision']['misc']['asm_flags'] = list(set(self.toolchain.flags['common'] + self.toolchain.flags['asm'])) + # asm flags only, common are not valid within uvision project, they are armcc specific + project_data['tool_specific']['uvision']['misc']['asm_flags'] = list(set(self.toolchain.flags['asm'])) # cxx flags included, as uvision have them all in one tab project_data['tool_specific']['uvision']['misc']['c_flags'] = list(set(self.toolchain.flags['common'] + self.toolchain.flags['c'] + self.toolchain.flags['cxx'])) # not compatible with c99 flag set in the template project_data['tool_specific']['uvision']['misc']['c_flags'].remove("--c99") + # ARM_INC is by default as system inclusion, not required for exported project + project_data['tool_specific']['uvision']['misc']['c_flags'].remove("-I \""+ARM_INC+"\"") project_data['tool_specific']['uvision']['misc']['ld_flags'] = self.toolchain.flags['ld'] i = 0 diff --git a/tools/export/uvision5.py b/tools/export/uvision5.py index 02aba22244..5daccebaa6 100644 --- a/tools/export/uvision5.py +++ b/tools/export/uvision5.py @@ -67,7 +67,8 @@ class Uvision5(Exporter): # get flags from toolchain and apply project_data['tool_specific']['uvision5']['misc'] = {} - project_data['tool_specific']['uvision5']['misc']['asm_flags'] = list(set(self.toolchain.flags['common'] + self.toolchain.flags['asm'])) + # asm flags only, common are not valid within uvision project, they are armcc specific + project_data['tool_specific']['uvision5']['misc']['asm_flags'] = list(set(self.toolchain.flags['asm'])) # cxx flags included, as uvision have them all in one tab project_data['tool_specific']['uvision5']['misc']['c_flags'] = list(set(self.toolchain.flags['common'] + self.toolchain.flags['c'] + self.toolchain.flags['cxx'])) # not compatible with c99 flag set in the template