Source code for gdeps.vc

#!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 Vc(GDeps.Compiler): """ Common base for the VC compilers """ def __init__(self, inConfigFile, inSectionName, inDir, inAdressModel, inTypeName, inIsExpress=True): GDeps.Compiler.__init__(self, inConfigFile, inSectionName, inDir, inAdressModel, inTypeName) self.m_IsExpress = inIsExpress """True : it's a express edition if not it's a professional version """
[docs] def read(self, inSection): GDeps.Compiler.read(self, inSection) self.m_IsExpress = inSection.getboolean("isexpress")
[docs] def write(self): aSection = GDeps.Compiler.write(self) aSection["isexpress"] = self.m_IsExpress return aSection
[docs] def getMakeDir(self): if GDeps.AdressModel.x86 == self.m_AdressModel: return os.path.normpath(self.m_Dir + r"\\nmake.exe") else: return os.path.normpath(os.path.dirname(self.m_Dir) + r"\\nmake.exe")
[docs] def getToolChain(self): if GDeps.AdressModel.x86 == self.m_AdressModel: return {'cl': os.path.normpath(self.m_Dir + r'\\' + 'cl.exe'), 'link': os.path.normpath(self.m_Dir + r'\\' + 'link.exe')} # 'ml': os.path.normpath(self.m_Dir + r'\\' + 'ml.exe')} # 'nmake': os.path.normpath(self.getMakeDir())} else: return {'cl': os.path.normpath(self.m_Dir + r'\\' + 'cl.exe'), 'link': os.path.normpath(self.m_Dir + r'\\' + 'link.exe'), 'lib': os.path.normpath(self.m_Dir + r'\\' + 'lib.exe'), 'ml64': os.path.normpath(self.m_Dir + r'\\' + 'ml64.exe')}
# 'nmake': os.path.normpath(self.getMakeDir())}
[docs] def getvarsScriptPath(self): """ :return: The path of the script ".bat" to setup the environment variables. :rtype: str >>> os.path.normpath(self.m_Dir + r"\\vcvars32.bat") """ pass
[docs] def setvars(self): GDeps.Compiler.setvars(self)
@staticmethod
[docs] def getStaticLibraryWildCard(): """ :return: The extension of the static library associate with this compiler. :rtype: str """ return "lib"
@staticmethod
[docs] def isVcCompiler(inCompiler): if inCompiler.getTypeName() == VC90_32.getTypeName() or \ inCompiler.getTypeName() == VC100_32.getTypeName() or inCompiler.getTypeName() == VC100_64.getTypeName() or \ inCompiler.getTypeName() == VC110_32.getTypeName() or inCompiler.getTypeName() == VC110_64.getTypeName() or \ inCompiler.getTypeName() == VC120_32.getTypeName() or inCompiler.getTypeName() == VC120_64.getTypeName() or \ inCompiler.getTypeName() == VC140_32.getTypeName() or inCompiler.getTypeName() == VC140_64.getTypeName(): return True else: return False
[docs]class VC140_32(Vc): def __init__(self, inConfigFile, inSectionName="vc140_32", inDir=r"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\bin"): Vc.__init__(self, inConfigFile, inSectionName, inDir, GDeps.AdressModel.x86, VC140_32.getTypeName()) self.m_ErrorRegexp = r"(.*>.*: error.*|.*>.*: Solution file error.*|.*2>.*-- FAILED\..*|.*: fatal error.*)" self.m_WarningRegexp = r".*>.*: warning.*"
[docs] def getvarsScriptPath(self): return os.path.normpath(self.m_Dir + r"\\vcvars32.bat")
[docs] def setvars(self): GDeps.Vc.setvars(self) GDeps.call(self.getvarsScriptPath())
@staticmethod
[docs] def getTypeName(): return "VC140_32"
[docs]class VC140_64(Vc): def __init__(self, inConfigFile, inSectionName="vc140_64", inDir=r"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\bin\\x86_amd64"): Vc.__init__(self, inConfigFile, inSectionName, inDir, GDeps.AdressModel.x64, VC140_64.getTypeName()) self.m_ErrorRegexp = r"(.*>.*: error.*|.*>.*: Solution file error.*|.*2>.*-- FAILED\..*|.*: fatal error.*)" self.m_WarningRegexp = r".*>.*: warning.*"
[docs] def getvarsScriptPath(self): return os.path.normpath(self.m_Dir + r"\\vcvarsx86_amd64.bat")
[docs] def setvars(self): GDeps.Vc.setvars(self) GDeps.call(self.getvarsScriptPath())
[docs] def getVarsBatDir(self): return self.getvarsScriptPath()
@staticmethod
[docs] def getTypeName(): return "VC140_64"
[docs]class VC120_32(Vc): def __init__( self, inConfigFile, inSectionName="vc120_32", inDir=r"C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\bin" ): Vc.__init__( self, inConfigFile, inSectionName, inDir, GDeps.AdressModel.x86, VC120_32.getTypeName() ) self.m_ErrorRegexp = r"(.*>.*: error.*|.*>.*: Solution file error.*|.*2>.*-- FAILED\..*|.*: fatal error.*)" self.m_WarningRegexp = r".*>.*: warning.*"
[docs] def getvarsScriptPath(self): return os.path.normpath(self.m_Dir + r"\\vcvars32.bat")
[docs] def setvars(self): GDeps.Vc.setvars(self) GDeps.call(self.getvarsScriptPath()) aSdkDir = os.path.dirname(self.m_Dir) os.environ['PATH'] = os.path.normpath(aSdkDir+ r"\\x86") + ';' + os.environ['PATH'] os.environ['INCLUDE'] = os.path.normpath(aSdkDir + r"\\include\\shared") + ';'\ + os.path.normpath(aSdkDir + r"\\include\\um") + ';' \ + os.path.normpath(aSdkDir + r"\\include\\winrt") + ';' \ + os.environ['INCLUDE'] if 'INCLUDE' in os.environ else '' os.environ['LIB'] = os.path.normpath(aSdkDir + r"\\lib\\winv6.3\\um\\x86") + ';' + os.environ['LIB'] if 'LIB' in os.environ else '' os.environ['LIBPATH'] = os.path.normpath(aSdkDir + r"References\CommonConfiguration\Neutral") + ';' \ + os.path.normpath(aSdkDir + r"\Microsoft.VCLibs\12.0\References\CommonConfiguration\neutral") + ';' \ + os.environ['LIBPATH'] if 'LIBPATH' in os.environ else ''
@staticmethod
[docs] def getTypeName(): return "VC120_32"
[docs]class VC120_64(Vc): def __init__(self, inConfigFile, inSectionName="vc120_64", inDir=r"C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\bin\\x86_amd64"): Vc.__init__(self, inConfigFile, inSectionName, inDir, GDeps.AdressModel.x64, VC120_64.getTypeName()) self.m_ErrorRegexp = r"(.*>.*: error.*|.*>.*: Solution file error.*|.*2>.*-- FAILED\..*|.*: fatal error.*)" self.m_WarningRegexp = r".*>.*: warning.*"
[docs] def getvarsScriptPath(self): return os.path.normpath(self.m_Dir + r"\\vcvarsx86_amd64.bat")
[docs] def setvars(self): GDeps.Vc.setvars(self) GDeps.call(self.getvarsScriptPath())
@staticmethod
[docs] def getTypeName(): return "VC120_64"
[docs]class VC110_32(Vc): def __init__(self, inConfigFile, inSectionName="vc110_32", inDir=r"C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\VC\\bin"): Vc.__init__( self, inConfigFile, inSectionName, inDir, GDeps.AdressModel.x86, VC110_32.getTypeName()) self.m_ErrorRegexp = r"(.*>.*: error.*|.*>.*: Solution file error.*|.*2>.*-- FAILED\..*|.*: fatal error.*)" self.m_WarningRegexp = r".*>.*: warning.*"
[docs] def getvarsScriptPath(self): return os.path.normpath(self.m_Dir + r"\\vcvars32.bat")
[docs] def setvars(self): GDeps.Vc.setvars(self) GDeps.call(self.getvarsScriptPath())
@staticmethod
[docs] def getTypeName(): return "VC110_32"
[docs]class VC110_64(Vc): def __init__(self, inConfigFile, inSectionName="vc110_64", inDir=r"C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\VC\\bin\\x86_amd64"): Vc.__init__(self, inConfigFile, inSectionName, inDir, GDeps.AdressModel.x64, VC110_64.getTypeName()) self.m_ErrorRegexp = r"(.*>.*: error.*|.*>.*: Solution file error.*|.*2>.*-- FAILED\..*|.*: fatal error.*)" self.m_WarningRegexp = r".*>.*: warning.*"
[docs] def getvarsScriptPath(self): return os.path.normpath(self.m_Dir + r"\\vcvarsx86_amd64.bat")
[docs] def setvars(self): GDeps.Vc.setvars(self) GDeps.call(self.getvarsScriptPath())
# GDeps.call( "C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\VC\\vcvarsall.bat x86_amd64" ) @staticmethod
[docs] def getTypeName(): return "VC110_64"
[docs]class VC100_32(Vc): def __init__(self, inConfigFile, inSectionName="vc100_32", inDir=r"C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin"): Vc.__init__(self, inConfigFile, inSectionName, inDir, GDeps.AdressModel.x86, VC100_32.getTypeName()) self.m_ErrorRegexp = r"(.*: error.*|Error:.*|.*2>.*-- FAILED\..*|.*: fatal error.*)" self.m_WarningRegexp = r".*: warning.*"
[docs] def getvarsScriptPath(self): return os.path.normpath(self.m_Dir + r"\\vcvars32.bat")
[docs] def setvars(self): GDeps.Vc.setvars(self) GDeps.call(self.getvarsScriptPath())
@staticmethod
[docs] def getTypeName(): return "VC100_32"
[docs]class VC100_64(Vc): def __init__(self, inConfigFile, inSectionName="vc100_64", inDir=r"C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin\\x86_amd64"): Vc.__init__(self, inConfigFile, inSectionName, inDir, GDeps.AdressModel.x64, VC100_64.getTypeName()) self.m_ErrorRegexp = r"(.*: error.*|Error:.*|.*2>.*-- FAILED\..*|.*: fatal error.*)" self.m_WarningRegexp = r".*: warning.*"
[docs] def getvarsScriptPath(self): return os.path.normpath(self.m_Dir + r"\\vcvarsx86_amd64.bat")
[docs] def setvars(self): GDeps.Vc.setvars(self) GDeps.call(self.getvarsScriptPath())
@staticmethod
[docs] def getTypeName(): return "VC100_64"
[docs]class VC90_32(Vc): def __init__(self, inConfigFile, inSectionName="vc90_32", inDir= "C:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\Common7\\IDE"): Vc.__init__(self, inConfigFile, inSectionName, inDir, GDeps.AdressModel.x86, VC90_32.getTypeName()) self.m_ErrorRegexp = r"(.*: error.*|Error:.*|.*: fatal error.*)" self.m_WarningRegexp = r".*: warning.*"
[docs] def getvarsScriptPath(self): aPath = os.path.normpath(GDeps.getParentDir(GDeps.getParentDir(self.m_Dir)) + r"\\VC\\vcvarsall.bat") assert os.path.exists(aPath), 'The file ' + aPath + " doesn't exist" # self.m_Dir + r"\\..\\..\\VC\\vcvarsall.bat" # print(os.path.normpath(os.path.dirname(os.path.dirname(self.m_Dir)) + r"\\VC\\vcvarsall.bat")) return aPath
[docs] def setvars(self): GDeps.Vc.setvars(self) GDeps.call('"' + self.getvarsScriptPath() + '" ' + "x86")
[docs] def getMakeDir(self): aDirectory = os.path.normpath(os.path.dirname(os.path.dirname(self.m_Dir)) + r"\\VC\\bin") return os.path.normpath(aDirectory + r"\\nmake.exe")
[docs] def getToolChain(self): aDirectory = os.path.normpath(self.m_Dir + r"\\..\\..\\VC\\bin") return {'cl': os.path.normpath(aDirectory + r'\\' + 'cl.exe'), 'link': os.path.normpath(aDirectory + r'\\' + 'link.exe'), 'lib': os.path.normpath(aDirectory + r'\\' + 'lib.exe'), 'ml': os.path.normpath(aDirectory + r'\\' + 'ml.exe'), 'nmake': os.path.normpath(self.getMakeDir())}
@staticmethod
[docs] def getTypeName(): return "VC90_32"