[Numpy-svn] r5779 - branches/clean_math_config/numpy/distutils/command
numpy-svn at scipy.org
numpy-svn at scipy.org
Fri Sep 5 02:11:30 EDT 2008
Author: cdavid
Date: 2008-09-05 01:11:26 -0500 (Fri, 05 Sep 2008)
New Revision: 5779
Modified:
branches/clean_math_config/numpy/distutils/command/config.py
Log:
Add a check_funcs_once function to speed up func checks.
Modified: branches/clean_math_config/numpy/distutils/command/config.py
===================================================================
--- branches/clean_math_config/numpy/distutils/command/config.py 2008-09-05 05:49:32 UTC (rev 5778)
+++ branches/clean_math_config/numpy/distutils/command/config.py 2008-09-05 06:11:26 UTC (rev 5779)
@@ -140,6 +140,61 @@
return self.try_link(body, headers, include_dirs,
libraries, library_dirs)
+ def check_funcs_once(self, funcs,
+ headers=None, include_dirs=None,
+ libraries=None, library_dirs=None,
+ decl=False, call=False, call_args=None):
+ """Check a list of functions at once.
+
+ This is useful to speed up things, since all the functions in the funcs
+ list will be put in one compilation unit.
+
+ Arguments
+ ---------
+
+ funcs: seq
+ list of functions to test
+ include_dirs : seq
+ list of header paths
+ libraries : seq
+ list of libraries to link the code snippet to
+ libraru_dirs : seq
+ list of library paths
+ decl : dict
+ for every (key, value), the declaration in the value will be
+ used for function in key. If a function is not in the
+ dictionay, no declaration will be used.
+ call : dict
+ for every item (f, value), if the value is True, a call will be
+ done to the function f"""
+ self._check_compiler()
+ body = []
+ if decl:
+ for f, v in decl.items():
+ if v:
+ body.append("int %s ();" % f)
+
+ body.append("int main (void) {")
+ if call:
+ for f in funcs:
+ if call.has_key(f) and call[f]:
+ if not (call_args and call_args.has_key(f) and call_args[f]):
+ args = ''
+ else:
+ args = call_args[f]
+ body.append(" %s(%s);" % (f, args))
+ else:
+ body.append(" %s;" % f)
+ else:
+ for f in funcs:
+ body.append(" %s;" % f)
+ body.append(" return 0;")
+ body.append("}")
+ body = '\n'.join(body) + "\n"
+
+ return self.try_link(body, headers, include_dirs,
+ libraries, library_dirs)
+
def get_output(self, body, headers=None, include_dirs=None,
libraries=None, library_dirs=None,
lang="c"):
More information about the Numpy-svn
mailing list