Clone of official tools
Diff: project.py
- Revision:
- 23:fbae331171fa
- Parent:
- 22:9e85236d8716
- Child:
- 24:25bff2709c20
--- a/project.py Sat Jul 16 00:34:03 2016 +0100 +++ b/project.py Sat Jul 16 22:51:17 2016 +0100 @@ -7,16 +7,14 @@ from argparse import ArgumentParser from os import path -from tools.paths import EXPORT_DIR, EXPORT_WORKSPACE, EXPORT_TMP -from tools.paths import MBED_BASE, MBED_LIBRARIES -from tools.export import export, setup_user_prj, EXPORTERS, mcu_ide_matrix -from tools.utils import args_error, mkdir -from tools.tests import TESTS, Test, TEST_MAP +from tools.paths import EXPORT_DIR +from tools.export import export, EXPORTERS, mcu_ide_matrix +from tools.tests import TESTS, TEST_MAP from tools.tests import test_known, test_name_known from tools.targets import TARGET_NAMES -from tools.libraries import LIBRARIES -from utils import argparse_lowercase_type, argparse_uppercase_type, argparse_filestring_type, argparse_many +from utils import argparse_filestring_type, argparse_many from utils import argparse_force_lowercase_type, argparse_force_uppercase_type +from project_api import setup_project, perform_export, print_results, get_lib_symbols @@ -129,8 +127,6 @@ # Export results successes = [] failures = [] - zip = True - clean = True # source_dir = use relative paths, otherwise sources are copied sources_relative = True if options.source_dir else False @@ -138,47 +134,13 @@ for mcu in options.mcu: # Program Number or name p, src, ide = options.program, options.source_dir, options.ide - - if src: - # --source is used to generate IDE files to toolchain directly in the source tree and doesn't generate zip file - project_dir = options.source_dir - project_name = TESTS[p] if p else "Unnamed_project" - project_temp = path.join(options.source_dir[0], 'projectfiles', '%s_%s' % (ide, mcu)) - mkdir(project_temp) - lib_symbols = [] - if options.macros: - lib_symbols += options.macros - zip = False # don't create zip - clean = False # don't cleanup because we use the actual source tree to generate IDE files - else: - test = Test(p) + project_dir, project_name, project_temp = setup_project(mcu, ide, p, src, options.build) - # 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 options.macros: - lib_symbols += options.macros - 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) - - if not options.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) + zip = src is [] # create zip when no src_dir provided + clean = src is [] # don't clean when source is provided, use acrual source tree for IDE files # Export to selected toolchain + lib_symbols = get_lib_symbols(options.macros, src, p) tmp_path, report = export(project_dir, project_name, ide, mcu, project_dir[0], project_temp, clean=clean, make_zip=zip, extra_symbols=lib_symbols, sources_relative=sources_relative) if report['success']: if not zip: @@ -191,12 +153,4 @@ failures.append("%s::%s\t%s"% (mcu, ide, report['errormsg'])) # Prints export results - print - if len(successes) > 0: - print "Successful exports:" - for success in successes: - print " * %s"% success - if len(failures) > 0: - print "Failed exports:" - for failure in failures: - print " * %s"% failure + print_results(successes, failures)