summaryrefslogtreecommitdiff
path: root/numpy/distutils/misc_util.py
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/distutils/misc_util.py')
-rw-r--r--numpy/distutils/misc_util.py29
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