3 AT_BANNER([Fortran low level compiling/preprocessing macros.])
5 # Copyright (C) 2000-2001, 2003, 2008-2012 Free Software Foundation,
8 # This program is free software: you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation, either version 3 of the License, or
11 # (at your option) any later version.
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
18 # You should have received a copy of the GNU General Public License
19 # along with this program. If not, see <http://www.gnu.org/licenses/>.
21 # Since the macros which compile are required by most tests, check
22 # them first. But remember that looking for a compiler is even more
23 # primitive, so check those first.
26 ## --------------------- ##
27 ## Fortran 77 Compiler. ##
28 ## --------------------- ##
31 AT_CHECK_MACRO([GNU Fortran 77],
36 if AC_TRY_COMMAND([$F77 --version | grep GNU >&2]) \
37 || AC_TRY_COMMAND([$F77 -v -c conftest.f 2>&1 | grep "f2c " >&2]); then
38 # Be sure to remove files which might be created by compilers that
39 # don't support --version, or by the second compile.
40 rm -f a.exe a.out conftest.f conftest.$ac_objext
41 # Has GNU in --version.
43 AC_MSG_ERROR([failed to recognize GNU Fortran 77 compiler])
45 # Be sure to remove files which might be created by compilers that
46 # don't support --version, or by the second compile.
47 rm -f a.exe a.out conftest.f conftest.$ac_objext
50 AC_MSG_ERROR([incorrectly recognized a GNU Fortran 77 compiler])
56 ## ------------------ ##
57 ## Fortran Compiler. ##
58 ## ------------------ ##
61 AT_CHECK_MACRO([GNU Fortran],
65 # No Fortran compiler is known not to support "*.f".
68 # GNU Fortran is known to support freeform.
70 [AC_MSG_WARN([Fortran does not accept free-form source])])
71 if test "$ac_compiler_gnu" = yes; then
74 *) AC_MSG_ERROR([failed to recognize GNU Fortran's -ffree-form option]);;
80 ## ------------------------- ##
81 ## AC_OPENMP and Fortran 77. ##
82 ## ------------------------- ##
84 AT_SETUP([AC_OPENMP and Fortran 77])
86 AT_DATA([configure.ac],
91 if test "X$ac_cv_prog_f77_openmp" = Xunsupported; then
94 FFLAGS="$FFLAGS $OPENMP_FFLAGS"
95 AC_CONFIG_FILES([Makefile])
99 AT_DATA([Makefile.in],
100 [[foo@EXEEXT@: foo.@OBJEXT@
101 @F77@ @FFLAGS@ @LDFLAGS@ -o $@ foo.@OBJEXT@
104 @F77@ @FFLAGS@ -c foo.f
113 AT_CHECK([env ACLOCAL=true autoreconf -vi], [], [ignore], [ignore])
115 AT_CHECK([$MAKE], [], [ignore], [ignore])
120 ## ---------------------- ##
121 ## AC_OPENMP and Fortran. ##
122 ## ---------------------- ##
124 AT_SETUP([AC_OPENMP and Fortran])
126 AT_DATA([configure.ac],
131 if test "X$ac_cv_prog_fc_openmp" = Xunsupported; then
134 FCFLAGS="$FCFLAGS $OPENMP_FCFLAGS"
135 AC_CONFIG_FILES([Makefile])
139 AT_DATA([Makefile.in],
140 [[foo@EXEEXT@: foo.@OBJEXT@
141 @FC@ @FCFLAGS@ @LDFLAGS@ -o $@ foo.@OBJEXT@
144 @FC@ @FCFLAGS@ -c foo.f
153 AT_CHECK([env ACLOCAL=true autoreconf -vi], [], [ignore], [ignore])
155 AT_CHECK([$MAKE], [], [ignore], [ignore])
160 # We don't test the AC_F77_LIBRARY_LDFLAGS macro on its own because of
161 # (autoconf.info)Fortran Compiler:
162 # The macros `AC_F77_DUMMY_MAIN' and `AC_FC_DUMMY_MAIN' or
163 # `AC_F77_MAIN' and `AC_FC_MAIN' are probably also necessary to link
164 # C/C++ with Fortran; see below.
166 # and we would need libtool to create shared libraries.
168 # Further, for any sensible test of the AC_F{77,C}(_DUMMY)?_MAIN macros
169 # we also need to use AC_F{77,C}_WRAPPERS, in order to be able to actually
170 # call the functions.
172 ## ------------------------ ##
173 ## AC_F77_DUMMY_MAIN usage. ##
174 ## ------------------------ ##
176 AT_SETUP([AC_F77_DUMMY_MAIN usage])
180 AC_F77_DUMMY_MAIN([], [AC_MSG_FAILURE([failed to determine F77 dummy main], [77])])
183 AC_CONFIG_FILES([Makefile])
186 AT_DATA([Makefile.in],
188 all: cprogram@EXEEXT@
190 cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
191 @CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FLIBS@
193 .SUFFIXES: .c .f .@OBJEXT@
197 @CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
201 [[C This is just a purely numeric routine, no I/O needed.
202 C Taken from autoconf.texi:Fortran Compiler.
203 subroutine foobar (x, y)
204 double precision x, y
210 AT_DATA([cprogram.c],
211 [[#include <config.h>
214 /* Taken from autoconf.texi:Fortran Compiler. */
215 #define FOOBAR_F77 F77_FUNC (foobar, FOOBAR)
217 extern "C" /* prevent C++ name mangling */
219 void FOOBAR_F77 (double *x, double *y);
221 /* Taken from autoconf.texi:Fortran Compiler. */
222 #ifdef F77_DUMMY_MAIN
226 int F77_DUMMY_MAIN () { return 1; }
229 int main(int argc, char *argv[])
231 double x = 2.7183, y;
233 if (fabs (8.539784097 - y) > 1.e-6)
243 AT_CHECK([$MAKE], [], [ignore], [ignore])
244 dnl AT_CHECK([./cprogram])
249 ## ----------------------- ##
250 ## AC_FC_DUMMY_MAIN usage. ##
251 ## ----------------------- ##
253 AT_SETUP([AC_FC_DUMMY_MAIN usage])
258 AC_FC_DUMMY_MAIN([], [AC_MSG_FAILURE([failed to determine FC dummy main], [77])])
261 AC_CONFIG_FILES([Makefile])
264 AT_DATA([Makefile.in],
266 all: cprogram@EXEEXT@
268 cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
269 @CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FCLIBS@
271 .SUFFIXES: .c .f .@OBJEXT@
275 @CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
279 [[C This is just a purely numeric routine, no I/O needed.
280 C Taken from autoconf.texi:Fortran Compiler.
281 subroutine foobar (x, y)
282 double precision x, y
288 AT_DATA([cprogram.c],
289 [[#include <config.h>
292 /* Taken from autoconf.texi:Fortran Compiler. */
293 #define FOOBAR_FC FC_FUNC (foobar, FOOBAR)
295 extern "C" /* prevent C++ name mangling */
297 void FOOBAR_FC(double *x, double *y);
299 /* Taken from autoconf.texi:Fortran Compiler. */
304 int FC_DUMMY_MAIN () { return 1; }
307 int main (int argc, char *argv[])
309 double x = 2.7183, y;
311 if (fabs (8.539784097 - y) > 1.e-6)
321 AT_CHECK([$MAKE], [], [ignore], [ignore])
322 dnl AT_CHECK([./cprogram])
327 ## ------------------ ##
328 ## AC_F77_MAIN usage. ##
329 ## ------------------ ##
331 AT_SETUP([AC_F77_MAIN usage])
338 AC_CONFIG_FILES([Makefile])
341 AT_DATA([Makefile.in],
343 all: cprogram@EXEEXT@
345 cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
346 @CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FLIBS@
348 .SUFFIXES: .c .f .@OBJEXT@
352 @CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
356 [[C This uses Fortran I/O, so is likely to require Fortran startup.
357 subroutine foobar (x)
360 write(*,*) 'some output from Fortran sources'
365 AT_DATA([cprogram.c],
366 [[#include <config.h>
369 /* Taken from autoconf.texi:Fortran Compiler. */
370 #define FOOBAR_F77 F77_FUNC (foobar, FOOBAR)
372 extern "C" /* prevent C++ name mangling */
374 void FOOBAR_F77 (int *x);
376 /* Taken from autoconf.texi:Fortran Compiler. */
380 int F77_MAIN (int argc, char *argv[]);
382 int F77_MAIN (int argc, char *argv[])
385 puts ("output from C main");
388 puts ("more output from C main");
397 AT_CHECK([$MAKE], [], [ignore], [ignore])
398 dnl AT_CHECK([./cprogram], [], [output from C main
399 dnl some output from Fortran sources
400 dnl more output from C main
406 ## ----------------- ##
407 ## AC_FC_MAIN usage. ##
408 ## ----------------- ##
410 AT_SETUP([AC_FC_MAIN usage])
418 AC_CONFIG_FILES([Makefile])
421 AT_DATA([Makefile.in],
422 [[all: cprogram@EXEEXT@
424 cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
425 @CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FCLIBS@
427 .SUFFIXES: .c .f .@OBJEXT@
431 @CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
435 [[C This uses Fortran I/O, so is likely to require Fortran startup.
436 subroutine foobar (x)
439 write (*,*) 'some output from Fortran sources'
444 AT_DATA([cprogram.c],
445 [[#include <config.h>
448 /* Taken from autoconf.texi:Fortran Compiler. */
449 #define FOOBAR_FC FC_FUNC (foobar, FOOBAR)
451 extern "C" /* prevent C++ name mangling */
453 void FOOBAR_FC (int *x);
455 /* Taken from autoconf.texi:Fortran Compiler. */
459 int FC_MAIN (int argc, char *argv[]);
461 int FC_MAIN (int argc, char *argv[])
464 puts ("output from C main");
467 puts ("more output from C main");
476 AT_CHECK([$MAKE], [], [ignore], [ignore])
477 dnl AT_CHECK([./cprogram], [], [output from C main
478 dnl some output from Fortran sources
479 dnl more output from C main
485 ## ------------------ ##
486 ## AC_F77_FUNC usage. ##
487 ## ------------------ ##
489 AT_SETUP([AC_F77_FUNC usage])
493 AC_F77_FUNC([foobar])
496 AC_CONFIG_FILES([cprogram.c:cprogram.in])
497 AC_CONFIG_FILES([Makefile])
500 AT_DATA([Makefile.in],
502 all: cprogram@EXEEXT@
504 cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
505 @CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FLIBS@
507 .SUFFIXES: .c .f .@OBJEXT@
511 @CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
515 [[ subroutine foobar (x)
522 AT_DATA([cprogram.in],
523 [[#include <config.h>
527 extern "C" /* prevent C++ name mangling */
529 void @foobar@ (int *x);
531 /* Taken from autoconf.texi:Fortran Compiler. */
532 #ifdef F77_DUMMY_MAIN
536 int F77_DUMMY_MAIN () { return 1; }
539 int main(int argc, char *argv[])
553 AT_CHECK([$MAKE], [], [ignore], [ignore])
554 dnl AT_CHECK([./cprogram])
559 ## ----------------- ##
560 ## AC_FC_FUNC usage. ##
561 ## ----------------- ##
563 AT_SETUP([AC_FC_FUNC usage])
570 AC_CONFIG_FILES([cprogram.c:cprogram.in])
571 AC_CONFIG_FILES([Makefile])
574 AT_DATA([Makefile.in],
576 all: cprogram@EXEEXT@
578 cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
579 @CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FCLIBS@
581 .SUFFIXES: .c .f .@OBJEXT@
585 @CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
589 [[ subroutine foobar (x)
596 AT_DATA([cprogram.in],
597 [[#include <config.h>
601 extern "C" /* prevent C++ name mangling */
603 void @foobar@ (int *x);
605 /* Taken from autoconf.texi:Fortran Compiler. */
610 int FC_DUMMY_MAIN () { return 1; }
613 int main(int argc, char *argv[])
627 AT_CHECK([$MAKE], [], [ignore], [ignore])
628 dnl AT_CHECK([./cprogram])
632 ## ------------------- ##
633 ## AC_FC_SRCEXT usage. ##
634 ## ------------------- ##
636 AT_SETUP([AC_FC_SRCEXT usage])
638 AT_DATA([configure.ac],
641 FCFLAGS_NOFREE=$FCFLAGS
642 AC_SUBST([FCFLAGS_NOFREE])
644 # Unconditionally require .f to work.
646 # For each other extension, fail gracefully if it does not work:
647 # Not all compilers support all extensions/language versions.
648 m4@&t@_foreach([ext], [f77, f90, f95, f03, f08],
649 [AC_FC_SRCEXT(ext, ext[_object='foo]ext[.$(OBJEXT)'], ext[_object=])
650 AC_SUBST(ext[_object])])
651 AC_CONFIG_FILES([Makefile])
655 AT_DATA([Makefile.in],
659 prog@EXEEXT@: foof.@OBJEXT@ @f77_object@ @f90_object@ \
660 @f95_object@ @f03_object@ @f08_object@
661 @FC@ @FCFLAGS@ -o $@ foof.@OBJEXT@ @f77_object@ @f90_object@ \
662 @f95_object@ @f03_object@ @f08_object@
664 .SUFFIXES: .f .f77 .f90 .f95 .f03 .f08 .@OBJEXT@
666 @FC@ -c @FCFLAGS_NOFREE@ @FCFLAGS_f@ $<
668 @FC@ -c @FCFLAGS_NOFREE@ @FCFLAGS_f77@ $<
670 @FC@ -c @FCFLAGS@ @FCFLAGS_f90@ $<
672 @FC@ -c @FCFLAGS@ @FCFLAGS_f95@ $<
674 @FC@ -c @FCFLAGS@ @FCFLAGS_f03@ $<
676 @FC@ -c @FCFLAGS@ @FCFLAGS_f08@ $<
684 AT_DATA([foof77.f77],
689 AT_DATA([foof90.f90],
694 AT_DATA([foof95.f95],
699 AT_DATA([foof03.f03],
704 AT_DATA([foof08.f08],
712 AT_CHECK([$MAKE], [], [ignore], [ignore])
717 ## ---------------------- ##
718 ## AC_FC_PP_SRCEXT usage. ##
719 ## ---------------------- ##
721 AT_SETUP([AC_FC_PP_SRCEXT usage])
723 AT_DATA([configure.ac],
726 # Unconditionally require .f and .F to work.
729 # For each other extension, fail gracefully if it does not work:
730 # Not all compilers support all extensions/language versions.
731 m4@&t@_foreach([ext], [f77, f90, f95, f03, f08],
732 [AC_FC_PP_SRCEXT(ext, ext[_object='foo]ext[.$(OBJEXT)'], ext[_object=])
733 AC_SUBST(ext[_object])])
734 m4@&t@_foreach([ext], [F77, F90, F95, F03, F08],
735 [AC_FC_PP_SRCEXT(ext, ext[_object='bar]ext[.$(OBJEXT)'], ext[_object=])
736 AC_SUBST(ext[_object])])
737 AC_CONFIG_FILES([Makefile])
741 AT_DATA([Makefile.in],
745 prog@EXEEXT@: foof.@OBJEXT@ @f77_object@ @f90_object@ \
746 @f95_object@ @f03_object@ @f08_object@ \
747 barF.@OBJEXT@ @F77_object@ @F90_object@ \
748 @F95_object@ @F03_object@ @F08_object@
749 @FC@ @FCFLAGS@ -o $@ foof.@OBJEXT@ @f77_object@ @f90_object@ \
750 @f95_object@ @f03_object@ @f08_object@ \
751 barF.@OBJEXT@ @F77_object@ @F90_object@ \
752 @F95_object@ @F03_object@ @F08_object@
754 .SUFFIXES: .f .f77 .f90 .f95 .f03 .f08 .F .F77 .F90 .F95 .F03 .F08 .@OBJEXT@
756 @FC@ -c @FCFLAGS@ @FCFLAGS_f@ $<
758 @FC@ -c @FCFLAGS@ @FCFLAGS_f77@ $<
760 @FC@ -c @FCFLAGS@ @FCFLAGS_f90@ $<
762 @FC@ -c @FCFLAGS@ @FCFLAGS_f95@ $<
764 @FC@ -c @FCFLAGS@ @FCFLAGS_f03@ $<
766 @FC@ -c @FCFLAGS@ @FCFLAGS_f08@ $<
768 @FC@ -c @FCFLAGS@ @FCFLAGS_F@ $<
770 @FC@ -c @FCFLAGS@ @FCFLAGS_F77@ $<
772 @FC@ -c @FCFLAGS@ @FCFLAGS_F90@ $<
774 @FC@ -c @FCFLAGS@ @FCFLAGS_F95@ $<
776 @FC@ -c @FCFLAGS@ @FCFLAGS_F03@ $<
778 @FC@ -c @FCFLAGS@ @FCFLAGS_F08@ $<
781 for ext in f77 f90 f95 f03 f08; do
782 cat > foo$ext.$ext <<EOF
785 this is not correct fortran
791 for ext in F F77 F90 F95 F03 F08; do
792 cat > bar$ext.$ext <<EOF
795 this is not correct fortran
804 this is not correct fortran
812 AT_CHECK([$MAKE], [], [ignore], [ignore])
817 ## --------------- ##
818 ## AC_FC_FREEFORM. ##
819 ## --------------- ##
821 AT_SETUP([AC_FC_FREEFORM])
823 AT_DATA([configure.ac],
827 AC_CONFIG_FILES([Makefile])
831 AT_DATA([Makefile.in],
832 [[prog: prog.@OBJEXT@
833 @FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
835 .SUFFIXES: .f .@OBJEXT@
848 AT_CHECK([$MAKE], [], [ignore], [ignore])
849 dnl AT_CHECK([./prog])
854 ## --------------------------------- ##
855 ## AC_FC_FREEFORM with AC_FC_SRCEXT. ##
856 ## --------------------------------- ##
858 AT_SETUP([AC_FC_FREEFORM with AC_FC_SRCEXT])
860 AT_DATA([configure.ac],
862 AC_FC_SRCEXT([f90], [], [AS_EXIT([77])])
865 AC_CONFIG_FILES([Makefile])
869 AT_DATA([Makefile.in],
870 [[prog: prog.@OBJEXT@
871 @FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
873 .SUFFIXES: .f90 .@OBJEXT@
875 @FC@ @FCFLAGS@ -c @FCFLAGS_f90@ $<
886 AT_CHECK([$MAKE], [], [ignore], [ignore])
887 dnl AT_CHECK([./prog])
892 ## ---------------- ##
893 ## AC_FC_FIXEDFORM. ##
894 ## ---------------- ##
896 AT_SETUP([AC_FC_FIXEDFORM])
898 AT_DATA([configure.ac],
902 AC_CONFIG_FILES([Makefile])
906 AT_DATA([Makefile.in],
907 [[prog: prog.@OBJEXT@
908 @FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
910 .SUFFIXES: .f .@OBJEXT@
917 C fixed-form style comment
924 AT_CHECK([$MAKE], [], [ignore], [ignore])
925 dnl AT_CHECK([./prog])
930 ## ---------------------------------- ##
931 ## AC_FC_FIXEDFORM with AC_FC_SRCEXT. ##
932 ## ---------------------------------- ##
934 AT_SETUP([AC_FC_FIXEDFORM with AC_FC_SRCEXT])
936 AT_DATA([configure.ac],
939 AC_FC_SRCEXT([f90], [], [AS_EXIT([77])])
941 AC_CONFIG_FILES([Makefile])
945 AT_DATA([Makefile.in],
946 [[prog: prog.@OBJEXT@
947 @FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
949 .SUFFIXES: .f90 .@OBJEXT@
951 @FC@ @FCFLAGS@ -c @FCFLAGS_f90@ $<
956 C fixed-form style comment
963 AT_CHECK([$MAKE], [], [ignore], [ignore])
964 dnl AT_CHECK([./prog])
969 ## ------------------ ##
970 ## AC_FC_LINE_LENGTH. ##
971 ## ------------------ ##
973 AT_SETUP([AC_FC_LINE_LENGTH])
975 AT_DATA([Makefile.in],
976 [[prog@EXEEXT@: prog.@OBJEXT@
977 @FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
979 .SUFFIXES: .f .@OBJEXT@
981 @FC@ @FCFLAGS@ -c @FCFLAGS_f@ $<
984 rm -f *.@OBJEXT@ prog@EEXEXT@
988 'subroutine foo(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11)'
990 'subroutine foo(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,'\
991 'arg12,arg13,arg14,arg15,arg16,arg17,arg18,arg19)'
993 'subroutine foo(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,'\
994 'arg12,arg13,arg14,arg15,arg16,arg17,arg18,arg19,arg20,arg21,arg22,arg23,'\
995 'arg24,arg25,arg26,arg27,arg28,arg29,arg30,arg31,arg32,arg33,arg34,arg35,'\
996 'arg36,arg37,arg38,arg39,arg40)'
998 for len in 80 132 254
1000 if test $len -eq 254; then arg=unlimited; else arg=$len; fi
1001 eval long_line=\$line_$len
1003 # Try free-form first, it has a bigger chance of succeeding.
1004 for fixed_or_free in FREEFORM FIXEDFORM
1007 cat >configure.ac <<EOF
1011 AC_FC_$fixed_or_free
1012 AC_FC_LINE_LENGTH([$arg])
1013 AC_CONFIG_FILES([Makefile])
1027 AT_CHECK([$MAKE], [], [ignore], [ignore])
1028 dnl AT_CHECK([./prog])
1029 AT_CHECK([$MAKE clean], [], [ignore], [ignore])
1037 ## ------------------- ##
1038 ## AC_FC_CHECK_BOUNDS. ##
1039 ## ------------------- ##
1041 AT_SETUP([AC_FC_CHECK_BOUNDS])
1043 AT_DATA([Makefile.in],
1044 [[prog@EXEEXT@: prog.@OBJEXT@
1045 @FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
1047 .SUFFIXES: .f .@OBJEXT@
1049 @FC@ @FCFLAGS@ -c @FCFLAGS_f@ $<
1052 rm -f *.@OBJEXT@ prog@EEXEXT@
1055 cat >configure.ac <<EOF
1060 AC_CONFIG_FILES([Makefile])
1066 subroutine copy(a,b,n)
1067 integer a(:), b(:), n, i
1074 integer, parameter :: n = 20
1075 integer a(1:n), b(1:n-1), i
1077 subroutine copy(a,b,n)
1078 integer a(:), b(:), i
1089 AT_CHECK([$MAKE], [], [ignore], [ignore])
1090 AT_CHECK([./prog || exit 1], [1], [ignore], [ignore])
1091 AT_CHECK([$MAKE clean], [], [ignore], [ignore])
1096 ## ------------------ ##
1097 ## AC_FC_MODULE_FLAG. ##
1098 ## ------------------ ##
1100 AT_SETUP([AC_FC_MODULE_FLAG])
1102 AT_DATA([Makefile.in],
1106 ac_empty = @ac_empty@
1108 FC_MODEXT = @FC_MODEXT@
1109 FC_MODINC = @FC_MODINC@
1111 FCFLAGS_f = @FCFLAGS_f@
1113 prog$(EXEEXT): sub/mod.$(OBJEXT) prog.$(OBJEXT)
1114 $(FC) $(FCFLAGS) -o $@ prog.$(OBJEXT) sub/mod.$(OBJEXT) $(LIBS)
1116 sub/mod.$(OBJEXT): sub/mod.f
1117 cd sub && $(FC) $(FCFLAGS) -c $(FCFLAGS_f) mod.f
1119 # Depend on the object, for the module dependency.
1120 prog.$(OBJEXT): prog.f sub/mod.$(OBJEXT)
1121 $(FC) $(FCFLAGS) $(FC_MODINC). $(FC_MODINC)sub -c $(FCFLAGS_f) $<
1124 -test -z "$(FC_MODEXT)" || rm -f *.$(FC_MODEXT) sub/*.$(FC_MODEXT)
1125 -rm -f *.$(OBJEXT) sub/*.$(OBJEXT) prog$(EXEEXT)
1128 AT_DATA([configure.ac],
1133 if test -n "$FC_MODINC"; then
1134 FCFLAGS="$FCFLAGS $FC_MODINC. ${FC_MODINC}sub"
1136 AC_FC_MODULE_EXTENSION
1137 AC_CONFIG_FILES([Makefile])
1143 AT_DATA([sub/mod.f],
1157 AT_CHECK([$MAKE], [], [stdout], [stderr])
1158 # Both the FCFLAGS setting from configure.ac, and the Makefile rule
1159 # should add to the module search path.
1160 AT_CHECK([grep 'sub .*sub ' stdout stderr], [], [ignore])
1161 AT_CHECK([./prog], [], [ignore], [ignore])
1162 AT_CHECK([$MAKE clean], [], [ignore], [ignore])