mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #3875 from theotherjimmy/export-postbuild-whitelist
Add post-build hook white-list to exporterspull/3898/head
commit
bc8e2ec887
|
@ -16,14 +16,20 @@ limitations under the License.
|
||||||
"""
|
"""
|
||||||
from os.path import splitext, basename
|
from os.path import splitext, basename
|
||||||
from tools.targets import TARGET_MAP
|
from tools.targets import TARGET_MAP
|
||||||
from tools.export.exporters import Exporter
|
from tools.export.exporters import Exporter, filter_supported
|
||||||
|
|
||||||
|
|
||||||
|
POST_BINARY_WHITELIST = set([
|
||||||
|
"TEENSY3_1Code.binary_hook"
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
class EmBitz(Exporter):
|
class EmBitz(Exporter):
|
||||||
NAME = 'EmBitz'
|
NAME = 'EmBitz'
|
||||||
TOOLCHAIN = 'GCC_ARM'
|
TOOLCHAIN = 'GCC_ARM'
|
||||||
|
|
||||||
TARGETS = [target for target, obj in TARGET_MAP.iteritems()
|
|
||||||
if "GCC_ARM" in obj.supported_toolchains]
|
TARGETS = filter_supported("GCC_ARM", POST_BINARY_WHITELIST)
|
||||||
|
|
||||||
MBED_CONFIG_HEADER_SUPPORTED = True
|
MBED_CONFIG_HEADER_SUPPORTED = True
|
||||||
|
|
||||||
|
|
|
@ -176,3 +176,20 @@ class Exporter(object):
|
||||||
def generate(self):
|
def generate(self):
|
||||||
"""Generate an IDE/tool specific project file"""
|
"""Generate an IDE/tool specific project file"""
|
||||||
raise NotImplemented("Implement a generate function in Exporter child class")
|
raise NotImplemented("Implement a generate function in Exporter child class")
|
||||||
|
|
||||||
|
|
||||||
|
def filter_supported(compiler, whitelist):
|
||||||
|
"""Generate a list of supported targets for a given compiler and post-binary hook
|
||||||
|
white-list."""
|
||||||
|
def supported_p(obj):
|
||||||
|
"""Internal inner function used for filtering"""
|
||||||
|
if compiler not in obj.supported_toolchains:
|
||||||
|
return False
|
||||||
|
if not hasattr(obj, "post_binary_hook"):
|
||||||
|
return True
|
||||||
|
if obj.post_binary_hook['function'] in whitelist:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
return list(target for target, obj in TARGET_MAP.iteritems()
|
||||||
|
if supported_p(obj))
|
||||||
|
|
|
@ -33,7 +33,7 @@ from os.path import splitext, basename, relpath, dirname, exists, join, dirname
|
||||||
from random import randint
|
from random import randint
|
||||||
from json import load
|
from json import load
|
||||||
|
|
||||||
from tools.export.exporters import Exporter
|
from tools.export.exporters import Exporter, filter_supported
|
||||||
from tools.options import list_profiles
|
from tools.options import list_profiles
|
||||||
from tools.targets import TARGET_MAP
|
from tools.targets import TARGET_MAP
|
||||||
from tools.utils import NotSupportedException
|
from tools.utils import NotSupportedException
|
||||||
|
@ -58,13 +58,16 @@ u = UID()
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
POST_BINARY_WHITELIST = set([
|
||||||
|
"TEENSY3_1Code.binary_hook",
|
||||||
|
"MCU_NRF51Code.binary_hook",
|
||||||
|
])
|
||||||
|
|
||||||
class GNUARMEclipse(Exporter):
|
class GNUARMEclipse(Exporter):
|
||||||
NAME = 'GNU ARM Eclipse'
|
NAME = 'GNU ARM Eclipse'
|
||||||
TOOLCHAIN = 'GCC_ARM'
|
TOOLCHAIN = 'GCC_ARM'
|
||||||
|
|
||||||
# Indirectly support all GCC_ARM targets.
|
TARGETS = filter_supported("GCC_ARM", POST_BINARY_WHITELIST)
|
||||||
TARGETS = [target for target, obj in TARGET_MAP.iteritems()
|
|
||||||
if 'GCC_ARM' in obj.supported_toolchains]
|
|
||||||
|
|
||||||
# override
|
# override
|
||||||
@property
|
@property
|
||||||
|
|
|
@ -21,7 +21,7 @@ import sys
|
||||||
from subprocess import check_output, CalledProcessError, Popen, PIPE
|
from subprocess import check_output, CalledProcessError, Popen, PIPE
|
||||||
import shutil
|
import shutil
|
||||||
from jinja2.exceptions import TemplateNotFound
|
from jinja2.exceptions import TemplateNotFound
|
||||||
from tools.export.exporters import Exporter
|
from tools.export.exporters import Exporter, filter_supported
|
||||||
from tools.utils import NotSupportedException
|
from tools.utils import NotSupportedException
|
||||||
from tools.targets import TARGET_MAP
|
from tools.targets import TARGET_MAP
|
||||||
|
|
||||||
|
@ -35,6 +35,11 @@ class Makefile(Exporter):
|
||||||
|
|
||||||
MBED_CONFIG_HEADER_SUPPORTED = True
|
MBED_CONFIG_HEADER_SUPPORTED = True
|
||||||
|
|
||||||
|
POST_BINARY_WHITELIST = set([
|
||||||
|
"MCU_NRF51Code.binary_hook",
|
||||||
|
"TEENSY3_1Code.binary_hook"
|
||||||
|
])
|
||||||
|
|
||||||
def generate(self):
|
def generate(self):
|
||||||
"""Generate the makefile
|
"""Generate the makefile
|
||||||
|
|
||||||
|
@ -168,8 +173,7 @@ class Makefile(Exporter):
|
||||||
|
|
||||||
class GccArm(Makefile):
|
class GccArm(Makefile):
|
||||||
"""GCC ARM specific makefile target"""
|
"""GCC ARM specific makefile target"""
|
||||||
TARGETS = [target for target, obj in TARGET_MAP.iteritems()
|
TARGETS = filter_supported("GCC_ARM", Makefile.POST_BINARY_WHITELIST)
|
||||||
if "GCC_ARM" in obj.supported_toolchains]
|
|
||||||
NAME = 'Make-GCC-ARM'
|
NAME = 'Make-GCC-ARM'
|
||||||
TEMPLATE = 'make-gcc-arm'
|
TEMPLATE = 'make-gcc-arm'
|
||||||
TOOLCHAIN = "GCC_ARM"
|
TOOLCHAIN = "GCC_ARM"
|
||||||
|
@ -187,8 +191,7 @@ class GccArm(Makefile):
|
||||||
|
|
||||||
class Armc5(Makefile):
|
class Armc5(Makefile):
|
||||||
"""ARM Compiler 5 specific makefile target"""
|
"""ARM Compiler 5 specific makefile target"""
|
||||||
TARGETS = [target for target, obj in TARGET_MAP.iteritems()
|
TARGETS = filter_supported("ARM", Makefile.POST_BINARY_WHITELIST)
|
||||||
if "ARM" in obj.supported_toolchains]
|
|
||||||
NAME = 'Make-ARMc5'
|
NAME = 'Make-ARMc5'
|
||||||
TEMPLATE = 'make-armc5'
|
TEMPLATE = 'make-armc5'
|
||||||
TOOLCHAIN = "ARM"
|
TOOLCHAIN = "ARM"
|
||||||
|
@ -206,8 +209,7 @@ class Armc5(Makefile):
|
||||||
|
|
||||||
class IAR(Makefile):
|
class IAR(Makefile):
|
||||||
"""IAR specific makefile target"""
|
"""IAR specific makefile target"""
|
||||||
TARGETS = [target for target, obj in TARGET_MAP.iteritems()
|
TARGETS = filter_supported("IAR", Makefile.POST_BINARY_WHITELIST)
|
||||||
if "IAR" in obj.supported_toolchains]
|
|
||||||
NAME = 'Make-IAR'
|
NAME = 'Make-IAR'
|
||||||
TEMPLATE = 'make-iar'
|
TEMPLATE = 'make-iar'
|
||||||
TOOLCHAIN = "IAR"
|
TOOLCHAIN = "IAR"
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
{% extends "makefile/make-gcc-arm.tmpl" %}
|
|
||||||
|
|
||||||
{% block target_project_elf %}
|
|
||||||
{{ super() }}
|
|
||||||
@echo ""
|
|
||||||
@echo "*****"
|
|
||||||
@echo "***** You must modify vector checksum value in *.bin and *.hex files."
|
|
||||||
@echo "*****"
|
|
||||||
@echo ""
|
|
||||||
{% endblock %}
|
|
||||||
|
|
Loading…
Reference in New Issue