mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			Merge pull request #6153 from theotherjimmy/correct-export-clean
Correct exporter clean behaviorpull/6119/merge
						commit
						daf29dc9f2
					
				| 
						 | 
				
			
			@ -16,6 +16,7 @@ limitations under the License.
 | 
			
		|||
"""
 | 
			
		||||
import uuid
 | 
			
		||||
from os.path import splitext, basename, dirname
 | 
			
		||||
from os import remove
 | 
			
		||||
 | 
			
		||||
from tools.export.exporters import Exporter, deprecated_exporter
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -83,3 +84,8 @@ class AtmelStudio(Exporter):
 | 
			
		|||
        target = self.target.lower()
 | 
			
		||||
        self.gen_file('atmelstudio/atsln.tmpl', ctx, '%s.atsln' % self.project_name)
 | 
			
		||||
        self.gen_file('atmelstudio/cppproj.tmpl', ctx, '%s.cppproj' % self.project_name)
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(project_name):
 | 
			
		||||
        remove('%s.atsln' % project_name)
 | 
			
		||||
        remove('%s.cppproj' % project_name)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -408,6 +408,12 @@ class CCES(Exporter):
 | 
			
		|||
 | 
			
		||||
        print("CCES files generated.")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(_):
 | 
			
		||||
        os.remove('cces.json')
 | 
			
		||||
        os.remove('README.md')
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def build(project_name, log_name='build_log.txt', cleanup=True):
 | 
			
		||||
        """
 | 
			
		||||
| 
						 | 
				
			
			@ -436,6 +442,7 @@ class CCES(Exporter):
 | 
			
		|||
        # cleanup workspace
 | 
			
		||||
        if os.path.exists(workspace):
 | 
			
		||||
            shutil.rmtree(workspace, True)
 | 
			
		||||
            CCES.clean(project_name)
 | 
			
		||||
 | 
			
		||||
        # check return code for failure
 | 
			
		||||
        if ret_code != 0:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,8 @@
 | 
			
		|||
import re
 | 
			
		||||
 | 
			
		||||
from os.path import join, exists
 | 
			
		||||
from os import makedirs
 | 
			
		||||
from os import makedirs, remove
 | 
			
		||||
import shutil
 | 
			
		||||
 | 
			
		||||
from tools.export.makefile import Makefile, GccArm, Armc5, IAR
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -39,6 +40,12 @@ class Eclipse(Makefile):
 | 
			
		|||
        self.gen_file('cdt/.cproject.tmpl', ctx, '.cproject')
 | 
			
		||||
        self.gen_file('cdt/.project.tmpl', ctx, '.project')
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(project_name):
 | 
			
		||||
        shutil.rmtree("eclipse-extras")
 | 
			
		||||
        remove(".cproject")
 | 
			
		||||
        remove(".project")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class EclipseGcc(Eclipse, GccArm):
 | 
			
		||||
    LOAD_EXE = True
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -112,6 +112,15 @@ class CMake(Exporter):
 | 
			
		|||
        except TemplateNotFound:
 | 
			
		||||
            pass
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(_):
 | 
			
		||||
        remove("CMakeLists.txt")
 | 
			
		||||
        # legacy .build directory cleaned if exists
 | 
			
		||||
        if exists('.build'):
 | 
			
		||||
            shutil.rmtree('.build')
 | 
			
		||||
        if exists('BUILD'):
 | 
			
		||||
            shutil.rmtree('BUILD')
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def build(project_name, log_name="build_log.txt", cleanup=True):
 | 
			
		||||
        """ Build Make project """
 | 
			
		||||
| 
						 | 
				
			
			@ -162,13 +171,8 @@ class CMake(Exporter):
 | 
			
		|||
 | 
			
		||||
        # Cleanup the exported and built files
 | 
			
		||||
        if cleanup:
 | 
			
		||||
            remove("CMakeLists.txt")
 | 
			
		||||
            remove(log_name)
 | 
			
		||||
            # legacy .build directory cleaned if exists
 | 
			
		||||
            if exists('.build'):
 | 
			
		||||
                shutil.rmtree('.build')
 | 
			
		||||
            if exists('BUILD'):
 | 
			
		||||
                shutil.rmtree('BUILD')
 | 
			
		||||
            CMake.clean(project_name)
 | 
			
		||||
 | 
			
		||||
        if ret_code != 0:
 | 
			
		||||
            # Seems like something went wrong.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -153,3 +153,8 @@ class CMSIS(Exporter):
 | 
			
		|||
            'date': ''
 | 
			
		||||
        }
 | 
			
		||||
        self.gen_file('cmsis/cpdsc.tmpl', ctx, 'project.cpdsc')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(_):
 | 
			
		||||
        os.remove('project.cpdsc')
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,6 +15,7 @@ See the License for the specific language governing permissions and
 | 
			
		|||
limitations under the License.
 | 
			
		||||
"""
 | 
			
		||||
from os.path import splitext, basename
 | 
			
		||||
from os import remove
 | 
			
		||||
 | 
			
		||||
from tools.export.exporters import Exporter, deprecated_exporter
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -109,3 +110,7 @@ class CoIDE(Exporter):
 | 
			
		|||
 | 
			
		||||
        # Project file
 | 
			
		||||
        self.gen_file('coide/%s.coproj.tmpl' % target, ctx, '%s.coproj' % self.project_name)
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(project_name):
 | 
			
		||||
        remove('%s.coproj' % project_name)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		|||
See the License for the specific language governing permissions and
 | 
			
		||||
limitations under the License.
 | 
			
		||||
"""
 | 
			
		||||
from os import remove
 | 
			
		||||
from tools.export.gnuarmeclipse import GNUARMEclipse
 | 
			
		||||
 | 
			
		||||
class E2Studio(GNUARMEclipse):
 | 
			
		||||
| 
						 | 
				
			
			@ -39,3 +40,8 @@ class E2Studio(GNUARMEclipse):
 | 
			
		|||
        self.gen_file('gnuarmeclipse/.project.tmpl', jinja_ctx, '.project', trim_blocks=True, lstrip_blocks=True)
 | 
			
		||||
        self.gen_file_nonoverwrite('gnuarmeclipse/mbedignore.tmpl', jinja_ctx, '.mbedignore')
 | 
			
		||||
        self.gen_file('gnuarmeclipse/makefile.targets.tmpl', jinja_ctx, 'makefile.targets', trim_blocks=True, lstrip_blocks=True)
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(project_name):
 | 
			
		||||
        remove('%s OpenOCD 5x.launch' % project_name)
 | 
			
		||||
        remove('%s OpenOCD.launch' % project_name)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,6 +15,7 @@ See the License for the specific language governing permissions and
 | 
			
		|||
limitations under the License.
 | 
			
		||||
"""
 | 
			
		||||
from os.path import splitext, basename
 | 
			
		||||
from os import remove
 | 
			
		||||
from tools.targets import TARGET_MAP
 | 
			
		||||
from tools.export.exporters import Exporter, apply_supported_whitelist
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -87,3 +88,7 @@ class EmBitz(Exporter):
 | 
			
		|||
        }
 | 
			
		||||
 | 
			
		||||
        self.gen_file('embitz/eix.tmpl', ctx, '%s.eix' % self.project_name)
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(project_name):
 | 
			
		||||
        remove("%s.eix" % project_name)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -50,6 +50,7 @@ class Exporter(object):
 | 
			
		|||
    NAME = None
 | 
			
		||||
    TARGETS = set()
 | 
			
		||||
    TOOLCHAIN = None
 | 
			
		||||
    CLEAN_FILES = ("GettingStarted.html",)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def __init__(self, target, export_dir, project_name, toolchain,
 | 
			
		||||
| 
						 | 
				
			
			@ -217,12 +218,28 @@ class Exporter(object):
 | 
			
		|||
 | 
			
		||||
        Returns -1 on failure and 0 on success
 | 
			
		||||
        """
 | 
			
		||||
        raise NotImplemented("Implement in derived Exporter class.")
 | 
			
		||||
        raise NotImplementedError("Implement in derived Exporter class.")
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(project_name):
 | 
			
		||||
        """Clean a previously exported project
 | 
			
		||||
        This method is assumed to be executed at the same level as exporter
 | 
			
		||||
        project files and project source code.
 | 
			
		||||
        See uvision/__init__.py, iar/__init__.py, and makefile/__init__.py for
 | 
			
		||||
        example implemenation.
 | 
			
		||||
 | 
			
		||||
        Positional Arguments:
 | 
			
		||||
        project_name - the name of the project to build; often required by
 | 
			
		||||
        exporter's build command.
 | 
			
		||||
 | 
			
		||||
        Returns nothing. May raise exceptions
 | 
			
		||||
        """
 | 
			
		||||
        raise NotImplementedError("Implement in derived Exporter class.")
 | 
			
		||||
 | 
			
		||||
    @abstractmethod
 | 
			
		||||
    def generate(self):
 | 
			
		||||
        """Generate an IDE/tool specific project file"""
 | 
			
		||||
        raise NotImplemented("Implement a generate function in Exporter child class")
 | 
			
		||||
        raise NotImplementedError("Implement a generate function in Exporter child class")
 | 
			
		||||
 | 
			
		||||
    @classmethod
 | 
			
		||||
    def is_target_supported(cls, target_name):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -299,6 +299,17 @@ class GNUARMEclipse(Exporter):
 | 
			
		|||
        print
 | 
			
		||||
        print 'Done. Import the \'{0}\' project in Eclipse.'.format(self.project_name)
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(_):
 | 
			
		||||
        os.remove('.project')
 | 
			
		||||
        os.remove('.cproject')
 | 
			
		||||
        if exists('Debug'):
 | 
			
		||||
            shutil.rmtree('Debug')
 | 
			
		||||
        if exists('Release'):
 | 
			
		||||
            shutil.rmtree('Release')
 | 
			
		||||
        if exists('makefile.targets'):
 | 
			
		||||
            os.remove('makefile.targets')
 | 
			
		||||
 | 
			
		||||
    # override
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def build(project_name, log_name="build_log.txt", cleanup=True):
 | 
			
		||||
| 
						 | 
				
			
			@ -366,14 +377,6 @@ class GNUARMEclipse(Exporter):
 | 
			
		|||
        if cleanup:
 | 
			
		||||
            if exists(log_name):
 | 
			
		||||
                os.remove(log_name)
 | 
			
		||||
            os.remove('.project')
 | 
			
		||||
            os.remove('.cproject')
 | 
			
		||||
            if exists('Debug'):
 | 
			
		||||
                shutil.rmtree('Debug')
 | 
			
		||||
            if exists('Release'):
 | 
			
		||||
                shutil.rmtree('Release')
 | 
			
		||||
            if exists('makefile.targets'):
 | 
			
		||||
                os.remove('makefile.targets')
 | 
			
		||||
 | 
			
		||||
        # Always remove the temporary folder.
 | 
			
		||||
        if exists(tmp_folder):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -138,6 +138,17 @@ class IAR(Exporter):
 | 
			
		|||
        self.gen_file('iar/ewd.tmpl', ctx, self.project_name + ".ewd")
 | 
			
		||||
        self.gen_file('iar/ewp.tmpl', ctx, self.project_name + ".ewp")
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(project_name):
 | 
			
		||||
        os.remove(project_name + ".ewp")
 | 
			
		||||
        os.remove(project_name + ".ewd")
 | 
			
		||||
        os.remove(project_name + ".eww")
 | 
			
		||||
        # legacy output file location
 | 
			
		||||
        if exists('.build'):
 | 
			
		||||
            shutil.rmtree('.build')
 | 
			
		||||
        if exists('BUILD'):
 | 
			
		||||
            shutil.rmtree('BUILD')
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def build(project_name, log_name="build_log.txt", cleanup=True):
 | 
			
		||||
        """ Build IAR project """
 | 
			
		||||
| 
						 | 
				
			
			@ -179,14 +190,7 @@ class IAR(Exporter):
 | 
			
		|||
 | 
			
		||||
        # Cleanup the exported and built files
 | 
			
		||||
        if cleanup:
 | 
			
		||||
            os.remove(project_name + ".ewp")
 | 
			
		||||
            os.remove(project_name + ".ewd")
 | 
			
		||||
            os.remove(project_name + ".eww")
 | 
			
		||||
            # legacy output file location
 | 
			
		||||
            if exists('.build'):
 | 
			
		||||
                shutil.rmtree('.build')
 | 
			
		||||
            if exists('BUILD'):
 | 
			
		||||
                shutil.rmtree('BUILD')
 | 
			
		||||
            IAR.clean(project_name)
 | 
			
		||||
 | 
			
		||||
        if ret_code !=0:
 | 
			
		||||
            # Seems like something went wrong.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,6 +15,7 @@ See the License for the specific language governing permissions and
 | 
			
		|||
limitations under the License.
 | 
			
		||||
"""
 | 
			
		||||
from os.path import splitext, basename
 | 
			
		||||
from os import remove
 | 
			
		||||
 | 
			
		||||
from tools.export.exporters import Exporter, deprecated_exporter
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -47,3 +48,7 @@ class KDS(Exporter):
 | 
			
		|||
        self.gen_file('kds/%s_project.tmpl' % self.target.lower(), ctx, '.project')
 | 
			
		||||
        self.gen_file('kds/%s_cproject.tmpl' % self.target.lower(), ctx, '.cproject')
 | 
			
		||||
        self.gen_file('kds/launch.tmpl', ctx, '%s.launch' % self.project_name)
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(project_name):
 | 
			
		||||
        remove('%s.launch' % project_name)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -148,6 +148,15 @@ class Makefile(Exporter):
 | 
			
		|||
 | 
			
		||||
        return flags
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(_):
 | 
			
		||||
        remove("Makefile")
 | 
			
		||||
        # legacy .build directory cleaned if exists
 | 
			
		||||
        if exists('.build'):
 | 
			
		||||
            shutil.rmtree('.build')
 | 
			
		||||
        if exists('BUILD'):
 | 
			
		||||
            shutil.rmtree('BUILD')
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def build(project_name, log_name="build_log.txt", cleanup=True):
 | 
			
		||||
        """ Build Make project """
 | 
			
		||||
| 
						 | 
				
			
			@ -178,13 +187,8 @@ class Makefile(Exporter):
 | 
			
		|||
 | 
			
		||||
        # Cleanup the exported and built files
 | 
			
		||||
        if cleanup:
 | 
			
		||||
            remove("Makefile")
 | 
			
		||||
            remove(log_name)
 | 
			
		||||
            # legacy .build directory cleaned if exists
 | 
			
		||||
            if exists('.build'):
 | 
			
		||||
                shutil.rmtree('.build')
 | 
			
		||||
            if exists('BUILD'):
 | 
			
		||||
                shutil.rmtree('BUILD')
 | 
			
		||||
            Makefile.clean(project_name)
 | 
			
		||||
 | 
			
		||||
        if ret_code != 0:
 | 
			
		||||
            # Seems like something went wrong.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -230,6 +230,17 @@ class MCUXpresso(GNUARMEclipse):
 | 
			
		|||
        print
 | 
			
		||||
        print 'Done. Import the \'{0}\' project in Eclipse.'.format(self.project_name)
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(_):
 | 
			
		||||
        remove('.project')
 | 
			
		||||
        remove('.cproject')
 | 
			
		||||
        if exists('Debug'):
 | 
			
		||||
            shutil.rmtree('Debug')
 | 
			
		||||
        if exists('Release'):
 | 
			
		||||
            shutil.rmtree('Release')
 | 
			
		||||
        if exists('makefile.targets'):
 | 
			
		||||
            remove('makefile.targets')
 | 
			
		||||
 | 
			
		||||
    # override
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def build(project_name, log_name="build_log.txt", cleanup=True):
 | 
			
		||||
| 
						 | 
				
			
			@ -299,14 +310,7 @@ class MCUXpresso(GNUARMEclipse):
 | 
			
		|||
        if cleanup:
 | 
			
		||||
            if exists(log_name):
 | 
			
		||||
                remove(log_name)
 | 
			
		||||
            remove('.project')
 | 
			
		||||
            remove('.cproject')
 | 
			
		||||
            if exists('Debug'):
 | 
			
		||||
                shutil.rmtree('Debug')
 | 
			
		||||
            if exists('Release'):
 | 
			
		||||
                shutil.rmtree('Release')
 | 
			
		||||
            if exists('makefile.targets'):
 | 
			
		||||
                remove('makefile.targets')
 | 
			
		||||
            MCUXpresso.clean(project_name)
 | 
			
		||||
 | 
			
		||||
        # Always remove the temporary folder.
 | 
			
		||||
        if exists(tmp_folder):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,6 @@
 | 
			
		|||
import os
 | 
			
		||||
import copy
 | 
			
		||||
import shutil
 | 
			
		||||
 | 
			
		||||
from os.path import relpath, join, exists, dirname, basename
 | 
			
		||||
from os import makedirs
 | 
			
		||||
| 
						 | 
				
			
			@ -275,6 +276,11 @@ class GNUARMNetbeans(Exporter):
 | 
			
		|||
        print
 | 
			
		||||
        print 'Done. Import the \'{0}\' project in Netbeans.'.format(self.project_name)
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(_):
 | 
			
		||||
        shutil.rmtree("nbproject")
 | 
			
		||||
        remove("Makefile")
 | 
			
		||||
 | 
			
		||||
    # -------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,6 +15,7 @@ See the License for the specific language governing permissions and
 | 
			
		|||
limitations under the License.
 | 
			
		||||
"""
 | 
			
		||||
from os.path import splitext, basename
 | 
			
		||||
from os import remove
 | 
			
		||||
from tools.targets import TARGET_MAP
 | 
			
		||||
from tools.export.exporters import Exporter
 | 
			
		||||
from tools.export.makefile import GccArm
 | 
			
		||||
| 
						 | 
				
			
			@ -63,3 +64,8 @@ class QtCreator(GccArm):
 | 
			
		|||
 | 
			
		||||
        # finally, generate the Makefile
 | 
			
		||||
        super(QtCreator, self).generate()
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(project_name):
 | 
			
		||||
        for ext in ['creator', 'files', 'includes', 'config']:
 | 
			
		||||
            remove("%s.%s" % (project_name, ext))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,6 +15,7 @@ See the License for the specific language governing permissions and
 | 
			
		|||
limitations under the License.
 | 
			
		||||
"""
 | 
			
		||||
from os.path import split,splitext, basename
 | 
			
		||||
from os import remove
 | 
			
		||||
 | 
			
		||||
from tools.export.exporters import Exporter, deprecated_exporter
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -194,3 +195,7 @@ class SimplicityV3(Exporter):
 | 
			
		|||
        '''
 | 
			
		||||
 | 
			
		||||
        self.gen_file('simplicity/slsproj.tmpl', ctx, '%s.slsproj' % self.project_name)
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(project_name):
 | 
			
		||||
        remove('%s.slsproj' % project_name)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,6 +16,7 @@ limitations under the License.
 | 
			
		|||
"""
 | 
			
		||||
 | 
			
		||||
from os.path import splitext, basename, join
 | 
			
		||||
import shutil
 | 
			
		||||
from tools.utils import mkdir
 | 
			
		||||
from tools.export.gnuarmeclipse import GNUARMEclipse
 | 
			
		||||
from tools.export.gnuarmeclipse import UID
 | 
			
		||||
| 
						 | 
				
			
			@ -557,3 +558,7 @@ class Sw4STM32(GNUARMEclipse):
 | 
			
		|||
                      'makefile.targets', trim_blocks=True, lstrip_blocks=True)
 | 
			
		||||
        self.gen_file('sw4stm32/launch.tmpl', ctx, self.project_name +
 | 
			
		||||
                      ' ' + options['debug']['name'] + '.launch')
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(_):
 | 
			
		||||
        shutil.rmtree(".settings")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -238,6 +238,16 @@ class Uvision(Exporter):
 | 
			
		|||
        self.gen_file('uvision/uvision.tmpl', ctx, self.project_name+".uvprojx")
 | 
			
		||||
        self.gen_file('uvision/uvision_debug.tmpl', ctx, self.project_name + ".uvoptx")
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(project_name):
 | 
			
		||||
        os.remove(project_name + ".uvprojx")
 | 
			
		||||
        os.remove(project_name + ".uvoptx")
 | 
			
		||||
        # legacy .build directory cleaned if exists
 | 
			
		||||
        if exists('.build'):
 | 
			
		||||
            shutil.rmtree('.build')
 | 
			
		||||
        if exists('BUILD'):
 | 
			
		||||
            shutil.rmtree('BUILD')
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def build(project_name, log_name='build_log.txt', cleanup=True):
 | 
			
		||||
        """ Build Uvision project """
 | 
			
		||||
| 
						 | 
				
			
			@ -257,13 +267,7 @@ class Uvision(Exporter):
 | 
			
		|||
        # Cleanup the exported and built files
 | 
			
		||||
        if cleanup:
 | 
			
		||||
            os.remove(log_name)
 | 
			
		||||
            os.remove(project_name+".uvprojx")
 | 
			
		||||
            os.remove(project_name+".uvoptx")
 | 
			
		||||
            # legacy .build directory cleaned if exists
 | 
			
		||||
            if exists('.build'):
 | 
			
		||||
                shutil.rmtree('.build')
 | 
			
		||||
            if exists('BUILD'):
 | 
			
		||||
                shutil.rmtree('BUILD')
 | 
			
		||||
            Uvision.clean(project_name)
 | 
			
		||||
 | 
			
		||||
        # Returns 0 upon success, 1 upon a warning, and neither upon an error
 | 
			
		||||
        if ret_code != 0 and ret_code != 1:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,7 @@
 | 
			
		|||
# limitations under the License.
 | 
			
		||||
 | 
			
		||||
from os.path import join, exists, realpath, relpath, basename, isfile, splitext
 | 
			
		||||
from os import makedirs, listdir
 | 
			
		||||
from os import makedirs, listdir, remove, rmdir
 | 
			
		||||
import json
 | 
			
		||||
 | 
			
		||||
from tools.export.makefile import Makefile, GccArm, Armc5, IAR
 | 
			
		||||
| 
						 | 
				
			
			@ -83,6 +83,11 @@ class VSCode(Makefile):
 | 
			
		|||
        with open(join(self.export_dir, '.vscode', 'c_cpp_properties.json'), 'w') as outfile:
 | 
			
		||||
            json.dump(cpp_props, outfile, indent=4, separators=(',', ': '))
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def clean(_):
 | 
			
		||||
        for f in ['launch', 'settings', 'tasts', 'c_cpp_properties']:
 | 
			
		||||
            remove(".vscode/%s.json" % f)
 | 
			
		||||
        rmdir(".vscode")
 | 
			
		||||
 | 
			
		||||
class VSCodeGcc(VSCode, GccArm):
 | 
			
		||||
    LOAD_EXE = True
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,14 +1,16 @@
 | 
			
		|||
""" The CLI entry point for exporting projects from the mbed tools to any of the
 | 
			
		||||
supported IDEs or project structures.
 | 
			
		||||
"""
 | 
			
		||||
from __future__ import absolute_import, print_function
 | 
			
		||||
import sys
 | 
			
		||||
from os.path import join, abspath, dirname, exists, basename
 | 
			
		||||
from os.path import (join, abspath, dirname, exists, basename, normpath,
 | 
			
		||||
                     realpath, basename)
 | 
			
		||||
from os import remove
 | 
			
		||||
ROOT = abspath(join(dirname(__file__), ".."))
 | 
			
		||||
sys.path.insert(0, ROOT)
 | 
			
		||||
 | 
			
		||||
from shutil import move, rmtree
 | 
			
		||||
from argparse import ArgumentParser
 | 
			
		||||
from os.path import normpath, realpath
 | 
			
		||||
 | 
			
		||||
from tools.paths import EXPORT_DIR, MBED_HAL, MBED_LIBRARIES, MBED_TARGETS_PATH
 | 
			
		||||
from tools.settings import BUILD_DIR
 | 
			
		||||
| 
						 | 
				
			
			@ -191,7 +193,7 @@ def main():
 | 
			
		|||
 | 
			
		||||
    # Print available tests in order and exit
 | 
			
		||||
    if options.list_tests is True:
 | 
			
		||||
        print '\n'.join([str(test) for test in  sorted(TEST_MAP.values())])
 | 
			
		||||
        print('\n'.join([str(test) for test in  sorted(TEST_MAP.values())]))
 | 
			
		||||
        sys.exit()
 | 
			
		||||
 | 
			
		||||
    # Only prints matrix of supported IDEs
 | 
			
		||||
| 
						 | 
				
			
			@ -199,7 +201,7 @@ def main():
 | 
			
		|||
        if options.supported_ides == "matrix":
 | 
			
		||||
            print_large_string(mcu_ide_matrix())
 | 
			
		||||
        elif options.supported_ides == "ides":
 | 
			
		||||
            print mcu_ide_list()
 | 
			
		||||
            print(mcu_ide_list())
 | 
			
		||||
        exit(0)
 | 
			
		||||
 | 
			
		||||
    # Only prints matrix of supported IDEs
 | 
			
		||||
| 
						 | 
				
			
			@ -212,9 +214,9 @@ def main():
 | 
			
		|||
                readme.write("\n")
 | 
			
		||||
                readme.write(html)
 | 
			
		||||
        except IOError as exc:
 | 
			
		||||
            print "I/O error({0}): {1}".format(exc.errno, exc.strerror)
 | 
			
		||||
            print("I/O error({0}): {1}".format(exc.errno, exc.strerror))
 | 
			
		||||
        except:
 | 
			
		||||
            print "Unexpected error:", sys.exc_info()[0]
 | 
			
		||||
            print("Unexpected error:", sys.exc_info()[0])
 | 
			
		||||
            raise
 | 
			
		||||
        exit(0)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -246,14 +248,20 @@ def main():
 | 
			
		|||
        args_error(parser, "%s not supported by %s"%(mcu,options.ide))
 | 
			
		||||
    profile = extract_profile(parser, options, toolchain_name, fallback="debug")
 | 
			
		||||
    if options.clean:
 | 
			
		||||
        rmtree(BUILD_DIR)
 | 
			
		||||
        for cls in EXPORTERS.values():
 | 
			
		||||
            try:
 | 
			
		||||
                cls.clean(basename(abspath(options.source_dir[0])))
 | 
			
		||||
            except (NotImplementedError, IOError, OSError):
 | 
			
		||||
                pass
 | 
			
		||||
        for f in EXPORTERS.values()[0].CLEAN_FILES:
 | 
			
		||||
            remove(f)
 | 
			
		||||
    try:
 | 
			
		||||
        export(mcu, options.ide, build=options.build,
 | 
			
		||||
               src=options.source_dir, macros=options.macros,
 | 
			
		||||
               project_id=options.program, zip_proj=zip_proj,
 | 
			
		||||
               build_profile=profile, app_config=options.app_config)
 | 
			
		||||
    except NotSupportedException as exc:
 | 
			
		||||
        print "[ERROR] %s" % str(exc)
 | 
			
		||||
        print("[ERROR] %s" % str(exc))
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    main()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue