Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed-sdk-tools by
project_api.py
- Committer:
- screamer
- Date:
- 2016-08-04
- Revision:
- 26:ed5e0d4e691e
- Child:
- 31:182518299918
File content as of revision 26:ed5e0d4e691e:
import sys from os.path import join, abspath, dirname, exists, basename ROOT = abspath(join(dirname(__file__), "..")) sys.path.insert(0, ROOT) from tools.paths import EXPORT_WORKSPACE, EXPORT_TMP from tools.paths import MBED_BASE, MBED_LIBRARIES from tools.export import export, setup_user_prj from tools.utils import mkdir from tools.tests import Test, TEST_MAP, TESTS from tools.libraries import LIBRARIES try: import tools.private_settings as ps except: ps = object() def get_program(n): p = TEST_MAP[n].n return p def get_test(p): return Test(p) def get_test_from_name(n): if not n in TEST_MAP.keys(): # Check if there is an alias for this in private_settings.py if getattr(ps, "test_alias", None) is not None: alias = ps.test_alias.get(n, "") if not alias in TEST_MAP.keys(): return None else: n = alias else: return None return get_program(n) def get_lib_symbols(macros, src, program): # Some libraries have extra macros (called by exporter symbols) to we need to pass # them to maintain compilation macros integrity between compiled library and # header files we might use with it lib_symbols = [] if macros: lib_symbols += macros if src: return lib_symbols test = get_test(program) for lib in LIBRARIES: if lib['build_dir'] in test.dependencies: lib_macros = lib.get('macros', None) if lib_macros is not None: lib_symbols.extend(lib_macros) def setup_project(mcu, ide, program=None, source_dir=None, build=None): # Some libraries have extra macros (called by exporter symbols) to we need to pass # them to maintain compilation macros integrity between compiled library and # header files we might use with it if source_dir: # --source is used to generate IDE files to toolchain directly in the source tree and doesn't generate zip file project_dir = source_dir project_name = TESTS[program] if program else "Unnamed_Project" project_temp = join(source_dir[0], 'projectfiles', '%s_%s' % (ide, mcu)) mkdir(project_temp) else: test = get_test(program) if not build: # Substitute the library builds with the sources # TODO: Substitute also the other library build paths if MBED_LIBRARIES in test.dependencies: test.dependencies.remove(MBED_LIBRARIES) test.dependencies.append(MBED_BASE) # Build the project with the same directory structure of the mbed online IDE project_name = test.id project_dir = [join(EXPORT_WORKSPACE, project_name)] project_temp = EXPORT_TMP setup_user_prj(project_dir[0], test.source_dir, test.dependencies) return project_dir, project_name, project_temp def perform_export(dir, name, ide, mcu, temp, clean=False, zip=False, lib_symbols='', sources_relative=False, progen_build=False): tmp_path, report = export(dir, name, ide, mcu, dir[0], temp, clean=clean, make_zip=zip, extra_symbols=lib_symbols, sources_relative=sources_relative, progen_build=progen_build) return tmp_path, report def print_results(successes, failures, skips = []): print if len(successes) > 0: print "Successful: " for success in successes: print " * %s" % success if len(failures) > 0: print "Failed: " for failure in failures: print " * %s" % failure if len(skips) > 0: print "Skipped: " for skip in skips: print " * %s" % skip