mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
187 lines
4.6 KiB
187 lines
4.6 KiB
####################################################################### |
|
# Top-level SConstruct |
|
# |
|
# For example, invoke scons as |
|
# |
|
# scons build=debug llvm=yes machine=x86 |
|
# |
|
# to set configuration variables. Or you can write those options to a file |
|
# named config.py: |
|
# |
|
# # config.py |
|
# build='debug' |
|
# llvm=True |
|
# machine='x86' |
|
# |
|
# Invoke |
|
# |
|
# scons -h |
|
# |
|
# to get the full list of options. See scons manpage for more info. |
|
# |
|
|
|
from __future__ import print_function |
|
import os |
|
import os.path |
|
import sys |
|
import SCons.Util |
|
|
|
import common |
|
|
|
####################################################################### |
|
# Minimal scons version |
|
|
|
EnsureSConsVersion(2, 4) |
|
EnsurePythonVersion(2, 7) |
|
|
|
|
|
####################################################################### |
|
# Configuration options |
|
|
|
opts = Variables('config.py') |
|
common.AddOptions(opts) |
|
|
|
env = Environment( |
|
options = opts, |
|
tools = ['gallium'], |
|
toolpath = ['#scons'], |
|
ENV = os.environ, |
|
) |
|
|
|
# XXX: This creates a many problems as it saves... |
|
#opts.Save('config.py', env) |
|
|
|
# Backwards compatability with old target configuration variable |
|
try: |
|
targets = ARGUMENTS['targets'] |
|
except KeyError: |
|
pass |
|
else: |
|
targets = targets.split(',') |
|
print('scons: warning: targets option is deprecated; pass the targets on their own such as') |
|
print() |
|
print(' scons %s' % ' '.join(targets)) |
|
print() |
|
COMMAND_LINE_TARGETS.append(targets) |
|
|
|
|
|
Help(opts.GenerateHelpText(env)) |
|
|
|
|
|
####################################################################### |
|
# Print a deprecation warning for using scons on non-windows |
|
|
|
if common.host_platform != 'windows' and env['platform'] != 'windows': |
|
if env['force_scons']: |
|
print("WARNING: Scons is deprecated for non-windows platforms (including cygwin) " |
|
"please use meson instead.", file=sys.stderr) |
|
else: |
|
print("ERROR: Scons is deprecated for non-windows platforms (including cygwin) " |
|
"please use meson instead. If you really need to use scons you " |
|
"can add `force_scons=1` to the scons command line.", file=sys.stderr) |
|
sys.exit(1) |
|
else: |
|
print("WARNING: Scons support is in the process of being deprecated on " |
|
"on windows platforms (including mingw). If you haven't already " |
|
"please try using meson for windows builds. Be sure to report any " |
|
"issues you run into", file=sys.stderr) |
|
|
|
|
|
####################################################################### |
|
# Environment setup |
|
|
|
with open("VERSION") as f: |
|
mesa_version = f.read().strip() |
|
env.Append(CPPDEFINES = [ |
|
('PACKAGE_VERSION', '\\"%s\\"' % mesa_version), |
|
('PACKAGE_BUGREPORT', '\\"https://gitlab.freedesktop.org/mesa/mesa/-/issues\\"'), |
|
]) |
|
|
|
# Includes |
|
env.Prepend(CPPPATH = [ |
|
'#/include', |
|
]) |
|
env.Append(CPPPATH = [ |
|
'#/src/gallium/include', |
|
'#/src/gallium/auxiliary', |
|
'#/src/gallium/drivers', |
|
'#/src/gallium/winsys', |
|
]) |
|
|
|
# for debugging |
|
#print env.Dump() |
|
|
|
|
|
# Add a check target for running tests |
|
check = env.Alias('check') |
|
env.AlwaysBuild(check) |
|
|
|
|
|
####################################################################### |
|
# Invoke host SConscripts |
|
# |
|
# For things that are meant to be run on the native host build machine, instead |
|
# of the target machine. |
|
# |
|
|
|
# Create host environent |
|
if env['crosscompile'] and not env['embedded']: |
|
host_env = Environment( |
|
options = opts, |
|
# no tool used |
|
tools = [], |
|
toolpath = ['#scons'], |
|
ENV = os.environ, |
|
) |
|
|
|
# Override options |
|
host_env['platform'] = common.host_platform |
|
host_env['machine'] = common.host_machine |
|
host_env['toolchain'] = 'default' |
|
host_env['llvm'] = False |
|
|
|
host_env.Tool('gallium') |
|
|
|
host_env['hostonly'] = True |
|
assert host_env['crosscompile'] == False |
|
|
|
target_env = env |
|
env = host_env |
|
Export('env') |
|
|
|
SConscript( |
|
'src/SConscript', |
|
variant_dir = host_env['build_dir'], |
|
duplicate = 0, # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html |
|
) |
|
|
|
env = target_env |
|
|
|
Export('env') |
|
|
|
####################################################################### |
|
# Invoke SConscripts |
|
|
|
# TODO: Build several variants at the same time? |
|
# http://www.scons.org/wiki/SimultaneousVariantBuilds |
|
|
|
SConscript( |
|
'src/SConscript', |
|
variant_dir = env['build_dir'], |
|
duplicate = 0 # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html |
|
) |
|
|
|
|
|
######################################################################## |
|
# List all aliases |
|
|
|
try: |
|
from SCons.Node.Alias import default_ans |
|
except ImportError: |
|
pass |
|
else: |
|
aliases = sorted(default_ans.keys()) |
|
env.Help('\n') |
|
env.Help('Recognized targets:\n') |
|
for alias in aliases: |
|
env.Help(' %s\n' % alias)
|
|
|