Spaces:
Runtime error
Runtime error
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") | |