[Numpy-svn] r4204 - in branches/numpy.scons: . numpy/core

numpy-svn@scip... numpy-svn@scip...
Mon Oct 15 06:05:56 CDT 2007


Author: cdavid
Date: 2007-10-15 06:05:38 -0500 (Mon, 15 Oct 2007)
New Revision: 4204

Modified:
   branches/numpy.scons/
   branches/numpy.scons/numpy/core/SConstruct
   branches/numpy.scons/numpy/core/scons_support.py
   branches/numpy.scons/numpy/core/setupscons.py
Log:
Add a scons checker for broken math libs


Property changes on: branches/numpy.scons
___________________________________________________________________
Name: bzr:revision-info
   - timestamp: 2007-10-15 19:00:09.647000074 +0900
committer: David Cournapeau <david@ar.media.kyoto-u.ac.jp>
properties: 
	branch-nick: numpy.scons

   + timestamp: 2007-10-15 19:13:36.970000029 +0900
committer: David Cournapeau <david@ar.media.kyoto-u.ac.jp>
properties: 
	branch-nick: numpy.scons

Name: bzr:revision-id:v3-trunk0
   - 3737 david@david-laptop-20070920080908-n8pj8vmszdir3zoa
3738 david@david-laptop-20070920081509-58kkojgmml3t7jxs
3739 david@david-laptop-20070920081910-phlk1ujthksgpm0z
3740 david@david-laptop-20070920082641-bdhrt6eafeoli50i
3741 david@ar.media.kyoto-u.ac.jp-20070920130730-satdeppbh1k0bq2p
3743 david@ar.media.kyoto-u.ac.jp-20070921073742-vpv8pwv0j8fbd93m
3744 david@david-laptop-20070922101656-61kfi2faucemr2rl
3745 david@david-laptop-20070922113708-ror18thshang1cpu
3747 david@david-laptop-20070922140534-n9xsl096tjrzmct1
3749 david@david-laptop-20070922154007-usit009fr6vp377j
3750 david@david-laptop-20070923070011-leu2ozc2fy1q5cht
3751 david@david-laptop-20070924015925-dhsiao40jp7zsfp9
3752 david@ar.media.kyoto-u.ac.jp-20070924070657-nbw23j0ayan30cli
3753 david@ar.media.kyoto-u.ac.jp-20070924082918-i1lc1zikywi8czj4
3754 david@ar.media.kyoto-u.ac.jp-20070924083008-c0edtt8zs31yeh1q
3755 david@ar.media.kyoto-u.ac.jp-20070924112351-pnnho638cohz6lj1
3756 david@david-laptop-20070924153247-yftud00bynilxv69
3757 david@david-laptop-20070924163545-pish34x9fq2h66aj
3758 david@david-laptop-20070924164633-iiyygcaw81ji3n34
3759 david@david-laptop-20070924170201-y14v2yzikdpvamfp
3760 david@david-laptop-20070924171208-5bmitorzf49d1aa2
3761 david@david-laptop-20070925014444-ns9v90gotnxt39mq
3769 david@david-laptop-20070925145952-4osi81tvch7v6luj
3773 david@ar.media.kyoto-u.ac.jp-20070926073429-2kdc6yf1o210aer0
3774 david@ar.media.kyoto-u.ac.jp-20070926084356-938djoytjap90rmo
3775 david@ar.media.kyoto-u.ac.jp-20070926085329-3gquq3gu2k8rgzb0
3776 david@ar.media.kyoto-u.ac.jp-20071009084906-9kradhwpu7su633x
3777 david@ar.media.kyoto-u.ac.jp-20071009093339-q5nf5me6ikdi48k6
3778 david@david-laptop-20071009152108-xh5cltii0h6zjk9b
3779 david@david-laptop-20071009154954-v5se05gbq60opo1z
3780 david@david-laptop-20071009223102-vz2sgf5i6pncxsd8
3781 david@david-laptop-20071009225259-13m6enwqk4w9uihe
3782 david@ar.media.kyoto-u.ac.jp-20071010021710-liz2jvw0ggbxrtgi
3783 david@ar.media.kyoto-u.ac.jp-20071010032218-8qzxvdmith85a056
3784 david@ar.media.kyoto-u.ac.jp-20071010032323-lgbxfd788h402kn0
3792 david@ar.media.kyoto-u.ac.jp-20071011033223-s14976refgeaw00h
3793 david@ar.media.kyoto-u.ac.jp-20071011033241-rrzlo2vu6w0tkdwf
3794 david@ar.media.kyoto-u.ac.jp-20071011071251-c5pxigyynpck262d
3795 david@ar.media.kyoto-u.ac.jp-20071012040323-8ka0mgkx1t8r9fcl
3796 david@ar.media.kyoto-u.ac.jp-20071012042801-44pmvc5o1u6p6wi7
3797 david@ar.media.kyoto-u.ac.jp-20071012071207-nfpsuyfoq0ooy7xf
3798 david@ar.media.kyoto-u.ac.jp-20071012073426-8o9tejzovgk7qzi4
3799 david@ar.media.kyoto-u.ac.jp-20071012074103-1fzviuk1sunv0b9n
3800 david@ar.media.kyoto-u.ac.jp-20071012074129-t5nu6f96wie8fd1y
3801 david@ar.media.kyoto-u.ac.jp-20071012100715-sq8hhctu5tynlx4m
3802 david@david-laptop-20071013043839-hc3yfsbn0t7gsuhe
3803 david@david-laptop-20071013123319-vf4b7yhadz9nxasc
3804 david@david-laptop-20071014063148-0bsktlh609c3rpv7
3805 david@david-laptop-20071014064841-liamaqiv3af71r3g
3806 david@david-laptop-20071014064900-j4yzxzuveukuyj2l
3807 david@david-laptop-20071014124401-n3a37y67u5imyo83
3808 david@david-laptop-20071014161201-hdljwkhh4ep0f9k2
3809 david@david-laptop-20071014164521-c6i415hcz6hfrxxp
3810 david@david-laptop-20071015032315-g9fsm9zqk6fanyjz
3811 david@ar.media.kyoto-u.ac.jp-20071015043352-a24r1whpwiwiso80
3812 david@ar.media.kyoto-u.ac.jp-20071015054624-f8ecd3xiq5t64bjx
3813 david@ar.media.kyoto-u.ac.jp-20071015054650-q6t9itvdz8b36wmi
3814 david@ar.media.kyoto-u.ac.jp-20071015055114-4grsf3r93py358pq
3815 david@ar.media.kyoto-u.ac.jp-20071015063542-mharc6rxpnads86x
3816 david@ar.media.kyoto-u.ac.jp-20071015080315-u087sw2qmfa6a237
3817 david@ar.media.kyoto-u.ac.jp-20071015090009-545f5h9rwg4g8tyr
3818 david@ar.media.kyoto-u.ac.jp-20071015090757-nvuaubbge00snkbb
3819 david@ar.media.kyoto-u.ac.jp-20071015092938-job891na4f5fz0xn
3820 david@ar.media.kyoto-u.ac.jp-20071015094420-vb808flxq619lomj
3821 david@ar.media.kyoto-u.ac.jp-20071015100009-rd9c4p6pxk3ambj6

   + 3737 david@david-laptop-20070920080908-n8pj8vmszdir3zoa
3738 david@david-laptop-20070920081509-58kkojgmml3t7jxs
3739 david@david-laptop-20070920081910-phlk1ujthksgpm0z
3740 david@david-laptop-20070920082641-bdhrt6eafeoli50i
3741 david@ar.media.kyoto-u.ac.jp-20070920130730-satdeppbh1k0bq2p
3743 david@ar.media.kyoto-u.ac.jp-20070921073742-vpv8pwv0j8fbd93m
3744 david@david-laptop-20070922101656-61kfi2faucemr2rl
3745 david@david-laptop-20070922113708-ror18thshang1cpu
3747 david@david-laptop-20070922140534-n9xsl096tjrzmct1
3749 david@david-laptop-20070922154007-usit009fr6vp377j
3750 david@david-laptop-20070923070011-leu2ozc2fy1q5cht
3751 david@david-laptop-20070924015925-dhsiao40jp7zsfp9
3752 david@ar.media.kyoto-u.ac.jp-20070924070657-nbw23j0ayan30cli
3753 david@ar.media.kyoto-u.ac.jp-20070924082918-i1lc1zikywi8czj4
3754 david@ar.media.kyoto-u.ac.jp-20070924083008-c0edtt8zs31yeh1q
3755 david@ar.media.kyoto-u.ac.jp-20070924112351-pnnho638cohz6lj1
3756 david@david-laptop-20070924153247-yftud00bynilxv69
3757 david@david-laptop-20070924163545-pish34x9fq2h66aj
3758 david@david-laptop-20070924164633-iiyygcaw81ji3n34
3759 david@david-laptop-20070924170201-y14v2yzikdpvamfp
3760 david@david-laptop-20070924171208-5bmitorzf49d1aa2
3761 david@david-laptop-20070925014444-ns9v90gotnxt39mq
3769 david@david-laptop-20070925145952-4osi81tvch7v6luj
3773 david@ar.media.kyoto-u.ac.jp-20070926073429-2kdc6yf1o210aer0
3774 david@ar.media.kyoto-u.ac.jp-20070926084356-938djoytjap90rmo
3775 david@ar.media.kyoto-u.ac.jp-20070926085329-3gquq3gu2k8rgzb0
3776 david@ar.media.kyoto-u.ac.jp-20071009084906-9kradhwpu7su633x
3777 david@ar.media.kyoto-u.ac.jp-20071009093339-q5nf5me6ikdi48k6
3778 david@david-laptop-20071009152108-xh5cltii0h6zjk9b
3779 david@david-laptop-20071009154954-v5se05gbq60opo1z
3780 david@david-laptop-20071009223102-vz2sgf5i6pncxsd8
3781 david@david-laptop-20071009225259-13m6enwqk4w9uihe
3782 david@ar.media.kyoto-u.ac.jp-20071010021710-liz2jvw0ggbxrtgi
3783 david@ar.media.kyoto-u.ac.jp-20071010032218-8qzxvdmith85a056
3784 david@ar.media.kyoto-u.ac.jp-20071010032323-lgbxfd788h402kn0
3792 david@ar.media.kyoto-u.ac.jp-20071011033223-s14976refgeaw00h
3793 david@ar.media.kyoto-u.ac.jp-20071011033241-rrzlo2vu6w0tkdwf
3794 david@ar.media.kyoto-u.ac.jp-20071011071251-c5pxigyynpck262d
3795 david@ar.media.kyoto-u.ac.jp-20071012040323-8ka0mgkx1t8r9fcl
3796 david@ar.media.kyoto-u.ac.jp-20071012042801-44pmvc5o1u6p6wi7
3797 david@ar.media.kyoto-u.ac.jp-20071012071207-nfpsuyfoq0ooy7xf
3798 david@ar.media.kyoto-u.ac.jp-20071012073426-8o9tejzovgk7qzi4
3799 david@ar.media.kyoto-u.ac.jp-20071012074103-1fzviuk1sunv0b9n
3800 david@ar.media.kyoto-u.ac.jp-20071012074129-t5nu6f96wie8fd1y
3801 david@ar.media.kyoto-u.ac.jp-20071012100715-sq8hhctu5tynlx4m
3802 david@david-laptop-20071013043839-hc3yfsbn0t7gsuhe
3803 david@david-laptop-20071013123319-vf4b7yhadz9nxasc
3804 david@david-laptop-20071014063148-0bsktlh609c3rpv7
3805 david@david-laptop-20071014064841-liamaqiv3af71r3g
3806 david@david-laptop-20071014064900-j4yzxzuveukuyj2l
3807 david@david-laptop-20071014124401-n3a37y67u5imyo83
3808 david@david-laptop-20071014161201-hdljwkhh4ep0f9k2
3809 david@david-laptop-20071014164521-c6i415hcz6hfrxxp
3810 david@david-laptop-20071015032315-g9fsm9zqk6fanyjz
3811 david@ar.media.kyoto-u.ac.jp-20071015043352-a24r1whpwiwiso80
3812 david@ar.media.kyoto-u.ac.jp-20071015054624-f8ecd3xiq5t64bjx
3813 david@ar.media.kyoto-u.ac.jp-20071015054650-q6t9itvdz8b36wmi
3814 david@ar.media.kyoto-u.ac.jp-20071015055114-4grsf3r93py358pq
3815 david@ar.media.kyoto-u.ac.jp-20071015063542-mharc6rxpnads86x
3816 david@ar.media.kyoto-u.ac.jp-20071015080315-u087sw2qmfa6a237
3817 david@ar.media.kyoto-u.ac.jp-20071015090009-545f5h9rwg4g8tyr
3818 david@ar.media.kyoto-u.ac.jp-20071015090757-nvuaubbge00snkbb
3819 david@ar.media.kyoto-u.ac.jp-20071015092938-job891na4f5fz0xn
3820 david@ar.media.kyoto-u.ac.jp-20071015094420-vb808flxq619lomj
3821 david@ar.media.kyoto-u.ac.jp-20071015100009-rd9c4p6pxk3ambj6
3822 david@ar.media.kyoto-u.ac.jp-20071015101336-2p0h5e17hcgrfs0e


Modified: branches/numpy.scons/numpy/core/SConstruct
===================================================================
--- branches/numpy.scons/numpy/core/SConstruct	2007-10-15 11:05:12 UTC (rev 4203)
+++ branches/numpy.scons/numpy/core/SConstruct	2007-10-15 11:05:38 UTC (rev 4204)
@@ -1,8 +1,9 @@
-# Last Change: Mon Oct 15 05:00 PM 2007 J
+# Last Change: Mon Oct 15 07:00 PM 2007 J
 # vim:syntax=python
 import os
 from os.path import join as pjoin, basename as pbasename, dirname as pdirname
 import sys
+from copy import deepcopy
 
 from numpy.distutils.scons import get_python_inc
 from numpy.distutils.scons import GetNumpyEnvironment, CheckTypeSize
@@ -73,8 +74,37 @@
 #else:
 #    config_sym.append(('NPY_ALLOW_THREADS', '1'))
 
+def CheckBrokenMathlib(context, mathlib):
+    src = """
+/* check whether libm is broken */
+#include <math.h>
+int main(int argc, char *argv[])
+{
+  return exp(-720.) > 1.0;  /* typically an IEEE denormal */
+}
+"""
+
+    try:
+        oldLIBS = deepcopy(context.env['LIBS'])
+    except:
+        oldLIBS = []
+
+    try:
+        context.Message("Checking if math lib %s is broken ... " % mathlib)
+        context.env.AppendUnique(LIBS = mathlib)
+        st = context.TryRun(src, '.c')
+    finally:
+        env['LIBS'] = oldLIBS
+
+    if st[0]:
+        context.Result(' not broken !')
+    else:
+        context.Result(' broken ! (output is %s)' % st[1])
+    return st[0]
+
 env.Append(CPPPATH = [get_python_inc()])
-config = env.NumpyConfigure(custom_tests = {'CheckTypeSize' : CheckTypeSize})
+config = env.NumpyConfigure(custom_tests = {'CheckTypeSize' : CheckTypeSize,
+    'CheckBrokenMathlib' : CheckBrokenMathlib})
 
 # TODO: check python extension can be built (in root or here ?)
 
@@ -147,6 +177,9 @@
 for f in mfuncs[1:]:
     check_lib(f)
 
+# What are we supposed to do if the math lib is broken ?
+config.CheckBrokenMathlib(mlib)
+
 #--------------
 # Checking Blas
 #--------------
@@ -236,14 +269,14 @@
 umath = env.GenerateUmath(pjoin(env['build_dir'], '__umath_generated'), 
         pjoin(env['src_dir'], 'code_generators', 'generate_umath.py'))
 
-multiarray_api = env.GenerateApi(pjoin(env['build_dir'], '__multiarray_api'), 
+multiarray_api = env.GenerateApi(pjoin(env['build_dir'], 'multiarray_api'), 
     [pjoin(env['src_dir'], 'code_generators', 'array_api_order.txt'),
     pjoin(env['src_dir'], 'code_generators', 'multiarray_api_order.txt')])
-ufunc_api = env.GenerateUfuncApi(pjoin(env['build_dir'], '__ufunc_api'), 
+ufunc_api = env.GenerateUfuncApi(pjoin(env['build_dir'], 'ufunc_api'), 
     pjoin(env['src_dir'], 'code_generators', 'ufunc_api_order.txt'))
 
 # XXX
-#env.Append(CCFLAGS = "-Wall -O2")
+env.Append(CCFLAGS = "-Wall -O2")
 
 #-----------------
 # Build multiarray

Modified: branches/numpy.scons/numpy/core/scons_support.py
===================================================================
--- branches/numpy.scons/numpy/core/scons_support.py	2007-10-15 11:05:12 UTC (rev 4203)
+++ branches/numpy.scons/numpy/core/scons_support.py	2007-10-15 11:05:38 UTC (rev 4204)
@@ -1,3 +1,5 @@
+from os.path import join as pjoin, dirname as pdirname, basename as pbasename
+
 from code_generators.generate_array_api import \
         types, h_template as multiarray_h_template, \
         c_template as multiarray_c_template
@@ -97,9 +99,12 @@
 def generate_api_emitter(target, source, env):
     """Returns the list of targets generated by the code generator for array api."""
     base, ext = SCons.Util.splitext(str(target[0]))
-    h = base + '.h'
-    c = base + '.c'
+    dir = pdirname(base)
+    ba = pbasename(base)
+    h = pjoin(dir, '__' + ba + '.h')
+    c = pjoin(dir, '__' + ba + '.c')
     txt = base + '.txt'
+    print h, c, txt
     t = [h, c, txt]
     return (t, source)
 

Modified: branches/numpy.scons/numpy/core/setupscons.py
===================================================================
--- branches/numpy.scons/numpy/core/setupscons.py	2007-10-15 11:05:12 UTC (rev 4203)
+++ branches/numpy.scons/numpy/core/setupscons.py	2007-10-15 11:05:38 UTC (rev 4204)
@@ -32,7 +32,7 @@
         # between scons and distutils, and set the options at one single
         # location.
         h_file = join(scons_build_dir, local_dir, '__multiarray_api.h')
-        t_file = join(scons_build_dir, local_dir, '__multiarray_api.txt')
+        t_file = join(scons_build_dir, local_dir, 'multiarray_api.txt')
         config.add_data_files((header_dir, h_file),
                               (header_dir, t_file))
 
@@ -42,7 +42,7 @@
         # between scons and distutils, and set the options at one single
         # location.
         h_file = join(scons_build_dir, local_dir, '__ufunc_api.h')
-        t_file = join(scons_build_dir, local_dir, '__ufunc_api.txt')
+        t_file = join(scons_build_dir, local_dir, 'ufunc_api.txt')
         config.add_data_files((header_dir, h_file),
                               (header_dir, t_file))
 
@@ -77,16 +77,6 @@
 
     return config
 
-def testcode_mathlib():
-    return """\
-/* check whether libm is broken */
-#include <math.h>
-int main(int argc, char *argv[])
-{
-  return exp(-720.) > 1.0;  /* typically an IEEE denormal */
-}
-"""
-
 if __name__=='__main__':
     from numpy.distutils.core import setup
     setup(configuration=configuration)



More information about the Numpy-svn mailing list