mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 21:40:52 -05:00 
			
		
		
		
	
		
			
	
	
		
			93 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			93 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								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"))
							 | 
						||
| 
								 | 
							
								    if Platform == "linux":
							 | 
						||
| 
								 | 
							
								        apis.append(_PackageOption("ALSA"))
							 | 
						||
| 
								 | 
							
								        apis.append(_PackageOption("ASIHPI"))
							 | 
						||
| 
								 | 
							
								elif Platform in Windows:
							 | 
						||
| 
								 | 
							
								    if Platform == "cygwin":
							 | 
						||
| 
								 | 
							
								        apis.append(_EnumOption("winAPI", "Windows API to use", ("wmme", "directx", "asio"), "wmme"))
							 | 
						||
| 
								 | 
							
								elif Platform == "darwin":
							 | 
						||
| 
								 | 
							
								    apis.append(_EnumOption("macAPI", "Mac API to use", ("asio", "core", "sm"), "core"))
							 | 
						||
| 
								 | 
							
								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")
							 |