diff options
author | marha <marha@users.sourceforge.net> | 2011-07-04 14:26:33 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2011-07-04 14:26:33 +0200 |
commit | 7cc339a490eac34596e97788c3b0092d58459cf6 (patch) | |
tree | bc9a29aff5729a5b7314022bc3fea8fdff721dc0 /mesalib/scons/custom.py | |
parent | 3bbcbc59b6d98f09b26f39d6208faec76cc6aa3e (diff) | |
parent | 5c671fd7f8198bed2fc32b33b81d1081f1486ed9 (diff) | |
download | vcxsrv-7cc339a490eac34596e97788c3b0092d58459cf6.tar.gz vcxsrv-7cc339a490eac34596e97788c3b0092d58459cf6.tar.bz2 vcxsrv-7cc339a490eac34596e97788c3b0092d58459cf6.zip |
Merge remote-tracking branch 'origin/released'
Conflicts:
mesalib/common.py
mesalib/docs/GL3.txt
mesalib/scons/custom.py
mesalib/scons/gallium.py
mesalib/src/SConscript
xorg-server/Xext/xtest.c
xorg-server/dix/getevents.c
xorg-server/dix/window.c
xorg-server/exa/exa_accel.c
xorg-server/exa/exa_migration_classic.c
xorg-server/exa/exa_unaccel.c
xorg-server/hw/kdrive/ephyr/ephyr.c
xorg-server/hw/kdrive/ephyr/ephyr.h
xorg-server/hw/kdrive/ephyr/ephyrinit.c
xorg-server/hw/kdrive/ephyr/hostx.c
xorg-server/hw/kdrive/src/kdrive.h
xorg-server/hw/kdrive/src/kinput.c
xorg-server/hw/xfree86/common/xf86Init.c
xorg-server/hw/xfree86/dri2/dri2.c
xorg-server/hw/xnest/Init.c
xorg-server/hw/xquartz/darwin.c
xorg-server/hw/xquartz/darwinEvents.c
xorg-server/hw/xquartz/darwinEvents.h
xorg-server/hw/xquartz/darwinXinput.c
xorg-server/hw/xwin/InitInput.c
xorg-server/include/input.h
xorg-server/include/window.h
xorg-server/mi/mipointer.c
xorg-server/test/Makefile.am
xorg-server/test/xi2/protocol-eventconvert.c
Diffstat (limited to 'mesalib/scons/custom.py')
-rw-r--r-- | mesalib/scons/custom.py | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/mesalib/scons/custom.py b/mesalib/scons/custom.py index d18f5642d..5de5537bf 100644 --- a/mesalib/scons/custom.py +++ b/mesalib/scons/custom.py @@ -33,6 +33,8 @@ Custom builders and methods. import os
import os.path
import re
+import sys
+import subprocess
import SCons.Action
import SCons.Builder
@@ -154,6 +156,79 @@ def createCodeGenerateMethod(env): env.AddMethod(code_generate, 'CodeGenerate')
+def _pkg_check_modules(env, name, modules):
+ '''Simple wrapper for pkg-config.'''
+
+ env['HAVE_' + name] = False
+
+ # For backwards compatability
+ env[name.lower()] = False
+
+ if env['platform'] == 'windows':
+ return
+
+ if not env.Detect('pkg-config'):
+ return
+
+ if subprocess.call(["pkg-config", "--exists", ' '.join(modules)]) != 0:
+ return
+
+ # Other flags may affect the compilation of unrelated targets, so store
+ # them with a prefix, (e.g., XXX_CFLAGS, XXX_LIBS, etc)
+ try:
+ flags = env.ParseFlags('!pkg-config --cflags --libs ' + ' '.join(modules))
+ except OSError:
+ return
+ prefix = name + '_'
+ for flag_name, flag_value in flags.iteritems():
+ assert '_' not in flag_name
+ env[prefix + flag_name] = flag_value
+
+ env['HAVE_' + name] = True
+
+def pkg_check_modules(env, name, modules):
+
+ sys.stdout.write('Checking for %s...' % name)
+ _pkg_check_modules(env, name, modules)
+ result = env['HAVE_' + name]
+ sys.stdout.write(' %s\n' % ['no', 'yes'][int(bool(result))])
+
+ # XXX: For backwards compatability
+ env[name.lower()] = result
+
+
+def pkg_use_modules(env, names):
+ '''Search for all environment flags that match NAME_FOO and append them to
+ the FOO environment variable.'''
+
+ names = env.Flatten(names)
+
+ for name in names:
+ prefix = name + '_'
+
+ if not 'HAVE_' + name in env:
+ print 'Attempt to use unknown module %s' % name
+ env.Exit(1)
+
+ if not env['HAVE_' + name]:
+ print 'Attempt to use unavailable module %s' % name
+ env.Exit(1)
+
+ flags = {}
+ for flag_name, flag_value in env.Dictionary().iteritems():
+ if flag_name.startswith(prefix):
+ flag_name = flag_name[len(prefix):]
+ if '_' not in flag_name:
+ flags[flag_name] = flag_value
+ if flags:
+ env.MergeFlags(flags)
+
+
+def createPkgConfigMethods(env):
+ env.AddMethod(pkg_check_modules, 'PkgCheckModules')
+ env.AddMethod(pkg_use_modules, 'PkgUseModules')
+
+
def generate(env):
"""Common environment generation code"""
@@ -164,6 +239,7 @@ def generate(env): # Custom builders and methods
createConvenienceLibBuilder(env)
createCodeGenerateMethod(env)
+ createPkgConfigMethods(env)
# for debugging
#print env.Dump()
|