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

numpy-svn@scip... numpy-svn@scip...
Sun Oct 14 11:13:41 CDT 2007


Author: cdavid
Date: 2007-10-14 11:13:31 -0500 (Sun, 14 Oct 2007)
New Revision: 4186

Modified:
   branches/numpy.scons/
   branches/numpy.scons/numpy/core/SConstruct
Log:
More work to generate config header from scons


Property changes on: branches/numpy.scons
___________________________________________________________________
Name: bzr:revision-info
   - timestamp: 2007-10-13 21:33:19.999000072 +0900
committer: david <david@david-laptop>
properties: 
	branch-nick: numpy.scons

   + timestamp: 2007-10-14 15:31:48.167000055 +0900
committer: david <david@david-laptop>
properties: 
	branch-nick: numpy.scons

Name: bzr:file-ids
   - numpy/core/scons_support.py	scons_support.py-20071013123248-qlvhssvnl3nuey6c-1
numpy/core/code_generators/__init__.py	__init__.py-20071013094357-a11hri01e04cjkey-1

   + 
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

   + 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


Modified: branches/numpy.scons/numpy/core/SConstruct
===================================================================
--- branches/numpy.scons/numpy/core/SConstruct	2007-10-14 16:13:08 UTC (rev 4185)
+++ branches/numpy.scons/numpy/core/SConstruct	2007-10-14 16:13:31 UTC (rev 4186)
@@ -6,6 +6,33 @@
 
 from numpy.distutils.scons import GetNumpyEnvironment
 
+import SCons.Util
+
+def generate_config_header(target, source, env):
+    t = open(str(target[0]), 'w')
+    if not env.has_key('config_h_gen'):
+        # XXX
+        assert 0 == 1
+    sym = env['config_h_gen']
+    def write_symbol(define, value):
+        if value == 1:
+            return "#define %s\n\n" % define
+        elif value == 0:
+            return "#under %s\n\n" % define
+        elif SCons.Util.is_String(value):
+            return "#define %s %s\n\n" % (define, value)
+    t.writelines([write_symbol(i[0], i[1]) for i in sym])
+    t.write('\n')
+    t.close()
+
+    return 0
+
+# Convention: list of tuples (definition, value). value:
+# - 0: #undef definition
+# - 1: #define definition
+# - string: #define definition value
+config_sym = []
+
 env = GetNumpyEnvironment(ARGUMENTS)
 
 #--------------------------------
@@ -31,14 +58,24 @@
         nosmp = 1
     except KeyError:
         nosmp = 0
+if nosmp:
+    config_sym.append(('NPY_ALLOW_THREADS', '0'))
+else:
+    config_sym.append(('NPY_ALLOW_THREADS', '1'))
 
 config = env.NumpyConfigure()
 
 # TODO: check python extension can be built (in root or here ?)
 
-#--------------------------------
+#---------------
+# Checking Types
+#---------------
+st = config.CheckType('short')
+print st
+
+#-----------------------
 # Checking configuration
-#--------------------------------
+#-----------------------
 
 #----------------------
 # Checking signal stuff
@@ -68,10 +105,13 @@
     mlib = mathlib
 else:
     mlib = 'm'
+config_sym.append(('MATHLIB', str(mlib)))
 for f in mfuncs:
     st = config.CheckLib(mlib, f[0])
     if st:
-        env.Append(CPPDEFINES = {f[1]: 1})
+        config_sym.append((f[1], 1))
+    else:
+        config_sym.append((f[1], 0))
 
 #--------------
 # Checking Blas
@@ -83,9 +123,9 @@
 #--------------------------
 # Generating multiarray API
 #--------------------------
-# TODO:
 from scons_support import do_generate_api, generate_api_emitter
 
+# XXX: put the builder in scons support lib.
 bld = Builder(action = do_generate_api, emitter = generate_api_emitter)
 env.Append(BUILDERS = {'GenerateApi' : bld})
 from os.path import join as pjoin
@@ -93,13 +133,41 @@
     [pjoin(env['src_dir'], 'code_generators', 'array_api_order.txt'),
     pjoin(env['src_dir'], 'code_generators', 'multiarray_api_order.txt')])
 
-config_header = env.Command(pjoin(env['build_dir'], 'config.h'), 
-                            pjoin(env['src_dir'], 'config.h.in'), 'cp $SOURCE $TARGET')
+# Take into account the change in config_sym (using emitter, see SubstDic
+# example in scons wiki) ?
+env['config_h_gen'] = config_sym
+bld = Builder(action = generate_config_header)
+env.Append(BUILDERS = {'GenerateConfigHeader' : bld})
+config_header = env.GenerateConfigHeader(pjoin(env['build_dir'], 'config.h'), [])
+
+# Builder to generate .inc from .inc.src
+from numpy.distutils.from_template import process_file
+def do_generate_from_template(targetfile, sourcefile, env):
+    t = open(targetfile, 'w')
+    string = process_file(sourcefile)
+    t.close()
+    return 0
+
+def generate_from_template(target, source, env):
+    for t, s in zip(target, source):
+        do_generate_from_template(str(t), str(s), env)
+
+def generate_from_template_emitter(target, source, env):
+    base, ext = SCons.Util.splitext(str(target[0]))
+    t = base + '.inc'
+    return ([t], source)
+    
+bld = Builder(action = generate_from_template, emitter = generate_from_template_emitter)
+env.Append(BUILDERS = {'FromTemplate' : bld})
+
+scalartypes_src = env.FromTemplate(pjoin(env['build_dir'], 'src', 'scalartypes'), 
+                                   pjoin(env['src_dir'], 'src', 'scalartypes.inc.src'))
+arraytypes_src = env.FromTemplate(pjoin(env['build_dir'], 'src', 'arraytypes'), 
+                                   pjoin(env['src_dir'], 'src', 'arraytypes.inc.src'))
+
 # Build multiarray
 env.Append(CPPPATH = [pjoin(env['src_dir'], 'include'), env['build_dir']])
 multiarray_src = [
-    pjoin('src','scalartypes.inc.src'),
-    pjoin('src','arraytypes.inc.src'),
     pjoin('src', 'multiarraymodule.c'),
 ]
 #multiarray = env.NumpyPythonExtension('multiarray', source = multiarray_src)



More information about the Numpy-svn mailing list