Source code for gdeps.compiler

#!python3

# Copyright 2007-2017 Gemr. All Rights Reserved.
# Licensed to MIT see LICENSE.txt

import os

import gdeps as GDeps

__author__ = 'Suryavarman (http://sourceforge.net/u/suryavarman/profile/)'


[docs]class Compiler(GDeps.Config, GDeps.Reporting): def __init__(self, inConfigFile, inSectionName, inDir, inAdressModel, inTypeName): GDeps.Config.__init__(self, inConfigFile, inSectionName) GDeps.Reporting.__init__(self) self.m_Dir = inDir r""" inDir examples : >>> "C:\\TDM-GCC-32\\bin", >>> "C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\bin" """ self.m_AdressModel = inAdressModel self.m_TypeName = inTypeName self.Load()
[docs] def setvars(self): """ Set the compiler's environments variables Default implementation """ aCmd = r'@echo.\n' aCmd += '@echo Setting up environment for using ' + self.m_TypeName + ' with the address model ' + str(self.m_AdressModel) + ' from ' + self.m_Dir + r'.\n' aCmd += '@set PATH="' + self.m_Dir + '";%PATH%' GDeps.call(aCmd) os.environ['PATH'] = self.m_Dir + ';' + os.environ['PATH']
[docs] def getToolChain(self): r""" :return: The compiler tool chain { command line name : the full path of the application } :rtype: dict { str : str } >>> return {'cl': os.path.normpath(self.m_Dir + r'\\' + 'cl.exe'), >>> 'link': os.path.normpath(self.m_Dir + r'\\' + 'link.exe')} """ return {}
[docs] def read(self, inSection): self.m_Dir = inSection["dir"] assert os.path.exists(self.m_Dir), "This directory doesn't exist : " + self.m_Dir
[docs] def write(self): """ :return: aSection :rtype: a kind of dictionary """ aSection = GDeps.Config.write(self) aSection["dir"] = self.m_Dir return aSection
[docs] def getAdressModel(self): return self.m_AdressModel
[docs] def getMakeDir(self): pass
@staticmethod
[docs] def getDynamicLibraryWildCard(): return "dll"
[docs]def getCompilers(inConfigFile, inCompilersAliasNames): """ :param inConfigFile: Config file instance :type inConfigFile: GDeps.ConfigFile :param inCompilersAliasNames: :type inCompilersAliasNames: array of str """ aCompilers = [] aCompilerSections = [aSectionName for aSectionName in inCompilersAliasNames if GDeps.Keys.ms_CompilerAliasPrefix in aSectionName] for aCompilerSection in aCompilerSections: aCompilerAlias = GDeps.Alias(inConfigFile, aCompilerSection) aCompiler = getattr(GDeps, aCompilerAlias.m_Type)(inConfigFile, aCompilerAlias.m_Name) aCompilers.append(aCompiler) return aCompilers