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 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):
|
||||
NAME = 'EmBitz'
|
||||
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
|
||||
|
||||
|
|
|
@ -176,3 +176,20 @@ class Exporter(object):
|
|||
def generate(self):
|
||||
"""Generate an IDE/tool specific project file"""
|
||||
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 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.targets import TARGET_MAP
|
||||
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):
|
||||
NAME = 'GNU ARM Eclipse'
|
||||
TOOLCHAIN = 'GCC_ARM'
|
||||
|
||||
# Indirectly support all GCC_ARM targets.
|
||||
TARGETS = [target for target, obj in TARGET_MAP.iteritems()
|
||||
if 'GCC_ARM' in obj.supported_toolchains]
|
||||
TARGETS = filter_supported("GCC_ARM", POST_BINARY_WHITELIST)
|
||||
|
||||
# override
|
||||
@property
|
||||
|
|
|
@ -21,7 +21,7 @@ import sys
|
|||
from subprocess import check_output, CalledProcessError, Popen, PIPE
|
||||
import shutil
|
||||
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.targets import TARGET_MAP
|
||||
|
||||
|
@ -35,6 +35,11 @@ class Makefile(Exporter):
|
|||
|
||||
MBED_CONFIG_HEADER_SUPPORTED = True
|
||||
|
||||
POST_BINARY_WHITELIST = set([
|
||||
"MCU_NRF51Code.binary_hook",
|
||||
"TEENSY3_1Code.binary_hook"
|
||||
])
|
||||
|
||||
def generate(self):
|
||||
"""Generate the makefile
|
||||
|
||||
|
@ -168,8 +173,7 @@ class Makefile(Exporter):
|
|||
|
||||
class GccArm(Makefile):
|
||||
"""GCC ARM specific makefile target"""
|
||||
TARGETS = [target for target, obj in TARGET_MAP.iteritems()
|
||||
if "GCC_ARM" in obj.supported_toolchains]
|
||||
TARGETS = filter_supported("GCC_ARM", Makefile.POST_BINARY_WHITELIST)
|
||||
NAME = 'Make-GCC-ARM'
|
||||
TEMPLATE = 'make-gcc-arm'
|
||||
TOOLCHAIN = "GCC_ARM"
|
||||
|
@ -187,8 +191,7 @@ class GccArm(Makefile):
|
|||
|
||||
class Armc5(Makefile):
|
||||
"""ARM Compiler 5 specific makefile target"""
|
||||
TARGETS = [target for target, obj in TARGET_MAP.iteritems()
|
||||
if "ARM" in obj.supported_toolchains]
|
||||
TARGETS = filter_supported("ARM", Makefile.POST_BINARY_WHITELIST)
|
||||
NAME = 'Make-ARMc5'
|
||||
TEMPLATE = 'make-armc5'
|
||||
TOOLCHAIN = "ARM"
|
||||
|
@ -206,8 +209,7 @@ class Armc5(Makefile):
|
|||
|
||||
class IAR(Makefile):
|
||||
"""IAR specific makefile target"""
|
||||
TARGETS = [target for target, obj in TARGET_MAP.iteritems()
|
||||
if "IAR" in obj.supported_toolchains]
|
||||
TARGETS = filter_supported("IAR", Makefile.POST_BINARY_WHITELIST)
|
||||
NAME = 'Make-IAR'
|
||||
TEMPLATE = 'make-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