[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
8.13.3 Mixing Fortran 77 With C and C++
Automake currently provides limited support for creating programs and shared libraries that are a mixture of Fortran 77 and C and/or C++. However, there are many other issues related to mixing Fortran 77 with other languages that are not (currently) handled by Automake, but that are handled by other packages(6).
Automake can help in two ways:
- Automatic selection of the linker depending on which combinations of source code.
-
Automatic selection of the appropriate linker flags (e.g., ‘-L’ and
‘-l’) to pass to the automatically selected linker in order to link
in the appropriate Fortran 77 intrinsic and run-time libraries.
These extra Fortran 77 linker flags are supplied in the output variable
FLIBS
by theAC_F77_LIBRARY_LDFLAGS
Autoconf macro supplied with newer versions of Autoconf (Autoconf version 2.13 and later). See (autoconf)Fortran 77 Compiler Characteristics section `Fortran 77 Compiler Characteristics' in The Autoconf.
If Automake detects that a program or shared library (as mentioned in
some _PROGRAMS
or _LTLIBRARIES
primary) contains source
code that is a mixture of Fortran 77 and C and/or C++, then it requires
that the macro AC_F77_LIBRARY_LDFLAGS
be called in
‘configure.ac’, and that either $(FLIBS)
appear in the appropriate _LDADD
(for programs) or _LIBADD
(for shared libraries) variables. It is the responsibility of the
person writing the ‘Makefile.am’ to make sure that ‘$(FLIBS)’
appears in the appropriate _LDADD
or
_LIBADD
variable.
For example, consider the following ‘Makefile.am’:
bin_PROGRAMS = foo foo_SOURCES = main.cc foo.f foo_LDADD = libfoo.la $(FLIBS) pkglib_LTLIBRARIES = libfoo.la libfoo_la_SOURCES = bar.f baz.c zardoz.cc libfoo_la_LIBADD = $(FLIBS) |
In this case, Automake will insist that AC_F77_LIBRARY_LDFLAGS
is mentioned in ‘configure.ac’. Also, if ‘$(FLIBS)’ hadn't
been mentioned in foo_LDADD
and libfoo_la_LIBADD
, then
Automake would have issued a warning.
8.13.3.1 How the Linker is Chosen | Automatic linker selection |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |