compilers/fortran: Fix all has_argument methods in meson

Apparently we have no tests for this because this is broken pretty
badly. This extends the basic test to actually check for the correct
free-form argument and thus test this.
pull/5403/head
Dylan Baker 5 years ago committed by Jussi Pakkanen
parent 67a5af99aa
commit 7f1cecf25b
  1. 20
      mesonbuild/compilers/fortran.py
  2. 5
      test cases/fortran/1 basic/meson.build

@ -31,6 +31,7 @@ from .compilers import (
IntelVisualStudioLikeCompiler,
)
from .clike import CLikeCompiler
from .. import mlog
from mesonbuild.mesonlib import (
EnvironmentException, MachineChoice, is_osx, LibType
@ -145,6 +146,25 @@ class FortranCompiler(CLikeCompiler, Compiler):
end program main'''
return self.find_library_impl(libname, env, extra_dirs, code, libtype)
def has_multi_arguments(self, args, env):
for arg in args[:]:
# some compilers, e.g. GCC, don't warn for unsupported warning-disable
# flags, so when we are testing a flag like "-Wno-forgotten-towel", also
# check the equivalent enable flag too "-Wforgotten-towel"
if arg.startswith('-Wno-'):
args.append('-W' + arg[5:])
if arg.startswith('-Wl,'):
mlog.warning('{} looks like a linker argument, '
'but has_argument and other similar methods only '
'support checking compiler arguments. Using them '
'to check linker arguments are never supported, '
'and results are likely to be wrong regardless of '
'the compiler you are using. has_link_argument or '
'other similar method can be used instead.'
.format(arg))
code = 'program main\ncall exit(0)\nend program main'
return self.has_arguments(args, env, code, mode='compile')
class GnuFortranCompiler(GnuCompiler, FortranCompiler):
def __init__(self, exelist, version, compiler_type, is_cross, exe_wrapper=None, defines=None, **kwargs):

@ -5,6 +5,9 @@ if fc.get_id() == 'gcc'
add_global_arguments('-fbounds-check', language : 'fortran')
endif
args = fc.first_supported_argument(['-ffree-form', '-free', '/free'])
assert(args != [], 'No arguments found?')
e = executable('simple', 'simple.f90',
fortran_args : '-ffree-form')
fortran_args : args)
test('Simple Fortran', e)

Loading…
Cancel
Save