diff options
Diffstat (limited to 'numpy/distutils/misc_util.py')
-rw-r--r-- | numpy/distutils/misc_util.py | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/numpy/distutils/misc_util.py b/numpy/distutils/misc_util.py index 48fbe335a..384d7f2d7 100644 --- a/numpy/distutils/misc_util.py +++ b/numpy/distutils/misc_util.py @@ -19,7 +19,7 @@ __all__ = ['Configuration', 'get_numpy_include_dirs', 'default_config_dict', 'get_dependencies', 'is_local_src_dir', 'get_ext_source_files', 'get_script_files', 'get_lib_source_files', 'get_data_files', 'dot_join', 'get_frame', 'minrelpath','njoin', - 'is_sequence', 'is_string', 'as_list', 'gpaths'] + 'is_sequence', 'is_string', 'as_list', 'gpaths', 'get_language'] def allpath(name): "Convert a /-separated pathname to one using the OS's path separator." @@ -308,6 +308,18 @@ def as_list(seq): else: return [seq] +def get_language(sources): + """ Determine language value (c,f77,f90) from sources """ + language = 'c' + for source in sources: + if isinstance(source, str): + if f90_ext_match(source): + language = 'f90' + break + elif fortran_ext_match(source): + language = 'f77' + return language + def has_f_sources(sources): """ Return True if sources contains Fortran files """ for source in sources: @@ -1018,6 +1030,10 @@ class Configuration(object): ext_args['name'] = dot_join(self.name,name) ext_args['sources'] = sources + language = ext_args.get('language',None) + if language is None: + ext_args['language'] = get_language(sources) + if ext_args.has_key('extra_info'): extra_info = ext_args['extra_info'] del ext_args['extra_info'] @@ -1076,11 +1092,16 @@ class Configuration(object): include_dirs extra_compiler_args f2py_options + language """ build_info = copy.copy(build_info) name = name #+ '__OF__' + self.name build_info['sources'] = sources + language = build_info.get('language',None) + if language is None: + build_info['language'] = get_language(sources) + self._fix_paths_dict(build_info) self.libraries.append((name,build_info)) @@ -1379,7 +1400,11 @@ def default_config_dict(name = None, parent_name = None, local_path=None): def dict_append(d, **kws): for k, v in kws.items(): if d.has_key(k): - d[k].extend(v) + ov = d[k] + if isinstance(ov,str): + d[k] = v + else: + d[k].extend(v) else: d[k] = v |