summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
Diffstat (limited to 'numpy')
-rw-r--r--numpy/distutils/command/build_clib.py4
-rw-r--r--numpy/distutils/command/build_ext.py3
-rw-r--r--numpy/distutils/extension.py6
-rw-r--r--numpy/distutils/fcompiler/__init__.py15
-rw-r--r--numpy/distutils/misc_util.py6
5 files changed, 32 insertions, 2 deletions
diff --git a/numpy/distutils/command/build_clib.py b/numpy/distutils/command/build_clib.py
index 71ca1e096..e68b97058 100644
--- a/numpy/distutils/command/build_clib.py
+++ b/numpy/distutils/command/build_clib.py
@@ -175,6 +175,10 @@ class build_clib(old_build_clib):
raise DistutilsError("library %s has Fortran sources"\
" but no Fortran compiler found" % (lib_name))
+ if fcompiler is not None:
+ fcompiler.extra_f77_compile_args = build_info.get('extra_f77_compile_args') or []
+ fcompiler.extra_f90_compile_args = build_info.get('extra_f90_compile_args') or []
+
macros = build_info.get('macros')
include_dirs = build_info.get('include_dirs')
if include_dirs is None:
diff --git a/numpy/distutils/command/build_ext.py b/numpy/distutils/command/build_ext.py
index 840d43716..f63d5249c 100644
--- a/numpy/distutils/command/build_ext.py
+++ b/numpy/distutils/command/build_ext.py
@@ -299,6 +299,9 @@ class build_ext (old_build_ext):
fcompiler = self._f77_compiler
else: # in case ext.language is c++, for instance
fcompiler = self._f90_compiler or self._f77_compiler
+ if fcompiler is not None:
+ fcompiler.extra_f77_compile_args = ext.extra_f77_compile_args or []
+ fcompiler.extra_f90_compile_args = ext.extra_f90_compile_args or []
cxx_compiler = self._cxx_compiler
# check for the availability of required compilers
diff --git a/numpy/distutils/extension.py b/numpy/distutils/extension.py
index 9f28263d8..2fc29f6d5 100644
--- a/numpy/distutils/extension.py
+++ b/numpy/distutils/extension.py
@@ -31,6 +31,8 @@ class Extension(old_Extension):
language=None,
f2py_options=None,
module_dirs=None,
+ extra_f77_compile_args=None,
+ extra_f90_compile_args=None,
):
old_Extension.__init__(self,name, [],
include_dirs,
@@ -63,7 +65,9 @@ class Extension(old_Extension):
# numpy_distutils features
self.f2py_options = f2py_options or []
self.module_dirs = module_dirs or []
-
+ self.extra_f77_compile_args = extra_f77_compile_args or []
+ self.extra_f90_compile_args = extra_f90_compile_args or []
+
return
def has_cxx_sources(self):
diff --git a/numpy/distutils/fcompiler/__init__.py b/numpy/distutils/fcompiler/__init__.py
index 69d9d68d3..38fca575a 100644
--- a/numpy/distutils/fcompiler/__init__.py
+++ b/numpy/distutils/fcompiler/__init__.py
@@ -213,6 +213,10 @@ class FCompiler(CCompiler):
# command/{build_ext.py, build_clib.py, config.py} files.
c_compiler = None
+ # extra_{f77,f90}_compile_args are set by build_ext.build_extension method
+ extra_f77_compiler_args = []
+ extra_f90_compiler_args = []
+
def __init__(self, *args, **kw):
CCompiler.__init__(self, *args, **kw)
self.distutils_vars = self.distutils_vars.clone(self._environment_hook)
@@ -560,18 +564,21 @@ class FCompiler(CCompiler):
flavor = ':f77'
compiler = self.compiler_f77
src_flags = get_f77flags(src)
+ extra_compile_args = self.extra_f77_compile_args or []
elif is_free_format(src):
flavor = ':f90'
compiler = self.compiler_f90
if compiler is None:
raise DistutilsExecError('f90 not supported by %s needed for %s'\
% (self.__class__.__name__,src))
+ extra_compile_args = self.extra_f90_compile_args or []
else:
flavor = ':fix'
compiler = self.compiler_fix
if compiler is None:
raise DistutilsExecError('f90 (fixed) not supported by %s needed for %s'\
% (self.__class__.__name__,src))
+ extra_compile_args = self.extra_f90_compile_args or []
if self.object_switch[-1]==' ':
o_args = [self.object_switch.strip(),obj]
else:
@@ -580,13 +587,17 @@ class FCompiler(CCompiler):
assert self.compile_switch.strip()
s_args = [self.compile_switch, src]
+ if extra_compile_args:
+ log.info('extra %s options: %r' \
+ % (flavor[1:], ' '.join(extra_compile_args)))
+
extra_flags = src_flags.get(self.compiler_type,[])
if extra_flags:
log.info('using compile options from source: %r' \
% ' '.join(extra_flags))
command = compiler + cc_args + extra_flags + s_args + o_args \
- + extra_postargs
+ + extra_postargs + extra_compile_args
display = '%s: %s' % (os.path.basename(compiler[0]) + flavor,
src)
@@ -961,5 +972,7 @@ def get_f77flags(src):
f.close()
return flags
+# TODO: implement get_f90flags and use it in _compile similarly to get_f77flags
+
if __name__ == '__main__':
show_fcompilers()
diff --git a/numpy/distutils/misc_util.py b/numpy/distutils/misc_util.py
index 53ef87373..2e4ed27f3 100644
--- a/numpy/distutils/misc_util.py
+++ b/numpy/distutils/misc_util.py
@@ -1403,6 +1403,8 @@ class Configuration(object):
extra_objects:
extra_compile_args:
extra_link_args:
+ extra_f77_compile_args:
+ extra_f90_compile_args:
export_symbols:
swig_opts:
depends:
@@ -1497,6 +1499,8 @@ class Configuration(object):
* macros
* include_dirs
* extra_compiler_args
+ * extra_f77_compiler_args
+ * extra_f90_compiler_args
* f2py_options
* language
@@ -1548,6 +1552,8 @@ class Configuration(object):
* macros
* include_dirs
* extra_compiler_args
+ * extra_f77_compiler_args
+ * extra_f90_compiler_args
* f2py_options
* language