python: Get it to build on windows too.
authorJosé Fonseca <jrfonseca@tungstengraphics.com>
Mon, 14 Jul 2008 15:33:54 +0000 (00:33 +0900)
committerJosé Fonseca <jrfonseca@tungstengraphics.com>
Tue, 15 Jul 2008 08:58:47 +0000 (17:58 +0900)
src/gallium/state_trackers/python/SConscript

index 57a3fb20759cd9343282f598dac1c6f7af3b7c7b..854cd83b7c26cbb1fdf5c9bfa68caa046a4edf5f 100644 (file)
@@ -1,3 +1,6 @@
+import sys
+import os.path
+
 Import('*')
 
 if 'python' in env['statetrackers']:
@@ -10,8 +13,38 @@ if 'python' in env['statetrackers']:
     env.Append(SWIGPATH = ['#src/gallium/include', '#src/gallium/include/pipe'])
     env.Append(SWIGFLAGS = ['-python', '-keyword'])
     
-    env.ParseConfig('python-config --cflags --ldflags --libs')
+    # 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.SharedLibrary(
        target = '_gallium',
        source = [
@@ -19,6 +52,5 @@ if 'python' in env['statetrackers']:
             'st_device.c',
             'st_softpipe_winsys.c',
        ],
-        SHLIBPREFIX = '',
         LIBS = softpipe + auxiliaries + env['LIBS'],
     )