diff options
| author | David Cournapeau <cournape@gmail.com> | 2009-10-08 13:57:27 +0000 |
|---|---|---|
| committer | David Cournapeau <cournape@gmail.com> | 2009-10-08 13:57:27 +0000 |
| commit | 9afcc82c525035459dd29fcdef970552673ec2a2 (patch) | |
| tree | e593ab918096f0ea4ad5641024ed99812449b1c3 /numpy/core | |
| parent | f758735fdd663b02968febf38e16beb20a9090a0 (diff) | |
| download | numpy-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/SConscript | 10 | ||||
| -rw-r--r-- | numpy/core/code_generators/generate_numpy_api.py | 27 | ||||
| -rw-r--r-- | numpy/core/scons_support.py | 4 | ||||
| -rw-r--r-- | numpy/core/setup.py | 1 |
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. |
