build: Fix gtest out-of-tree build
[mesa.git] / SConstruct
index c6198041fb0cff49b695423ac5eaece4fe2217ab..4a3fef0805942f904618ebcff889dcc41b408d0f 100644 (file)
@@ -32,7 +32,6 @@ import common
 
 opts = Variables('config.py')
 common.AddOptions(opts)
-opts.Add(EnumVariable('MSVS_VERSION', 'MS Visual C++ version', None, allowed_values=('7.1', '8.0', '9.0')))
 
 env = Environment(
        options = opts,
@@ -41,6 +40,9 @@ env = Environment(
        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']
@@ -57,6 +59,12 @@ else:
 
 Help(opts.GenerateHelpText(env))
 
+# fail early for a common error on windows
+if env['gles']:
+    try:
+        import libxml2
+    except ImportError:
+        raise SCons.Errors.UserError, "GLES requires libxml2-python to build"
 
 #######################################################################
 # Environment setup
@@ -75,49 +83,54 @@ env.Append(CPPPATH = [
 if env['msvc']:
     env.Append(CPPPATH = ['#include/c99'])
 
-# Embedded
-if env['platform'] == 'embedded':
-       env.Append(CPPDEFINES = [
-               '_POSIX_SOURCE',
-               ('_POSIX_C_SOURCE', '199309L'), 
-               '_SVID_SOURCE',
-               '_BSD_SOURCE', 
-               '_GNU_SOURCE',
-               
-               'PTHREADS',
-       ])
-       env.Append(LIBS = [
-               'm',
-               'pthread',
-               'dl',
-       ])
-
-# Posix
-if env['platform'] in ('posix', 'linux', 'freebsd', 'darwin'):
-       env.Append(CPPDEFINES = [
-               '_POSIX_SOURCE',
-               ('_POSIX_C_SOURCE', '199309L'), 
-               '_SVID_SOURCE',
-               '_BSD_SOURCE', 
-               '_GNU_SOURCE',
-               'PTHREADS',
-               'HAVE_POSIX_MEMALIGN',
-       ])
-       if env['gcc']:
-               env.Append(CFLAGS = ['-fvisibility=hidden'])
-       if env['platform'] == 'darwin':
-               env.Append(CPPDEFINES = ['_DARWIN_C_SOURCE'])
-       env.Append(LIBS = [
-               'm',
-               'pthread',
-               'dl',
-       ])
-
 # for debugging
 #print env.Dump()
 
-Export('env')
 
+#######################################################################
+# 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
+
+    if host_env['msvc']:
+        host_env.Append(CPPPATH = ['#include/c99'])
+
+    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
@@ -131,3 +144,18 @@ SConscript(
        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 = default_ans.keys()
+    aliases.sort()
+    env.Help('\n')
+    env.Help('Recognized targets:\n')
+    for alias in aliases:
+        env.Help('    %s\n' % alias)