summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2020-05-14 09:41:12 +0530
committerNirbheek Chauhan <nirbheek@centricular.com>2020-05-14 09:41:12 +0530
commit92102a911d3af9c69d33a386cc32f150bc14ba18 (patch)
tree2fb42044df32cb81ca2ff42a00439c5ccbcf2722
parent57e55b1a9ddce282f0b5d0508139f0f06ce952e5 (diff)
downloadmeson-nirbheek/fix-gcc-fortran-10-has_header-breakage.tar.gz
gfortran: Fix has_header implementation with GCC 10nirbheek/fix-gcc-fortran-10-has_header-breakage
__has_include is not accepted as a pre-processor directive in Fortran code since GCC 10. Closes https://github.com/mesonbuild/meson/issues/7017
-rw-r--r--mesonbuild/compilers/fortran.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/mesonbuild/compilers/fortran.py b/mesonbuild/compilers/fortran.py
index 01283a1de..c155b5b4f 100644
--- a/mesonbuild/compilers/fortran.py
+++ b/mesonbuild/compilers/fortran.py
@@ -214,6 +214,18 @@ class GnuFortranCompiler(GnuCompiler, FortranCompiler):
def language_stdlib_only_link_flags(self) -> T.List[str]:
return ['-lgfortran', '-lm']
+ def has_header(self, hname, prefix, env, *, extra_args=None, dependencies=None, disable_cache=False):
+ '''
+ Derived from mixins/clike.py:has_header, but without C-style usage of
+ __has_include which breaks with GCC-Fortran 10:
+ https://github.com/mesonbuild/meson/issues/7017
+ '''
+ fargs = {'prefix': prefix, 'header': hname}
+ code = '{prefix}\n#include <{header}>'
+ return self.compiles(code.format(**fargs), env, extra_args=extra_args,
+ dependencies=dependencies, mode='preprocess', disable_cache=disable_cache)
+
+
class ElbrusFortranCompiler(GnuFortranCompiler, ElbrusCompiler):
def __init__(self, exelist, version, for_machine: MachineChoice,
is_cross, info: 'MachineInfo', exe_wrapper=None,