Anders Blomdell / mbed-sdk-tools

Files at this revision

API Documentation at this revision

Comitter:
screamer
Date:
Mon Aug 29 11:56:59 2016 +0100
Parent:
29:1210849dba19
Child:
31:8ea194f6145b
Child:
32:fef1f96d5e06
Commit message:
Update tools from the mbed OS 5.1.2 release (instead of master)

Changed in this revision

add_fib.py Show diff for this revision Revisions of this file
build_api.py Show annotated file Show diff for this revision Revisions of this file
build_everything.py Show annotated file Show diff for this revision Revisions of this file
build_travis.py Show annotated file Show diff for this revision Revisions of this file
config.py Show annotated file Show diff for this revision Revisions of this file
export/gccarm.py Show annotated file Show diff for this revision Revisions of this file
export/kds.py Show annotated file Show diff for this revision Revisions of this file
export/kds_hexiwear_cproject.tmpl Show diff for this revision Revisions of this file
export/kds_hexiwear_project.tmpl Show diff for this revision Revisions of this file
export_test.py Show annotated file Show diff for this revision Revisions of this file
legacy_targets.json Show annotated file Show diff for this revision Revisions of this file
memap.py Show annotated file Show diff for this revision Revisions of this file
options.py Show annotated file Show diff for this revision Revisions of this file
targets.py Show annotated file Show diff for this revision Revisions of this file
test.py Show annotated file Show diff for this revision Revisions of this file
test/config_test/test12/mbed_app.json Show annotated file Show diff for this revision Revisions of this file
test/config_test/test16/mbed_app.json Show annotated file Show diff for this revision Revisions of this file
test/config_test/test21/mbed_app.json Show annotated file Show diff for this revision Revisions of this file
test/config_test/test22/mbed_app.json Show annotated file Show diff for this revision Revisions of this file
test/config_test/test24/mbed_app.json Show annotated file Show diff for this revision Revisions of this file
test/config_test/test26/mbed_app.json Show annotated file Show diff for this revision Revisions of this file
test/config_test/test27/mbed_app.json Show annotated file Show diff for this revision Revisions of this file
test/config_test/test28/mbed_app.json Show annotated file Show diff for this revision Revisions of this file
tests.py Show annotated file Show diff for this revision Revisions of this file
toolchains/__init__.py Show annotated file Show diff for this revision Revisions of this file
toolchains/arm.py Show annotated file Show diff for this revision Revisions of this file
toolchains/gcc.py Show annotated file Show diff for this revision Revisions of this file
toolchains/iar.py Show annotated file Show diff for this revision Revisions of this file
--- a/add_fib.py	Mon Aug 29 11:18:36 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-"""
-@copyright (c) 2012 ON Semiconductor. All rights reserved.
-ON Semiconductor is supplying this software for use with ON Semiconductor
-processor based microcontrollers only.
-THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED
-OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
-ON SEMICONDUCTOR SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL,
-INCIDENTAL, OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
-"""
-
-from __future__ import absolute_import
-from __future__ import print_function
-
-import itertools
-import binascii
-import intelhex
-
-FIB_BASE = 0x2000
-FLASH_BASE = 0x3000
-FW_REV = 0x01000100
-def ranges(i):
-    for _, b in itertools.groupby(enumerate(i), lambda x_y: x_y[1] - x_y[0]):
-        b = list(b)
-        yield b[0][1], b[-1][1]
-
-
-def add_fib_at_start(arginput):
-    input_file = arginput + ".bin"
-    file_name_hex = arginput + "_fib.hex"
-    file_name_bin = arginput + ".bin"
-
-    # Read in hex file
-    input_hex_file = intelhex.IntelHex()
-    input_hex_file.padding = 0x00
-    input_hex_file.loadbin(input_file, offset=FLASH_BASE)
-
-    output_hex_file = intelhex.IntelHex()
-    output_hex_file.padding = 0x00
-
-    # Get the starting and ending address
-    addresses = input_hex_file.addresses()
-    addresses.sort()
-    start_end_pairs = list(ranges(addresses))
-    regions = len(start_end_pairs)
-
-    if regions == 1:
-        start, end = start_end_pairs[0]
-    else:
-        start = min(min(start_end_pairs))
-        end = max(max(start_end_pairs))
-
-    assert start >= FLASH_BASE, ("Error - start 0x%x less than begining of user\
-	flash area" %start)
-    # Compute checksum over the range (don't include data at location of crc)
-    size = end - start + 1
-    data = input_hex_file.tobinarray(start=start, size=size)
-    crc32 = binascii.crc32(data) & 0xFFFFFFFF
-
-    fw_rev = FW_REV
-
-    checksum = (start + size + crc32 + fw_rev) & 0xFFFFFFFF
-
-    print("Writing FIB: base 0x%08X, size 0x%08X, crc32 0x%08X, fw rev 0x%08X,\
-	checksum 0x%08X" % (start, size, crc32, fw_rev, checksum))
-
-#expected initial values used by daplink to validate that it is a valid bin
-#file added as dummy values in this file because the fib area preceeds the
-#application area the bootloader will ignore these dummy values
-#  00 is stack pointer (RAM address)
-#  04 is Reset vector  (FLASH address)
-#  08 NMI_Handler      (FLASH address)
-#  0C HardFault_Handler(FLASH address)
-#  10 dummy
-    dummy_sp = 0x3FFFFC00
-    dummy_reset_vector = 0x00003625
-    dummy_nmi_handler = 0x00003761
-    dummy_hardfault_handler = 0x00003691
-    dummy_blank = 0x00000000
-
-#expected fib structure
-#typedef struct fib{
-	#uint32_t base;		/**< Base offset of firmware, indicating what flash the
-	#                        firmware is in. (will never be 0x11111111) */
-	#uint32_t size;		/**< Size of the firmware */
-	#uint32_t crc;		/**< CRC32 for firmware correctness check */
-	#uint32_t rev;		/**< Revision number */
-	#uint32_t checksum;	/**< Check-sum of information block */
-#}fib_t, *fib_pt;
-
-    fib_start = FIB_BASE
-    dummy_fib_size = 20
-    fib_size = 20
-    user_code_start = FLASH_BASE
-
-    # Write FIB to the file in little endian
-    output_hex_file[fib_start + 0] = (dummy_sp >> 0) & 0xFF
-    output_hex_file[fib_start + 1] = (dummy_sp >> 8) & 0xFF
-    output_hex_file[fib_start + 2] = (dummy_sp >> 16) & 0xFF
-    output_hex_file[fib_start + 3] = (dummy_sp >> 24) & 0xFF
-
-    output_hex_file[fib_start + 4] = (dummy_reset_vector >> 0) & 0xFF
-    output_hex_file[fib_start + 5] = (dummy_reset_vector >> 8) & 0xFF
-    output_hex_file[fib_start + 6] = (dummy_reset_vector >> 16) & 0xFF
-    output_hex_file[fib_start + 7] = (dummy_reset_vector >> 24) & 0xFF
-
-    output_hex_file[fib_start + 8] = (dummy_nmi_handler >> 0) & 0xFF
-    output_hex_file[fib_start + 9] = (dummy_nmi_handler >> 8) & 0xFF
-    output_hex_file[fib_start + 10] = (dummy_nmi_handler >> 16) & 0xFF
-    output_hex_file[fib_start + 11] = (dummy_nmi_handler >> 24) & 0xFF
-
-    output_hex_file[fib_start + 12] = (dummy_hardfault_handler >> 0) & 0xFF
-    output_hex_file[fib_start + 13] = (dummy_hardfault_handler >> 8) & 0xFF
-    output_hex_file[fib_start + 14] = (dummy_hardfault_handler >> 16) & 0xFF
-    output_hex_file[fib_start + 15] = (dummy_hardfault_handler >> 24) & 0xFF
-
-    output_hex_file[fib_start + 16] = (dummy_blank >> 0) & 0xFF
-    output_hex_file[fib_start + 17] = (dummy_blank >> 8) & 0xFF
-    output_hex_file[fib_start + 18] = (dummy_blank >> 16) & 0xFF
-    output_hex_file[fib_start + 19] = (dummy_blank >> 24) & 0xFF
-
-    # Write FIB to the file in little endian
-    output_hex_file[fib_start + 20] = (start >> 0) & 0xFF
-    output_hex_file[fib_start + 21] = (start >> 8) & 0xFF
-    output_hex_file[fib_start + 22] = (start >> 16) & 0xFF
-    output_hex_file[fib_start + 23] = (start >> 24) & 0xFF
-
-    output_hex_file[fib_start + 24] = (size >> 0) & 0xFF
-    output_hex_file[fib_start + 25] = (size >> 8) & 0xFF
-    output_hex_file[fib_start + 26] = (size >> 16) & 0xFF
-    output_hex_file[fib_start + 27] = (size >> 24) & 0xFF
-
-    output_hex_file[fib_start + 28] = (crc32 >> 0) & 0xFF
-    output_hex_file[fib_start + 29] = (crc32 >> 8) & 0xFF
-    output_hex_file[fib_start + 30] = (crc32 >> 16) & 0xFF
-    output_hex_file[fib_start + 31] = (crc32 >> 24) & 0xFF
-
-    output_hex_file[fib_start + 32] = (fw_rev >> 0) & 0xFF
-    output_hex_file[fib_start + 33] = (fw_rev >> 8) & 0xFF
-    output_hex_file[fib_start + 34] = (fw_rev >> 16) & 0xFF
-    output_hex_file[fib_start + 35] = (fw_rev >> 24) & 0xFF
-
-    output_hex_file[fib_start + 36] = (checksum >> 0) & 0xFF
-    output_hex_file[fib_start + 37] = (checksum >> 8) & 0xFF
-    output_hex_file[fib_start + 38] = (checksum >> 16) & 0xFF
-    output_hex_file[fib_start + 39] = (checksum >> 24) & 0xFF
-
-    #pad the rest of the file
-    for i in range(fib_start + dummy_fib_size + fib_size, user_code_start):
-        output_hex_file[i] = 0xFF
-
-    #merge two hex files
-    output_hex_file.merge(input_hex_file, overlap='error')
-
-    # Write out file(s)
-    output_hex_file.tofile(file_name_hex, 'hex')
-    output_hex_file.tofile(file_name_bin, 'bin')
-	
\ No newline at end of file
--- a/build_api.py	Mon Aug 29 11:18:36 2016 +0100
+++ b/build_api.py	Mon Aug 29 11:56:59 2016 +0100
@@ -17,19 +17,21 @@
 
 import re
 import tempfile
+
 from types import ListType
 from shutil import rmtree
 from os.path import join, exists, basename, abspath, normpath, dirname
-from os import linesep, remove
+from os import linesep
 from time import time
 
 from tools.utils import mkdir, run_cmd, run_cmd_ext, NotSupportedException,\
     ToolException, InvalidReleaseTargetException
 from tools.paths import MBED_TARGETS_PATH, MBED_LIBRARIES, MBED_API, MBED_HAL,\
     MBED_COMMON, MBED_CONFIG_FILE
-from tools.targets import TARGET_NAMES, TARGET_MAP, set_targets_json_location
+from tools.targets import TARGET_NAMES, TARGET_MAP
 from tools.libraries import Library
 from tools.toolchains import TOOLCHAIN_CLASSES, mbedToolchain
+from tools.targets import set_targets_json_location
 from tools.build_profiles import find_build_profile, get_toolchain_profile, find_targets_json
 from jinja2 import FileSystemLoader
 from jinja2.environment import Environment
@@ -199,12 +201,12 @@
                     ("following toolchains: %s" %
                      ", ".join(supported_toolchains_sorted))
 
-            elif not target.default_lib == 'std':
+            elif not target.default_build == 'standard':
                 result = False
                 reason = ("Target '%s' must set the " % target.name) + \
-                    ("'default_lib' to 'std' to be included in the ") + \
+                    ("'default_build' to 'standard' to be included in the ") + \
                     ("mbed OS 5.0 official release." + linesep) + \
-                    ("Currently it is set to '%s'" % target.default_lib)
+                    ("Currently it is set to '%s'" % target.default_build)
 
         else:
             result = False
@@ -527,8 +529,7 @@
                   dependencies_paths=None, options=None, name=None, clean=False,
                   archive=True, notify=None, verbose=False, macros=None,
                   inc_dirs=None, jobs=1, silent=False, report=None,
-                  properties=None, extra_verbose=False, project_id=None,
-                  remove_config_header_file=False):
+                  properties=None, extra_verbose=False, project_id=None):
     """ Build a library
 
     Positional arguments:
@@ -554,7 +555,6 @@
     properties - UUUUHHHHH beats me
     extra_verbose - even more output!
     project_id - the name that goes in the report
-    remove_config_header_file - delete config header file when done building
     """
 
     # Convert src_path to a list if needed
@@ -622,8 +622,6 @@
         toolchain.copy_files(resources.objects, build_path, resources=resources)
         toolchain.copy_files(resources.libraries, build_path,
                              resources=resources)
-        toolchain.copy_files(resources.json_files, build_path,
-                             resources=resources)
         if resources.linker_script:
             toolchain.copy_files(resources.linker_script, build_path,
                                  resources=resources)
@@ -640,11 +638,6 @@
         if archive:
             toolchain.build_library(objects, build_path, name)
 
-        if remove_config_header_file:
-            config_header_path = toolchain.get_config_header()
-            if config_header_path:
-                remove(config_header_path)
-
         if report != None:
             end = time()
             cur_result["elapsed_time"] = end - start
--- a/build_everything.py	Mon Aug 29 11:18:36 2016 +0100
+++ b/build_everything.py	Mon Aug 29 11:56:59 2016 +0100
@@ -147,6 +147,7 @@
         if not base_source_paths:
             base_source_paths = ['.']
         
+        all_tests = find_tests(base_source_paths[0])
         
         start = time()    
         build_report = {}
@@ -179,7 +180,6 @@
                     
                 if options.continue_on_build_fail or library_build_success:
                     # Build all the tests
-                    all_tests = find_tests(base_source_paths[0], target_name, toolchain_name)
                     test_build_success, test_build = build_tests(all_tests, [build_directory], build_directory, target, target_toolchain,
                             clean=options.clean,
                             report=build_report,
--- a/build_travis.py	Mon Aug 29 11:18:36 2016 +0100
+++ b/build_travis.py	Mon Aug 29 11:56:59 2016 +0100
@@ -113,7 +113,6 @@
 
     { "target": "MAXWSNENV",    "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
     { "target": "MAX32600MBED", "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
-    { "target": "MAX32620HSP",  "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
 
     { "target": "RZ_A1H", "toolchains": "GCC_ARM", "libs": ["fat"] },
 
--- a/config.py	Mon Aug 29 11:18:36 2016 +0100
+++ b/config.py	Mon Aug 29 11:56:59 2016 +0100
@@ -774,15 +774,14 @@
                 if macro.macro_value:
                     header_data += ("#define {0:<{1}} {2!s:<{3}}" +
                                     " // defined by {4}\n")\
-                        .format(macro.macro_name, max_macro_name_len,
-                                macro.macro_value, max_macro_val_len,
-                                macro.defined_by)
+                        .format(m.macro_name, max_macro_name_len, m.macro_value,
+                                max_macro_val_len, m.defined_by)
                 else:
                     header_data += ("#define {0:<{1}}" +
                                     " // defined by {2}\n")\
-                        .format(macro.macro_name,
+                        .format(m.macro_name,
                                 max_macro_name_len + max_macro_val_len + 1,
-                                macro.defined_by)
+                                m.defined_by)
         header_data += "\n#endif\n"
         # If fname is given, write "header_data" to it
         if fname:
--- a/export/gccarm.py	Mon Aug 29 11:18:36 2016 +0100
+++ b/export/gccarm.py	Mon Aug 29 11:56:59 2016 +0100
@@ -99,7 +99,6 @@
         'DISCO_F334C8',
         'MAX32600MBED',
         'MAXWSNENV',
-        'MAX32620HSP',
         'MTS_MDOT_F405RG',
         'MTS_MDOT_F411RE',
         'NUCLEO_L152RE',
--- a/export/kds.py	Mon Aug 29 11:18:36 2016 +0100
+++ b/export/kds.py	Mon Aug 29 11:56:59 2016 +0100
@@ -24,7 +24,6 @@
 
     TARGETS = [
         'K64F',
-        'HEXIWEAR',
         'K22F',
     ]
 
--- a/export/kds_hexiwear_cproject.tmpl	Mon Aug 29 11:18:36 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,306 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
-	<storageModule moduleId="org.eclipse.cdt.core.settings">
-		<cconfiguration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026">
-			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026" moduleId="org.eclipse.cdt.core.settings" name="Debug">
-				<externalSettings/>
-				<extensions>
-					<extension id="org.eclipse.cdt.managedbuilder.core.ManagedBuildManager" point="org.eclipse.cdt.core.ScannerInfoProvider"/>
-					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
-					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-				</extensions>
-			</storageModule>
-			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
-				<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026" name="Debug" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug">
-					<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026." name="/" resourcePath="">
-						<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug.1221610645" name="Cross ARM GCC" nonInternalBuilderId="ilg.gnuarmeclipse.managedbuild.cross.builder" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug">
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.1271983492" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.none" valueType="enumerated"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.1681866628" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" value="true" valueType="boolean"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.1550050553" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" value="true" valueType="boolean"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.2126138943" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" value="true" valueType="boolean"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections.1492840277" name="Data sections (-fdata-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections" value="true" valueType="boolean"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.1058622512" name="Debug level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.default" valueType="enumerated"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.1583945235" name="Debug format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.gdb" valueType="enumerated"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family.1089911925" name="ARM family" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcpu.cortex-m4" valueType="enumerated"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.77844367" name="Float ABI" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.softfp" valueType="enumerated"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.353876552" name="FPU Type" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.fpv4spd16" valueType="enumerated"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name.1308049896" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name" value="Custom" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix.560926624" name="Prefix" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix" value="arm-none-eabi-" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.c.660978974" name="C compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.c" value="gcc" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp.1169416449" name="C++ compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp" value="g++" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy.1545312724" name="Hex/Bin converter" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy" value="objcopy" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump.2106299868" name="Listing generator" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump" value="objdump" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.size.880150025" name="Size command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.size" value="size" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.make.1449434602" name="Build command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.make" value="make" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm.1638755745" name="Remove command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm" value="rm" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn.1500383066" name="Enable all common warnings (-Wall)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn" value="true" valueType="boolean"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.1422858690" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash.1453349108" name="Create flash image" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash" value="true" valueType="boolean"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin.918192766" name="Disable builtin (-fno-builtin)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin" value="true" valueType="boolean"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.845411621" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other" value="" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.prof.2076910080" name="Generate prof information (-p)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.prof" value="false" valueType="boolean"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.gprof.1002876099" name="Generate gprof information (-pg)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.gprof" value="false" valueType="boolean"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize.371856963" name="Print size" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize" value="true" valueType="boolean"/>
-							<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.2090214221" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
-							<builder autoBuildTarget="all" buildPath="${workspace_loc:/{{name}}}/Debug" cleanBuildTarget="clean" command="${cross_make}" id="org.eclipse.cdt.build.core.internal.builder.2045347460" incrementalBuildTarget="all" managedBuildOn="true" name="CDT Internal Builder" superClass="org.eclipse.cdt.build.core.internal.builder"/>
-							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.774448198" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.874144438" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs.1457752231" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs" valueType="definedSymbols">
-                                  {% for s in symbols %}
-                                    <listOptionValue builtIn="false" value="{{s}}"/>
-                                  {% endfor %}
-								</option>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1240528565" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths" valueType="includePath">
-                                    {% for path in include_paths %}
-                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
-                                    {% endfor %}
-								</option>
-								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.645447748" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
-							</tool>
-							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1023327076" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.655157579" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.c99" valueType="enumerated"/>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.1298012181" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath">
-                                    {% for path in include_paths %}
-                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
-                                    {% endfor %}
-								</option>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.26057600" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" valueType="definedSymbols">
-                                  {% for s in symbols %}
-                                    <listOptionValue builtIn="false" value="{{s}}"/>
-                                  {% endfor %}
-								</option>
-								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.247734571" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input"/>
-							</tool>
-							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.248936164" name="Cross ARM C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler">
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths.1551083554" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths" valueType="includePath">
-                                    {% for path in include_paths %}
-                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
-                                    {% endfor %}
-								</option>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.1601945676" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
-                                  {% for s in symbols %}
-                                    <listOptionValue builtIn="false" value="{{s}}"/>
-                                  {% endfor %}
-								</option>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.noexceptions.73762833" name="Do not use exceptions (-fno-exceptions)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.noexceptions" useByScannerDiscovery="true" value="true" valueType="boolean"/>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.nortti.1541205451" name="Do not use RTTI (-fno-rtti)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.nortti" useByScannerDiscovery="true" value="true" valueType="boolean"/>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std.2072412260" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std.default" valueType="enumerated"/>
-								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.2029463372" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input"/>
-							</tool>
-							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.1882430856" name="Cross ARM C Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker">
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections.339583643" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections" value="true" valueType="boolean"/>
-							</tool>
-							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.1999194416" name="Cross ARM C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker">
-					<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections.344980185" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections" value="true" valueType="boolean"/>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths.727573047" name="Library search path (-L)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths" valueType="libPaths">
-								{% if libraries %}
-									{% for path in include_paths %}
-                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
-                                    {% endfor %}
-                                {% endif %}
-								</option>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile.828171482" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile" valueType="stringList">
-									<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/{{linker_script}}}"/>
-								</option>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs.310068762" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs" valueType="libs">
-                                    {% for lib in libraries %}
-                                    <listOptionValue builtIn="false" value="{{lib}}"/>
-                                    {% endfor %}
-								</option>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs.460736806" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs" valueType="userObjs">
-                                    {% for path in object_files %}
-                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
-                                    {% endfor %}
-                                </option>
-                                <option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other.30848869" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other" value="-specs=nosys.specs" valueType="string"/>
-								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input.1081415325" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input">
-									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
-									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
-								</inputType>
-							</tool>
-							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.1216251638" name="Cross ARM GNU Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"/>
-							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.1820796904" name="Cross ARM GNU Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash">
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.70927688" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
-							</tool>
-							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.721327636" name="Cross ARM GNU Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.625552450" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"/>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders.263758416" name="Display all headers (--all-headers|-x)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders" value="true" valueType="boolean"/>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle.1024069673" name="Demangle names (--demangle|-C)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle" value="true" valueType="boolean"/>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers.1043375284" name="Display line numbers (--line-numbers|-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers" value="true" valueType="boolean"/>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide.1671601569" name="Wide lines (--wide|-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide" value="true" valueType="boolean"/>
-							</tool>
-							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize.171400698" name="Cross ARM GNU Print Size" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize">
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format.1102568395" name="Size format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format"/>
-							</tool>
-						</toolChain>
-					</folderInfo>
-				</configuration>
-			</storageModule>
-			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
-		</cconfiguration>
-		<cconfiguration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787">
-			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787" moduleId="org.eclipse.cdt.core.settings" name="Release">
-				<externalSettings/>
-				<extensions>
-					<extension id="org.eclipse.cdt.managedbuilder.core.ManagedBuildManager" point="org.eclipse.cdt.core.ScannerInfoProvider"/>
-					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
-					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-				</extensions>
-			</storageModule>
-			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
-				<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787" name="Release" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
-					<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787." name="/" resourcePath="">
-						<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.765163102" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.1271983492" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.size" valueType="enumerated"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.1681866628" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" value="true" valueType="boolean"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.1550050553" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" value="true" valueType="boolean"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.2126138943" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" value="true" valueType="boolean"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections.1492840277" name="Data sections (-fdata-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections" value="true" valueType="boolean"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.1058622512" name="Debug level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.default" valueType="enumerated"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.1583945235" name="Debug format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.gdb" valueType="enumerated"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family.1089911925" name="ARM family" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcpu.cortex-m4" valueType="enumerated"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.77844367" name="Float ABI" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.softfp" valueType="enumerated"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.353876552" name="FPU Type" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.fpv4spd16" valueType="enumerated"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name.1308049896" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name" value="Custom" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix.560926624" name="Prefix" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix" value="arm-none-eabi-" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.c.660978974" name="C compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.c" value="gcc" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp.1169416449" name="C++ compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp" value="g++" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy.1545312724" name="Hex/Bin converter" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy" value="objcopy" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump.2106299868" name="Listing generator" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump" value="objdump" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.size.880150025" name="Size command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.size" value="size" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.make.1449434602" name="Build command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.make" value="make" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm.1638755745" name="Remove command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm" value="rm" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn.1500383066" name="Enable all common warnings (-Wall)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn" value="true" valueType="boolean"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.1422858690" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash.1453349108" name="Create flash image" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash" value="true" valueType="boolean"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin.918192766" name="Disable builtin (-fno-builtin)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin" value="true" valueType="boolean"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.845411621" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other" value="" valueType="string"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.prof.2076910080" name="Generate prof information (-p)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.prof" value="false" valueType="boolean"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.gprof.1002876099" name="Generate gprof information (-pg)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.gprof" value="false" valueType="boolean"/>
-							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize.371856963" name="Print size" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize" value="true" valueType="boolean"/>
-							<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.2090214221" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
-							<builder autoBuildTarget="all" buildPath="${workspace_loc:/{{name}}}/Debug" cleanBuildTarget="clean" command="${cross_make}" id="org.eclipse.cdt.build.core.internal.builder.2045347460" incrementalBuildTarget="all" managedBuildOn="true" name="CDT Internal Builder" superClass="org.eclipse.cdt.build.core.internal.builder"/>
-							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.774448198" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.874144438" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs.1457752231" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs" valueType="definedSymbols">
-	                              {% for s in symbols %}
-	                                <listOptionValue builtIn="false" value="{{s}}"/>
-	                              {% endfor %}
-								</option>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1240528565" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths" valueType="includePath">
-	                                {% for path in include_paths %}
-	                                    <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
-	                                {% endfor %}
-								</option>
-								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.645447748" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
-							</tool>
-							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1023327076" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.655157579" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.c99" valueType="enumerated"/>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.1298012181" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath">
-	                                {% for path in include_paths %}
-	                                    <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
-	                                {% endfor %}
-								</option>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.26057600" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" valueType="definedSymbols">
-	                              {% for s in symbols %}
-	                                <listOptionValue builtIn="false" value="{{s}}"/>
-	                              {% endfor %}
-								</option>
-								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.247734571" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input"/>
-							</tool>
-							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.248936164" name="Cross ARM C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler">
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths.1551083554" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths" valueType="includePath">
-	                                {% for path in include_paths %}
-	                                    <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
-	                                {% endfor %}
-								</option>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.1601945676" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
-	                              {% for s in symbols %}
-	                                <listOptionValue builtIn="false" value="{{s}}"/>
-	                              {% endfor %}
-								</option>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.noexceptions.73762833" name="Do not use exceptions (-fno-exceptions)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.noexceptions" useByScannerDiscovery="true" value="true" valueType="boolean"/>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.nortti.1541205451" name="Do not use RTTI (-fno-rtti)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.nortti" useByScannerDiscovery="true" value="true" valueType="boolean"/>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std.2072412260" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.std.default" valueType="enumerated"/>
-								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.2029463372" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input"/>
-							</tool>
-							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.1882430856" name="Cross ARM C Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker">
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections.339583643" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections" value="true" valueType="boolean"/>
-							</tool>
-							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.1999194416" name="Cross ARM C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker">
-					<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections.344980185" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections" value="true" valueType="boolean"/>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths.727573047" name="Library search path (-L)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths" valueType="libPaths">
-								{% if libraries %}
-									{% for path in include_paths %}
-	                                    <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
-	                                {% endfor %}
-	                            {% endif %}
-								</option>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile.828171482" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile" valueType="stringList">
-									<listOptionValue builtIn="false" value="${workspace_loc:/${ProjName}/{{linker_script}}}"/>
-								</option>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs.310068762" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs" valueType="libs">
-	                                {% for lib in libraries %}
-	                                <listOptionValue builtIn="false" value="{{lib}}"/>
-	                                {% endfor %}
-								</option>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs.460736806" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs" valueType="userObjs">
-	                                {% for path in object_files %}
-	                                    <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/{{path}}}&quot;"/>
-	                                {% endfor %}
-	                            </option>
-	                            <option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other.30848869" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other" value="-specs=nosys.specs" valueType="string"/>
-								<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input.1081415325" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input">
-									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
-									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
-								</inputType>
-							</tool>
-							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.1216251638" name="Cross ARM GNU Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"/>
-							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.1820796904" name="Cross ARM GNU Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash">
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.70927688" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
-							</tool>
-							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.721327636" name="Cross ARM GNU Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.625552450" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"/>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders.263758416" name="Display all headers (--all-headers|-x)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders" value="true" valueType="boolean"/>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle.1024069673" name="Demangle names (--demangle|-C)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle" value="true" valueType="boolean"/>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers.1043375284" name="Display line numbers (--line-numbers|-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers" value="true" valueType="boolean"/>
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide.1671601569" name="Wide lines (--wide|-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide" value="true" valueType="boolean"/>
-							</tool>
-							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize.171400698" name="Cross ARM GNU Print Size" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize">
-								<option id="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format.1102568395" name="Size format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format"/>
-							</tool>
-						</toolChain>
-					</folderInfo>
-				</configuration>
-			</storageModule>
-			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
-		</cconfiguration>
-	</storageModule>
-	<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
-	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
-		<project id="{{name}}.ilg.gnuarmeclipse.managedbuild.cross.target.elf.829438011" name="Executable" projectType="ilg.gnuarmeclipse.managedbuild.cross.target.elf"/>
-	</storageModule>
-	<storageModule moduleId="scannerConfiguration">
-		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
-		<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026;ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1023327076;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.247734571">
-			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
-		</scannerConfigBuildInfo>
-		<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787;ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787.;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.307634730;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.1070359138">
-			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
-		</scannerConfigBuildInfo>
-		<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026;ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.637912026.;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.248936164;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.2029463372">
-			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
-		</scannerConfigBuildInfo>
-		<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787;ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1382253787.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1300731881;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.690792246">
-			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
-		</scannerConfigBuildInfo>
-	</storageModule>
-</cproject>
--- a/export/kds_hexiwear_project.tmpl	Mon Aug 29 11:18:36 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>{{name}}</name>
-	<comment>This file was automagically generated by mbed.org. For more information, see http://mbed.org/handbook/Exporting-To-KDS</comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
-			<triggers>clean,full,incremental,</triggers>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
-			<triggers>full,incremental,</triggers>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.cdt.core.cnature</nature>
-		<nature>org.eclipse.cdt.core.ccnature</nature>
-		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
-		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
-	</natures>
-</projectDescription>
--- a/export_test.py	Mon Aug 29 11:18:36 2016 +0100
+++ b/export_test.py	Mon Aug 29 11:56:59 2016 +0100
@@ -155,7 +155,6 @@
             ('uvision', 'MTS_MDOT_F405RG'),
             ('uvision', 'MAXWSNENV'),
             ('uvision', 'MAX32600MBED'),
-            ('uvision', 'MAX32620HSP'),
             ('uvision', 'DISCO_F051R8'),
             ('uvision', 'DISCO_F103RB'),
             ('uvision', 'DISCO_F303VC'),
@@ -227,7 +226,6 @@
             ('gcc_arm', 'RZ_A1H'),
             ('gcc_arm', 'MAXWSNENV'),
             ('gcc_arm', 'MAX32600MBED'),
-            ('gcc_arm', 'MAX32620HSP'),
             ('gcc_arm', 'ARCH_BLE'),
             ('gcc_arm', 'ARCH_MAX'),
             ('gcc_arm', 'ARCH_PRO'),
@@ -289,7 +287,6 @@
             ('iar', 'MTS_MDOT_F411RE'),
             ('iar', 'MAXWSNENV'),
             ('iar', 'MAX32600MBED'),
-            ('iar', 'MAX32620HSP'),
             ('iar', 'MOTE_L152RC'),
             ('iar', 'RZ_A1H'),
 
--- a/legacy_targets.json	Mon Aug 29 11:18:36 2016 +0100
+++ b/legacy_targets.json	Mon Aug 29 11:56:59 2016 +0100
@@ -70,7 +70,7 @@
         },
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "LPC11U24": {
         "inherits": ["LPCTarget"],
@@ -84,7 +84,7 @@
         "detect_code": ["1040"],
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOCALFILESYSTEM", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "OC_MBUINO": {
         "inherits": ["LPC11U24"],
@@ -94,7 +94,7 @@
         },
         "extra_labels": ["NXP", "LPC11UXX"],
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "LPC11U24_301": {
         "inherits": ["LPCTarget"],
@@ -116,7 +116,7 @@
         "inherits": ["LPC11U34_421"],
         "macros": ["LPC11U34_421", "APPNEARME_MICRONFCBOARD"],
         "extra_labels_add": ["APPNEARME_MICRONFCBOARD"],
-        "release": true
+        "release_versions": ["2"]
     },
     "LPC11U35_401": {
         "inherits": ["LPCTarget"],
@@ -129,7 +129,7 @@
         },
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "LPC11U35_501": {
         "inherits": ["LPCTarget"],
@@ -142,7 +142,7 @@
         },
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "LPC11U35_501_IBDAP": {
         "inherits": ["LPCTarget"],
@@ -167,7 +167,7 @@
         },
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "LPC11U35_Y5_MBUG": {
         "inherits": ["LPCTarget"],
@@ -211,7 +211,7 @@
         },
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "LPC11U68": {
         "supported_form_factors": ["ARDUINO"],
@@ -226,7 +226,7 @@
         "detect_code": ["1168"],
         "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "LPC1347": {
         "inherits": ["LPCTarget"],
@@ -235,7 +235,7 @@
         "extra_labels": ["NXP", "LPC13XX"],
         "supported_toolchains": ["ARM", "GCC_ARM", "IAR"],
         "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "LPC1549": {
         "supported_form_factors": ["ARDUINO"],
@@ -250,7 +250,7 @@
         "detect_code": ["1549"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "INTERRUPTIN", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "LPC1768": {
         "inherits": ["LPCTarget"],
@@ -260,7 +260,7 @@
         "progen": {"target": "mbed-lpc1768"},
         "detect_code": ["1010"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "DEBUG_AWARENESS", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOCALFILESYSTEM", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "ARCH_PRO": {
         "supported_form_factors": ["ARDUINO"],
@@ -271,7 +271,7 @@
         "inherits": ["LPCTarget"],
         "progen": {"target": "arch-pro"},
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "DEBUG_AWARENESS", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "UBLOX_C027": {
         "supported_form_factors": ["ARDUINO"],
@@ -282,7 +282,7 @@
         "inherits": ["LPCTarget"],
         "progen": {"target": "ublox-c027"},
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "DEBUG_AWARENESS", "ERROR_RED", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "XBED_LPC1768": {
         "inherits": ["LPCTarget"],
@@ -301,7 +301,7 @@
         "extra_labels": ["NXP", "LPC23XX"],
         "supported_toolchains": ["GCC_ARM", "GCC_CR"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOCALFILESYSTEM", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "LPC2460": {
         "inherits": ["LPCTarget"],
@@ -310,7 +310,7 @@
         "extra_labels": ["NXP", "LPC2460"],
         "supported_toolchains": ["GCC_ARM"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "LPC810": {
         "inherits": ["LPCTarget"],
@@ -339,7 +339,7 @@
         "detect_code": ["1050"],
         "device_has": ["ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PWMOUT", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "LPC824": {
         "supported_form_factors": ["ARDUINO"],
@@ -354,7 +354,7 @@
         },
         "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "SSCI824": {
         "inherits": ["LPCTarget"],
@@ -368,7 +368,7 @@
         },
         "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "LPC4088": {
         "inherits": ["LPCTarget"],
@@ -382,11 +382,11 @@
         },
         "progen": {"target": "lpc4088"},
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "DEBUG_AWARENESS", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "LPC4088_DM": {
         "inherits": ["LPC4088"],
-        "release": true
+        "release_versions": ["2"]
     },
     "LPC4330_M4": {
         "inherits": ["LPCTarget"],
@@ -410,7 +410,7 @@
         "extra_labels": ["NXP", "LPC43XX", "LPC4337"],
         "supported_toolchains": ["ARM"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "DEBUG_AWARENESS", "ERROR_RED", "ETHERNET", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "LPC1800": {
         "inherits": ["LPCTarget"],
@@ -431,7 +431,7 @@
         },
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "ELEKTOR_COCORICO": {
         "core": "Cortex-M0+",
@@ -459,7 +459,7 @@
         },
         "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "KL25Z": {
         "supported_form_factors": ["ARDUINO"],
@@ -471,7 +471,7 @@
         "progen": {"target": "frdm-kl25z"},
         "detect_code": ["0200"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "KL26Z": {
         "supported_form_factors": ["ARDUINO"],
@@ -492,7 +492,7 @@
         "inherits": ["Target"],
         "progen": {"target": "frdm-kl43z"},
         "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "KL46Z": {
         "supported_form_factors": ["ARDUINO"],
@@ -504,7 +504,7 @@
         "progen": {"target": "frdm-kl46z"},
         "detect_code": ["0220"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "K20D50M": {
         "inherits": ["Target"],
@@ -515,7 +515,7 @@
         "progen": {"target": "frdm-k20d50m"},
         "detect_code": ["0230"],
         "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "TEENSY3_1": {
         "inherits": ["Target"],
@@ -531,7 +531,7 @@
         "progen": {"target": "teensy-31"},
         "detect_code": ["0230"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SEMIHOST", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "K22F": {
         "supported_form_factors": ["ARDUINO"],
@@ -544,7 +544,7 @@
         "progen": {"target": "frdm-k22f"},
         "detect_code": ["0231"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "KL27Z": {
         "inherits": ["Target"],
@@ -559,7 +559,7 @@
         "progen_target": {"target": "frdm-kl27z"},
         "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "standard",
-        "release": true
+        "release_versions": ["2"]
     },
     "K64F": {
         "supported_form_factors": ["ARDUINO"],
@@ -573,7 +573,7 @@
         "detect_code": ["0240"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES", "STORAGE"],
         "features": ["IPV4"],
-        "release": true
+        "release_versions": ["2"]
     },
     "MTS_GAMBIT": {
         "inherits": ["Target"],
@@ -609,7 +609,7 @@
         "detect_code": ["0725"],
         "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_F031K6": {
         "supported_form_factors": ["ARDUINO"],
@@ -622,7 +622,7 @@
         "detect_code": ["0791"],
         "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_F042K6": {
         "supported_form_factors": ["ARDUINO"],
@@ -635,7 +635,7 @@
         "detect_code": ["0785"],
         "device_has": ["ANALOGIN", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_F070RB": {
         "supported_form_factors": ["ARDUINO", "MORPHO"],
@@ -648,7 +648,7 @@
         "detect_code": ["0755"],
         "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_F072RB": {
         "supported_form_factors": ["ARDUINO", "MORPHO"],
@@ -661,7 +661,7 @@
         "detect_code": ["0730"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_F091RC": {
         "supported_form_factors": ["ARDUINO", "MORPHO"],
@@ -674,7 +674,7 @@
         "detect_code": ["0750"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_F103RB": {
         "supported_form_factors": ["ARDUINO", "MORPHO"],
@@ -687,7 +687,7 @@
         "detect_code": ["0700"],
         "device_has": ["ANALOGIN", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_F302R8": {
         "supported_form_factors": ["ARDUINO", "MORPHO"],
@@ -700,7 +700,7 @@
         "detect_code": ["0705"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_F303K8": {
         "supported_form_factors": ["ARDUINO"],
@@ -713,7 +713,7 @@
         "detect_code": ["0775"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_F303RE": {
         "supported_form_factors": ["ARDUINO", "MORPHO"],
@@ -726,7 +726,7 @@
         "detect_code": ["0745"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_F334R8": {
         "supported_form_factors": ["ARDUINO", "MORPHO"],
@@ -739,7 +739,7 @@
         "detect_code": ["0735"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_F401RE": {
         "supported_form_factors": ["ARDUINO", "MORPHO"],
@@ -752,7 +752,7 @@
         "detect_code": ["0720"],
         "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_F410RB": {
         "supported_form_factors": ["ARDUINO", "MORPHO"],
@@ -765,7 +765,7 @@
         "detect_code": ["0740"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_F411RE": {
         "supported_form_factors": ["ARDUINO", "MORPHO"],
@@ -778,7 +778,7 @@
         "detect_code": ["0740"],
         "device_has": ["ANALOGIN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "ELMO_F411RE": {
         "supported_form_factors": ["ARDUINO"],
@@ -790,7 +790,7 @@
         "detect_code": ["----"],
         "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_F429ZI": {
         "inherits": ["Target"],
@@ -802,7 +802,7 @@
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "detect_code": ["0796"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_F446RE": {
         "supported_form_factors": ["ARDUINO", "MORPHO"],
@@ -815,7 +815,7 @@
         "detect_code": ["0777"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "standard",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_F446ZE": {
         "supported_form_factors": ["ARDUINO", "MORPHO"],
@@ -828,7 +828,7 @@
         "detect_code": ["0778"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
 
     "B96B_F446VE": {
@@ -841,7 +841,7 @@
         "detect_code": ["0840"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_ASYNCH_DMA", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_F746ZG": {
         "inherits": ["Target"],
@@ -859,7 +859,7 @@
         "detect_code": ["0816"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "features": ["IPV4"],
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_F767ZI": {
         "inherits": ["Target"],
@@ -883,7 +883,7 @@
         "detect_code": ["0780"],
         "progen": {"target":"nucleo-l011k4"},
         "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
 
     "NUCLEO_L031K6": {
@@ -897,7 +897,7 @@
         "progen": {"target": "nucleo-l031k6"},
         "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_L053R8": {
         "supported_form_factors": ["ARDUINO", "MORPHO"],
@@ -910,7 +910,7 @@
         "detect_code": ["0715"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_L073RZ": {
         "supported_form_factors": ["ARDUINO", "MORPHO"],
@@ -923,7 +923,7 @@
         "detect_code": ["0760"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_L152RE": {
         "supported_form_factors": ["ARDUINO", "MORPHO"],
@@ -936,7 +936,7 @@
         "detect_code": ["0710"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_L432KC": {
         "supported_form_factors": ["ARDUINO"],
@@ -948,7 +948,7 @@
         "progen": {"target": "nucleo-l432kc"},
         "detect_code": ["0770"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "CAN", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "NUCLEO_L476RG": {
         "supported_form_factors": ["ARDUINO", "MORPHO"],
@@ -961,7 +961,7 @@
         "detect_code": ["0765"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "STM32F3XX": {
         "inherits": ["Target"],
@@ -987,7 +987,7 @@
         "inherits": ["Target"],
         "progen": {"target": "lpc1768"},
         "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "DISCO_F051R8": {
         "inherits": ["Target"],
@@ -1026,7 +1026,7 @@
         "detect_code": ["0810"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "DISCO_F407VG": {
         "inherits": ["Target"],
@@ -1045,7 +1045,7 @@
         "progen": {"target": "disco-f429zi"},
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "DISCO_F469NI": {
         "supported_form_factors": ["ARDUINO"],
@@ -1058,7 +1058,7 @@
         "detect_code": ["0788"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "ERROR_RED", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "DISCO_L053C8": {
         "inherits": ["Target"],
@@ -1069,7 +1069,7 @@
         "progen": {"target": "disco-l053c8"},
         "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "DISCO_F746NG": {
         "inherits": ["Target"],
@@ -1081,7 +1081,7 @@
         "detect_code": ["0815"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "standard",
-        "release": true
+        "release_versions": ["2"]
     },
     "DISCO_L476VG": {
         "inherits": ["Target"],
@@ -1093,7 +1093,7 @@
         "detect_code": ["0820"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "CAN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "MTS_MDOT_F405RG": {
         "inherits": ["Target"],
@@ -1104,7 +1104,7 @@
         "macros": ["HSE_VALUE=26000000", "OS_CLOCK=48000000"],
         "progen": {"target": "mts-mdot-f405rg"},
         "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "MTS_MDOT_F411RE": {
         "inherits": ["Target"],
@@ -1118,7 +1118,7 @@
         },
         "progen": {"target": "mts-mdot-f411re"},
         "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "MTS_DRAGONFLY_F411RE": {
         "inherits": ["Target"],
@@ -1132,7 +1132,7 @@
         },
         "progen": {"target": "mts-dragonfly-f411re"},
         "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "MOTE_L152RC": {
         "inherits": ["Target"],
@@ -1144,7 +1144,7 @@
         "detect_code": ["4100"],
         "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "RTC_LSI", "SERIAL", "SLEEP", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
         "default_build": "small",
-        "release": true
+        "release_versions": ["2"]
     },
     "DISCO_F401VC": {
         "inherits": ["Target"],
@@ -1318,7 +1318,7 @@
         "extra_labels_add": ["NRF51822", "NRF51822_MKIT"],
         "macros_add": ["TARGET_NRF51822_MKIT"],
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
+        "release_versions": ["2"]
     },
     "NRF51822_BOOT": {
         "inherits": ["MCU_NRF51_16K_BOOT"],
@@ -1337,7 +1337,7 @@
         "inherits": ["MCU_NRF51_16K"],
         "progen": {"target": "arch-ble"},
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
+        "release_versions": ["2"]
     },
     "ARCH_BLE_BOOT": {
         "supported_form_factors": ["ARDUINO"],
@@ -1373,7 +1373,7 @@
         "inherits": ["MCU_NRF51_16K"],
         "progen": {"target": "seed-tinyble"},
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
+        "release_versions": ["2"]
     },
     "SEEED_TINY_BLE_BOOT": {
         "inherits": ["MCU_NRF51_16K_BOOT"],
@@ -1390,7 +1390,7 @@
         "progen": {"target": "hrm1017"},
         "macros_add": ["TARGET_NRF_LFCLK_RC"],
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
+        "release_versions": ["2"]
     },
     "HRM1017_BOOT": {
         "inherits": ["MCU_NRF51_16K_BOOT"],
@@ -1407,7 +1407,7 @@
         "inherits": ["MCU_NRF51_16K"],
         "progen": {"target": "rblab-nrf51822"},
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
+        "release_versions": ["2"]
     },
     "RBLAB_NRF51822_BOOT": {
         "supported_form_factors": ["ARDUINO"],
@@ -1424,7 +1424,7 @@
     "RBLAB_BLENANO": {
         "inherits": ["MCU_NRF51_16K"],
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
+        "release_versions": ["2"]
     },
     "RBLAB_BLENANO_BOOT": {
         "inherits": ["MCU_NRF51_16K_BOOT"],
@@ -1443,7 +1443,7 @@
     "WALLBOT_BLE": {
         "inherits": ["MCU_NRF51_16K"],
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
+        "release_versions": ["2"]
     },
     "WALLBOT_BLE_BOOT": {
         "inherits": ["MCU_NRF51_16K_BOOT"],
@@ -1461,7 +1461,7 @@
         "progen": {"target": "dfcm-nnn40"},
         "macros_add": ["TARGET_NRF_LFCLK_RC"],
         "device_has": ["ANALOGIN", "DEBUG_AWARENESS", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
+        "release_versions": ["2"]
     },
     "DELTA_DFCM_NNN40_BOOT": {
         "inherits": ["MCU_NRF51_32K_BOOT"],
@@ -1480,7 +1480,7 @@
         "inherits": ["MCU_NRF51_32K"],
         "progen": {"target": "nrf51-dk"},
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
+        "release_versions": ["2"]
     },
     "NRF51_DK_BOOT": {
         "supported_form_factors": ["ARDUINO"],
@@ -1498,7 +1498,7 @@
         "inherits": ["MCU_NRF51_32K"],
         "progen": {"target": "nrf51-dongle"},
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
+        "release_versions": ["2"]
     },
     "NRF51_DONGLE_BOOT": {
         "inherits": ["MCU_NRF51_32K_BOOT"],
@@ -1514,7 +1514,7 @@
         "inherits": ["MCU_NRF51_16K_S110"],
         "macros_add": ["TARGET_NRF_LFCLK_RC"],
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
+        "release_versions": ["2"]
     },
     "NRF51_MICROBIT_BOOT": {
         "inherits": ["MCU_NRF51_16K_BOOT_S110"],
@@ -1531,7 +1531,7 @@
         "extra_labels_add": ["NRF51_MICROBIT"],
         "macros_add": ["TARGET_NRF51_MICROBIT", "TARGET_NRF_LFCLK_RC"],
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
+        "release_versions": ["2"]
     },
     "NRF51_MICROBIT_B_BOOT": {
         "inherits": ["MCU_NRF51_16K_BOOT"],
@@ -1547,7 +1547,7 @@
         "inherits": ["MCU_NRF51_32K"],
         "macros_add": ["TARGET_NRF_32MHZ_XTAL"],
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
-        "release": true
+        "release_versions": ["2"]
     },
     "TY51822R3_BOOT": {
         "inherits": ["MCU_NRF51_32K_BOOT"],
@@ -1571,7 +1571,7 @@
         "extra_labels": ["ARM_SSG", "MPS2", "MPS2_M0"],
         "macros": ["CMSDK_CM0"],
         "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"],
-        "release": true
+        "release_versions": ["2"]
     },
     "ARM_MPS2_M0P": {
         "inherits": ["ARM_MPS2_Target"],
@@ -1580,7 +1580,7 @@
         "extra_labels": ["ARM_SSG", "MPS2", "MPS2_M0P"],
         "macros": ["CMSDK_CM0plus"],
         "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"],
-        "release": true
+        "release_versions": ["2"]
     },
     "ARM_MPS2_M1": {
         "inherits": ["ARM_MPS2_Target"],
@@ -1597,7 +1597,7 @@
         "extra_labels": ["ARM_SSG", "MPS2", "MPS2_M3"],
         "macros": ["CMSDK_CM3"],
         "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"],
-        "release": true
+        "release_versions": ["2"]
     },
     "ARM_MPS2_M4": {
         "inherits": ["ARM_MPS2_Target"],
@@ -1606,7 +1606,7 @@
         "extra_labels": ["ARM_SSG", "MPS2", "MPS2_M4"],
         "macros": ["CMSDK_CM4"],
         "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"],
-        "release": true
+        "release_versions": ["2"]
     },
     "ARM_MPS2_M7": {
         "inherits": ["ARM_MPS2_Target"],
@@ -1615,7 +1615,7 @@
         "extra_labels": ["ARM_SSG", "MPS2", "MPS2_M7"],
         "macros": ["CMSDK_CM7"],
         "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"],
-        "release": true
+        "release_versions": ["2"]
     },
     "ARM_IOTSS_Target": {
         "inherits": ["Target"],
@@ -1629,7 +1629,7 @@
         "extra_labels": ["ARM_SSG", "IOTSS", "IOTSS_BEID"],
         "macros": ["CMSDK_BEID"],
         "device_has": ["AACI", "ANALOGIN", "CLCD", "ETHERNET", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SERIAL_FC", "SPI", "SPISLAVE", "TSC"],
-        "release": true
+        "release_versions": ["2"]
     },
     "ARM_BEETLE_SOC": {
         "inherits": ["ARM_IOTSS_Target"],
@@ -1646,7 +1646,7 @@
         },
         "device_has": ["ANALOGIN", "CLCD", "I2C", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "SERIAL", "SPI"],
 	"features": ["BLE"],
-        "release": true
+        "release_versions": ["2"]
     },
     "RZ_A1H": {
         "supported_form_factors": ["ARDUINO"],
@@ -1663,7 +1663,7 @@
         },
         "device_has": ["ANALOGIN", "CAN", "ERROR_PATTERN", "ETHERNET", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
         "features": ["IPV4"],
-        "release": true
+        "release_versions": ["2"]
     },
     "VK_RZ_A1H": {
         "inherits": ["Target"],
@@ -1689,7 +1689,7 @@
         "supported_toolchains": ["GCC_ARM", "IAR", "ARM"],
         "progen": {"target": "maxwsnenv"},
         "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "MAX32600MBED": {
         "inherits": ["Target"],
@@ -1699,7 +1699,7 @@
         "supported_toolchains": ["GCC_ARM", "IAR", "ARM"],
         "progen": {"target": "max32600mbed"},
         "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_PATTERN", "I2C", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_FC", "SLEEP", "SPI", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "EFM32GG_STK3700": {
         "inherits": ["Target"],
@@ -1710,7 +1710,7 @@
         "progen": {"target": "efm32gg-stk"},
         "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_PATTERN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
         "forced_reset_timeout": 2,
-        "release": true
+        "release_versions": ["2"]
     },
     "EFM32LG_STK3600": {
         "inherits": ["Target"],
@@ -1721,7 +1721,7 @@
         "progen": {"target": "efm32lg-stk"},
         "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_PATTERN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
         "forced_reset_timeout": 2,
-        "release": true
+        "release_versions": ["2"]
     },
     "EFM32WG_STK3800": {
         "inherits": ["Target"],
@@ -1732,7 +1732,7 @@
         "progen": {"target": "efm32wg-stk"},
         "device_has": ["ANALOGIN", "ANALOGOUT", "ERROR_PATTERN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
         "forced_reset_timeout": 2,
-        "release": true
+        "release_versions": ["2"]
     },
     "EFM32ZG_STK3200": {
         "inherits": ["Target"],
@@ -1747,7 +1747,7 @@
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
         "default_build": "small",
         "forced_reset_timeout": 2,
-        "release": true
+        "release_versions": ["2"]
     },
     "EFM32HG_STK3400": {
         "inherits": ["Target"],
@@ -1762,7 +1762,7 @@
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
         "default_build": "small",
         "forced_reset_timeout": 2,
-        "release": true
+        "release_versions": ["2"]
     },
     "EFM32PG_STK3401": {
         "inherits": ["Target"],
@@ -1773,7 +1773,7 @@
         "progen": {"target": "efm32pg-stk"},
         "device_has": ["ANALOGIN", "ERROR_PATTERN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "LOWPOWERTIMER", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH", "STDIO_MESSAGES"],
         "forced_reset_timeout": 2,
-        "release": true
+        "release_versions": ["2"]
     },
     "WIZWIKI_W7500": {
         "supported_form_factors": ["ARDUINO"],
@@ -1783,7 +1783,7 @@
         "inherits": ["Target"],
         "progen": {"target": "wizwiki-w7500"},
         "device_has": ["ANALOGIN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "WIZWIKI_W7500P": {
         "supported_form_factors": ["ARDUINO"],
@@ -1793,7 +1793,7 @@
         "inherits": ["Target"],
         "progen": {"target": "wizwiki-w7500p"},
         "device_has": ["ANALOGIN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "WIZWIKI_W7500ECO": {
         "inherits": ["Target"],
@@ -1802,7 +1802,7 @@
         "extra_labels": ["WIZNET", "W7500x", "WIZwiki_W7500ECO"],
         "supported_toolchains": ["uARM", "ARM"],
         "device_has": ["ANALOGIN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SPI", "SPISLAVE", "STDIO_MESSAGES"],
-        "release": true
+        "release_versions": ["2"]
     },
     "SAMR21G18A": {
         "inherits": ["Target"],
@@ -1812,7 +1812,7 @@
         "supported_toolchains": ["GCC_ARM", "ARM", "uARM"],
         "progen": {"target": "samr21g18a"},
         "device_has": ["ANALOGIN", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH"],
-        "release": true
+        "release_versions": ["2"]
     },
     "SAMD21J18A": {
         "inherits": ["Target"],
@@ -1822,7 +1822,7 @@
         "supported_toolchains": ["GCC_ARM", "ARM", "uARM"],
         "progen": {"target": "samd21j18a"},
         "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH"],
-        "release": true
+        "release_versions": ["2"]
     },
     "SAMD21G18A": {
         "inherits": ["Target"],
@@ -1832,7 +1832,7 @@
         "supported_toolchains": ["GCC_ARM", "ARM", "uARM"],
         "progen": {"target": "samd21g18a"},
         "device_has": ["ANALOGIN", "ANALOGOUT", "I2C", "I2CSLAVE", "I2C_ASYNCH", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "RTC", "SERIAL", "SERIAL_ASYNCH", "SERIAL_FC", "SLEEP", "SPI", "SPISLAVE", "SPI_ASYNCH"],
-        "release": true
+        "release_versions": ["2"]
     },
     "SAML21J18A": {
         "inherits": ["Target"],
--- a/memap.py	Mon Aug 29 11:18:36 2016 +0100
+++ b/memap.py	Mon Aug 29 11:56:59 2016 +0100
@@ -419,6 +419,13 @@
         for i in sorted(self.modules):
 
             row = []
+            row.append(i)
+
+            for k in self.sections:
+                subtotal[k] += self.modules[i][k]
+
+            for k in self.print_sections:
+                row.append(self.modules[i][k])
 
             json_obj.append({
                 "module":i,
@@ -523,16 +530,6 @@
         for i in list(self.print_sections):
             table.align[i] = 'r'
 
-        for i in sorted(self.modules):
-            row = [i]
-
-            for k in self.sections:
-                subtotal[k] += self.modules[i][k]
-
-            for k in self.print_sections:
-                row.append(self.modules[i][k])
-
-            table.add_row(row)
 
         subtotal_row = ['Subtotals']
         for k in self.print_sections:
--- a/options.py	Mon Aug 29 11:18:36 2016 +0100
+++ b/options.py	Mon Aug 29 11:56:59 2016 +0100
@@ -75,9 +75,7 @@
                                   'run Goanna static code analyzer")'),
                             type=argparse_lowercase_hyphen_type(['save-asm',
                                                                  'debug-info',
-                                                                 'analyze',
-                                                                 'small-lib',
-                                                                 'std-lib'],
+                                                                 'analyze'],
                                                                 "build option"))
 
     return parser
--- a/targets.py	Mon Aug 29 11:18:36 2016 +0100
+++ b/targets.py	Mon Aug 29 11:56:59 2016 +0100
@@ -485,12 +485,6 @@
         with open(binf.replace(".bin", ".hex"), "w") as fileout:
             binh.tofile(fileout, format='hex')
 
-class NCS36510TargetCode:
-    @staticmethod
-    def ncs36510_addfib(t_self, resources, elf, binf):
-        from tools.add_fib import add_fib_at_start
-        print("binf ", binf)
-        add_fib_at_start(binf[:-4])
 ################################################################################
 
 # Instantiate all public targets
--- a/test.py	Mon Aug 29 11:18:36 2016 +0100
+++ b/test.py	Mon Aug 29 11:56:59 2016 +0100
@@ -177,8 +177,7 @@
                                                 macros=options.macros,
                                                 verbose=options.verbose,
                                                 notify=notify,
-                                                archive=False,
-                                                remove_config_header_file=True)
+                                                archive=False)
 
                 library_build_success = True
             except ToolException, e:
--- a/test/config_test/test12/mbed_app.json	Mon Aug 29 11:18:36 2016 +0100
+++ b/test/config_test/test12/mbed_app.json	Mon Aug 29 11:56:59 2016 +0100
@@ -4,7 +4,7 @@
             "core": "Cortex-M0",
             "extra_labels": [],
             "features": [],
-            "default_lib": "std"
+            "default_build": "standard"
         }
     },
     "target_overrides": {
--- a/test/config_test/test16/mbed_app.json	Mon Aug 29 11:18:36 2016 +0100
+++ b/test/config_test/test16/mbed_app.json	Mon Aug 29 11:56:59 2016 +0100
@@ -4,7 +4,7 @@
             "core": "Cortex-M0",
             "extra_labels": [],
             "features": [],
-            "default_lib": "std"
+            "default_build": "standard"
         }
     },
     "macros": ["APP1=10", "APP2", "LIB2_1=5"]
--- a/test/config_test/test21/mbed_app.json	Mon Aug 29 11:18:36 2016 +0100
+++ b/test/config_test/test21/mbed_app.json	Mon Aug 29 11:56:59 2016 +0100
@@ -4,7 +4,7 @@
             "core": "Cortex-M0",
             "extra_labels": [],
             "features": [],
-            "default_lib": "std"
+            "default_build": "standard"
         }
     },
     "target_overrides": {
--- a/test/config_test/test22/mbed_app.json	Mon Aug 29 11:18:36 2016 +0100
+++ b/test/config_test/test22/mbed_app.json	Mon Aug 29 11:56:59 2016 +0100
@@ -4,7 +4,7 @@
             "core": "Cortex-M0",
             "extra_labels": [],
             "features": [],
-            "default_lib": "std"
+            "default_build": "standard"
         }
     },
     "target_overrides": {
@@ -13,3 +13,4 @@
         }
     }
 }
+
--- a/test/config_test/test24/mbed_app.json	Mon Aug 29 11:18:36 2016 +0100
+++ b/test/config_test/test24/mbed_app.json	Mon Aug 29 11:56:59 2016 +0100
@@ -4,7 +4,7 @@
             "core": "Cortex-M0",
             "extra_labels": [],
             "features": [],
-            "default_lib": "std"
+            "default_build": "standard"
         }
     },
     "target_overrides": {
--- a/test/config_test/test26/mbed_app.json	Mon Aug 29 11:18:36 2016 +0100
+++ b/test/config_test/test26/mbed_app.json	Mon Aug 29 11:56:59 2016 +0100
@@ -4,7 +4,7 @@
             "core": "Cortex-M0",
             "extra_labels": [],
             "features": [],
-            "default_lib": "std"
+            "default_build": "standard"
         }
     },
     "target_overrides": {
--- a/test/config_test/test27/mbed_app.json	Mon Aug 29 11:18:36 2016 +0100
+++ b/test/config_test/test27/mbed_app.json	Mon Aug 29 11:56:59 2016 +0100
@@ -4,7 +4,8 @@
             "core": "Cortex-M0",
             "extra_labels": [],
             "features": ["IPV4"],
-            "default_lib": "std"
+            "default_build": "standard"
         }
     }
 }
+
--- a/test/config_test/test28/mbed_app.json	Mon Aug 29 11:18:36 2016 +0100
+++ b/test/config_test/test28/mbed_app.json	Mon Aug 29 11:56:59 2016 +0100
@@ -4,7 +4,7 @@
             "core": "Cortex-M0",
             "extra_labels": [],
             "features": [],
-            "default_lib": "std"
+            "default_build": "standard"
         }
     },
     "target_overrides": {
@@ -14,3 +14,4 @@
         }
     }
 }
+
--- a/tests.py	Mon Aug 29 11:18:36 2016 +0100
+++ b/tests.py	Mon Aug 29 11:56:59 2016 +0100
@@ -357,7 +357,6 @@
         "id": "MBED_BUSOUT", "description": "BusOut",
         "source_dir": join(TEST_DIR, "mbed", "bus_out"),
         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
-        "exclude_mcu": ["NUCLEO_L011K4"],
         "automated": True,
         "duration": 15,
     },
@@ -518,7 +517,6 @@
                         "NRF51_MICROBIT", "NRF51_MICROBIT_B", "NRF51_MICROBIT_BOOT",
                         "NRF51_MICROBIT_B_BOOT", "NRF51_MICROBIT_B_OTA", "NRF51_MICROBIT_OTA",
                         "HRM1017", "HRM1017_BOOT", "HRM1701_OTA",
-                        "NUCLEO_L011K4",
                         "TY51822R3", "TY51822R3_BOOT", "TY51822R3_OTA",
                         "NRF15_DONGLE", "NRF15_DONGLE_BOOT", "NRF15_DONGLE_OTA",
                         "ARCH_BLE", "ARCH_BLE_BOOT", "ARCH_BLE_OTA",
@@ -669,14 +667,12 @@
         "id": "MBED_37", "description": "Serial NC RX",
         "source_dir": join(TEST_DIR, "mbed", "serial_nc_rx"),
         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
-        "exclude_mcu": ["NUCLEO_L011K4"],
         "automated": True
     },
     {
         "id": "MBED_38", "description": "Serial NC TX",
         "source_dir": join(TEST_DIR, "mbed", "serial_nc_tx"),
         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
-        "exclude_mcu": ["NUCLEO_L011K4"],
         "automated": True
     },
     {
@@ -1085,7 +1081,6 @@
         "id": "EXAMPLE_1", "description": "/dev/null",
         "source_dir": join(TEST_DIR, "mbed", "dev_null"),
         "dependencies": [MBED_LIBRARIES, TEST_MBED_LIB],
-        "exclude_mcu": ["NUCLEO_L011K4"],
         "automated": True,
         #"host_test" : "dev_null_auto",
     },
--- a/toolchains/__init__.py	Mon Aug 29 11:18:36 2016 +0100
+++ b/toolchains/__init__.py	Mon Aug 29 11:56:59 2016 +0100
@@ -188,23 +188,6 @@
 }
 
 
-def check_toolchain_path(function):
-    """Check if the path to toolchain is valid. Exit if not.
-    Use this function as a decorator.  Causes a system exit if the path does
-    not exist. Execute the function as normal if the path does exist.
-
-    Positional arguments:
-    function -- the function to decorate
-    """
-    def perform_check(self, *args, **kwargs):
-        if not exists(self.toolchain_path) and not exists(self.toolchain_path+'.exe'):
-            error_string = 'Could not find executable for %s.\n Currently ' \
-                           'set search path: %s'% (self.name, self.toolchain_path)
-            raise Exception(error_string)
-        return function(self, *args, **kwargs)
-    return perform_check
-
-
 class mbedToolchain:
     # Verbose logging
     VERBOSE = True
@@ -719,7 +702,6 @@
 
     # THIS METHOD IS BEING CALLED BY THE MBED ONLINE BUILD SYSTEM
     # ANY CHANGE OF PARAMETERS OR RETURN VALUES WILL BREAK COMPATIBILITY
-    @check_toolchain_path
     def compile_sources(self, resources, build_path, inc_dirs=None):
         # Web IDE progress bar for project build
         files_to_compile = resources.s_sources + resources.c_sources + resources.cpp_sources
@@ -918,7 +900,6 @@
             else:
                 raise ToolException(_stderr)
 
-    @check_toolchain_path
     def build_library(self, objects, dir, name):
         needed_update = False
         lib = self.STD_LIB_NAME % name
@@ -930,7 +911,6 @@
 
         return needed_update
 
-    @check_toolchain_path
     def link_program(self, r, tmp_path, name):
         needed_update = False
         ext = 'bin'
--- a/toolchains/arm.py	Mon Aug 29 11:18:36 2016 +0100
+++ b/toolchains/arm.py	Mon Aug 29 11:56:59 2016 +0100
@@ -15,12 +15,12 @@
 limitations under the License.
 """
 import re
-from os.path import join, dirname, splitext, basename
-from distutils.spawn import find_executable
+from os.path import join, dirname, splitext, basename, exists
 
 from tools.toolchains import mbedToolchain, TOOLCHAIN_PATHS
 from tools.hooks import hook_tool
 from tools.utils import mkdir
+import copy
 
 class ARM(mbedToolchain):
     LINKER_EXT = '.sct'
@@ -56,11 +56,6 @@
         else:
             cpu = target.core
 
-        if not TOOLCHAIN_PATHS['ARM']:
-            exe = find_executable('armcc')
-            if exe:
-                TOOLCHAIN_PATHS['ARM'] = dirname(dirname(exe))
-
         ARM_BIN = join(TOOLCHAIN_PATHS['ARM'], "bin")
         ARM_INC = join(TOOLCHAIN_PATHS['ARM'], "include")
         
@@ -86,8 +81,6 @@
         self.ar = join(ARM_BIN, "armar")
         self.elf2bin = join(ARM_BIN, "fromelf")
 
-        self.toolchain_path = TOOLCHAIN_PATHS['ARM']
-
     def parse_dependencies(self, dep_path):
         dependencies = []
         for line in open(dep_path).readlines():
--- a/toolchains/gcc.py	Mon Aug 29 11:18:36 2016 +0100
+++ b/toolchains/gcc.py	Mon Aug 29 11:56:59 2016 +0100
@@ -16,7 +16,6 @@
 """
 import re
 from os.path import join, basename, splitext, dirname, exists
-from distutils.spawn import find_executable
 
 from tools.toolchains import mbedToolchain, TOOLCHAIN_PATHS
 from tools.hooks import hook_tool
@@ -40,7 +39,7 @@
         'c': ["-std=gnu99"],
         'cxx': ["-std=gnu++98", "-fno-rtti", "-Wvla"],
         'ld': ["-Wl,--gc-sections", "-Wl,--wrap,main",
-            "-Wl,--wrap,_malloc_r", "-Wl,--wrap,_free_r", "-Wl,--wrap,_realloc_r", "-Wl,--wrap,_calloc_r"],
+            "-Wl,--wrap,_malloc_r", "-Wl,--wrap,_free_r", "-Wl,--wrap,_realloc_r"],
     }
 
     def __init__(self, target, options=None, notify=None, macros=None, silent=False, tool_path="", extra_verbose=False):
@@ -111,11 +110,6 @@
         self.ar = join(tool_path, "arm-none-eabi-ar")
         self.elf2bin = join(tool_path, "arm-none-eabi-objcopy")
 
-        if tool_path:
-            self.toolchain_path = main_cc
-        else:
-            self.toolchain_path = find_executable("arm-none-eabi-gcc") or ''
-
     def parse_dependencies(self, dep_path):
         dependencies = []
         buff = open(dep_path).readlines()
@@ -144,7 +138,7 @@
         # The warning/error notification is multiline
         msg = None
         for line in output.splitlines():
-            match = GCC.DIAGNOSTIC_PATTERN.search(line)
+            match = GCC.DIAGNOSTIC_PATTERN.match(line)
             if match is not None:
                 if msg is not None:
                     self.cc_info(msg)
@@ -279,13 +273,13 @@
         GCC.__init__(self, target, options, notify, macros, silent, TOOLCHAIN_PATHS['GCC_ARM'], extra_verbose=extra_verbose)
 
         # Use latest gcc nanolib
-        if "std-lib" in self.options:
+        if "big-build" in self.options:
             use_nano = False
-        elif "small-lib" in self.options:
+        elif "small-build" in self.options:
             use_nano = True
-        elif target.default_lib == "std":
+        elif target.default_build == "standard":
             use_nano = False
-        elif target.default_lib == "small":
+        elif target.default_build == "small":
             use_nano = True
         else:
             use_nano = False
--- a/toolchains/iar.py	Mon Aug 29 11:18:36 2016 +0100
+++ b/toolchains/iar.py	Mon Aug 29 11:56:59 2016 +0100
@@ -17,7 +17,6 @@
 import re
 from os import remove
 from os.path import join, exists, dirname, splitext, exists
-from distutils.spawn import find_executable
 
 from tools.toolchains import mbedToolchain, TOOLCHAIN_PATHS
 from tools.hooks import hook_tool
@@ -51,12 +50,6 @@
             cpuchoice = "Cortex-M7"
         else:
             cpuchoice = target.core
-
-        if not TOOLCHAIN_PATHS['IAR']:
-            exe =  find_executable('iccarm')
-            if exe:
-                TOOLCHAIN_PATHS['IAR'] = dirname(dirname(exe))
-
         # flags_cmd are used only by our scripts, the project files have them already defined,
         # using this flags results in the errors (duplication)
         # asm accepts --cpu Core or --fpu FPU, not like c/c++ --cpu=Core
@@ -108,8 +101,6 @@
         self.ar = join(IAR_BIN, "iarchive")
         self.elf2bin = join(IAR_BIN, "ielftool")
 
-        self.toolchain_path = TOOLCHAIN_PATHS['IAR']
-
     def parse_dependencies(self, dep_path):
         return [(self.CHROOT if self.CHROOT else '')+path.strip() for path in open(dep_path).readlines()
                 if (path and not path.isspace())]