summaryrefslogtreecommitdiff
path: root/numpy/core
diff options
context:
space:
mode:
authorDavid Cournapeau <cournape@gmail.com>2009-10-08 13:57:27 +0000
committerDavid Cournapeau <cournape@gmail.com>2009-10-08 13:57:27 +0000
commit9afcc82c525035459dd29fcdef970552673ec2a2 (patch)
treee593ab918096f0ea4ad5641024ed99812449b1c3 /numpy/core
parentf758735fdd663b02968febf38e16beb20a9090a0 (diff)
downloadnumpy-9afcc82c525035459dd29fcdef970552673ec2a2.tar.gz
ENH: do not use *_order.txt inputs anymore.
numscons build now uses the api dicts as Python Value nodes, and distutils build uses the dict directly as well. In the case of numscons, this means that changes in the API will now automatically be detected and handled.
Diffstat (limited to 'numpy/core')
-rw-r--r--numpy/core/SConscript10
-rw-r--r--numpy/core/code_generators/generate_numpy_api.py27
-rw-r--r--numpy/core/scons_support.py4
-rw-r--r--numpy/core/setup.py1
4 files changed, 27 insertions, 15 deletions
diff --git a/numpy/core/SConscript b/numpy/core/SConscript
index 0ff3ecbea..8d030c5c9 100644
--- a/numpy/core/SConscript
+++ b/numpy/core/SConscript
@@ -10,12 +10,18 @@ from numscons import GetNumpyEnvironment
from numscons import CheckCBLAS
from numscons import write_info
+from code_generators.numpy_api import \
+ multiarray_api as multiarray_api_dict, \
+ ufunc_api as ufunc_api_dict
+
from setup_common import *
from scons_support import CheckBrokenMathlib, define_no_smp, \
check_mlib, check_mlibs, is_npy_no_signal, CheckInline
from scons_support import array_api_gen_bld, ufunc_api_gen_bld, template_bld, \
umath_bld, CheckGCC4, check_api_version
+import SCons
+
# Set to True to enable multiple file compilations (experimental)
try:
os.environ['NPY_SEPARATE_COMPILATION']
@@ -320,11 +326,11 @@ umath = env.GenerateUmath('__umath_generated',
pjoin('code_generators', 'generate_umath.py'))
multiarray_api = env.GenerateMultiarrayApi('include/numpy/multiarray_api',
- [ pjoin('code_generators', 'numpy_api_order.txt')])
+ [SCons.Node.Python.Value(d) for d in multiarray_api_dict])
generated_headers.append(multiarray_api[0])
ufunc_api = env.GenerateUfuncApi('include/numpy/ufunc_api',
- pjoin('code_generators', 'ufunc_api_order.txt'))
+ [SCons.Node.Python.Value(d) for d in ufunc_api_dict])
generated_headers.append(ufunc_api[0])
# include/numpy is added for compatibility reasons with distutils: this is
diff --git a/numpy/core/code_generators/generate_numpy_api.py b/numpy/core/code_generators/generate_numpy_api.py
index c5de11525..64bac67ff 100644
--- a/numpy/core/code_generators/generate_numpy_api.py
+++ b/numpy/core/code_generators/generate_numpy_api.py
@@ -136,9 +136,10 @@ def generate_api(output_dir, force=False):
c_file = os.path.join(output_dir, '__%s.c' % basename)
d_file = os.path.join(output_dir, '%s.txt' % basename)
targets = (h_file, c_file, d_file)
- sources = ['numpy_api_order.txt']
- if (not force and not genapi.should_rebuild(targets, sources + [__file__])):
+ sources = numpy_api.multiarray_api
+
+ if (not force and not genapi.should_rebuild(targets, [numpy_api.__file__, __file__])):
return targets
else:
do_generate_api(targets, sources)
@@ -150,17 +151,23 @@ def do_generate_api(targets, sources):
c_file = targets[1]
doc_file = targets[2]
+ global_vars = sources[0]
+ global_vars_types = sources[1]
+ scalar_bool_values = sources[2]
+ types_api = sources[3]
+ multiarray_funcs = sources[4]
+
+ # Remove global_vars_type: not a api dict
+ multiarray_api = sources[:1] + sources[2:]
+
module_list = []
extension_list = []
init_list = []
# Check multiarray api indexes
- multiarray_api_index = genapi2.merge_api_dicts((numpy_api.multiarray_funcs_api,
- numpy_api.multiarray_global_vars, numpy_api.multiarray_scalar_bool_values,
- numpy_api.multiarray_types_api))
+ multiarray_api_index = genapi2.merge_api_dicts(multiarray_api)
genapi2.check_api_dict(multiarray_api_index)
- multiarray_funcs = numpy_api.multiarray_funcs_api
numpyapi_list = genapi2.get_api_functions('NUMPY_API',
multiarray_funcs)
ordered_funcs_api = genapi2.order_dict(multiarray_funcs)
@@ -174,14 +181,14 @@ def do_generate_api(targets, sources):
multiarray_api_dict[f.name] = FunctionApi(f.name, index, f.return_type,
f.args, api_name)
- for name, index in numpy_api.multiarray_global_vars.items():
- type = numpy_api.multiarray_global_vars_types[name]
+ for name, index in global_vars.items():
+ type = global_vars_types[name]
multiarray_api_dict[name] = GlobalVarApi(name, index, type, api_name)
- for name, index in numpy_api.multiarray_scalar_bool_values.items():
+ for name, index in scalar_bool_values.items():
multiarray_api_dict[name] = BoolValuesApi(name, index, api_name)
- for name, index in numpy_api.multiarray_types_api.items():
+ for name, index in types_api.items():
multiarray_api_dict[name] = TypeApi(name, index, 'PyTypeObject', api_name)
assert len(multiarray_api_dict) == len(multiarray_api_index)
diff --git a/numpy/core/scons_support.py b/numpy/core/scons_support.py
index 6666aec42..54f2f0921 100644
--- a/numpy/core/scons_support.py
+++ b/numpy/core/scons_support.py
@@ -37,12 +37,12 @@ def split_ext(string):
#------------------------------------
def do_generate_numpy_api(target, source, env):
nowrap_do_generate_numpy_api([str(i) for i in target],
- [str(i) for i in source])
+ [s.value for s in source])
return 0
def do_generate_ufunc_api(target, source, env):
nowrap_do_generate_ufunc_api([str(i) for i in target],
- [str(i) for i in source])
+ [s.value for s in source])
return 0
def generate_api_emitter(target, source, env):
diff --git a/numpy/core/setup.py b/numpy/core/setup.py
index 4b616c390..7b32d506c 100644
--- a/numpy/core/setup.py
+++ b/numpy/core/setup.py
@@ -555,7 +555,6 @@ def configuration(parent_package='',top_path=None):
'include/numpy/fenv/fenv.c',
'include/numpy/fenv/fenv.h',
join(codegen_dir,'genapi.py'),
- join(codegen_dir,'*.txt')
]
# Don't install fenv unless we need them.