mirror of https://github.com/ARMmbed/mbed-os.git
Add simple build profiles to toolchains
parent
b481da44e9
commit
ceda396e18
|
@ -277,7 +277,7 @@ def prepare_toolchain(src_paths, target, toolchain_name,
|
||||||
macros=None, options=None, clean=False, jobs=1,
|
macros=None, options=None, clean=False, jobs=1,
|
||||||
notify=None, silent=False, verbose=False,
|
notify=None, silent=False, verbose=False,
|
||||||
extra_verbose=False, config=None,
|
extra_verbose=False, config=None,
|
||||||
app_config=None):
|
app_config=None, build_profile=None):
|
||||||
""" Prepares resource related objects - toolchain, target, config
|
""" Prepares resource related objects - toolchain, target, config
|
||||||
|
|
||||||
Positional arguments:
|
Positional arguments:
|
||||||
|
@ -310,7 +310,7 @@ def prepare_toolchain(src_paths, target, toolchain_name,
|
||||||
try:
|
try:
|
||||||
toolchain = TOOLCHAIN_CLASSES[toolchain_name](
|
toolchain = TOOLCHAIN_CLASSES[toolchain_name](
|
||||||
target, options, notify, macros, silent,
|
target, options, notify, macros, silent,
|
||||||
extra_verbose=extra_verbose)
|
extra_verbose=extra_verbose, build_profile=build_profile)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
raise KeyError("Toolchain %s not supported" % toolchain_name)
|
raise KeyError("Toolchain %s not supported" % toolchain_name)
|
||||||
|
|
||||||
|
@ -366,7 +366,7 @@ def build_project(src_paths, build_path, target, toolchain_name,
|
||||||
macros=None, inc_dirs=None, jobs=1, silent=False,
|
macros=None, inc_dirs=None, jobs=1, silent=False,
|
||||||
report=None, properties=None, project_id=None,
|
report=None, properties=None, project_id=None,
|
||||||
project_description=None, extra_verbose=False, config=None,
|
project_description=None, extra_verbose=False, config=None,
|
||||||
app_config=None):
|
app_config=None, build_profile=None):
|
||||||
""" Build a project. A project may be a test or a user program.
|
""" Build a project. A project may be a test or a user program.
|
||||||
|
|
||||||
Positional arguments:
|
Positional arguments:
|
||||||
|
@ -413,7 +413,8 @@ def build_project(src_paths, build_path, target, toolchain_name,
|
||||||
toolchain = prepare_toolchain(
|
toolchain = prepare_toolchain(
|
||||||
src_paths, target, toolchain_name, macros=macros, options=options,
|
src_paths, target, toolchain_name, macros=macros, options=options,
|
||||||
clean=clean, jobs=jobs, notify=notify, silent=silent, verbose=verbose,
|
clean=clean, jobs=jobs, notify=notify, silent=silent, verbose=verbose,
|
||||||
extra_verbose=extra_verbose, config=config, app_config=app_config)
|
extra_verbose=extra_verbose, config=config, app_config=app_config,
|
||||||
|
build_profile=build_profile)
|
||||||
|
|
||||||
# The first path will give the name to the library
|
# The first path will give the name to the library
|
||||||
if name is None:
|
if name is None:
|
||||||
|
|
|
@ -19,6 +19,7 @@ limitations under the License.
|
||||||
TEST BUILD & RUN
|
TEST BUILD & RUN
|
||||||
"""
|
"""
|
||||||
import sys
|
import sys
|
||||||
|
import json
|
||||||
from time import sleep
|
from time import sleep
|
||||||
from shutil import copy
|
from shutil import copy
|
||||||
from os.path import join, abspath, dirname
|
from os.path import join, abspath, dirname
|
||||||
|
@ -180,6 +181,9 @@ if __name__ == '__main__':
|
||||||
parser.add_argument("-l", "--linker", dest="linker_script",
|
parser.add_argument("-l", "--linker", dest="linker_script",
|
||||||
type=argparse_filestring_type,
|
type=argparse_filestring_type,
|
||||||
default=None, help="use the specified linker script")
|
default=None, help="use the specified linker script")
|
||||||
|
parser.add_argument("--profile", dest="profile",
|
||||||
|
type=argparse_filestring_type,
|
||||||
|
default=None)
|
||||||
|
|
||||||
options = parser.parse_args()
|
options = parser.parse_args()
|
||||||
|
|
||||||
|
@ -220,6 +224,17 @@ if __name__ == '__main__':
|
||||||
if options.source_dir and not options.build_dir:
|
if options.source_dir and not options.build_dir:
|
||||||
args_error(parser, "argument --build is required when argument --source is provided")
|
args_error(parser, "argument --build is required when argument --source is provided")
|
||||||
|
|
||||||
|
if options.profile:
|
||||||
|
contents = json.load(open(options.profile))
|
||||||
|
try:
|
||||||
|
profile = contents[toolchain]
|
||||||
|
except KeyError:
|
||||||
|
args_error(parser, ("argument --profile: toolchain {} is not"
|
||||||
|
" supported by profile {}").format(toolchain,
|
||||||
|
options.profile))
|
||||||
|
else:
|
||||||
|
profile = None
|
||||||
|
|
||||||
if options.color:
|
if options.color:
|
||||||
# This import happens late to prevent initializing colorization when we don't need it
|
# This import happens late to prevent initializing colorization when we don't need it
|
||||||
import colorize
|
import colorize
|
||||||
|
@ -280,7 +295,8 @@ if __name__ == '__main__':
|
||||||
macros=options.macros,
|
macros=options.macros,
|
||||||
jobs=options.jobs,
|
jobs=options.jobs,
|
||||||
name=options.artifact_name,
|
name=options.artifact_name,
|
||||||
app_config=options.app_config)
|
app_config=options.app_config,
|
||||||
|
build_profile=profile)
|
||||||
print 'Image: %s'% bin_file
|
print 'Image: %s'% bin_file
|
||||||
|
|
||||||
if options.disk:
|
if options.disk:
|
||||||
|
|
|
@ -217,7 +217,7 @@ class mbedToolchain:
|
||||||
|
|
||||||
__metaclass__ = ABCMeta
|
__metaclass__ = ABCMeta
|
||||||
|
|
||||||
def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False):
|
def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False, build_profile=None):
|
||||||
self.target = target
|
self.target = target
|
||||||
self.name = self.__class__.__name__
|
self.name = self.__class__.__name__
|
||||||
|
|
||||||
|
@ -225,7 +225,7 @@ class mbedToolchain:
|
||||||
self.hook = hooks.Hook(target, self)
|
self.hook = hooks.Hook(target, self)
|
||||||
|
|
||||||
# Toolchain flags
|
# Toolchain flags
|
||||||
self.flags = deepcopy(self.DEFAULT_FLAGS)
|
self.flags = deepcopy(build_profile or self.DEFAULT_FLAGS)
|
||||||
|
|
||||||
# User-defined macros
|
# User-defined macros
|
||||||
self.macros = macros or []
|
self.macros = macros or []
|
||||||
|
|
|
@ -51,8 +51,11 @@ class ARM(mbedToolchain):
|
||||||
Returns False otherwise."""
|
Returns False otherwise."""
|
||||||
return mbedToolchain.generic_check_executable("ARM", 'armcc', 2, 'bin')
|
return mbedToolchain.generic_check_executable("ARM", 'armcc', 2, 'bin')
|
||||||
|
|
||||||
def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False):
|
def __init__(self, target, options=None, notify=None, macros=None,
|
||||||
mbedToolchain.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose)
|
silent=False, extra_verbose=False, build_profile=None):
|
||||||
|
mbedToolchain.__init__(self, target, options, notify, macros, silent,
|
||||||
|
extra_verbose=extra_verbose,
|
||||||
|
build_profile=build_profile)
|
||||||
|
|
||||||
if target.core == "Cortex-M0+":
|
if target.core == "Cortex-M0+":
|
||||||
cpu = "Cortex-M0"
|
cpu = "Cortex-M0"
|
||||||
|
@ -241,8 +244,10 @@ class ARM(mbedToolchain):
|
||||||
|
|
||||||
|
|
||||||
class ARM_STD(ARM):
|
class ARM_STD(ARM):
|
||||||
def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False):
|
def __init__(self, target, options=None, notify=None, macros=None,
|
||||||
ARM.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose)
|
silent=False, extra_verbose=False, build_profile=None):
|
||||||
|
ARM.__init__(self, target, options, notify, macros, silent,
|
||||||
|
extra_verbose=extra_verbose, build_profile=build_profile)
|
||||||
|
|
||||||
# Run-time values
|
# Run-time values
|
||||||
self.ld.extend(["--libpath", join(TOOLCHAIN_PATHS['ARM'], "lib")])
|
self.ld.extend(["--libpath", join(TOOLCHAIN_PATHS['ARM'], "lib")])
|
||||||
|
@ -251,8 +256,10 @@ class ARM_STD(ARM):
|
||||||
class ARM_MICRO(ARM):
|
class ARM_MICRO(ARM):
|
||||||
PATCHED_LIBRARY = False
|
PATCHED_LIBRARY = False
|
||||||
|
|
||||||
def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False):
|
def __init__(self, target, options=None, notify=None, macros=None,
|
||||||
ARM.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose)
|
silent=False, extra_verbose=False, build_profile=None):
|
||||||
|
ARM.__init__(self, target, options, notify, macros, silent,
|
||||||
|
extra_verbose=extra_verbose, build_profile=build_profile)
|
||||||
|
|
||||||
# Extend flags
|
# Extend flags
|
||||||
self.flags['common'].extend(["-D__MICROLIB"])
|
self.flags['common'].extend(["-D__MICROLIB"])
|
||||||
|
|
|
@ -46,8 +46,12 @@ class GCC(mbedToolchain):
|
||||||
"-Wl,--wrap,exit", "-Wl,--wrap,atexit"],
|
"-Wl,--wrap,exit", "-Wl,--wrap,atexit"],
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, target, options=None, notify=None, macros=None, silent=False, tool_path="", extra_verbose=False):
|
def __init__(self, target, options=None, notify=None, macros=None,
|
||||||
mbedToolchain.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose)
|
silent=False, tool_path="", extra_verbose=False,
|
||||||
|
build_profile=None):
|
||||||
|
mbedToolchain.__init__(self, target, options, notify, macros, silent,
|
||||||
|
extra_verbose=extra_verbose,
|
||||||
|
build_profile=build_profile)
|
||||||
|
|
||||||
if target.core == "Cortex-M0+":
|
if target.core == "Cortex-M0+":
|
||||||
cpu = "cortex-m0plus"
|
cpu = "cortex-m0plus"
|
||||||
|
@ -280,8 +284,11 @@ class GCC_ARM(GCC):
|
||||||
Returns False otherwise."""
|
Returns False otherwise."""
|
||||||
return mbedToolchain.generic_check_executable("GCC_ARM", 'arm-none-eabi-gcc', 1)
|
return mbedToolchain.generic_check_executable("GCC_ARM", 'arm-none-eabi-gcc', 1)
|
||||||
|
|
||||||
def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False):
|
def __init__(self, target, options=None, notify=None, macros=None,
|
||||||
GCC.__init__(self, target, options, notify, macros, silent, TOOLCHAIN_PATHS['GCC_ARM'], extra_verbose=extra_verbose)
|
silent=False, extra_verbose=False, build_profile=None):
|
||||||
|
GCC.__init__(self, target, options, notify, macros, silent,
|
||||||
|
TOOLCHAIN_PATHS['GCC_ARM'], extra_verbose=extra_verbose,
|
||||||
|
build_profile=build_profile)
|
||||||
|
|
||||||
# Use latest gcc nanolib
|
# Use latest gcc nanolib
|
||||||
if "std-lib" in self.options:
|
if "std-lib" in self.options:
|
||||||
|
@ -312,8 +319,11 @@ class GCC_CR(GCC):
|
||||||
Returns False otherwise."""
|
Returns False otherwise."""
|
||||||
return mbedToolchain.generic_check_executable("GCC_CR", 'arm-none-eabi-gcc', 1)
|
return mbedToolchain.generic_check_executable("GCC_CR", 'arm-none-eabi-gcc', 1)
|
||||||
|
|
||||||
def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False):
|
def __init__(self, target, options=None, notify=None, macros=None,
|
||||||
GCC.__init__(self, target, options, notify, macros, silent, TOOLCHAIN_PATHS['GCC_CR'], extra_verbose=extra_verbose)
|
silent=False, extra_verbose=False, build_profile=None):
|
||||||
|
GCC.__init__(self, target, options, notify, macros, silent,
|
||||||
|
TOOLCHAIN_PATHS['GCC_CR'], extra_verbose=extra_verbose,
|
||||||
|
build_profile=build_profile)
|
||||||
|
|
||||||
additional_compiler_flags = [
|
additional_compiler_flags = [
|
||||||
"-D__NEWLIB__", "-D__CODE_RED", "-D__USE_CMSIS", "-DCPP_USE_HEAP",
|
"-D__NEWLIB__", "-D__CODE_RED", "-D__USE_CMSIS", "-DCPP_USE_HEAP",
|
||||||
|
|
|
@ -54,8 +54,11 @@ class IAR(mbedToolchain):
|
||||||
Returns False otherwise."""
|
Returns False otherwise."""
|
||||||
return mbedToolchain.generic_check_executable("IAR", 'iccarm', 2, "bin")
|
return mbedToolchain.generic_check_executable("IAR", 'iccarm', 2, "bin")
|
||||||
|
|
||||||
def __init__(self, target, options=None, notify=None, macros=None, silent=False, extra_verbose=False):
|
def __init__(self, target, options=None, notify=None, macros=None,
|
||||||
mbedToolchain.__init__(self, target, options, notify, macros, silent, extra_verbose=extra_verbose)
|
silent=False, extra_verbose=False, build_profile=None):
|
||||||
|
mbedToolchain.__init__(self, target, options, notify, macros, silent,
|
||||||
|
extra_verbose=extra_verbose,
|
||||||
|
build_profile=build_profile)
|
||||||
if target.core == "Cortex-M7F" or target.core == "Cortex-M7FD":
|
if target.core == "Cortex-M7F" or target.core == "Cortex-M7FD":
|
||||||
cpuchoice = "Cortex-M7"
|
cpuchoice = "Cortex-M7"
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in New Issue