|
Packit |
47b4ca |
# -*- Autotest -*-
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_BANNER([Fortran low level compiling/preprocessing macros.])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
# Copyright (C) 2000-2001, 2003, 2008-2012 Free Software Foundation,
|
|
Packit |
47b4ca |
# Inc.
|
|
Packit |
47b4ca |
#
|
|
Packit |
47b4ca |
# This program is free software: you can redistribute it and/or modify
|
|
Packit |
47b4ca |
# it under the terms of the GNU General Public License as published by
|
|
Packit |
47b4ca |
# the Free Software Foundation, either version 3 of the License, or
|
|
Packit |
47b4ca |
# (at your option) any later version.
|
|
Packit |
47b4ca |
#
|
|
Packit |
47b4ca |
# This program is distributed in the hope that it will be useful,
|
|
Packit |
47b4ca |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
47b4ca |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit |
47b4ca |
# GNU General Public License for more details.
|
|
Packit |
47b4ca |
#
|
|
Packit |
47b4ca |
# You should have received a copy of the GNU General Public License
|
|
Packit |
47b4ca |
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
# Since the macros which compile are required by most tests, check
|
|
Packit |
47b4ca |
# them first. But remember that looking for a compiler is even more
|
|
Packit |
47b4ca |
# primitive, so check those first.
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
## --------------------- ##
|
|
Packit |
47b4ca |
## Fortran 77 Compiler. ##
|
|
Packit |
47b4ca |
## --------------------- ##
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CHECK_MACRO([GNU Fortran 77],
|
|
Packit |
47b4ca |
[[AC_LANG(Fortran 77)
|
|
Packit |
47b4ca |
AC_LANG_COMPILER
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
: > conftest.f
|
|
Packit |
47b4ca |
if AC_TRY_COMMAND([$F77 --version | grep GNU >&2]) \
|
|
Packit |
47b4ca |
|| AC_TRY_COMMAND([$F77 -v -c conftest.f 2>&1 | grep "f2c " >&2]); then
|
|
Packit |
47b4ca |
# Be sure to remove files which might be created by compilers that
|
|
Packit |
47b4ca |
# don't support --version, or by the second compile.
|
|
Packit |
47b4ca |
rm -f a.exe a.out conftest.f conftest.$ac_objext
|
|
Packit |
47b4ca |
# Has GNU in --version.
|
|
Packit |
47b4ca |
test "$G77" != yes &&
|
|
Packit |
47b4ca |
AC_MSG_ERROR([failed to recognize GNU Fortran 77 compiler])
|
|
Packit |
47b4ca |
else
|
|
Packit |
47b4ca |
# Be sure to remove files which might be created by compilers that
|
|
Packit |
47b4ca |
# don't support --version, or by the second compile.
|
|
Packit |
47b4ca |
rm -f a.exe a.out conftest.f conftest.$ac_objext
|
|
Packit |
47b4ca |
# Has not.
|
|
Packit |
47b4ca |
test "$G77" = yes &&
|
|
Packit |
47b4ca |
AC_MSG_ERROR([incorrectly recognized a GNU Fortran 77 compiler])
|
|
Packit |
47b4ca |
fi
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
## ------------------ ##
|
|
Packit |
47b4ca |
## Fortran Compiler. ##
|
|
Packit |
47b4ca |
## ------------------ ##
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CHECK_MACRO([GNU Fortran],
|
|
Packit |
47b4ca |
[[AC_LANG(Fortran)
|
|
Packit |
47b4ca |
AC_LANG_COMPILER
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
# No Fortran compiler is known not to support "*.f".
|
|
Packit |
47b4ca |
AC_FC_SRCEXT([f])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
# GNU Fortran is known to support freeform.
|
|
Packit |
47b4ca |
AC_FC_FREEFORM([],
|
|
Packit |
47b4ca |
[AC_MSG_WARN([Fortran does not accept free-form source])])
|
|
Packit |
47b4ca |
if test "$ac_compiler_gnu" = yes; then
|
|
Packit |
47b4ca |
case $FCFLAGS in
|
|
Packit |
47b4ca |
*-ffree-form*) ;;
|
|
Packit |
47b4ca |
*) AC_MSG_ERROR([failed to recognize GNU Fortran's -ffree-form option]);;
|
|
Packit |
47b4ca |
esac
|
|
Packit |
47b4ca |
fi
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
## ------------------------- ##
|
|
Packit |
47b4ca |
## AC_OPENMP and Fortran 77. ##
|
|
Packit |
47b4ca |
## ------------------------- ##
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_SETUP([AC_OPENMP and Fortran 77])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([configure.ac],
|
|
Packit |
47b4ca |
[[AC_INIT
|
|
Packit |
47b4ca |
AC_PROG_F77
|
|
Packit |
47b4ca |
AC_LANG([Fortran 77])
|
|
Packit |
47b4ca |
AC_OPENMP
|
|
Packit |
47b4ca |
if test "X$ac_cv_prog_f77_openmp" = Xunsupported; then
|
|
Packit |
47b4ca |
AS_EXIT([77])
|
|
Packit |
47b4ca |
fi
|
|
Packit |
47b4ca |
FFLAGS="$FFLAGS $OPENMP_FFLAGS"
|
|
Packit |
47b4ca |
AC_CONFIG_FILES([Makefile])
|
|
Packit |
47b4ca |
AC_OUTPUT
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([Makefile.in],
|
|
Packit |
47b4ca |
[[foo@EXEEXT@: foo.@OBJEXT@
|
|
Packit |
47b4ca |
@F77@ @FFLAGS@ @LDFLAGS@ -o $@ foo.@OBJEXT@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
foo.@OBJEXT@: foo.f
|
|
Packit |
47b4ca |
@F77@ @FFLAGS@ -c foo.f
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([foo.f],
|
|
Packit |
47b4ca |
[[ program main
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
: "${MAKE=make}"
|
|
Packit |
47b4ca |
AT_CHECK([env ACLOCAL=true autoreconf -vi], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
AT_CHECK_CONFIGURE
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CLEANUP
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
## ---------------------- ##
|
|
Packit |
47b4ca |
## AC_OPENMP and Fortran. ##
|
|
Packit |
47b4ca |
## ---------------------- ##
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_SETUP([AC_OPENMP and Fortran])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([configure.ac],
|
|
Packit |
47b4ca |
[[AC_INIT
|
|
Packit |
47b4ca |
AC_PROG_FC
|
|
Packit |
47b4ca |
AC_LANG([Fortran])
|
|
Packit |
47b4ca |
AC_OPENMP
|
|
Packit |
47b4ca |
if test "X$ac_cv_prog_fc_openmp" = Xunsupported; then
|
|
Packit |
47b4ca |
AS_EXIT([77])
|
|
Packit |
47b4ca |
fi
|
|
Packit |
47b4ca |
FCFLAGS="$FCFLAGS $OPENMP_FCFLAGS"
|
|
Packit |
47b4ca |
AC_CONFIG_FILES([Makefile])
|
|
Packit |
47b4ca |
AC_OUTPUT
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([Makefile.in],
|
|
Packit |
47b4ca |
[[foo@EXEEXT@: foo.@OBJEXT@
|
|
Packit |
47b4ca |
@FC@ @FCFLAGS@ @LDFLAGS@ -o $@ foo.@OBJEXT@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
foo.@OBJEXT@: foo.f
|
|
Packit |
47b4ca |
@FC@ @FCFLAGS@ -c foo.f
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([foo.f],
|
|
Packit |
47b4ca |
[[ program main
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
: "${MAKE=make}"
|
|
Packit |
47b4ca |
AT_CHECK([env ACLOCAL=true autoreconf -vi], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
AT_CHECK_CONFIGURE
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CLEANUP
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
# We don't test the AC_F77_LIBRARY_LDFLAGS macro on its own because of
|
|
Packit |
47b4ca |
# (autoconf.info)Fortran Compiler:
|
|
Packit |
47b4ca |
# The macros `AC_F77_DUMMY_MAIN' and `AC_FC_DUMMY_MAIN' or
|
|
Packit |
47b4ca |
# `AC_F77_MAIN' and `AC_FC_MAIN' are probably also necessary to link
|
|
Packit |
47b4ca |
# C/C++ with Fortran; see below.
|
|
Packit |
47b4ca |
#
|
|
Packit |
47b4ca |
# and we would need libtool to create shared libraries.
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
# Further, for any sensible test of the AC_F{77,C}(_DUMMY)?_MAIN macros
|
|
Packit |
47b4ca |
# we also need to use AC_F{77,C}_WRAPPERS, in order to be able to actually
|
|
Packit |
47b4ca |
# call the functions.
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
## ------------------------ ##
|
|
Packit |
47b4ca |
## AC_F77_DUMMY_MAIN usage. ##
|
|
Packit |
47b4ca |
## ------------------------ ##
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_SETUP([AC_F77_DUMMY_MAIN usage])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CONFIGURE_AC([[
|
|
Packit |
47b4ca |
AC_PROG_F77
|
|
Packit |
47b4ca |
AC_F77_DUMMY_MAIN([], [AC_MSG_FAILURE([failed to determine F77 dummy main], [77])])
|
|
Packit |
47b4ca |
AC_F77_WRAPPERS
|
|
Packit |
47b4ca |
AC_PROG_CC
|
|
Packit |
47b4ca |
AC_CONFIG_FILES([Makefile])
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([Makefile.in],
|
|
Packit |
47b4ca |
[[
|
|
Packit |
47b4ca |
all: cprogram@EXEEXT@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
|
|
Packit |
47b4ca |
@CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FLIBS@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
.SUFFIXES: .c .f .@OBJEXT@
|
|
Packit |
47b4ca |
.f.@OBJEXT@:
|
|
Packit |
47b4ca |
@F77@ @FFLAGS@ -c $<
|
|
Packit |
47b4ca |
.c.@OBJEXT@:
|
|
Packit |
47b4ca |
@CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([foobar.f],
|
|
Packit |
47b4ca |
[[C This is just a purely numeric routine, no I/O needed.
|
|
Packit |
47b4ca |
C Taken from autoconf.texi:Fortran Compiler.
|
|
Packit |
47b4ca |
subroutine foobar (x, y)
|
|
Packit |
47b4ca |
double precision x, y
|
|
Packit |
47b4ca |
y = 3.14159 * x
|
|
Packit |
47b4ca |
return
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([cprogram.c],
|
|
Packit |
47b4ca |
[[#include <config.h>
|
|
Packit |
47b4ca |
#include <math.h>
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
/* Taken from autoconf.texi:Fortran Compiler. */
|
|
Packit |
47b4ca |
#define FOOBAR_F77 F77_FUNC (foobar, FOOBAR)
|
|
Packit |
47b4ca |
#ifdef __cplusplus
|
|
Packit |
47b4ca |
extern "C" /* prevent C++ name mangling */
|
|
Packit |
47b4ca |
#endif
|
|
Packit |
47b4ca |
void FOOBAR_F77 (double *x, double *y);
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
/* Taken from autoconf.texi:Fortran Compiler. */
|
|
Packit |
47b4ca |
#ifdef F77_DUMMY_MAIN
|
|
Packit |
47b4ca |
# ifdef __cplusplus
|
|
Packit |
47b4ca |
extern "C"
|
|
Packit |
47b4ca |
# endif
|
|
Packit |
47b4ca |
int F77_DUMMY_MAIN () { return 1; }
|
|
Packit |
47b4ca |
#endif
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
int main(int argc, char *argv[])
|
|
Packit |
47b4ca |
{
|
|
Packit |
47b4ca |
double x = 2.7183, y;
|
|
Packit |
47b4ca |
FOOBAR_F77 (&x, &y);
|
|
Packit |
47b4ca |
if (fabs (8.539784097 - y) > 1.e-6)
|
|
Packit |
47b4ca |
return 1;
|
|
Packit |
47b4ca |
return 0;
|
|
Packit |
47b4ca |
}
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CHECK_AUTOCONF
|
|
Packit |
47b4ca |
AT_CHECK_AUTOHEADER
|
|
Packit |
47b4ca |
AT_CHECK_CONFIGURE
|
|
Packit |
47b4ca |
: "${MAKE=make}"
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
dnl AT_CHECK([./cprogram])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CLEANUP
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
## ----------------------- ##
|
|
Packit |
47b4ca |
## AC_FC_DUMMY_MAIN usage. ##
|
|
Packit |
47b4ca |
## ----------------------- ##
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_SETUP([AC_FC_DUMMY_MAIN usage])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CONFIGURE_AC([[
|
|
Packit |
47b4ca |
AC_PROG_FC
|
|
Packit |
47b4ca |
AC_FC_FIXEDFORM
|
|
Packit |
47b4ca |
AC_FC_DUMMY_MAIN([], [AC_MSG_FAILURE([failed to determine FC dummy main], [77])])
|
|
Packit |
47b4ca |
AC_FC_WRAPPERS
|
|
Packit |
47b4ca |
AC_PROG_CC
|
|
Packit |
47b4ca |
AC_CONFIG_FILES([Makefile])
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([Makefile.in],
|
|
Packit |
47b4ca |
[[
|
|
Packit |
47b4ca |
all: cprogram@EXEEXT@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
|
|
Packit |
47b4ca |
@CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FCLIBS@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
.SUFFIXES: .c .f .@OBJEXT@
|
|
Packit |
47b4ca |
.f.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ @FCFLAGS@ -c $<
|
|
Packit |
47b4ca |
.c.@OBJEXT@:
|
|
Packit |
47b4ca |
@CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([foobar.f],
|
|
Packit |
47b4ca |
[[C This is just a purely numeric routine, no I/O needed.
|
|
Packit |
47b4ca |
C Taken from autoconf.texi:Fortran Compiler.
|
|
Packit |
47b4ca |
subroutine foobar (x, y)
|
|
Packit |
47b4ca |
double precision x, y
|
|
Packit |
47b4ca |
y = 3.14159 * x
|
|
Packit |
47b4ca |
return
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([cprogram.c],
|
|
Packit |
47b4ca |
[[#include <config.h>
|
|
Packit |
47b4ca |
#include <math.h>
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
/* Taken from autoconf.texi:Fortran Compiler. */
|
|
Packit |
47b4ca |
#define FOOBAR_FC FC_FUNC (foobar, FOOBAR)
|
|
Packit |
47b4ca |
#ifdef __cplusplus
|
|
Packit |
47b4ca |
extern "C" /* prevent C++ name mangling */
|
|
Packit |
47b4ca |
#endif
|
|
Packit |
47b4ca |
void FOOBAR_FC(double *x, double *y);
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
/* Taken from autoconf.texi:Fortran Compiler. */
|
|
Packit |
47b4ca |
#ifdef FC_DUMMY_MAIN
|
|
Packit |
47b4ca |
# ifdef __cplusplus
|
|
Packit |
47b4ca |
extern "C"
|
|
Packit |
47b4ca |
# endif
|
|
Packit |
47b4ca |
int FC_DUMMY_MAIN () { return 1; }
|
|
Packit |
47b4ca |
#endif
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
int main (int argc, char *argv[])
|
|
Packit |
47b4ca |
{
|
|
Packit |
47b4ca |
double x = 2.7183, y;
|
|
Packit |
47b4ca |
FOOBAR_FC (&x, &y);
|
|
Packit |
47b4ca |
if (fabs (8.539784097 - y) > 1.e-6)
|
|
Packit |
47b4ca |
return 1;
|
|
Packit |
47b4ca |
return 0;
|
|
Packit |
47b4ca |
}
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CHECK_AUTOCONF
|
|
Packit |
47b4ca |
AT_CHECK_AUTOHEADER
|
|
Packit |
47b4ca |
AT_CHECK_CONFIGURE
|
|
Packit |
47b4ca |
: "${MAKE=make}"
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
dnl AT_CHECK([./cprogram])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CLEANUP
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
## ------------------ ##
|
|
Packit |
47b4ca |
## AC_F77_MAIN usage. ##
|
|
Packit |
47b4ca |
## ------------------ ##
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_SETUP([AC_F77_MAIN usage])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CONFIGURE_AC([[
|
|
Packit |
47b4ca |
AC_PROG_F77
|
|
Packit |
47b4ca |
AC_F77_MAIN
|
|
Packit |
47b4ca |
AC_F77_WRAPPERS
|
|
Packit |
47b4ca |
AC_PROG_CC
|
|
Packit |
47b4ca |
AC_CONFIG_FILES([Makefile])
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([Makefile.in],
|
|
Packit |
47b4ca |
[[
|
|
Packit |
47b4ca |
all: cprogram@EXEEXT@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
|
|
Packit |
47b4ca |
@CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FLIBS@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
.SUFFIXES: .c .f .@OBJEXT@
|
|
Packit |
47b4ca |
.f.@OBJEXT@:
|
|
Packit |
47b4ca |
@F77@ @FFLAGS@ -c $<
|
|
Packit |
47b4ca |
.c.@OBJEXT@:
|
|
Packit |
47b4ca |
@CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([foobar.f],
|
|
Packit |
47b4ca |
[[C This uses Fortran I/O, so is likely to require Fortran startup.
|
|
Packit |
47b4ca |
subroutine foobar (x)
|
|
Packit |
47b4ca |
integer x
|
|
Packit |
47b4ca |
if (x == 42) then
|
|
Packit |
47b4ca |
write(*,*) 'some output from Fortran sources'
|
|
Packit |
47b4ca |
end if
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([cprogram.c],
|
|
Packit |
47b4ca |
[[#include <config.h>
|
|
Packit |
47b4ca |
#include <stdio.h>
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
/* Taken from autoconf.texi:Fortran Compiler. */
|
|
Packit |
47b4ca |
#define FOOBAR_F77 F77_FUNC (foobar, FOOBAR)
|
|
Packit |
47b4ca |
#ifdef __cplusplus
|
|
Packit |
47b4ca |
extern "C" /* prevent C++ name mangling */
|
|
Packit |
47b4ca |
#endif
|
|
Packit |
47b4ca |
void FOOBAR_F77 (int *x);
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
/* Taken from autoconf.texi:Fortran Compiler. */
|
|
Packit |
47b4ca |
#ifdef __cplusplus
|
|
Packit |
47b4ca |
extern "C"
|
|
Packit |
47b4ca |
#endif
|
|
Packit |
47b4ca |
int F77_MAIN (int argc, char *argv[]);
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
int F77_MAIN (int argc, char *argv[])
|
|
Packit |
47b4ca |
{
|
|
Packit |
47b4ca |
int x = 42;
|
|
Packit |
47b4ca |
puts ("output from C main");
|
|
Packit |
47b4ca |
fflush (stdout);
|
|
Packit |
47b4ca |
FOOBAR_F77 (&x);
|
|
Packit |
47b4ca |
puts ("more output from C main");
|
|
Packit |
47b4ca |
return 0;
|
|
Packit |
47b4ca |
}
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CHECK_AUTOCONF
|
|
Packit |
47b4ca |
AT_CHECK_AUTOHEADER
|
|
Packit |
47b4ca |
AT_CHECK_CONFIGURE
|
|
Packit |
47b4ca |
: "${MAKE=make}"
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
dnl AT_CHECK([./cprogram], [], [output from C main
|
|
Packit |
47b4ca |
dnl some output from Fortran sources
|
|
Packit |
47b4ca |
dnl more output from C main
|
|
Packit |
47b4ca |
dnl ])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CLEANUP
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
## ----------------- ##
|
|
Packit |
47b4ca |
## AC_FC_MAIN usage. ##
|
|
Packit |
47b4ca |
## ----------------- ##
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_SETUP([AC_FC_MAIN usage])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CONFIGURE_AC([[
|
|
Packit |
47b4ca |
AC_PROG_FC
|
|
Packit |
47b4ca |
AC_FC_FIXEDFORM
|
|
Packit |
47b4ca |
AC_FC_MAIN
|
|
Packit |
47b4ca |
AC_FC_WRAPPERS
|
|
Packit |
47b4ca |
AC_PROG_CC
|
|
Packit |
47b4ca |
AC_CONFIG_FILES([Makefile])
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([Makefile.in],
|
|
Packit |
47b4ca |
[[all: cprogram@EXEEXT@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
|
|
Packit |
47b4ca |
@CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FCLIBS@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
.SUFFIXES: .c .f .@OBJEXT@
|
|
Packit |
47b4ca |
.f.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ @FCFLAGS@ -c $<
|
|
Packit |
47b4ca |
.c.@OBJEXT@:
|
|
Packit |
47b4ca |
@CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([foobar.f],
|
|
Packit |
47b4ca |
[[C This uses Fortran I/O, so is likely to require Fortran startup.
|
|
Packit |
47b4ca |
subroutine foobar (x)
|
|
Packit |
47b4ca |
integer x
|
|
Packit |
47b4ca |
if (x == 42) then
|
|
Packit |
47b4ca |
write (*,*) 'some output from Fortran sources'
|
|
Packit |
47b4ca |
end if
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([cprogram.c],
|
|
Packit |
47b4ca |
[[#include <config.h>
|
|
Packit |
47b4ca |
#include <stdio.h>
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
/* Taken from autoconf.texi:Fortran Compiler. */
|
|
Packit |
47b4ca |
#define FOOBAR_FC FC_FUNC (foobar, FOOBAR)
|
|
Packit |
47b4ca |
#ifdef __cplusplus
|
|
Packit |
47b4ca |
extern "C" /* prevent C++ name mangling */
|
|
Packit |
47b4ca |
#endif
|
|
Packit |
47b4ca |
void FOOBAR_FC (int *x);
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
/* Taken from autoconf.texi:Fortran Compiler. */
|
|
Packit |
47b4ca |
#ifdef __cplusplus
|
|
Packit |
47b4ca |
extern "C"
|
|
Packit |
47b4ca |
#endif
|
|
Packit |
47b4ca |
int FC_MAIN (int argc, char *argv[]);
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
int FC_MAIN (int argc, char *argv[])
|
|
Packit |
47b4ca |
{
|
|
Packit |
47b4ca |
int x = 42;
|
|
Packit |
47b4ca |
puts ("output from C main");
|
|
Packit |
47b4ca |
fflush (stdout);
|
|
Packit |
47b4ca |
FOOBAR_FC (&x);
|
|
Packit |
47b4ca |
puts ("more output from C main");
|
|
Packit |
47b4ca |
return 0;
|
|
Packit |
47b4ca |
}
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CHECK_AUTOCONF
|
|
Packit |
47b4ca |
AT_CHECK_AUTOHEADER
|
|
Packit |
47b4ca |
AT_CHECK_CONFIGURE
|
|
Packit |
47b4ca |
: "${MAKE=make}"
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
dnl AT_CHECK([./cprogram], [], [output from C main
|
|
Packit |
47b4ca |
dnl some output from Fortran sources
|
|
Packit |
47b4ca |
dnl more output from C main
|
|
Packit |
47b4ca |
dnl ])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CLEANUP
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
## ------------------ ##
|
|
Packit |
47b4ca |
## AC_F77_FUNC usage. ##
|
|
Packit |
47b4ca |
## ------------------ ##
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_SETUP([AC_F77_FUNC usage])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CONFIGURE_AC([[
|
|
Packit |
47b4ca |
AC_PROG_F77
|
|
Packit |
47b4ca |
AC_F77_FUNC([foobar])
|
|
Packit |
47b4ca |
AC_SUBST([foobar])
|
|
Packit |
47b4ca |
AC_PROG_CC
|
|
Packit |
47b4ca |
AC_CONFIG_FILES([cprogram.c:cprogram.in])
|
|
Packit |
47b4ca |
AC_CONFIG_FILES([Makefile])
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([Makefile.in],
|
|
Packit |
47b4ca |
[[
|
|
Packit |
47b4ca |
all: cprogram@EXEEXT@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
|
|
Packit |
47b4ca |
@CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FLIBS@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
.SUFFIXES: .c .f .@OBJEXT@
|
|
Packit |
47b4ca |
.f.@OBJEXT@:
|
|
Packit |
47b4ca |
@F77@ @FFLAGS@ -c $<
|
|
Packit |
47b4ca |
.c.@OBJEXT@:
|
|
Packit |
47b4ca |
@CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([foobar.f],
|
|
Packit |
47b4ca |
[[ subroutine foobar (x)
|
|
Packit |
47b4ca |
integer x
|
|
Packit |
47b4ca |
x = 42
|
|
Packit |
47b4ca |
return
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([cprogram.in],
|
|
Packit |
47b4ca |
[[#include <config.h>
|
|
Packit |
47b4ca |
#include <math.h>
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
#ifdef __cplusplus
|
|
Packit |
47b4ca |
extern "C" /* prevent C++ name mangling */
|
|
Packit |
47b4ca |
#endif
|
|
Packit |
47b4ca |
void @foobar@ (int *x);
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
/* Taken from autoconf.texi:Fortran Compiler. */
|
|
Packit |
47b4ca |
#ifdef F77_DUMMY_MAIN
|
|
Packit |
47b4ca |
# ifdef __cplusplus
|
|
Packit |
47b4ca |
extern "C"
|
|
Packit |
47b4ca |
# endif
|
|
Packit |
47b4ca |
int F77_DUMMY_MAIN () { return 1; }
|
|
Packit |
47b4ca |
#endif
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
int main(int argc, char *argv[])
|
|
Packit |
47b4ca |
{
|
|
Packit |
47b4ca |
int x;
|
|
Packit |
47b4ca |
@foobar@ (&x);
|
|
Packit |
47b4ca |
if (x != 42)
|
|
Packit |
47b4ca |
return 1;
|
|
Packit |
47b4ca |
return 0;
|
|
Packit |
47b4ca |
}
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CHECK_AUTOCONF
|
|
Packit |
47b4ca |
AT_CHECK_AUTOHEADER
|
|
Packit |
47b4ca |
AT_CHECK_CONFIGURE
|
|
Packit |
47b4ca |
: "${MAKE=make}"
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
dnl AT_CHECK([./cprogram])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CLEANUP
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
## ----------------- ##
|
|
Packit |
47b4ca |
## AC_FC_FUNC usage. ##
|
|
Packit |
47b4ca |
## ----------------- ##
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_SETUP([AC_FC_FUNC usage])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CONFIGURE_AC([[
|
|
Packit |
47b4ca |
AC_PROG_FC
|
|
Packit |
47b4ca |
AC_FC_FUNC([foobar])
|
|
Packit |
47b4ca |
AC_SUBST([foobar])
|
|
Packit |
47b4ca |
AC_PROG_CC
|
|
Packit |
47b4ca |
AC_CONFIG_FILES([cprogram.c:cprogram.in])
|
|
Packit |
47b4ca |
AC_CONFIG_FILES([Makefile])
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([Makefile.in],
|
|
Packit |
47b4ca |
[[
|
|
Packit |
47b4ca |
all: cprogram@EXEEXT@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
|
|
Packit |
47b4ca |
@CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FCLIBS@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
.SUFFIXES: .c .f .@OBJEXT@
|
|
Packit |
47b4ca |
.f.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ @FCFLAGS@ -c $<
|
|
Packit |
47b4ca |
.c.@OBJEXT@:
|
|
Packit |
47b4ca |
@CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([foobar.f],
|
|
Packit |
47b4ca |
[[ subroutine foobar (x)
|
|
Packit |
47b4ca |
integer x
|
|
Packit |
47b4ca |
x = 42
|
|
Packit |
47b4ca |
return
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([cprogram.in],
|
|
Packit |
47b4ca |
[[#include <config.h>
|
|
Packit |
47b4ca |
#include <math.h>
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
#ifdef __cplusplus
|
|
Packit |
47b4ca |
extern "C" /* prevent C++ name mangling */
|
|
Packit |
47b4ca |
#endif
|
|
Packit |
47b4ca |
void @foobar@ (int *x);
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
/* Taken from autoconf.texi:Fortran Compiler. */
|
|
Packit |
47b4ca |
#ifdef FC_DUMMY_MAIN
|
|
Packit |
47b4ca |
# ifdef __cplusplus
|
|
Packit |
47b4ca |
extern "C"
|
|
Packit |
47b4ca |
# endif
|
|
Packit |
47b4ca |
int FC_DUMMY_MAIN () { return 1; }
|
|
Packit |
47b4ca |
#endif
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
int main(int argc, char *argv[])
|
|
Packit |
47b4ca |
{
|
|
Packit |
47b4ca |
int x;
|
|
Packit |
47b4ca |
@foobar@ (&x);
|
|
Packit |
47b4ca |
if (x != 42)
|
|
Packit |
47b4ca |
return 1;
|
|
Packit |
47b4ca |
return 0;
|
|
Packit |
47b4ca |
}
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CHECK_AUTOCONF
|
|
Packit |
47b4ca |
AT_CHECK_AUTOHEADER
|
|
Packit |
47b4ca |
AT_CHECK_CONFIGURE
|
|
Packit |
47b4ca |
: "${MAKE=make}"
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
dnl AT_CHECK([./cprogram])
|
|
Packit |
47b4ca |
AT_CLEANUP
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
## ------------------- ##
|
|
Packit |
47b4ca |
## AC_FC_SRCEXT usage. ##
|
|
Packit |
47b4ca |
## ------------------- ##
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_SETUP([AC_FC_SRCEXT usage])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([configure.ac],
|
|
Packit |
47b4ca |
[[AC_INIT
|
|
Packit |
47b4ca |
AC_PROG_FC
|
|
Packit |
47b4ca |
FCFLAGS_NOFREE=$FCFLAGS
|
|
Packit |
47b4ca |
AC_SUBST([FCFLAGS_NOFREE])
|
|
Packit |
47b4ca |
AC_FC_FREEFORM
|
|
Packit |
47b4ca |
# Unconditionally require .f to work.
|
|
Packit |
47b4ca |
AC_FC_SRCEXT([f])
|
|
Packit |
47b4ca |
# For each other extension, fail gracefully if it does not work:
|
|
Packit |
47b4ca |
# Not all compilers support all extensions/language versions.
|
|
Packit |
47b4ca |
m4@&t@_foreach([ext], [f77, f90, f95, f03, f08],
|
|
Packit |
47b4ca |
[AC_FC_SRCEXT(ext, ext[_object='foo]ext[.$(OBJEXT)'], ext[_object=])
|
|
Packit |
47b4ca |
AC_SUBST(ext[_object])])
|
|
Packit |
47b4ca |
AC_CONFIG_FILES([Makefile])
|
|
Packit |
47b4ca |
AC_OUTPUT
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([Makefile.in],
|
|
Packit |
47b4ca |
[[OBJEXT = @OBJEXT@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
all: prog@EXEEXT@
|
|
Packit |
47b4ca |
prog@EXEEXT@: foof.@OBJEXT@ @f77_object@ @f90_object@ \
|
|
Packit |
47b4ca |
@f95_object@ @f03_object@ @f08_object@
|
|
Packit |
47b4ca |
@FC@ @FCFLAGS@ -o $@ foof.@OBJEXT@ @f77_object@ @f90_object@ \
|
|
Packit |
47b4ca |
@f95_object@ @f03_object@ @f08_object@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
.SUFFIXES: .f .f77 .f90 .f95 .f03 .f08 .@OBJEXT@
|
|
Packit |
47b4ca |
.f.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ -c @FCFLAGS_NOFREE@ @FCFLAGS_f@ $<
|
|
Packit |
47b4ca |
.f77.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ -c @FCFLAGS_NOFREE@ @FCFLAGS_f77@ $<
|
|
Packit |
47b4ca |
.f90.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ -c @FCFLAGS@ @FCFLAGS_f90@ $<
|
|
Packit |
47b4ca |
.f95.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ -c @FCFLAGS@ @FCFLAGS_f95@ $<
|
|
Packit |
47b4ca |
.f03.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ -c @FCFLAGS@ @FCFLAGS_f03@ $<
|
|
Packit |
47b4ca |
.f08.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ -c @FCFLAGS@ @FCFLAGS_f08@ $<
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([foof.f],
|
|
Packit |
47b4ca |
[[ program main
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([foof77.f77],
|
|
Packit |
47b4ca |
[[ subroutine foof77
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([foof90.f90],
|
|
Packit |
47b4ca |
[[subroutine foof90
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([foof95.f95],
|
|
Packit |
47b4ca |
[[subroutine foof95
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([foof03.f03],
|
|
Packit |
47b4ca |
[[subroutine foof03
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([foof08.f08],
|
|
Packit |
47b4ca |
[[subroutine foof08
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CHECK_AUTOCONF
|
|
Packit |
47b4ca |
AT_CHECK_CONFIGURE
|
|
Packit |
47b4ca |
: "${MAKE=make}"
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CLEANUP
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
## ---------------------- ##
|
|
Packit |
47b4ca |
## AC_FC_PP_SRCEXT usage. ##
|
|
Packit |
47b4ca |
## ---------------------- ##
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_SETUP([AC_FC_PP_SRCEXT usage])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([configure.ac],
|
|
Packit |
47b4ca |
[[AC_INIT
|
|
Packit |
47b4ca |
AC_PROG_FC
|
|
Packit |
47b4ca |
# Unconditionally require .f and .F to work.
|
|
Packit |
47b4ca |
AC_FC_PP_SRCEXT([f])
|
|
Packit |
47b4ca |
AC_FC_PP_SRCEXT([F])
|
|
Packit |
47b4ca |
# For each other extension, fail gracefully if it does not work:
|
|
Packit |
47b4ca |
# Not all compilers support all extensions/language versions.
|
|
Packit |
47b4ca |
m4@&t@_foreach([ext], [f77, f90, f95, f03, f08],
|
|
Packit |
47b4ca |
[AC_FC_PP_SRCEXT(ext, ext[_object='foo]ext[.$(OBJEXT)'], ext[_object=])
|
|
Packit |
47b4ca |
AC_SUBST(ext[_object])])
|
|
Packit |
47b4ca |
m4@&t@_foreach([ext], [F77, F90, F95, F03, F08],
|
|
Packit |
47b4ca |
[AC_FC_PP_SRCEXT(ext, ext[_object='bar]ext[.$(OBJEXT)'], ext[_object=])
|
|
Packit |
47b4ca |
AC_SUBST(ext[_object])])
|
|
Packit |
47b4ca |
AC_CONFIG_FILES([Makefile])
|
|
Packit |
47b4ca |
AC_OUTPUT
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([Makefile.in],
|
|
Packit |
47b4ca |
[[OBJEXT = @OBJEXT@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
all: prog@EXEEXT@
|
|
Packit |
47b4ca |
prog@EXEEXT@: foof.@OBJEXT@ @f77_object@ @f90_object@ \
|
|
Packit |
47b4ca |
@f95_object@ @f03_object@ @f08_object@ \
|
|
Packit |
47b4ca |
barF.@OBJEXT@ @F77_object@ @F90_object@ \
|
|
Packit |
47b4ca |
@F95_object@ @F03_object@ @F08_object@
|
|
Packit |
47b4ca |
@FC@ @FCFLAGS@ -o $@ foof.@OBJEXT@ @f77_object@ @f90_object@ \
|
|
Packit |
47b4ca |
@f95_object@ @f03_object@ @f08_object@ \
|
|
Packit |
47b4ca |
barF.@OBJEXT@ @F77_object@ @F90_object@ \
|
|
Packit |
47b4ca |
@F95_object@ @F03_object@ @F08_object@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
.SUFFIXES: .f .f77 .f90 .f95 .f03 .f08 .F .F77 .F90 .F95 .F03 .F08 .@OBJEXT@
|
|
Packit |
47b4ca |
.f.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ -c @FCFLAGS@ @FCFLAGS_f@ $<
|
|
Packit |
47b4ca |
.f77.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ -c @FCFLAGS@ @FCFLAGS_f77@ $<
|
|
Packit |
47b4ca |
.f90.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ -c @FCFLAGS@ @FCFLAGS_f90@ $<
|
|
Packit |
47b4ca |
.f95.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ -c @FCFLAGS@ @FCFLAGS_f95@ $<
|
|
Packit |
47b4ca |
.f03.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ -c @FCFLAGS@ @FCFLAGS_f03@ $<
|
|
Packit |
47b4ca |
.f08.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ -c @FCFLAGS@ @FCFLAGS_f08@ $<
|
|
Packit |
47b4ca |
.F.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ -c @FCFLAGS@ @FCFLAGS_F@ $<
|
|
Packit |
47b4ca |
.F77.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ -c @FCFLAGS@ @FCFLAGS_F77@ $<
|
|
Packit |
47b4ca |
.F90.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ -c @FCFLAGS@ @FCFLAGS_F90@ $<
|
|
Packit |
47b4ca |
.F95.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ -c @FCFLAGS@ @FCFLAGS_F95@ $<
|
|
Packit |
47b4ca |
.F03.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ -c @FCFLAGS@ @FCFLAGS_F03@ $<
|
|
Packit |
47b4ca |
.F08.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ -c @FCFLAGS@ @FCFLAGS_F08@ $<
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
for ext in f77 f90 f95 f03 f08; do
|
|
Packit |
47b4ca |
cat > foo$ext.$ext <
|
|
Packit |
47b4ca |
subroutine foo$ext
|
|
Packit |
47b4ca |
#if 0
|
|
Packit |
47b4ca |
this is not correct fortran
|
|
Packit |
47b4ca |
#endif
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
EOF
|
|
Packit |
47b4ca |
done
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
for ext in F F77 F90 F95 F03 F08; do
|
|
Packit |
47b4ca |
cat > bar$ext.$ext <
|
|
Packit |
47b4ca |
subroutine bar$ext
|
|
Packit |
47b4ca |
#if 0
|
|
Packit |
47b4ca |
this is not correct fortran
|
|
Packit |
47b4ca |
#endif
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
EOF
|
|
Packit |
47b4ca |
done
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([foof.f],
|
|
Packit |
47b4ca |
[[ program main
|
|
Packit |
47b4ca |
#if 0
|
|
Packit |
47b4ca |
this is not correct fortran
|
|
Packit |
47b4ca |
#endif
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CHECK_AUTOCONF
|
|
Packit |
47b4ca |
AT_CHECK_CONFIGURE
|
|
Packit |
47b4ca |
: "${MAKE=make}"
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CLEANUP
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
## --------------- ##
|
|
Packit |
47b4ca |
## AC_FC_FREEFORM. ##
|
|
Packit |
47b4ca |
## --------------- ##
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_SETUP([AC_FC_FREEFORM])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([configure.ac],
|
|
Packit |
47b4ca |
[[AC_INIT
|
|
Packit |
47b4ca |
AC_PROG_FC
|
|
Packit |
47b4ca |
AC_FC_FREEFORM
|
|
Packit |
47b4ca |
AC_CONFIG_FILES([Makefile])
|
|
Packit |
47b4ca |
AC_OUTPUT
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([Makefile.in],
|
|
Packit |
47b4ca |
[[prog: prog.@OBJEXT@
|
|
Packit |
47b4ca |
@FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
.SUFFIXES: .f .@OBJEXT@
|
|
Packit |
47b4ca |
.f.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ @FCFLAGS@ -c $<
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([prog.f],
|
|
Packit |
47b4ca |
[[program main
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CHECK_AUTOCONF
|
|
Packit |
47b4ca |
AT_CHECK_CONFIGURE
|
|
Packit |
47b4ca |
: "${MAKE=make}"
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
dnl AT_CHECK([./prog])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CLEANUP
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
## --------------------------------- ##
|
|
Packit |
47b4ca |
## AC_FC_FREEFORM with AC_FC_SRCEXT. ##
|
|
Packit |
47b4ca |
## --------------------------------- ##
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_SETUP([AC_FC_FREEFORM with AC_FC_SRCEXT])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([configure.ac],
|
|
Packit |
47b4ca |
[[AC_INIT
|
|
Packit |
47b4ca |
AC_FC_SRCEXT([f90], [], [AS_EXIT([77])])
|
|
Packit |
47b4ca |
AC_PROG_FC
|
|
Packit |
47b4ca |
AC_FC_FREEFORM
|
|
Packit |
47b4ca |
AC_CONFIG_FILES([Makefile])
|
|
Packit |
47b4ca |
AC_OUTPUT
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([Makefile.in],
|
|
Packit |
47b4ca |
[[prog: prog.@OBJEXT@
|
|
Packit |
47b4ca |
@FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
.SUFFIXES: .f90 .@OBJEXT@
|
|
Packit |
47b4ca |
.f90.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ @FCFLAGS@ -c @FCFLAGS_f90@ $<
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([prog.f90],
|
|
Packit |
47b4ca |
[[program main
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CHECK_AUTOCONF
|
|
Packit |
47b4ca |
AT_CHECK_CONFIGURE
|
|
Packit |
47b4ca |
: "${MAKE=make}"
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
dnl AT_CHECK([./prog])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CLEANUP
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
## ---------------- ##
|
|
Packit |
47b4ca |
## AC_FC_FIXEDFORM. ##
|
|
Packit |
47b4ca |
## ---------------- ##
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_SETUP([AC_FC_FIXEDFORM])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([configure.ac],
|
|
Packit |
47b4ca |
[[AC_INIT
|
|
Packit |
47b4ca |
AC_PROG_FC
|
|
Packit |
47b4ca |
AC_FC_FIXEDFORM
|
|
Packit |
47b4ca |
AC_CONFIG_FILES([Makefile])
|
|
Packit |
47b4ca |
AC_OUTPUT
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([Makefile.in],
|
|
Packit |
47b4ca |
[[prog: prog.@OBJEXT@
|
|
Packit |
47b4ca |
@FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
.SUFFIXES: .f .@OBJEXT@
|
|
Packit |
47b4ca |
.f.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ @FCFLAGS@ -c $<
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([prog.f],
|
|
Packit |
47b4ca |
[[ program main
|
|
Packit |
47b4ca |
C fixed-form style comment
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CHECK_AUTOCONF
|
|
Packit |
47b4ca |
AT_CHECK_CONFIGURE
|
|
Packit |
47b4ca |
: "${MAKE=make}"
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
dnl AT_CHECK([./prog])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CLEANUP
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
## ---------------------------------- ##
|
|
Packit |
47b4ca |
## AC_FC_FIXEDFORM with AC_FC_SRCEXT. ##
|
|
Packit |
47b4ca |
## ---------------------------------- ##
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_SETUP([AC_FC_FIXEDFORM with AC_FC_SRCEXT])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([configure.ac],
|
|
Packit |
47b4ca |
[[AC_INIT
|
|
Packit |
47b4ca |
AC_PROG_FC
|
|
Packit |
47b4ca |
AC_FC_SRCEXT([f90], [], [AS_EXIT([77])])
|
|
Packit |
47b4ca |
AC_FC_FIXEDFORM
|
|
Packit |
47b4ca |
AC_CONFIG_FILES([Makefile])
|
|
Packit |
47b4ca |
AC_OUTPUT
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([Makefile.in],
|
|
Packit |
47b4ca |
[[prog: prog.@OBJEXT@
|
|
Packit |
47b4ca |
@FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
.SUFFIXES: .f90 .@OBJEXT@
|
|
Packit |
47b4ca |
.f90.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ @FCFLAGS@ -c @FCFLAGS_f90@ $<
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([prog.f90],
|
|
Packit |
47b4ca |
[[ program main
|
|
Packit |
47b4ca |
C fixed-form style comment
|
|
Packit |
47b4ca |
end
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CHECK_AUTOCONF
|
|
Packit |
47b4ca |
AT_CHECK_CONFIGURE
|
|
Packit |
47b4ca |
: "${MAKE=make}"
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
dnl AT_CHECK([./prog])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CLEANUP
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
## ------------------ ##
|
|
Packit |
47b4ca |
## AC_FC_LINE_LENGTH. ##
|
|
Packit |
47b4ca |
## ------------------ ##
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_SETUP([AC_FC_LINE_LENGTH])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([Makefile.in],
|
|
Packit |
47b4ca |
[[prog@EXEEXT@: prog.@OBJEXT@
|
|
Packit |
47b4ca |
@FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
.SUFFIXES: .f .@OBJEXT@
|
|
Packit |
47b4ca |
.f.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ @FCFLAGS@ -c @FCFLAGS_f@ $<
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
clean:
|
|
Packit |
47b4ca |
rm -f *.@OBJEXT@ prog@EEXEXT@
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
line_80=\
|
|
Packit |
47b4ca |
'subroutine foo(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11)'
|
|
Packit |
47b4ca |
line_132=\
|
|
Packit |
47b4ca |
'subroutine foo(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,'\
|
|
Packit |
47b4ca |
'arg12,arg13,arg14,arg15,arg16,arg17,arg18,arg19)'
|
|
Packit |
47b4ca |
line_254=\
|
|
Packit |
47b4ca |
'subroutine foo(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,'\
|
|
Packit |
47b4ca |
'arg12,arg13,arg14,arg15,arg16,arg17,arg18,arg19,arg20,arg21,arg22,arg23,'\
|
|
Packit |
47b4ca |
'arg24,arg25,arg26,arg27,arg28,arg29,arg30,arg31,arg32,arg33,arg34,arg35,'\
|
|
Packit |
47b4ca |
'arg36,arg37,arg38,arg39,arg40)'
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
for len in 80 132 254
|
|
Packit |
47b4ca |
do
|
|
Packit |
47b4ca |
if test $len -eq 254; then arg=unlimited; else arg=$len; fi
|
|
Packit |
47b4ca |
eval long_line=\$line_$len
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
# Try free-form first, it has a bigger chance of succeeding.
|
|
Packit |
47b4ca |
for fixed_or_free in FREEFORM FIXEDFORM
|
|
Packit |
47b4ca |
do
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
cat >configure.ac <
|
|
Packit |
47b4ca |
AC_INIT
|
|
Packit |
47b4ca |
AC_PROG_FC
|
|
Packit |
47b4ca |
AC_FC_SRCEXT([f])
|
|
Packit |
47b4ca |
AC_FC_$fixed_or_free
|
|
Packit |
47b4ca |
AC_FC_LINE_LENGTH([$arg])
|
|
Packit |
47b4ca |
AC_CONFIG_FILES([Makefile])
|
|
Packit |
47b4ca |
AC_OUTPUT
|
|
Packit |
47b4ca |
EOF
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
cat >prog.f <
|
|
Packit |
47b4ca |
$long_line
|
|
Packit |
47b4ca |
end subroutine
|
|
Packit |
47b4ca |
program main
|
|
Packit |
47b4ca |
end program
|
|
Packit |
47b4ca |
EOF
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CHECK_AUTOCONF
|
|
Packit |
47b4ca |
AT_CHECK_CONFIGURE
|
|
Packit |
47b4ca |
: "${MAKE=make}"
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
dnl AT_CHECK([./prog])
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE clean], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
done
|
|
Packit |
47b4ca |
done
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CLEANUP
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
## ------------------- ##
|
|
Packit |
47b4ca |
## AC_FC_CHECK_BOUNDS. ##
|
|
Packit |
47b4ca |
## ------------------- ##
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_SETUP([AC_FC_CHECK_BOUNDS])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([Makefile.in],
|
|
Packit |
47b4ca |
[[prog@EXEEXT@: prog.@OBJEXT@
|
|
Packit |
47b4ca |
@FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
.SUFFIXES: .f .@OBJEXT@
|
|
Packit |
47b4ca |
.f.@OBJEXT@:
|
|
Packit |
47b4ca |
@FC@ @FCFLAGS@ -c @FCFLAGS_f@ $<
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
clean:
|
|
Packit |
47b4ca |
rm -f *.@OBJEXT@ prog@EEXEXT@
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
cat >configure.ac <
|
|
Packit |
47b4ca |
AC_INIT
|
|
Packit |
47b4ca |
AC_PROG_FC
|
|
Packit |
47b4ca |
AC_FC_SRCEXT([f])
|
|
Packit |
47b4ca |
AC_FC_CHECK_BOUNDS
|
|
Packit |
47b4ca |
AC_CONFIG_FILES([Makefile])
|
|
Packit |
47b4ca |
AC_OUTPUT
|
|
Packit |
47b4ca |
EOF
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([prog.f],
|
|
Packit |
47b4ca |
[[
|
|
Packit |
47b4ca |
subroutine copy(a,b,n)
|
|
Packit |
47b4ca |
integer a(:), b(:), n, i
|
|
Packit |
47b4ca |
do i = 1, n
|
|
Packit |
47b4ca |
a(i) = b(i)
|
|
Packit |
47b4ca |
end do
|
|
Packit |
47b4ca |
end subroutine
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
program main
|
|
Packit |
47b4ca |
integer, parameter :: n = 20
|
|
Packit |
47b4ca |
integer a(1:n), b(1:n-1), i
|
|
Packit |
47b4ca |
interface
|
|
Packit |
47b4ca |
subroutine copy(a,b,n)
|
|
Packit |
47b4ca |
integer a(:), b(:), i
|
|
Packit |
47b4ca |
end subroutine
|
|
Packit |
47b4ca |
end interface
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
call copy(a,b,n)
|
|
Packit |
47b4ca |
end program
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CHECK_AUTOCONF
|
|
Packit |
47b4ca |
AT_CHECK_CONFIGURE
|
|
Packit |
47b4ca |
: "${MAKE=make}"
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
AT_CHECK([./prog || exit 1], [1], [ignore], [ignore])
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE clean], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CLEANUP
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
## ------------------ ##
|
|
Packit |
47b4ca |
## AC_FC_MODULE_FLAG. ##
|
|
Packit |
47b4ca |
## ------------------ ##
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_SETUP([AC_FC_MODULE_FLAG])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([Makefile.in],
|
|
Packit |
47b4ca |
[[OBJEXT = @OBJEXT@
|
|
Packit |
47b4ca |
EXEEXT = @EXEEXT@
|
|
Packit |
47b4ca |
LIBS = @LIBS@
|
|
Packit |
47b4ca |
ac_empty = @ac_empty@
|
|
Packit |
47b4ca |
FC = @FC@
|
|
Packit |
47b4ca |
FC_MODEXT = @FC_MODEXT@
|
|
Packit |
47b4ca |
FC_MODINC = @FC_MODINC@
|
|
Packit |
47b4ca |
FCFLAGS = @FCFLAGS@
|
|
Packit |
47b4ca |
FCFLAGS_f = @FCFLAGS_f@
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
prog$(EXEEXT): sub/mod.$(OBJEXT) prog.$(OBJEXT)
|
|
Packit |
47b4ca |
$(FC) $(FCFLAGS) -o $@ prog.$(OBJEXT) sub/mod.$(OBJEXT) $(LIBS)
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
sub/mod.$(OBJEXT): sub/mod.f
|
|
Packit |
47b4ca |
cd sub && $(FC) $(FCFLAGS) -c $(FCFLAGS_f) mod.f
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
# Depend on the object, for the module dependency.
|
|
Packit |
47b4ca |
prog.$(OBJEXT): prog.f sub/mod.$(OBJEXT)
|
|
Packit |
47b4ca |
$(FC) $(FCFLAGS) $(FC_MODINC). $(FC_MODINC)sub -c $(FCFLAGS_f) $<
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
clean:
|
|
Packit |
47b4ca |
-test -z "$(FC_MODEXT)" || rm -f *.$(FC_MODEXT) sub/*.$(FC_MODEXT)
|
|
Packit |
47b4ca |
-rm -f *.$(OBJEXT) sub/*.$(OBJEXT) prog$(EXEEXT)
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([configure.ac],
|
|
Packit |
47b4ca |
[[AC_INIT
|
|
Packit |
47b4ca |
AC_PROG_FC
|
|
Packit |
47b4ca |
AC_FC_SRCEXT([f])
|
|
Packit |
47b4ca |
AC_FC_MODULE_FLAG
|
|
Packit |
47b4ca |
if test -n "$FC_MODINC"; then
|
|
Packit |
47b4ca |
FCFLAGS="$FCFLAGS $FC_MODINC. ${FC_MODINC}sub"
|
|
Packit |
47b4ca |
fi
|
|
Packit |
47b4ca |
AC_FC_MODULE_EXTENSION
|
|
Packit |
47b4ca |
AC_CONFIG_FILES([Makefile])
|
|
Packit |
47b4ca |
AC_OUTPUT
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
mkdir sub
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([sub/mod.f],
|
|
Packit |
47b4ca |
[[ module foobar
|
|
Packit |
47b4ca |
end module foobar
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_DATA([prog.f],
|
|
Packit |
47b4ca |
[[ program main
|
|
Packit |
47b4ca |
use foobar
|
|
Packit |
47b4ca |
end program
|
|
Packit |
47b4ca |
]])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CHECK_AUTOCONF
|
|
Packit |
47b4ca |
AT_CHECK_CONFIGURE
|
|
Packit |
47b4ca |
: "${MAKE=make}"
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE], [], [stdout], [stderr])
|
|
Packit |
47b4ca |
# Both the FCFLAGS setting from configure.ac, and the Makefile rule
|
|
Packit |
47b4ca |
# should add to the module search path.
|
|
Packit |
47b4ca |
AT_CHECK([grep 'sub .*sub ' stdout stderr], [], [ignore])
|
|
Packit |
47b4ca |
AT_CHECK([./prog], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
AT_CHECK([$MAKE clean], [], [ignore], [ignore])
|
|
Packit |
47b4ca |
|
|
Packit |
47b4ca |
AT_CLEANUP
|