[Numpy-svn] r4280 - branches/numpy.scons/numpy/distutils/scons
numpy-svn at scipy.org
numpy-svn at scipy.org
Thu Oct 25 01:20:29 EDT 2007
Author: cdavid
Date: 2007-10-25 00:20:24 -0500 (Thu, 25 Oct 2007)
New Revision: 4280
Modified:
branches/numpy.scons/numpy/distutils/scons/TODO
branches/numpy.scons/numpy/distutils/scons/custom_checkers.py
Log:
Start implementing library support for custom checkers.
Modified: branches/numpy.scons/numpy/distutils/scons/TODO
===================================================================
--- branches/numpy.scons/numpy/distutils/scons/TODO 2007-10-25 05:09:12 UTC (rev 4279)
+++ branches/numpy.scons/numpy/distutils/scons/TODO 2007-10-25 05:20:24 UTC (rev 4280)
@@ -1,12 +1,15 @@
-Checker:
+Before True milestone:
- improve CheckTypeSize for upstream integration
- improve BrokenMathlib and Mathlib in core, and make them available to everyone
+ - Cblas checker: works for atlas and mkl
+ - Atlas check
+ - Mkl check
+
+Checker:
- improve Fortran runtime detection for upstream integration
- improve Fortran mangling and dummy main detection for upstream
integration
- - Cblas checker
- Blas/Lapack check
- - Atlas check
Builder:
- Get a PythonExtension builder independant of distutils for upstream
Modified: branches/numpy.scons/numpy/distutils/scons/custom_checkers.py
===================================================================
--- branches/numpy.scons/numpy/distutils/scons/custom_checkers.py 2007-10-25 05:09:12 UTC (rev 4279)
+++ branches/numpy.scons/numpy/distutils/scons/custom_checkers.py 2007-10-25 05:20:24 UTC (rev 4280)
@@ -1,4 +1,61 @@
+#! /usr/bin/env python
+# Last Change: Thu Oct 25 02:00 PM 2007 J
+
+# Module for custom, common checkers for numpy (and scipy)
+import os.path
+from copy import deepcopy
+
from libinfo_scons import NumpyCheckLib
+from testcode_snippets import cblas_sgemm as cblas_src
-def NumpyCheckCBlas(context, libs):
- pass
+def _check_include_and_run(context, name, cpppath, headers, run_src, libs, libpath):
+ """This is a basic implementation for generic "test include and run"
+ testers.
+
+ For example, for library foo, which implements function do_foo, and with
+ include header foo.h, this will:
+ - test that foo.h is found and compilable by the compiler
+ - test that the given source code can be compiled. The source code
+ should contain a simple program with the function.
+
+ Arguments:
+ - name: name of the library
+ - cpppath: list of directories
+ - headers: list of headers
+ - run_src: the code for the run test
+ - libs: list of libraries to link
+ - libpath: list of library path."""
+ context.Message('Checking for %s ... ' % name)
+ env = context.env
+
+ # Check headers are available
+ oldCPPPATH = (env.has_key('CPPPATH') and deepcopy(env['CPPPATH'])) or []
+ env.Append(CPPPATH = cpppath)
+ # XXX: handle context
+ src = '\n'.join(headers)
+
+ ret = context.TryCompile(src, '.c')
+ if not ret:
+ env.Replace(CPPPATH = oldCPPPATH)
+ context.Result('Failed: %s include not found' % name)
+ return 0
+
+ # Check a simple cblas example works
+ oldLIBPATH = (env.has_key('LIBPATH') and deepcopy(env['LIBPATH'])) or []
+ oldLIBS = (env.has_key('LIBS') and deepcopy(env['LIBS'])) or []
+ oldRPATH = (env.has_key('RPATH') and deepcopy(env['RPATH'])) or []
+ env.Append(LIBPATH = libpath)
+ env.Append(LIBS = libs)
+ env.Append(RPATH = libpath)
+
+ ret = context.TryLink(run_src, '.c')
+ if not ret:
+ env.Replace(LIBS = oldLIBS)
+ env.Replace(LIBPATH = oldLIBPATH)
+ env.Replace(RPATH = oldRPATH)
+ context.Result('Failed: %s test could not be linked and run' % name)
+ return 0
+
+ context.Result(ret)
+ return ret
+
More information about the Numpy-svn
mailing list