#!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")
# 'nmake': os.path.normpath(self.getMakeDir())}
[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 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 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 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 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 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 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 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 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 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")
@staticmethod
[docs] def getTypeName():
return "VC90_32"