
This warning is different. Meson support for windows is less mature than for other platforms, and the goal here is to alert people that eventually we plan to drop scons and move to meson, and that they should try out meson and report issues. Reviewed-by: Eric Anholt <eric@anholt.net>
189 lines
4.6 KiB
Python
189 lines
4.6 KiB
Python
#######################################################################
|
|
# 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':
|
|
force = ARGUMENTS['force_scons']
|
|
if force.lower() not in {'false', 'off', 'none', '0', 'n'}:
|
|
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)
|