mirror of https://github.com/ARMmbed/mbed-os.git
Merge remote-tracking branch 'upstream/master'
commit
57cbd39868
|
@ -136,18 +136,20 @@ def build_mbed_libs(target, toolchain_name, options=None, verbose=False):
|
||||||
|
|
||||||
# mbed
|
# mbed
|
||||||
toolchain.info("\n>>> BUILD LIBRARY %s (%s, %s)" % ('MBED', target.name, toolchain_name))
|
toolchain.info("\n>>> BUILD LIBRARY %s (%s, %s)" % ('MBED', target.name, toolchain_name))
|
||||||
HAL_SRC = join(MBED_TARGETS_PATH, "hal")
|
|
||||||
hal_implementation = toolchain.scan_resources(HAL_SRC)
|
|
||||||
|
|
||||||
mbed_resources = toolchain.scan_resources(MBED_COMMON)
|
# Common Headers
|
||||||
mbed_resources.add(hal_implementation)
|
|
||||||
|
|
||||||
# Headers
|
|
||||||
toolchain.copy_files(toolchain.scan_resources(MBED_API).headers, MBED_LIBRARIES)
|
toolchain.copy_files(toolchain.scan_resources(MBED_API).headers, MBED_LIBRARIES)
|
||||||
toolchain.copy_files(toolchain.scan_resources(MBED_HAL).headers, MBED_LIBRARIES)
|
toolchain.copy_files(toolchain.scan_resources(MBED_HAL).headers, MBED_LIBRARIES)
|
||||||
toolchain.copy_files(hal_implementation.headers, BUILD_TARGET)
|
|
||||||
|
|
||||||
objects = toolchain.compile_sources(mbed_resources, TMP_PATH, [MBED_LIBRARIES, BUILD_TARGET])
|
# Target specific sources
|
||||||
|
HAL_SRC = join(MBED_TARGETS_PATH, "hal")
|
||||||
|
hal_implementation = toolchain.scan_resources(HAL_SRC)
|
||||||
|
toolchain.copy_files(hal_implementation.headers, BUILD_TARGET)
|
||||||
|
objects = toolchain.compile_sources(hal_implementation, TMP_PATH, [MBED_LIBRARIES, BUILD_TARGET])
|
||||||
|
|
||||||
|
# Common Sources
|
||||||
|
mbed_resources = toolchain.scan_resources(MBED_COMMON)
|
||||||
|
objects += toolchain.compile_sources(mbed_resources, TMP_PATH, [MBED_LIBRARIES, BUILD_TARGET])
|
||||||
|
|
||||||
# Keep the stdio retargeting as a standalone object to be sure the
|
# Keep the stdio retargeting as a standalone object to be sure the
|
||||||
# C standard library symbols get overridden
|
# C standard library symbols get overridden
|
||||||
|
|
|
@ -9,12 +9,16 @@ from workspace_tools.export import export
|
||||||
|
|
||||||
from shutil import copytree
|
from shutil import copytree
|
||||||
|
|
||||||
|
EXPORT_DIR = join(BUILD_DIR, "export_test")
|
||||||
|
USER_WORKSPACE = join(EXPORT_DIR, "user_workspace")
|
||||||
|
|
||||||
USR_PRJ_NAME = "export_test"
|
USR_PRJ_NAME = "usr_prj"
|
||||||
USER_PRJ = join(BUILD_DIR, USR_PRJ_NAME)
|
USER_PRJ = join(USER_WORKSPACE, USR_PRJ_NAME)
|
||||||
USER_LIB = join(USER_PRJ, "lib")
|
USER_LIB = join(USER_PRJ, "lib")
|
||||||
USER_SRC = join(USER_PRJ, "src")
|
USER_SRC = join(USER_PRJ, "src")
|
||||||
TEMP = join(USER_PRJ, ".temp")
|
|
||||||
|
TEMP = join(USER_WORKSPACE, ".temp")
|
||||||
|
|
||||||
|
|
||||||
def setup_test_user_prj():
|
def setup_test_user_prj():
|
||||||
if exists(USER_PRJ):
|
if exists(USER_PRJ):
|
||||||
|
@ -50,7 +54,7 @@ def test_export(toolchain, target, expected_error=None):
|
||||||
zip_path, report = export(USER_PRJ, USR_PRJ_NAME, toolchain, target, base_dir, temp_dir, False, fake_build_url_resolver)
|
zip_path, report = export(USER_PRJ, USR_PRJ_NAME, toolchain, target, base_dir, temp_dir, False, fake_build_url_resolver)
|
||||||
|
|
||||||
if report['success']:
|
if report['success']:
|
||||||
export_name = join(TEMP, "export_%s_%s.zip" % (toolchain, target))
|
export_name = join(EXPORT_DIR, "export_%s_%s.zip" % (toolchain, target))
|
||||||
cmd(["mv", zip_path, export_name])
|
cmd(["mv", zip_path, export_name])
|
||||||
print "[OK]"
|
print "[OK]"
|
||||||
else:
|
else:
|
||||||
|
@ -66,9 +70,6 @@ def test_export(toolchain, target, expected_error=None):
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
# import logging as log
|
|
||||||
# log.getLogger().setLevel(log.DEBUG)
|
|
||||||
|
|
||||||
setup_test_user_prj()
|
setup_test_user_prj()
|
||||||
|
|
||||||
for toolchain, target in [
|
for toolchain, target in [
|
||||||
|
|
|
@ -101,6 +101,20 @@ class Resources:
|
||||||
return '\n'.join(s)
|
return '\n'.join(s)
|
||||||
|
|
||||||
|
|
||||||
|
# Support legacy build conventions: the original mbed build system did not have
|
||||||
|
# standard labels for the "TARGET_" and "TOOLCHAIN_" specific directories, but
|
||||||
|
# had the knowledge of a list of these directories to be ignored.
|
||||||
|
LEGACY_IGNORE_DIRS = set([
|
||||||
|
'LPC11U24', 'LPC1768', 'LPC2368', 'LPC4088', 'LPC812', 'KL25Z',
|
||||||
|
'ARM', 'GCC_ARM', 'GCC_CR', 'GCC_CS', 'IAR', 'uARM'
|
||||||
|
])
|
||||||
|
LEGACY_TOOLCHAIN_NAMES = {
|
||||||
|
'ARM_STD':'ARM', 'ARM_MICRO': 'uARM',
|
||||||
|
'GCC_ARM': 'GCC_ARM', 'GCC_CR': 'GCC_CR', 'GCC_CS': 'GCC_CS',
|
||||||
|
'IAR': 'IAR',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class mbedToolchain:
|
class mbedToolchain:
|
||||||
VERBOSE = True
|
VERBOSE = True
|
||||||
|
|
||||||
|
@ -113,6 +127,9 @@ class mbedToolchain:
|
||||||
|
|
||||||
def __init__(self, target, options=None, notify=None):
|
def __init__(self, target, options=None, notify=None):
|
||||||
self.target = target
|
self.target = target
|
||||||
|
self.name = self.__class__.__name__
|
||||||
|
|
||||||
|
self.legacy_ignore_dirs = LEGACY_IGNORE_DIRS - set([target.name, LEGACY_TOOLCHAIN_NAMES[self.name]])
|
||||||
|
|
||||||
if notify is not None:
|
if notify is not None:
|
||||||
self.notify = notify
|
self.notify = notify
|
||||||
|
@ -127,7 +144,6 @@ class mbedToolchain:
|
||||||
if self.options:
|
if self.options:
|
||||||
self.info("Build Options: %s" % (', '.join(self.options)))
|
self.info("Build Options: %s" % (', '.join(self.options)))
|
||||||
|
|
||||||
self.name = self.__class__.__name__
|
|
||||||
self.obj_path = join(target.name, self.name)
|
self.obj_path = join(target.name, self.name)
|
||||||
|
|
||||||
self.symbols = None
|
self.symbols = None
|
||||||
|
@ -195,7 +211,7 @@ class mbedToolchain:
|
||||||
for root, dirs, files in walk(path):
|
for root, dirs, files in walk(path):
|
||||||
# Remove ignored directories
|
# Remove ignored directories
|
||||||
for d in copy(dirs):
|
for d in copy(dirs):
|
||||||
if ((d.startswith('.') or d in set(['CVS'])) or
|
if ((d.startswith('.') or d in self.legacy_ignore_dirs) or
|
||||||
(d.startswith('TARGET_') and d[7:] not in labels['TARGET']) or
|
(d.startswith('TARGET_') and d[7:] not in labels['TARGET']) or
|
||||||
(d.startswith('TOOLCHAIN_') and d[10:] not in labels['TOOLCHAIN'])):
|
(d.startswith('TOOLCHAIN_') and d[10:] not in labels['TOOLCHAIN'])):
|
||||||
dirs.remove(d)
|
dirs.remove(d)
|
||||||
|
|
Loading…
Reference in New Issue