[Numpy-svn] r5780 - branches/clean_math_config/numpy/core
numpy-svn at scipy.org
numpy-svn at scipy.org
Fri Sep 5 02:21:22 EDT 2008
Author: cdavid
Date: 2008-09-05 01:21:18 -0500 (Fri, 05 Sep 2008)
New Revision: 5780
Modified:
branches/clean_math_config/numpy/core/setup.py
Log:
Use check_funcs_once to speed-up configuration on sane platforms.
Modified: branches/clean_math_config/numpy/core/setup.py
===================================================================
--- branches/clean_math_config/numpy/core/setup.py 2008-09-05 06:11:26 UTC (rev 5779)
+++ branches/clean_math_config/numpy/core/setup.py 2008-09-05 06:21:18 UTC (rev 5780)
@@ -50,6 +50,15 @@
return config.check_func(func_name, libraries=mathlibs,
decl=True, call=True)
+ def check_funcs_once(funcs_name):
+ decl = dict([(f, True) for f in funcs_name])
+ st = config.check_funcs_once(funcs_name, libraries=mathlibs,
+ decl=decl, call=decl)
+ if st:
+ moredefs.extend([name_to_defsymb(f) for f in funcs_name])
+ return st
+
+
def name_to_defsymb(name):
return "HAVE_%s" % name.upper()
@@ -58,6 +67,10 @@
"floor", "ceil", "sqrt", "log10", "log", "exp", "asin", "acos",
"atan", "fmod", 'modf', 'frexp']
+ if not check_funcs_once(mandatory_funcs):
+ raise SystemError("One of the required function to build numpy is not"
+ " available (the list is %s)." % str(mandatory_funcs))
+
# Standard functions which may not be available and for which we have a
# replacement implementation
# XXX: we do not test for hypot because python checks for it (HAVE_HYPOT in
@@ -65,11 +78,6 @@
optional_stdfuncs = ["expm1", "log1p", "acosh", "asinh", "atanh",
"rint", "trunc"]
- for f in mandatory_funcs:
- if not check_func(f):
- raise SystemError("Function %s is mandatory to build numpy." % f)
- moredefs.append(name_to_defsymb(f))
-
for f in optional_stdfuncs:
if check_func(f):
moredefs.append(name_to_defsymb(f))
@@ -79,13 +87,13 @@
"acos", "atan", "asinh", "acosh", "atanh", "hypot", "atan2", "pow", "fmod",
"modf", 'frexp', 'ldexp']
- for f in c99_funcs:
- name = "%sl" % f
- if check_func(name):
- moredefs.append(name_to_defsymb(name))
- name = "%sf" % f
- if check_func(name):
- moredefs.append(name_to_defsymb(name))
+ for prec in ['l', 'f']:
+ if not check_funcs_once([f + prec for f in c99_funcs]):
+ # Global check failed, check func per func
+ for f in c99_funcs:
+ name = f + prec
+ if check_func(name):
+ moredefs.append(name_to_defsymb(name))
# Keep this for compatibility for now
def check_func_old(func_name):
More information about the Numpy-svn
mailing list