Home | History | Annotate | Line # | Download | only in dist
      1      1.1  mrg #######################################################################
      2      1.1  mrg # Top-level SConstruct
      3      1.1  mrg #
      4  1.1.1.2  mrg # For example, invoke scons as
      5      1.1  mrg #
      6      1.1  mrg #   scons build=debug llvm=yes machine=x86
      7      1.1  mrg #
      8      1.1  mrg # to set configuration variables. Or you can write those options to a file
      9      1.1  mrg # named config.py:
     10      1.1  mrg #
     11      1.1  mrg #   # config.py
     12      1.1  mrg #   build='debug'
     13      1.1  mrg #   llvm=True
     14      1.1  mrg #   machine='x86'
     15  1.1.1.2  mrg #
     16      1.1  mrg # Invoke
     17      1.1  mrg #
     18      1.1  mrg #   scons -h
     19      1.1  mrg #
     20      1.1  mrg # to get the full list of options. See scons manpage for more info.
     21  1.1.1.2  mrg #
     22      1.1  mrg 
     23      1.1  mrg import os
     24      1.1  mrg import os.path
     25      1.1  mrg import sys
     26      1.1  mrg import SCons.Util
     27      1.1  mrg 
     28      1.1  mrg import common
     29      1.1  mrg 
     30      1.1  mrg #######################################################################
     31  1.1.1.2  mrg # Minimal scons version
     32  1.1.1.2  mrg 
     33  1.1.1.2  mrg EnsureSConsVersion(2, 4)
     34  1.1.1.2  mrg EnsurePythonVersion(2, 7)
     35  1.1.1.2  mrg 
     36  1.1.1.2  mrg 
     37  1.1.1.2  mrg #######################################################################
     38      1.1  mrg # Configuration options
     39      1.1  mrg 
     40      1.1  mrg opts = Variables('config.py')
     41      1.1  mrg common.AddOptions(opts)
     42      1.1  mrg 
     43      1.1  mrg env = Environment(
     44      1.1  mrg 	options = opts,
     45      1.1  mrg 	tools = ['gallium'],
     46  1.1.1.2  mrg 	toolpath = ['#scons'],
     47      1.1  mrg 	ENV = os.environ,
     48      1.1  mrg )
     49      1.1  mrg 
     50      1.1  mrg # XXX: This creates a many problems as it saves...
     51      1.1  mrg #opts.Save('config.py', env)
     52      1.1  mrg 
     53      1.1  mrg # Backwards compatability with old target configuration variable
     54      1.1  mrg try:
     55      1.1  mrg     targets = ARGUMENTS['targets']
     56      1.1  mrg except KeyError:
     57      1.1  mrg     pass
     58      1.1  mrg else:
     59      1.1  mrg     targets = targets.split(',')
     60  1.1.1.2  mrg     print('scons: warning: targets option is deprecated; pass the targets on their own such as')
     61  1.1.1.2  mrg     print()
     62  1.1.1.2  mrg     print('  scons %s' % ' '.join(targets))
     63  1.1.1.2  mrg     print()
     64      1.1  mrg     COMMAND_LINE_TARGETS.append(targets)
     65      1.1  mrg 
     66      1.1  mrg 
     67      1.1  mrg Help(opts.GenerateHelpText(env))
     68      1.1  mrg 
     69      1.1  mrg #######################################################################
     70      1.1  mrg # Environment setup
     71      1.1  mrg 
     72      1.1  mrg with open("VERSION") as f:
     73      1.1  mrg   mesa_version = f.read().strip()
     74      1.1  mrg env.Append(CPPDEFINES = [
     75      1.1  mrg     ('PACKAGE_VERSION', '\\"%s\\"' % mesa_version),
     76      1.1  mrg     ('PACKAGE_BUGREPORT', '\\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\\"'),
     77      1.1  mrg ])
     78      1.1  mrg 
     79      1.1  mrg # Includes
     80      1.1  mrg env.Prepend(CPPPATH = [
     81      1.1  mrg 	'#/include',
     82      1.1  mrg ])
     83      1.1  mrg env.Append(CPPPATH = [
     84      1.1  mrg 	'#/src/gallium/include',
     85      1.1  mrg 	'#/src/gallium/auxiliary',
     86      1.1  mrg 	'#/src/gallium/drivers',
     87      1.1  mrg 	'#/src/gallium/winsys',
     88      1.1  mrg ])
     89      1.1  mrg 
     90      1.1  mrg # for debugging
     91      1.1  mrg #print env.Dump()
     92      1.1  mrg 
     93      1.1  mrg 
     94  1.1.1.2  mrg # Add a check target for running tests
     95  1.1.1.2  mrg check = env.Alias('check')
     96  1.1.1.2  mrg env.AlwaysBuild(check)
     97  1.1.1.2  mrg 
     98  1.1.1.2  mrg 
     99      1.1  mrg #######################################################################
    100  1.1.1.2  mrg # Invoke host SConscripts
    101  1.1.1.2  mrg #
    102      1.1  mrg # For things that are meant to be run on the native host build machine, instead
    103      1.1  mrg # of the target machine.
    104      1.1  mrg #
    105      1.1  mrg 
    106      1.1  mrg # Create host environent
    107      1.1  mrg if env['crosscompile'] and not env['embedded']:
    108      1.1  mrg     host_env = Environment(
    109      1.1  mrg         options = opts,
    110      1.1  mrg         # no tool used
    111      1.1  mrg         tools = [],
    112      1.1  mrg         toolpath = ['#scons'],
    113      1.1  mrg         ENV = os.environ,
    114      1.1  mrg     )
    115      1.1  mrg 
    116      1.1  mrg     # Override options
    117      1.1  mrg     host_env['platform'] = common.host_platform
    118      1.1  mrg     host_env['machine'] = common.host_machine
    119      1.1  mrg     host_env['toolchain'] = 'default'
    120      1.1  mrg     host_env['llvm'] = False
    121      1.1  mrg 
    122      1.1  mrg     host_env.Tool('gallium')
    123      1.1  mrg 
    124      1.1  mrg     host_env['hostonly'] = True
    125      1.1  mrg     assert host_env['crosscompile'] == False
    126      1.1  mrg 
    127      1.1  mrg     target_env = env
    128      1.1  mrg     env = host_env
    129      1.1  mrg     Export('env')
    130      1.1  mrg 
    131      1.1  mrg     SConscript(
    132      1.1  mrg         'src/SConscript',
    133      1.1  mrg         variant_dir = host_env['build_dir'],
    134      1.1  mrg         duplicate = 0, # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
    135      1.1  mrg     )
    136      1.1  mrg 
    137      1.1  mrg     env = target_env
    138      1.1  mrg 
    139      1.1  mrg Export('env')
    140      1.1  mrg 
    141      1.1  mrg #######################################################################
    142      1.1  mrg # Invoke SConscripts
    143      1.1  mrg 
    144      1.1  mrg # TODO: Build several variants at the same time?
    145      1.1  mrg # http://www.scons.org/wiki/SimultaneousVariantBuilds
    146      1.1  mrg 
    147      1.1  mrg SConscript(
    148      1.1  mrg 	'src/SConscript',
    149      1.1  mrg 	variant_dir = env['build_dir'],
    150      1.1  mrg 	duplicate = 0 # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
    151      1.1  mrg )
    152      1.1  mrg 
    153      1.1  mrg 
    154      1.1  mrg ########################################################################
    155      1.1  mrg # List all aliases
    156      1.1  mrg 
    157      1.1  mrg try:
    158      1.1  mrg     from SCons.Node.Alias import default_ans
    159      1.1  mrg except ImportError:
    160      1.1  mrg     pass
    161      1.1  mrg else:
    162  1.1.1.2  mrg     aliases = sorted(default_ans.keys())
    163      1.1  mrg     env.Help('\n')
    164      1.1  mrg     env.Help('Recognized targets:\n')
    165      1.1  mrg     for alias in aliases:
    166      1.1  mrg         env.Help('    %s\n' % alias)
    167