mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-12-02 09:05:13 -05:00
79 lines
3.1 KiB
Python
79 lines
3.1 KiB
Python
|
import sys, os.path
|
||
|
|
||
|
class ConfigurationError(Exception):
|
||
|
def __init__(self, reason):
|
||
|
Exception.__init__(self, "Configuration failed: %s" % reason)
|
||
|
|
||
|
def _PackageOption(pkgName, default="yes"):
|
||
|
return BoolOption("use%s" % pkgName[0].upper() + pkgName[1:], "use %s if available" % (pkgName), default)
|
||
|
|
||
|
def _BoolOption(opt, explanation, default="yes"):
|
||
|
return BoolOption("enable%s" % opt[0].upper() + opt[1:], explanation, default)
|
||
|
|
||
|
def _DirectoryOption(path, help, default):
|
||
|
return PathOption(path, help, default)
|
||
|
# Incompatible with the latest stable SCons
|
||
|
# return PathOption(path, help, default, PathOption.PathIsDir)
|
||
|
|
||
|
def _EnumOption(opt, explanation, allowedValues, default):
|
||
|
assert default in allowedValues
|
||
|
return EnumOption("with%s" % opt[0].upper() + opt[1:], explanation, default, allowed_values=allowedValues)
|
||
|
|
||
|
def getPlatform():
|
||
|
global __platform
|
||
|
try: return __platform
|
||
|
except NameError:
|
||
|
env = Environment()
|
||
|
if env["PLATFORM"] == "posix":
|
||
|
if sys.platform[:5] == "linux":
|
||
|
__platform = "linux"
|
||
|
else:
|
||
|
raise ConfigurationError("Unknown platform %s" % sys.platform)
|
||
|
else:
|
||
|
if not env["PLATFORM"] in ("win32", "cygwin") + Posix:
|
||
|
raise ConfigurationError("Unknown platform %s" % env["PLATFORM"])
|
||
|
__platform = env["PLATFORM"]
|
||
|
|
||
|
return __platform
|
||
|
|
||
|
# sunos, aix, hpux, irix, sunos appear to be platforms known by SCons, assuming they're POSIX compliant
|
||
|
Posix = ("linux", "darwin", "sunos", "aix", "hpux", "irix", "sunos")
|
||
|
Windows = ("win32", "cygwin")
|
||
|
env = Environment(CPPPATH="pa_common")
|
||
|
|
||
|
Platform = getPlatform()
|
||
|
|
||
|
opts = Options("options.cache", args=ARGUMENTS)
|
||
|
if Platform in Posix:
|
||
|
opts.AddOptions(
|
||
|
_DirectoryOption("prefix", "installation prefix", "/usr/local"),
|
||
|
_PackageOption("ALSA"),
|
||
|
_PackageOption("OSS"),
|
||
|
_PackageOption("JACK"),
|
||
|
)
|
||
|
elif Platform in Windows:
|
||
|
if Platform == "cygwin":
|
||
|
opts.AddOptions(_DirectoryOption("prefix", "installation prefix", "/usr/local"))
|
||
|
opts.AddOptions(_EnumOption("winAPI", "Windows API to use", ("wmme", "directx", "asio"), "wmme"))
|
||
|
|
||
|
if Platform == "darwin":
|
||
|
opts.AddOptions(_EnumOption("macAPI", "Mac API to use", ("asio", "core", "sm"), "core"))
|
||
|
|
||
|
opts.AddOptions(
|
||
|
_BoolOption("shared", "create shared library"),
|
||
|
_BoolOption("static", "create static library"),
|
||
|
_BoolOption("debug", "compile with debug symbols"),
|
||
|
_BoolOption("optimize", "compile with optimization", default="no"),
|
||
|
_BoolOption("asserts", "runtime assertions are helpful for debugging, but can be detrimental to performance", default="yes"),
|
||
|
_BoolOption("debugOutput", "enable debug output", default="no"),
|
||
|
("customCFlags", "customize compilation of C code", ""),
|
||
|
)
|
||
|
|
||
|
opts.Update(env)
|
||
|
opts.Save("options.cache", env)
|
||
|
|
||
|
Help(opts.GenerateHelpText(env))
|
||
|
|
||
|
env.SConscriptChdir(False)
|
||
|
SConscript("SConscript", build_dir=".build_scons", exports=["env", "Platform", "Posix", "ConfigurationError"], duplicate=False)
|