From 2c4349aa3ac9a6d5ee1f7b1aeb5eb0ee1cb54690 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Tue, 15 Jul 2008 07:56:42 +0900 Subject: python: Move the python scons code to a separate tool module. --- scons/python.py | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 scons/python.py (limited to 'scons/python.py') diff --git a/scons/python.py b/scons/python.py new file mode 100644 index 0000000000..e1acc775b6 --- /dev/null +++ b/scons/python.py @@ -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 -- cgit v1.2.3 From 9a99b19949e407528b5b40309efd344672de8f6f Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Tue, 15 Jul 2008 12:17:35 +0900 Subject: python: Don't use python cflags as they conflict with existing flags. --- scons/python.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'scons/python.py') diff --git a/scons/python.py b/scons/python.py index e1acc775b6..539184dd39 100644 --- a/scons/python.py +++ b/scons/python.py @@ -31,20 +31,13 @@ Frontend-tool for Gallium3D architecture. import sys +import distutils.sysconfig 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'] = '' + # See http://www.scons.org/wiki/PythonExtensions - 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] @@ -55,6 +48,7 @@ def generate(env): env.Append(CPPPATH = [python_include]) env.Append(LIBPATH = [python_libs]) env.Append(LIBS = ['python' + python_version + '.lib']) + env.Replace(SHLIBPREFIX = '') env.Replace(SHLIBSUFFIX = '.pyd') # XXX; python25_d.lib is not included in Python for windows, and @@ -62,6 +56,11 @@ def generate(env): cppdefines = env['CPPDEFINES'] cppdefines = [define for define in cppdefines if define != '_DEBUG'] env.Replace(CPPDEFINES = cppdefines) + else: + #env.ParseConfig('python-config --cflags --ldflags --libs') + env.AppendUnique(CPPPATH = [distutils.sysconfig.get_python_inc()]) + env.Replace(SHLIBPREFIX = '') + env.Replace(SHLIBSUFFIX = distutils.sysconfig.get_config_vars()['SO']) # for debugging #print env.Dump() -- cgit v1.2.3 From a20bae3d17a812a5144553963174191288457cf7 Mon Sep 17 00:00:00 2001 From: José Fonseca Date: Mon, 30 Mar 2009 12:12:20 +0100 Subject: scons: Get python extensions building correctly on windows. --- scons/python.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'scons/python.py') diff --git a/scons/python.py b/scons/python.py index 539184dd39..9e94d056e1 100644 --- a/scons/python.py +++ b/scons/python.py @@ -38,7 +38,7 @@ import os.path def generate(env): # See http://www.scons.org/wiki/PythonExtensions - if sys.platform in ['windows']: + if sys.platform in ['win32']: python_root = sys.prefix python_version = '%u%u' % sys.version_info[:2] python_include = os.path.join(python_root, 'include') @@ -56,6 +56,8 @@ def generate(env): cppdefines = env['CPPDEFINES'] cppdefines = [define for define in cppdefines if define != '_DEBUG'] env.Replace(CPPDEFINES = cppdefines) + env.AppendUnique(CPPFLAGS = ['/U_DEBUG']) + env.AppendUnique(LINKFLAGS = ['/nodefaultlib:python25_d.lib']) else: #env.ParseConfig('python-config --cflags --ldflags --libs') env.AppendUnique(CPPPATH = [distutils.sysconfig.get_python_inc()]) -- cgit v1.2.3