summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Defaults.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/SCons/Defaults.py')
-rw-r--r--src/engine/SCons/Defaults.py600
1 files changed, 71 insertions, 529 deletions
diff --git a/src/engine/SCons/Defaults.py b/src/engine/SCons/Defaults.py
index e7a49b8..778517d 100644
--- a/src/engine/SCons/Defaults.py
+++ b/src/engine/SCons/Defaults.py
@@ -44,14 +44,23 @@ import os.path
import SCons.Action
import SCons.Builder
-import SCons.Errors
import SCons.Node.Alias
import SCons.Node.FS
-import SCons.Platform
import SCons.Scanner.C
import SCons.Scanner.Fortran
import SCons.Scanner.Prog
-import SCons.Util
+
+def alias_builder(env, target, source):
+ pass
+
+Alias = SCons.Builder.Builder(action = alias_builder,
+ target_factory = SCons.Node.Alias.default_ans.Alias,
+ source_factory = SCons.Node.FS.default_fs.Entry,
+ multi = 1)
+
+CScan = SCons.Scanner.C.CScan()
+
+FortranScan = SCons.Scanner.Fortran.FortranScan()
def yaccEmitter(target, source, env, **kw):
# Yacc can be configured to emit a .h file as well
@@ -64,17 +73,17 @@ def yaccEmitter(target, source, env, **kw):
'.h')
return (target, source)
-CFile = SCons.Builder.Builder(action = { '.l' : '$LEXCOM',
- '.y' : '$YACCCOM',
- },
- emitter = yaccEmitter,
- suffix = '$CFILESUFFIX')
+def CFile():
+ """Common function to generate a C file Builder."""
+ return SCons.Builder.Builder(action = {},
+ emitter = yaccEmitter,
+ suffix = '$CFILESUFFIX')
-CXXFile = SCons.Builder.Builder(action = { '.ll' : '$LEXCOM',
- '.yy' : '$YACCCOM',
- },
- emitter = yaccEmitter,
- suffix = '$CXXFILESUFFIX')
+def CXXFile():
+ """Common function to generate a C++ file Builder."""
+ return SCons.Builder.Builder(action = {},
+ emitter = yaccEmitter,
+ suffix = '$CXXFILESUFFIX')
class SharedFlagChecker:
"""This is a callable class that is used as
@@ -112,536 +121,69 @@ ShF77Action = SCons.Action.Action([ SharedCheck, "$SHF77COM" ])
F77PPAction = SCons.Action.Action([ StaticCheck, "$F77PPCOM" ])
ShF77PPAction = SCons.Action.Action([ SharedCheck, "$SHF77PPCOM" ])
-if os.path.normcase('.c') == os.path.normcase('.C'):
- # We're on a case-insensitive system, so .[CF] (upper case)
- # files should be treated like .[cf] (lower case) files.
- C_static = CAction
- C_shared = ShCAction
- F_static = F77Action
- F_shared = ShF77Action
-else:
- # We're on a case-sensitive system, so .C (upper case) files
- # are C++, and .F (upper case) files get run through the C
- # preprocessor.
- C_static = CXXAction
- C_shared = ShCXXAction
- F_static = F77PPAction
- F_shared = ShF77PPAction
-
-StaticObject = SCons.Builder.Builder(action = { ".C" : C_static,
- ".cc" : CXXAction,
- ".cpp" : CXXAction,
- ".cxx" : CXXAction,
- ".c++" : CXXAction,
- ".C++" : CXXAction,
- ".c" : CAction,
- ".f" : F77Action,
- ".for" : F77Action,
- ".F" : F_static,
- ".FOR" : F77Action,
- ".fpp" : F77PPAction,
- ".FPP" : F77PPAction },
- prefix = '$OBJPREFIX',
- suffix = '$OBJSUFFIX',
- src_builder = [CFile, CXXFile])
-
-SharedObject = SCons.Builder.Builder(action = { ".C" : C_shared,
- ".cc" : ShCXXAction,
- ".cpp" : ShCXXAction,
- ".cxx" : ShCXXAction,
- ".c++" : ShCXXAction,
- ".C++" : ShCXXAction,
- ".c" : ShCAction,
- ".f" : ShF77Action,
- ".for" : ShF77Action,
- ".FOR" : ShF77Action,
- ".F" : F_shared,
- ".fpp" : ShF77PPAction,
- ".FPP" : ShF77PPAction },
- prefix = '$OBJPREFIX',
- suffix = '$OBJSUFFIX',
- src_builder = [CFile, CXXFile])
-
-def win32TempFileMunge(env, cmd_list, for_signature):
- """Given a list of command line arguments, see if it is too
- long to pass to the win32 command line interpreter. If so,
- create a temp file, then pass "@tempfile" as the sole argument
- to the supplied command (which is the first element of cmd_list).
- Otherwise, just return [cmd_list]."""
- cmd = env.subst_list(cmd_list)[0]
- if for_signature or \
- (reduce(lambda x, y: x + len(y), cmd, 0) + len(cmd)) <= 2048:
- return [cmd_list]
- else:
- import tempfile
- # We do a normpath because mktemp() has what appears to be
- # a bug in Win32 that will use a forward slash as a path
- # delimiter. Win32's link mistakes that for a command line
- # switch and barfs.
- tmp = os.path.normpath(tempfile.mktemp())
- args = map(SCons.Util.quote_spaces, cmd[1:])
- open(tmp, 'w').write(string.join(args, " ") + "\n")
- return [ [cmd[0], '@' + tmp],
- ['del', tmp] ]
-
-def win32LinkGenerator(env, target, source, for_signature, **kw):
- args = [ '$LINK', '$LINKFLAGS', '/OUT:%s' % target[0],
- '$(', '$_LIBDIRFLAGS', '$)', '$_LIBFLAGS' ]
- args.extend(map(SCons.Util.to_String, source))
- return win32TempFileMunge(env, args, for_signature)
-ProgScan = SCons.Scanner.Prog.ProgScan()
+def StaticObject():
+ """A function for generating the static object Builder."""
+ return SCons.Builder.Builder(action = {},
+ prefix = '$OBJPREFIX',
+ suffix = '$OBJSUFFIX',
+ src_builder = ['CFile', 'CXXFile'])
-Program = SCons.Builder.Builder(action=[ StaticCheck, '$LINKCOM' ],
- prefix='$PROGPREFIX',
- suffix='$PROGSUFFIX',
- src_suffix='$OBJSUFFIX',
- src_builder=StaticObject,
- scanner = ProgScan)
+def SharedObject():
+ """A function for generating the shared object Builder."""
+ return SCons.Builder.Builder(action = {},
+ prefix = '$OBJPREFIX',
+ suffix = '$OBJSUFFIX',
+ src_builder = ['CFile', 'CXXFile'])
-def win32LibGenerator(target, source, env, for_signature, no_import_lib=0):
- listCmd = [ "$SHLINK", "$SHLINKFLAGS" ]
-
- for tgt in target:
- ext = os.path.splitext(str(tgt))[1]
- if ext == env.subst("$LIBSUFFIX"):
- # Put it on the command line as an import library.
- if no_import_lib:
- raise SCons.Errors.UserError, "%s: You cannot specify a .lib file as a target of a shared library build if no_import_library is nonzero." % tgt
- listCmd.append("${WIN32IMPLIBPREFIX}%s" % tgt)
- else:
- listCmd.append("${WIN32DLLPREFIX}%s" % tgt)
-
- listCmd.extend([ '$_LIBDIRFLAGS', '$_LIBFLAGS' ])
- for src in source:
- ext = os.path.splitext(str(src))[1]
- if ext == env.subst("$WIN32DEFSUFFIX"):
- # Treat this source as a .def file.
- listCmd.append("${WIN32DEFPREFIX}%s" % src)
- else:
- # Just treat it as a generic source file.
- listCmd.append(str(src))
- return win32TempFileMunge(env, listCmd, for_signature)
-
-def win32LibEmitter(target, source, env, no_import_lib=0):
- dll = None
- for tgt in target:
- ext = os.path.splitext(str(tgt))[1]
- if ext == env.subst("$SHLIBSUFFIX"):
- dll = tgt
- break
- if not dll:
- raise SCons.Errors.UserError, "A shared library should have exactly one target with the suffix: %s" % env.subst("$SHLIBSUFFIX")
-
- if env.has_key("WIN32_INSERT_DEF") and \
- env["WIN32_INSERT_DEF"] and \
- not '.def' in map(lambda x: os.path.split(str(x))[1],
- source):
-
- # append a def file to the list of sources
- source.append("%s%s" % (os.path.splitext(str(dll))[0],
- env.subst("$WIN32DEFSUFFIX")))
- if not no_import_lib and \
- not env.subst("$LIBSUFFIX") in \
- map(lambda x: os.path.split(str(x))[1], target):
- # Append an import library to the list of targets.
- target.append("%s%s%s" % (env.subst("$LIBPREFIX"),
- os.path.splitext(str(dll))[0],
- env.subst("$LIBSUFFIX")))
- return (target, source)
+ProgScan = SCons.Scanner.Prog.ProgScan()
StaticLibrary = SCons.Builder.Builder(action=[ StaticCheck, "$ARCOM" ],
prefix = '$LIBPREFIX',
suffix = '$LIBSUFFIX',
src_suffix = '$OBJSUFFIX',
- src_builder = StaticObject)
+ src_builder = 'Object')
SharedLibrary = SCons.Builder.Builder(action=[ SharedCheck, "$SHLINKCOM" ],
- emitter="$LIBEMITTER",
+ emitter="$SHLIBEMITTER",
prefix = '$SHLIBPREFIX',
suffix = '$SHLIBSUFFIX',
scanner = ProgScan,
src_suffix = '$OBJSUFFIX',
- src_builder = SharedObject)
-
-LaTeXAction = SCons.Action.Action('$LATEXCOM')
-
-DVI = SCons.Builder.Builder(action = { '.tex' : '$TEXCOM',
- '.ltx' : LaTeXAction,
- '.latex' : LaTeXAction,
- },
- # The suffix is not configurable via a
- # construction variable like $DVISUFFIX
- # because the output file name is
- # hard-coded within TeX.
- suffix = '.dvi')
-
-PDFLaTeXAction = SCons.Action.Action('$PDFLATEXCOM')
-
-PDF = SCons.Builder.Builder(action = { '.dvi' : '$PDFCOM',
- '.tex' : '$PDFTEXCOM',
- '.ltx' : PDFLaTeXAction,
- '.latex' : PDFLaTeXAction,
- },
- prefix = '$PDFPREFIX',
- suffix = '$PDFSUFFIX')
-
-PostScript = SCons.Builder.Builder(action = '$PSCOM',
- prefix = '$PSPREFIX',
- suffix = '$PSSUFFIX',
- src_suffix = '.dvi',
- src_builder = DVI)
-
-CScan = SCons.Scanner.C.CScan()
-
-FortranScan = SCons.Scanner.Fortran.FortranScan()
+ src_builder = 'SharedObject')
+
+def DVI():
+ """Common function to generate a DVI file Builder."""
+ return SCons.Builder.Builder(action = {},
+ # The suffix is not configurable via a
+ # construction variable like $DVISUFFIX
+ # because the output file name is
+ # hard-coded within TeX.
+ suffix = '.dvi')
+
+def PDF():
+ """A function for generating the PDF Builder."""
+ return SCons.Builder.Builder(action = { },
+ prefix = '$PDFPREFIX',
+ suffix = '$PDFSUFFIX')
-def alias_builder(env, target, source):
- pass
-
-Alias = SCons.Builder.Builder(action = alias_builder,
- target_factory = SCons.Node.Alias.default_ans.Alias,
- source_factory = SCons.Node.FS.default_fs.Entry,
- multi = 1)
+Program = SCons.Builder.Builder(action=[ StaticCheck, '$LINKCOM' ],
+ prefix='$PROGPREFIX',
+ suffix='$PROGSUFFIX',
+ src_suffix='$OBJSUFFIX',
+ src_builder='Object',
+ scanner = ProgScan)
-def get_devstudio_versions ():
- """
- Get list of devstudio versions from the Windows registry. Return a
- list of strings containing version numbers; an exception will be raised
- if we were unable to access the registry (eg. couldn't import
- a registry-access module) or the appropriate registry keys weren't
- found.
- """
-
- if not SCons.Util.can_read_reg:
- raise SCons.Errors.InternalError, "No Windows registry module was found"
-
- K = 'Software\\Microsoft\\Devstudio'
- L = []
- for base in (SCons.Util.HKEY_CLASSES_ROOT,
- SCons.Util.HKEY_LOCAL_MACHINE,
- SCons.Util.HKEY_CURRENT_USER,
- SCons.Util.HKEY_USERS):
- try:
- k = SCons.Util.RegOpenKeyEx(base,K)
- i = 0
- while 1:
- try:
- p = SCons.Util.RegEnumKey(k,i)
- if p[0] in '123456789' and p not in L:
- L.append(p)
- except SCons.Util.RegError:
- break
- i = i + 1
- except SCons.Util.RegError:
- pass
-
- if not L:
- raise SCons.Errors.InternalError, "DevStudio was not found."
-
- L.sort()
- L.reverse()
- return L
-
-def get_msvc_path (path, version, platform='x86'):
- """
- Get a list of devstudio directories (include, lib or path). Return
- a string delimited by ';'. An exception will be raised if unable to
- access the registry or appropriate registry keys not found.
- """
-
- if not SCons.Util.can_read_reg:
- raise SCons.Errors.InternalError, "No Windows registry module was found"
-
- if path=='lib':
- path= 'Library'
- path = string.upper(path + ' Dirs')
- K = ('Software\\Microsoft\\Devstudio\\%s\\' +
- 'Build System\\Components\\Platforms\\Win32 (%s)\\Directories') % \
- (version,platform)
- for base in (SCons.Util.HKEY_CLASSES_ROOT,
- SCons.Util.HKEY_LOCAL_MACHINE,
- SCons.Util.HKEY_CURRENT_USER,
- SCons.Util.HKEY_USERS):
- try:
- k = SCons.Util.RegOpenKeyEx(base,K)
- i = 0
- while 1:
- try:
- (p,v,t) = SCons.Util.RegEnumValue(k,i)
- if string.upper(p) == path:
- return v
- i = i + 1
- except SCons.Util.RegError:
- break
- except SCons.Util.RegError:
- pass
-
- # if we got here, then we didn't find the registry entries:
- raise SCons.Errors.InternalError, "%s was not found in the registry."%path
-
-def get_msdev_dir(version):
- """Returns the root directory of the MSDev installation from the
- registry if it can be found, otherwise we guess."""
- if SCons.Util.can_read_reg:
- K = ('Software\\Microsoft\\Devstudio\\%s\\' +
- 'Products\\Microsoft Visual C++') % \
- version
- for base in (SCons.Util.HKEY_LOCAL_MACHINE,
- SCons.Util.HKEY_CURRENT_USER):
- try:
- k = SCons.Util.RegOpenKeyEx(base,K)
- val, tok = SCons.Util.RegQueryValueEx(k, 'ProductDir')
- return os.path.split(val)[0]
- except SCons.Util.RegError:
- pass
-
-def make_win32_env_from_paths(include, lib, path):
- """
- Build a dictionary of construction variables for a win32 platform.
- include - include path
- lib - library path
- path - executable path
- """
- return {
- 'CC' : 'cl',
- 'CCFLAGS' : '/nologo',
- 'CCCOM' : '$CC $CCFLAGS $CPPFLAGS $_CPPINCFLAGS /c $SOURCES /Fo$TARGET',
- 'SHCC' : '$CC',
- 'SHCCFLAGS' : '$CCFLAGS',
- 'SHCCCOM' : '$SHCC $SHCCFLAGS $CPPFLAGS $_CPPINCFLAGS /c $SOURCES /Fo$TARGET',
- 'CFILESUFFIX' : '.c',
- 'CXX' : '$CC',
- 'CXXFLAGS' : '$CCFLAGS',
- 'CXXCOM' : '$CXX $CXXFLAGS $CPPFLAGS $_CPPINCFLAGS /c $SOURCES /Fo$TARGET',
- 'SHCXX' : '$CXX',
- 'SHCXXFLAGS' : '$CXXFLAGS',
- 'SHCXXCOM' : '$SHCXX $SHCXXFLAGS $CPPFLAGS $_CPPINCFLAGS /c $SOURCES /Fo$TARGET',
- 'CXXFILESUFFIX' : '.cc',
- 'F77' : 'g77',
- 'F77FLAGS' : '',
- 'F77COM' : '$F77 $F77FLAGS $_F77INCFLAGS /c $SOURCES /Fo$TARGET',
- 'F77PPCOM' : '$F77 $F77FLAGS $CPPFLAGS $_F77INCFLAGS /c $SOURCES /Fo$TARGET',
- 'SHF77' : '$F77',
- 'SHF77FLAGS' : '$F77FLAGS',
- 'SHF77COM' : '$SHF77 $SHF77FLAGS $_F77INCFLAGS /c $SOURCES /Fo$TARGET',
- 'SHF77PPCOM' : '$SHF77 $SHF77FLAGS $CPPFLAGS $_F77INCFLAGS /c $SOURCES /Fo$TARGET',
- 'LINK' : 'link',
- 'LINKFLAGS' : '/nologo',
- 'LINKCOM' : SCons.Action.CommandGenerator(win32LinkGenerator),
- 'SHLINK' : '$LINK',
- 'SHLINKFLAGS': '$LINKFLAGS /dll',
- 'SHLINKCOM' : SCons.Action.CommandGenerator(win32LibGenerator),
- 'AR' : 'lib',
- 'ARFLAGS' : '/nologo',
- 'ARCOM' : '$AR $ARFLAGS /OUT:$TARGET $SOURCES',
- 'LEX' : 'lex',
- 'LEXFLAGS' : '',
- 'LEXCOM' : '$LEX $LEXFLAGS -t $SOURCES > $TARGET',
- 'YACC' : 'yacc',
- 'YACCFLAGS' : '',
- 'YACCCOM' : '$YACC $YACCFLAGS -o $TARGET $SOURCES',
- 'TEX' : 'tex',
- 'TEXFLAGS' : '',
- 'TEXCOM' : '$TEX $TEXFLAGS $SOURCES',
- 'LATEX' : 'latex',
- 'LATEXFLAGS' : '',
- 'LATEXCOM' : '$LATEX $LATEXFLAGS $SOURCES',
- 'DVIPDF' : 'dvipdf',
- 'DVIPDFFLAGS' : '',
- 'PDFCOM' : '$DVIPDF $DVIPDFFLAGS $SOURCES $TARGET',
- 'PDFPREFIX' : '',
- 'PDFSUFFIX' : '.pdf',
- 'PDFTEX' : 'pdftex',
- 'PDFTEXFLAGS' : '',
- 'PDFTEXCOM' : '$PDFTEX $PDFTEXFLAGS $SOURCES $TARGET',
- 'PDFLATEX' : 'pdflatex',
- 'PDFLATEXFLAGS' : '',
- 'PDFLATEXCOM' : '$PDFLATEX $PDFLATEXFLAGS $SOURCES $TARGET',
- 'DVIPS' : 'dvips',
- 'DVIPSFLAGS' : '',
- 'PSCOM' : '$DVIPS $DVIPSFLAGS -o $TARGET $SOURCES',
- 'PSPREFIX' : '',
- 'PSSUFFIX' : '.ps',
- 'BUILDERS' : { 'Alias' : Alias,
- 'CFile' : CFile,
- 'CXXFile' : CXXFile,
- 'DVI' : DVI,
- 'Library' : StaticLibrary,
- 'StaticLibrary' : StaticLibrary,
- 'SharedLibrary' : SharedLibrary,
- 'Object' : StaticObject,
- 'StaticObject' : StaticObject,
- 'SharedObject' : SharedObject,
- 'PDF' : PDF,
- 'PostScript' : PostScript,
- 'Program' : Program },
- 'SCANNERS' : [CScan, FortranScan],
- 'LIBDIRPREFIX' : '/LIBPATH:',
- 'LIBDIRSUFFIX' : '',
- 'LIBLINKPREFIX' : '',
- 'LIBLINKSUFFIX' : '$LIBSUFFIX',
- 'LIBEMITTER' : win32LibEmitter,
- 'INCPREFIX' : '/I',
- 'INCSUFFIX' : '',
- 'WIN32DEFPREFIX' : '/def:',
- 'WIN32DEFSUFFIX' : '.def',
- 'WIN32DLLPREFIX' : '/out:',
- 'WIN32IMPLIBPREFIX' : '/implib:',
- 'WIN32_INSERT_DEF' : 0,
- 'ENV' : {
- 'INCLUDE' : include,
- 'LIB' : lib,
- 'PATH' : path,
- },
- }
-
-def make_win32_env(version):
- """
- Build a dictionary of construction variables for a win32 platform.
- ver - the version string of DevStudio to use (e.g. "6.0")
- """
- return make_win32_env_from_paths(get_msvc_path("include", version),
- get_msvc_path("lib", version),
- get_msvc_path("path", version)
- + ";" + os.environ['PATH'])
-
-
-if os.name == 'posix':
- arcom = '$AR $ARFLAGS $TARGET $SOURCES'
- ranlib = 'ranlib'
- if SCons.Util.WhereIs(ranlib):
- arcom = arcom + '\n$RANLIB $RANLIBFLAGS $TARGET'
-
- ConstructionEnvironment = {
- 'CC' : 'cc',
- 'CCFLAGS' : '',
- 'CCCOM' : '$CC $CCFLAGS $CPPFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES',
- 'SHCC' : '$CC',
- 'SHCCFLAGS' : '$CCFLAGS -fPIC',
- 'SHCCCOM' : '$SHCC $SHCCFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES',
- 'CFILESUFFIX' : '.c',
- 'CXX' : 'c++',
- 'CXXFLAGS' : '$CCFLAGS',
- 'CXXCOM' : '$CXX $CXXFLAGS $CPPFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES',
- 'CXXFILESUFFIX' : '.cc',
- 'SHCXX' : '$CXX',
- 'SHCXXFLAGS' : '$CXXFLAGS -fPIC',
- 'SHCXXCOM' : '$SHCXX $SHCXXFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES',
- 'F77' : 'g77',
- 'F77FLAGS' : '',
- 'F77COM' : '$F77 $F77FLAGS $_F77INCFLAGS -c -o $TARGET $SOURCES',
- 'F77PPCOM' : '$F77 $F77FLAGS $CPPFLAGS $_F77INCFLAGS -c -o $TARGET $SOURCES',
- 'SHF77FLAGS' : '$F77FLAGS -fPIC',
- 'SHF77COM' : '$F77 $SHF77FLAGS $_F77INCFLAGS -c -o $TARGET $SOURCES',
- 'SHF77PPCOM' : '$F77 $SHF77FLAGS $CPPFLAGS $_F77INCFLAGS -c -o $TARGET $SOURCES',
- 'SHF77' : '$F77',
- 'SHF77FLAGS' : '$F77FLAGS -fPIC',
- 'SHF77COM' : '$SHF77 $SHF77FLAGS $_F77INCFLAGS -c -o $TARGET $SOURCES',
- 'SHF77PPCOM' : '$SHF77 $SHF77FLAGS $CPPFLAGS $_F77INCFLAGS -c -o $TARGET $SOURCES',
- 'LINK' : '$CXX',
- 'LINKFLAGS' : '',
- 'LINKCOM' : '$LINK $LINKFLAGS -o $TARGET $SOURCES $_LIBDIRFLAGS $_LIBFLAGS',
- 'SHLINK' : '$LINK',
- 'SHLINKFLAGS': '$LINKFLAGS -shared',
- 'SHLINKCOM' : '$SHLINK $SHLINKFLAGS -o $TARGET $SOURCES $_LIBDIRFLAGS $_LIBFLAGS',
- 'AR' : 'ar',
- 'ARFLAGS' : 'r',
- 'RANLIB' : ranlib,
- 'RANLIBFLAGS' : '',
- 'ARCOM' : arcom,
- 'LEX' : 'lex',
- 'LEXFLAGS' : '',
- 'LEXCOM' : '$LEX $LEXFLAGS -t $SOURCES > $TARGET',
- 'YACC' : 'yacc',
- 'YACCFLAGS' : '',
- 'YACCCOM' : '$YACC $YACCFLAGS -o $TARGET $SOURCES',
- 'TEX' : 'tex',
- 'TEXFLAGS' : '',
- 'TEXCOM' : '$TEX $TEXFLAGS $SOURCES',
- 'LATEX' : 'latex',
- 'LATEXFLAGS' : '',
- 'LATEXCOM' : '$LATEX $LATEXFLAGS $SOURCES',
- 'DVIPDF' : 'dvipdf',
- 'PDFCOM' : '$DVIPDF $DVIPDFFLAGS $SOURCES $TARGET',
- 'PDFPREFIX' : '',
- 'PDFSUFFIX' : '.pdf',
- 'PDFTEX' : 'pdftex',
- 'PDFTEXFLAGS' : '',
- 'PDFTEXCOM' : '$PDFTEX $PDFTEXFLAGS $SOURCES $TARGET',
- 'PDFLATEX' : 'pdflatex',
- 'PDFLATEXFLAGS' : '',
- 'PDFLATEXCOM' : '$PDFLATEX $PDFLATEXFLAGS $SOURCES $TARGET',
- 'DVIPS' : 'dvips',
- 'PSCOM' : '$DVIPS $DVIPSFLAGS -o $TARGET $SOURCES',
- 'PSPREFIX' : '',
- 'PSSUFFIX' : '.ps',
- 'BUILDERS' : { 'Alias' : Alias,
- 'CFile' : CFile,
- 'CXXFile' : CXXFile,
- 'DVI' : DVI,
- 'Library' : StaticLibrary,
- 'StaticLibrary' : StaticLibrary,
- 'SharedLibrary' : SharedLibrary,
- 'Object' : StaticObject,
- 'StaticObject' : StaticObject,
- 'SharedObject' : SharedObject,
- 'PDF' : PDF,
- 'PostScript' : PostScript,
- 'Program' : Program },
- 'SCANNERS' : [CScan, FortranScan],
- 'LIBDIRPREFIX' : '-L',
- 'LIBDIRSUFFIX' : '',
- 'LIBLINKPREFIX' : '-l',
- 'LIBLINKSUFFIX' : '',
- 'INCPREFIX' : '-I',
- 'INCSUFFIX' : '',
+ConstructionEnvironment = {
+ 'BUILDERS' : { 'SharedLibrary' : SharedLibrary,
+ 'Library' : StaticLibrary,
+ 'StaticLibrary' : StaticLibrary,
+ 'Alias' : Alias,
+ 'Program' : Program },
+ 'SCANNERS' : [CScan, FortranScan],
+ 'PDFPREFIX' : '',
+ 'PDFSUFFIX' : '.pdf',
+ 'PSPREFIX' : '',
+ 'PSSUFFIX' : '.ps',
+ 'ENV' : {},
}
-
-elif os.name == 'nt':
- versions = None
- try:
- versions = get_devstudio_versions()
- ConstructionEnvironment = make_win32_env(versions[0]) #use highest version
- except (SCons.Util.RegError, SCons.Errors.InternalError):
- # Could not get the configured directories from the registry.
- # However, the configured directories only appear if the user
- # changes them from the default. Therefore, we'll see if
- # we can get the path to the MSDev base installation from
- # the registry and deduce the default directories.
- MVSdir = None
- if versions:
- MVSdir = get_msdev_dir(versions[0])
- if MVSdir:
- MVSVCdir = r'%s\VC98' % MVSdir
- MVSCommondir = r'%s\Common' % MVSdir
- try:
- extra_path = os.pathsep + os.environ['PATH']
- except KeyError:
- extra_path = ''
- ConstructionEnvironment = make_win32_env_from_paths(
- r'%s\atl\include;%s\mfc\include;%s\include' % (MVSVCdir, MVSVCdir, MVSVCdir),
- r'%s\mfc\lib;%s\lib' % (MVSVCdir, MVSVCdir),
- (r'%s\MSDev98\Bin;%s\Bin' % (MVSCommondir, MVSVCdir)) + extra_path)
- else:
- # The DevStudio environment variables don't exist,
- # so just use the variables from the source environment.
- MVSdir = r'C:\Program Files\Microsoft Visual Studio'
- MVSVCdir = r'%s\VC98' % MVSdir
- MVSCommondir = r'%s\Common' % MVSdir
- try:
- include_path = os.environ['INCLUDE']
- except KeyError:
- include_path = ''
- try:
- lib_path = os.environ['LIB']
- except KeyError:
- lib_path = ''
- try:
- exe_path = os.environ['PATH']
- except KeyError:
- exe_path = ''
- ConstructionEnvironment = make_win32_env_from_paths(
- include_path,
- lib_path,
- exe_path)