From 85436fd413dab36fca904e6ffdcd5a098e5f0544 Mon Sep 17 00:00:00 2001 From: Steve Reinhardt Date: Sun, 1 Oct 2006 01:42:18 -0400 Subject: [PATCH] Move Python setup into Configure section so we can test whether the setup is correct and provide meeaningful error messages when it's not. Also fix for building on Cygwin where python lib is in /bin and not /lib. --HG-- extra : convert_revision : 7a29ba17463de60c72b3d8b04e4c4f81fc64bf61 --- SConstruct | 49 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 17 deletions(-) diff --git a/SConstruct b/SConstruct index 49f6e2eb2..50089700a 100644 --- a/SConstruct +++ b/SConstruct @@ -201,23 +201,6 @@ if sys.platform == 'cygwin': env.Append(CCFLAGS=Split("-Wno-uninitialized")) env.Append(CPPPATH=[Dir('ext/dnet')]) -# Find Python include and library directories for embedding the -# interpreter. For consistency, we will use the same Python -# installation used to run scons (and thus this script). If you want -# to link in an alternate version, see above for instructions on how -# to invoke scons with a different copy of the Python interpreter. - -# Get brief Python version name (e.g., "python2.4") for locating -# include & library files -py_version_name = 'python' + sys.version[:3] - -# include path, e.g. /usr/local/include/python2.4 -env.Append(CPPPATH = os.path.join(sys.exec_prefix, 'include', py_version_name)) -env.Append(LIBS = py_version_name) -# add library path too if it's not in the default place -if sys.exec_prefix != '/usr': - env.Append(LIBPATH = os.path.join(sys.exec_prefix, 'lib')) - # Check for SWIG if not env.has_key('SWIG'): print 'Error: SWIG utility not found.' @@ -255,6 +238,38 @@ conf = Configure(env, conf_dir = os.path.join(build_root, '.scons_config'), log_file = os.path.join(build_root, 'scons_config.log')) +# Find Python include and library directories for embedding the +# interpreter. For consistency, we will use the same Python +# installation used to run scons (and thus this script). If you want +# to link in an alternate version, see above for instructions on how +# to invoke scons with a different copy of the Python interpreter. + +# Get brief Python version name (e.g., "python2.4") for locating +# include & library files +py_version_name = 'python' + sys.version[:3] + +# include path, e.g. /usr/local/include/python2.4 +py_header_path = os.path.join(sys.exec_prefix, 'include', py_version_name) +env.Append(CPPPATH = py_header_path) +# verify that it works +if not conf.CheckHeader('Python.h', '<>'): + print "Error: can't find Python.h header in", py_header_path + Exit(1) + +# add library path too if it's not in the default place +py_lib_path = None +if sys.exec_prefix != '/usr': + py_lib_path = os.path.join(sys.exec_prefix, 'lib') +elif sys.platform == 'cygwin': + # cygwin puts the .dll in /bin for some reason + py_lib_path = '/bin' +if py_lib_path: + env.Append(LIBPATH = py_lib_path) + print 'Adding', py_lib_path, 'to LIBPATH for', py_version_name +if not conf.CheckLib(py_version_name): + print "Error: can't find Python library", py_version_name + Exit(1) + # Check for zlib. If the check passes, libz will be automatically # added to the LIBS environment variable. if not conf.CheckLibWithHeader('z', 'zlib.h', 'C++'):