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.
This commit is contained in:
parent
67a5af99aa
commit
7f1cecf25b
|
@ -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…
Reference in New Issue