Spaces:
Runtime error
Runtime error
File size: 4,100 Bytes
83418c6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
import os.path, sys
def _PackageOption(pkgName, default=1):
""" Allow user to choose whether a package should be used if available. This results in a commandline option use<Pkgname>,
where Pkgname is the name of the package with a capitalized first letter.
@param pkgName: Name of package.
@param default: The default value for this option ("yes"/"no").
"""
return BoolOption("use%s" % pkgName[0].upper() + pkgName[1:], "use %s if available" % (pkgName), default)
def _BoolOption(opt, explanation, default=1):
""" Allow user to enable/disable a certain option. This results in a commandline option enable<Option>, where Option
is the name of the option with a capitalized first letter.
@param opt: Name of option.
@param explanation: Explanation of option.
@param default: The default value for this option (1/0).
"""
return BoolOption("enable%s" % opt[0].upper() + opt[1:], explanation, default)
def _EnumOption(opt, explanation, allowedValues, default):
""" Allow the user to choose among a set of values for an option. This results in a commandline option with<Option>,
where Option is the name of the option with a capitalized first letter.
@param opt: The name of the option.
@param explanation: Explanation of option.
@param allowedValues: The set of values to choose from.
@param default: The default value.
"""
assert default in allowedValues
return EnumOption("with%s" % opt[0].upper() + opt[1:], explanation, default, allowed_values=allowedValues)
def _DirectoryOption(opt, explanation, default):
""" Allow the user to configure the location for a certain directory, for instance the prefix. This results in a
commandline option which is simply the name of this option.
@param opt: The configurable directory, for instance "prefix".
@param explanation: Explanation of option.
@param default: The default value for this option.
"""
return PathOption(opt, explanation, default)
# Incompatible with the latest stable SCons
# return PathOption(path, help, default, PathOption.PathIsDir)
import SCons.Errors
try:
Import("Platform", "Posix")
except SCons.Errors.UserError:
# The common objects must be exported first
SConscript("SConscript_common")
Import("Platform", "Posix")
# Expose the options as a dictionary of sets of options
opts = {}
if Platform in Posix:
opts["Installation Dirs"] = [_DirectoryOption("prefix", "installation prefix", "/usr/local")]
elif Platform in Windows:
if Platform == "cygwin":
opts["Installation Dirs"] = [_DirectoryOption("prefix", "installation prefix", "/usr/local")]
opts["Build Targets"] = [_BoolOption("shared", "create shared library"), _BoolOption("static", "create static library"),
_BoolOption("tests", "build test programs")]
apis = []
if Platform in Posix:
apis.append(_PackageOption("OSS"))
apis.append(_PackageOption("JACK"))
apis.append(_PackageOption("ALSA", Platform == "linux"))
apis.append(_PackageOption("ASIHPI", Platform == "linux"))
apis.append(_PackageOption("COREAUDIO", Platform == "darwin"))
elif Platform in Windows:
if Platform == "cygwin":
apis.append(_EnumOption("winAPI", "Windows API to use", ("wmme", "directx", "asio"), "wmme"))
opts["Host APIs"] = apis
opts["Build Parameters"] = [\
_BoolOption("debug", "compile with debug symbols"),
_BoolOption("optimize", "compile with optimization", default=0),
_BoolOption("asserts", "runtime assertions are helpful for debugging, but can be detrimental to performance",
default=1),
_BoolOption("debugOutput", "enable debug output", default=0),
# _BoolOption("python", "create Python binding"),
("customCFlags", "customize compilation of C code", ""),
("customCxxFlags", "customize compilation of C++ code", ""),
("customLinkFlags", "customize linking", ""),
]
opts["Bindings"] = [\
_BoolOption("cxx", "build Merlijn Blaauw's PA C++ wrapper", default=0)
]
Return("opts")
|