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 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