mirror of
https://github.com/Relintai/godot-mono-builds.git
synced 2024-11-12 10:25:10 +01:00
b9e297ad91
The jobs logic is factored out into `options.py` and used consistently in all places where a `make` (build) is called. It's not used for `make install`. Scripts can now be called with `--jobs` without argument, which will use the max amount of CPU threads reported by the OS. Also adds `-j` alias for `--jobs`.
84 lines
3.0 KiB
Python
84 lines
3.0 KiB
Python
|
|
|
|
def custom_bool(val):
|
|
if isinstance(val, bool):
|
|
return val
|
|
if val.lower() in ('yes', 'true', 't', 'y', '1'):
|
|
return True
|
|
elif val.lower() in ('no', 'false', 'f', 'n', '0'):
|
|
return False
|
|
else:
|
|
from argparse import ArgumentTypeError
|
|
raise ArgumentTypeError('Boolean value expected.')
|
|
|
|
|
|
def build_arg_parser(description, env_vars={}):
|
|
from argparse import ArgumentParser, RawDescriptionHelpFormatter
|
|
from textwrap import dedent
|
|
|
|
base_env_vars = {
|
|
'MONO_SOURCE_ROOT': 'Overrides default value for --mono-sources',
|
|
}
|
|
|
|
env_vars_text = '\n'.join([' %s: %s' % (var, desc) for var, desc in env_vars.items()])
|
|
base_env_vars_text = '\n'.join([' %s: %s' % (var, desc) for var, desc in base_env_vars.items()])
|
|
|
|
epilog=dedent('''\
|
|
environment variables:
|
|
%s
|
|
%s
|
|
''' % (env_vars_text, base_env_vars_text))
|
|
|
|
return ArgumentParser(
|
|
description=description,
|
|
formatter_class=RawDescriptionHelpFormatter,
|
|
epilog=epilog
|
|
)
|
|
|
|
|
|
def add_base_arguments(parser, default_help):
|
|
import os
|
|
from os.path import join as path_join
|
|
|
|
home = os.environ.get('HOME')
|
|
mono_sources_default = os.environ.get('MONO_SOURCE_ROOT', '')
|
|
|
|
parser.add_argument('--verbose-make', action='store_true', default=False, help=default_help)
|
|
# --jobs supports not passing an argument, in which case the 'const' is used,
|
|
# which is the number of CPU cores on the host system.
|
|
parser.add_argument('--jobs', '-j', nargs='?', const=str(os.cpu_count()), default='1', help=default_help)
|
|
parser.add_argument('--configure-dir', default=path_join(home, 'mono-configs'), help=default_help)
|
|
parser.add_argument('--install-dir', default=path_join(home, 'mono-installs'), help=default_help)
|
|
|
|
if mono_sources_default:
|
|
parser.add_argument('--mono-sources', default=mono_sources_default, help=default_help)
|
|
else:
|
|
parser.add_argument('--mono-sources', required=True)
|
|
|
|
parser.add_argument('--mxe-prefix', default='/usr', help=default_help)
|
|
|
|
|
|
def add_runtime_arguments(parser, default_help):
|
|
add_base_arguments(parser, default_help)
|
|
|
|
parser.add_argument('--configuration', choices=['release', 'debug'], default='release', help=default_help)
|
|
parser.add_argument('--enable-cxx', action='store_true', default=False, help=default_help)
|
|
parser.add_argument('--strip-libs', type=custom_bool, default=True, help='Strip the libraries if possible after running make.\n' + default_help)
|
|
|
|
|
|
def expand_input_targets(input_targets, target_shortcuts=[]):
|
|
targets = []
|
|
|
|
for shortcut in target_shortcuts.keys():
|
|
if shortcut in input_targets:
|
|
targets += target_shortcuts[shortcut][:]
|
|
|
|
# The shortcuts options ('all-*') have already been handled. Remove them this way as there may be duplicates.
|
|
input_targets = [t for t in input_targets if not t in target_shortcuts]
|
|
|
|
for target in input_targets:
|
|
if not target in targets:
|
|
targets += [target]
|
|
|
|
return targets
|