[Scipy-svn] r4003 - branches/build_with_scons/scipy/linalg
scipy-svn at scipy.org
scipy-svn at scipy.org
Fri Mar 7 08:50:56 EST 2008
Author: cdavid
Date: 2008-03-07 07:50:21 -0600 (Fri, 07 Mar 2008)
New Revision: 4003
Modified:
branches/build_with_scons/scipy/linalg/SConstruct
Log:
Split Fortran and C compilation scons environments.
Modified: branches/build_with_scons/scipy/linalg/SConstruct
===================================================================
--- branches/build_with_scons/scipy/linalg/SConstruct 2008-03-07 13:48:58 UTC (rev 4002)
+++ branches/build_with_scons/scipy/linalg/SConstruct 2008-03-07 13:50:21 UTC (rev 4003)
@@ -1,4 +1,4 @@
-# Last Change: Wed Mar 05 03:00 PM 2008 J
+# Last Change: Fri Mar 07 07:00 PM 2008 J
# vim:syntax=python
import os
@@ -20,45 +20,44 @@
env = GetNumpyEnvironment(ARGUMENTS)
env.Append(CPPPATH = [get_python_inc(), get_numpy_include_dirs()])
+
+# XXX: handle cblas wrapper for complex (check in numpy.scons or here ?)
+env.AppendUnique(CPPPATH = env['F2PYINCLUDEDIR'])
+env.AppendUnique(F2PYOPTIONS = '--quiet')
+
+env['BUILDERS']['haha'] = Builder(action = do_generate_interface,
+ emitter = generate_interface_emitter)
+
+env['BUILDERS']['hihi'] = Builder(action = do_generate_fake_interface,
+ emitter = generate_interface_emitter)
+
#if os.name == 'nt':
# # NT needs the pythonlib to run any code importing Python.h, including
# # simple code using only typedef and so on, so we need it for configuration
# # checks
# env.AppendUnique(LIBPATH = [get_pythonlib_dir()])
+fenv = env.Copy()
+
#=======================
# Starting Configuration
#=======================
-config = env.NumpyConfigure(custom_tests = {'CheckCBLAS' : CheckCBLAS,
- 'CheckBLAS' : CheckF77BLAS,
- 'CheckCLAPACK' : CheckCLAPACK,
- 'CheckLAPACK' : CheckF77LAPACK,
- 'CheckF77Clib' : CheckF77Clib})
+config = env.Configure(custom_tests = {'CheckCBLAS' : CheckCBLAS,
+ 'CheckCLAPACK' : CheckCLAPACK})
-#--------------
-# Checking Blas
-#--------------
-if not config.CheckF77Clib():
- raise RuntimeError("Could not check F/C runtime library for %s/%s, " \
- "contact the maintainer" % (env['CC'], env['F77']))
-
-st = config.CheckBLAS(check_version = 1)
-if not st:
- raise RuntimeError("no blas found, necessary for linalg module")
-if IsATLAS(env, 'blas'):
- version = GetATLASVersion(env)
- env.Append(CPPDEFINES = [('ATLAS_INFO', '"\\"%s"\\"' % version)])
-else:
- env.Append(CPPDEFINES = [('NO_ATLAS_INFO', 1)])
-
-st = config.CheckLAPACK()
-if not st:
- raise RuntimeError("no lapack found, necessary for linalg module")
-
+#-------------------------
+# Checking cblas/clapack
+#-------------------------
if config.CheckCBLAS():
has_cblas = 1
else:
has_cblas = 0
+if has_cblas:
+ if IsATLAS(env, 'cblas'):
+ version = GetATLASVersion(env)
+ env.Append(CPPDEFINES = [('ATLAS_INFO', '"\\"%s"\\"' % version)])
+ else:
+ env.Append(CPPDEFINES = [('NO_ATLAS_INFO', 1)])
if config.CheckCLAPACK():
has_clapack = 1
@@ -68,30 +67,46 @@
config.Finish()
write_info(env)
-#==========
-# Build
-#==========
+#---------------------------
+# Checking F77 blas/lapack
+#---------------------------
+fconfig = fenv.Configure(custom_tests = {'CheckBLAS' : CheckF77BLAS,
+ 'CheckLAPACK' : CheckF77LAPACK,
+ 'CheckF77Clib' : CheckF77Clib})
-# XXX: handle cblas wrapper for complex (check in numpy.scons or here ?)
-env.AppendUnique(CPPPATH = env['F2PYINCLUDEDIR'])
-env.AppendUnique(F2PYOPTIONS = '--quiet')
+if not fconfig.CheckF77Clib():
+ raise RuntimeError("Could not check F/C runtime library for %s/%s, " \
+ "contact the maintainer" % (fenv['CC'], fenv['F77']))
-env['BUILDERS']['haha'] = Builder(action = do_generate_interface,
- emitter = generate_interface_emitter)
+st = fconfig.CheckBLAS(check_version = 1)
+if not st:
+ raise RuntimeError("no blas found, necessary for linalg module")
+if IsATLAS(fenv, 'blas'):
+ version = GetATLASVersion(fenv)
+ env.Append(CPPDEFINES = [('ATLAS_INFO', '"\\"%s"\\"' % version)])
+else:
+ env.Append(CPPDEFINES = [('NO_ATLAS_INFO', 1)])
-env['BUILDERS']['hihi'] = Builder(action = do_generate_fake_interface,
- emitter = generate_interface_emitter)
+st = fconfig.CheckLAPACK()
+if not st:
+ raise RuntimeError("no lapack found, necessary for linalg module")
+fconfig.Finish()
+write_info(fenv)
+
+#==========
+# Build
+#==========
#------------
# fblas
#------------
-env.haha('fblas', 'generic_fblas.pyf')
+fenv.haha('fblas', 'generic_fblas.pyf')
source = ['fblas.pyf']
-if IsVeclib(env, 'blas') or IsAccelerate(env, 'blas'):
+if IsVeclib(fenv, 'blas') or IsAccelerate(fenv, 'blas'):
source.append(pjoin('src', 'fblaswrap_veclib_c.c'))
else:
source.append(pjoin('src', 'fblaswrap.f'))
-env.NumpyPythonExtension('fblas', source)
+fenv.NumpyPythonExtension('fblas', source)
#------------
# cblas
@@ -105,10 +120,10 @@
#------------
# flapack
#------------
-yop = env.haha('flapack', 'generic_flapack.pyf')
+yop = fenv.haha('flapack', 'generic_flapack.pyf')
# XXX: automatically scan dependency on flapack_user_routines.pyf ?
-env.Depends(yop, pjoin(env['build_dir'], 'flapack_user_routines.pyf'))
-env.NumpyPythonExtension('flapack', source = ['flapack.pyf'])
+fenv.Depends(yop, pjoin(env['build_dir'], 'flapack_user_routines.pyf'))
+fenv.NumpyPythonExtension('flapack', source = ['flapack.pyf'])
#------------
# clapack
@@ -123,11 +138,11 @@
# _flinalg
#----------------
_flinalg_fsrc = ['det.f', 'lu.f']
-_flinalg_src = env.F2py(
- pjoin(env['build_dir'], 'src', '_flinalgmodule.c'),
- source = [pjoin(env['build_dir'], 'src', i) for i in _flinalg_fsrc])
+_flinalg_src = fenv.F2py(
+ pjoin(fenv['build_dir'], 'src', '_flinalgmodule.c'),
+ source = [pjoin(fenv['build_dir'], 'src', i) for i in _flinalg_fsrc])
-env.NumpyPythonExtension(
+fenv.NumpyPythonExtension(
'_flinalg', source = _flinalg_src + [pjoin('src', i) for i in _flinalg_fsrc])
#----------------
@@ -135,14 +150,13 @@
#----------------
calc_src = env.F2py(pjoin(env['build_dir'], 'src', 'calc_lworkmodule.c'),
source = pjoin(env['build_dir'], 'src', 'calc_lwork.f'))
-env.NumpyPythonExtension('calc_lwork',
- source = calc_src + [pjoin('src', 'calc_lwork.f')],
- LINKFLAGSEND = env['F77_LDFLAGS'])
+fenv.NumpyPythonExtension('calc_lwork',
+ source = calc_src + [pjoin('src', 'calc_lwork.f')])
#--------------
# Atlas version
#--------------
atlas_env = env.Copy()
-if not IsATLAS(env, 'blas'):
+if not IsATLAS(env, 'cblas'):
atlas_env.AppendUnique(CPPDEFINES = "NO_ATLAS_INFO")
atlas_env.NumpyPythonExtension('atlas_version', 'atlas_version.c')
More information about the Scipy-svn
mailing list