python: Move the python scons code to a separate tool module.
authorJosé Fonseca <jrfonseca@tungstengraphics.com>
Mon, 14 Jul 2008 22:56:42 +0000 (07:56 +0900)
committerJosé Fonseca <jrfonseca@tungstengraphics.com>
Tue, 15 Jul 2008 08:58:47 +0000 (17:58 +0900)
SConstruct
scons/python.py [new file with mode: 0644]
src/gallium/state_trackers/python/SConscript

index 6e166502f8f9c1e5151348fae35fa81fd6b9b05a..fe27ceafe7b8bf90a7ecaf5a137d87dd99f23ec9 100644 (file)
@@ -53,7 +53,7 @@ opts.Add(ListOption('winsys', 'winsys drivers to build', default_winsys,
 env = Environment(
        options = opts,
        tools = ['gallium'],
-       toolpath = ['scons'],   
+       toolpath = ['#scons'],  
        ENV = os.environ,
 )
 
diff --git a/scons/python.py b/scons/python.py
new file mode 100644 (file)
index 0000000..e1acc77
--- /dev/null
@@ -0,0 +1,71 @@
+"""gallium
+
+Frontend-tool for Gallium3D architecture.
+
+"""
+
+# 
+# Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+# All Rights Reserved.
+# 
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sub license, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+# 
+# The above copyright notice and this permission notice (including the
+# next paragraph) shall be included in all copies or substantial portions
+# of the Software.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+# IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
+# ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+# 
+
+
+import sys
+import os.path
+
+
+def generate(env):
+
+    # http://www.scons.org/wiki/PythonExtensions
+    #env.AppendUnique(CPPATH = [distutils.sysconfig.get_python_inc()])
+    #distutils.sysconfig.get_config_vars('SO')
+        
+    env['SHLIBPREFIX'] = ''
+    
+    if sys.platform in ['linux2']:
+        env.ParseConfig('python-config --cflags --ldflags --libs')
+        
+    if sys.platform in ['windows']:
+        python_root = sys.prefix
+        python_version = '%u%u' % sys.version_info[:2]
+        python_include = os.path.join(python_root, 'include')
+        python_libs = os.path.join(python_root, 'libs')
+        python_lib = os.path.join(python_libs, 'python' + python_version + '.lib')
+        
+        env.Append(CPPPATH = [python_include])
+        env.Append(LIBPATH = [python_libs])
+        env.Append(LIBS = ['python' + python_version + '.lib'])
+        env.Replace(SHLIBSUFFIX = '.pyd')
+        
+        # XXX; python25_d.lib is not included in Python for windows, and 
+        # we'll get missing symbols unless we undefine _DEBUG
+        cppdefines = env['CPPDEFINES']
+        cppdefines = [define for define in cppdefines if define != '_DEBUG']
+        env.Replace(CPPDEFINES = cppdefines)
+
+    # for debugging
+    #print env.Dump()
+
+
+def exists(env):
+    return 1
index 854cd83b7c26cbb1fdf5c9bfa68caa046a4edf5f..687c46bfd763b211aac559301fc59ee5d3315b15 100644 (file)
@@ -7,50 +7,20 @@ if 'python' in env['statetrackers']:
 
     env = env.Clone()
     
-    env.Append(CPPPATH = '.')
+    env.Tool('python')
     
     env.Tool('swig')
     env.Append(SWIGPATH = ['#src/gallium/include', '#src/gallium/include/pipe'])
     env.Append(SWIGFLAGS = ['-python', '-keyword'])
     
-    # http://www.scons.org/wiki/PythonExtensions
-    #env.AppendUnique(CPPATH = [distutils.sysconfig.get_python_inc()])
-    #distutils.sysconfig.get_config_vars('SO')
-        
-    env['SHLIBPREFIX'] = ''
-    
-    if platform in ['linux']:
-        env.ParseConfig('python-config --cflags --ldflags --libs')
-        
-    if platform in ['windows']:
-        python_root = sys.prefix
-        python_version = '%u%u' % sys.version_info[:2]
-        python_include = os.path.join(python_root, 'include')
-        python_libs = os.path.join(python_root, 'libs')
-        python_lib = os.path.join(python_libs, 'python' + python_version + '.lib')
-        
-        env.Append(CPPPATH = [python_include])
-        env.Append(LIBPATH = [python_libs])
-        env.Append(LIBS = ['python' + python_version + '.lib'])
-        env.Replace(SHLIBSUFFIX = '.pyd')
-        
-        if env['debug']:
-            # XXX; python25_d.lib is not included in Python for windows, and 
-            # we'll get missing symbols unless we undefine _DEBUG
-            cppdefines = env['CPPDEFINES']
-            cppdefines = [define for define in cppdefines if define != '_DEBUG']
-            env.Replace(CPPDEFINES = cppdefines)
-        
-        # http://www.swig.org/Doc1.3/Windows.html
-        env['ENV']['PYTHON_INCLUDE'] = python_include
-        env['ENV']['PYTHON_LIB'] = python_lib
-        
+    env.Append(CPPPATH = '.')
+
     env.SharedLibrary(
-       target = '_gallium',
-       source = [
-               'gallium.i',
+        target = '_gallium',
+        source = [
+            'gallium.i',
             'st_device.c',
             'st_softpipe_winsys.c',
-       ],
+        ],
         LIBS = softpipe + auxiliaries + env['LIBS'],
     )