Move Python setup into Configure section so we can test whether the
authorSteve Reinhardt <stever@eecs.umich.edu>
Sun, 1 Oct 2006 05:42:18 +0000 (01:42 -0400)
committerSteve Reinhardt <stever@eecs.umich.edu>
Sun, 1 Oct 2006 05:42:18 +0000 (01:42 -0400)
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

index 49f6e2eb2f9a6d158e230cfc42740c9038798d27..50089700a51064790848e75505b7a89cb5feb83a 100644 (file)
@@ -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++'):