maint: update copyright year
[autoconf.git] / tests / fortran.at
blob92df39d497a5fea7536e7d1a1a6b3210f8afb65a
1 #                                                       -*- Autotest -*-
3 AT_BANNER([Fortran low level compiling/preprocessing macros.])
5 # Copyright (C) 2000-2001, 2003, 2008-2011 Free Software Foundation,
6 # Inc.
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],
32 [[AC_LANG(Fortran 77)
33 AC_LANG_COMPILER
35 if AC_TRY_COMMAND([$F77 --version | grep GNU >&2]); then
36   # Be sure to remove files which might be created by compilers that
37   # don't support --version.
38   rm -f a.exe a.out
39   # Has GNU in --version.
40   test "$G77" != yes &&
41     AC_MSG_ERROR([failed to recognize GNU Fortran 77 compiler])
42 else
43   # Be sure to remove files which might be created by compilers that
44   # don't support --version.
45   rm -f a.exe a.out
46   # Has not.
47   test "$G77" = yes &&
48     AC_MSG_ERROR([incorrectly recognized a GNU Fortran 77 compiler])
50 ]])
54 ## ------------------ ##
55 ## Fortran Compiler.  ##
56 ## ------------------ ##
59 AT_CHECK_MACRO([GNU Fortran],
60 [[AC_LANG(Fortran)
61 AC_LANG_COMPILER
63 # No Fortran compiler is known not to support "*.f".
64 AC_FC_SRCEXT([f])
66 # GNU Fortran is known to support freeform.
67 AC_FC_FREEFORM([],
68                [AC_MSG_WARN([Fortran does not accept free-form source])])
69 if test "$ac_compiler_gnu" = yes; then
70   case $FCFLAGS in
71    *-ffree-form*) ;;
72    *) AC_MSG_ERROR([failed to recognize GNU Fortran's -ffree-form option]);;
73   esac
75 ]])
78 ## ------------------------- ##
79 ## AC_OPENMP and Fortran 77. ##
80 ## ------------------------- ##
82 AT_SETUP([AC_OPENMP and Fortran 77])
84 AT_DATA([configure.ac],
85 [[AC_INIT
86 AC_PROG_F77
87 AC_LANG([Fortran 77])
88 AC_OPENMP
89 if test "X$ac_cv_prog_f77_openmp" = Xunsupported; then
90   AS_EXIT([77])
92 FFLAGS="$FFLAGS $OPENMP_FFLAGS"
93 AC_CONFIG_FILES([Makefile])
94 AC_OUTPUT
95 ]])
97 AT_DATA([Makefile.in],
98 [[foo@EXEEXT@: foo.@OBJEXT@
99         @F77@ @FFLAGS@ @LDFLAGS@ -o $@ foo.@OBJEXT@
101 foo.@OBJEXT@: foo.f
102         @F77@ @FFLAGS@ -c foo.f
105 AT_DATA([foo.f],
106 [[       program main
107       end
110 : "${MAKE=make}"
111 AT_CHECK([env ACLOCAL=true autoreconf -vi], [], [ignore], [ignore])
112 AT_CHECK_CONFIGURE
113 AT_CHECK([$MAKE], [], [ignore], [ignore])
115 AT_CLEANUP
118 ## ---------------------- ##
119 ## AC_OPENMP and Fortran. ##
120 ## ---------------------- ##
122 AT_SETUP([AC_OPENMP and Fortran])
124 AT_DATA([configure.ac],
125 [[AC_INIT
126 AC_PROG_FC
127 AC_LANG([Fortran])
128 AC_OPENMP
129 if test "X$ac_cv_prog_fc_openmp" = Xunsupported; then
130   AS_EXIT([77])
132 FCFLAGS="$FCFLAGS $OPENMP_FCFLAGS"
133 AC_CONFIG_FILES([Makefile])
134 AC_OUTPUT
137 AT_DATA([Makefile.in],
138 [[foo@EXEEXT@: foo.@OBJEXT@
139         @FC@ @FCFLAGS@ @LDFLAGS@ -o $@ foo.@OBJEXT@
141 foo.@OBJEXT@: foo.f
142         @FC@ @FCFLAGS@ -c foo.f
145 AT_DATA([foo.f],
146 [[      program main
147       end
150 : "${MAKE=make}"
151 AT_CHECK([env ACLOCAL=true autoreconf -vi], [], [ignore], [ignore])
152 AT_CHECK_CONFIGURE
153 AT_CHECK([$MAKE], [], [ignore], [ignore])
155 AT_CLEANUP
158 # We don't test the AC_F77_LIBRARY_LDFLAGS macro on its own because of
159 # (autoconf.info)Fortran Compiler:
160 #      The macros `AC_F77_DUMMY_MAIN' and `AC_FC_DUMMY_MAIN' or
161 #    `AC_F77_MAIN' and `AC_FC_MAIN' are probably also necessary to link
162 #    C/C++ with Fortran; see below.
164 # and we would need libtool to create shared libraries.
166 # Further, for any sensible test of the AC_F{77,C}(_DUMMY)?_MAIN macros
167 # we also need to use AC_F{77,C}_WRAPPERS, in order to be able to actually
168 # call the functions.
170 ## ------------------------ ##
171 ## AC_F77_DUMMY_MAIN usage. ##
172 ## ------------------------ ##
174 AT_SETUP([AC_F77_DUMMY_MAIN usage])
176 AT_DATA([configure.ac],
177 [[AC_INIT
178 AC_CONFIG_HEADERS([config.h:config.hin])
179 AC_PROG_F77
180 AC_F77_DUMMY_MAIN([], [AC_MSG_FAILURE([failed to determine F77 dummy main], [77])])
181 AC_F77_WRAPPERS
182 AC_PROG_CC
183 AC_CONFIG_FILES([Makefile])
184 AC_OUTPUT
187 AT_DATA([Makefile.in],
189 all: cprogram@EXEEXT@
191 cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
192         @CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FLIBS@
194 .SUFFIXES: .c .f .@OBJEXT@
195 .f.@OBJEXT@:
196         @F77@ @FFLAGS@ -c $<
197 .c.@OBJEXT@:
198         @CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
201 AT_DATA([foobar.f],
202 [[C     This is just a purely numeric routine, no I/O needed.
203 C     Taken from autoconf.texi:Fortran Compiler.
204       subroutine foobar (x, y)
205       double precision x, y
206       y = 3.14159 * x
207       return
208       end
211 AT_DATA([cprogram.c],
212 [[#include <config.h>
213 #include <math.h>
215 /* Taken from autoconf.texi:Fortran Compiler. */
216 #define FOOBAR_F77 F77_FUNC (foobar, FOOBAR)
217 #ifdef __cplusplus
218 extern "C"  /* prevent C++ name mangling */
219 #endif
220 void FOOBAR_F77 (double *x, double *y);
222 /* Taken from autoconf.texi:Fortran Compiler.  */
223 #ifdef F77_DUMMY_MAIN
224 #  ifdef __cplusplus
225      extern "C"
226 #  endif
227    int F77_DUMMY_MAIN () { return 1; }
228 #endif
230 int main(int argc, char *argv[])
232   double x = 2.7183, y;
233   FOOBAR_F77 (&x, &y);
234   if (fabs (8.539784097 - y) > 1.e-6)
235     return 1;
236   return 0;
240 AT_CHECK_AUTOCONF
241 AT_CHECK_AUTOHEADER
242 AT_CHECK_CONFIGURE
243 : "${MAKE=make}"
244 AT_CHECK([$MAKE], [], [ignore], [ignore])
245 dnl AT_CHECK([./cprogram])
247 AT_CLEANUP
250 ## ----------------------- ##
251 ## AC_FC_DUMMY_MAIN usage. ##
252 ## ----------------------- ##
254 AT_SETUP([AC_FC_DUMMY_MAIN usage])
256 AT_DATA([configure.ac],
257 [[AC_INIT
258 AC_CONFIG_HEADERS([config.h:config.hin])
259 AC_PROG_FC
260 AC_FC_FIXEDFORM
261 AC_FC_DUMMY_MAIN([], [AC_MSG_FAILURE([failed to determine FC dummy main], [77])])
262 AC_FC_WRAPPERS
263 AC_PROG_CC
264 AC_CONFIG_FILES([Makefile])
265 AC_OUTPUT
268 AT_DATA([Makefile.in],
270 all: cprogram@EXEEXT@
272 cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
273         @CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FCLIBS@
275 .SUFFIXES: .c .f .@OBJEXT@
276 .f.@OBJEXT@:
277         @FC@ @FCFLAGS@ -c $<
278 .c.@OBJEXT@:
279         @CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
282 AT_DATA([foobar.f],
283 [[C     This is just a purely numeric routine, no I/O needed.
284 C     Taken from autoconf.texi:Fortran Compiler.
285       subroutine foobar (x, y)
286       double precision x, y
287       y = 3.14159 * x
288       return
289       end
292 AT_DATA([cprogram.c],
293 [[#include <config.h>
294 #include <math.h>
296 /* Taken from autoconf.texi:Fortran Compiler. */
297 #define FOOBAR_FC FC_FUNC (foobar, FOOBAR)
298 #ifdef __cplusplus
299 extern "C"  /* prevent C++ name mangling */
300 #endif
301 void FOOBAR_FC(double *x, double *y);
303 /* Taken from autoconf.texi:Fortran Compiler.  */
304 #ifdef FC_DUMMY_MAIN
305 #  ifdef __cplusplus
306      extern "C"
307 #  endif
308    int FC_DUMMY_MAIN () { return 1; }
309 #endif
311 int main (int argc, char *argv[])
313   double x = 2.7183, y;
314   FOOBAR_FC (&x, &y);
315   if (fabs (8.539784097 - y) > 1.e-6)
316     return 1;
317   return 0;
321 AT_CHECK_AUTOCONF
322 AT_CHECK_AUTOHEADER
323 AT_CHECK_CONFIGURE
324 : "${MAKE=make}"
325 AT_CHECK([$MAKE], [], [ignore], [ignore])
326 dnl AT_CHECK([./cprogram])
328 AT_CLEANUP
331 ## ------------------ ##
332 ## AC_F77_MAIN usage. ##
333 ## ------------------ ##
335 AT_SETUP([AC_F77_MAIN usage])
337 AT_DATA([configure.ac],
338 [[AC_INIT
339 AC_CONFIG_HEADERS([config.h:config.hin])
340 AC_PROG_F77
341 AC_F77_MAIN
342 AC_F77_WRAPPERS
343 AC_PROG_CC
344 AC_CONFIG_FILES([Makefile])
345 AC_OUTPUT
348 AT_DATA([Makefile.in],
350 all: cprogram@EXEEXT@
352 cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
353         @CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FLIBS@
355 .SUFFIXES: .c .f .@OBJEXT@
356 .f.@OBJEXT@:
357         @F77@ @FFLAGS@ -c $<
358 .c.@OBJEXT@:
359         @CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
362 AT_DATA([foobar.f],
363 [[C     This uses Fortran I/O, so is likely to require Fortran startup.
364       subroutine foobar (x)
365       integer x
366       if (x == 42) then
367         write(*,*) 'some output from Fortran sources'
368       end if
369       end
372 AT_DATA([cprogram.c],
373 [[#include <config.h>
374 #include <stdio.h>
376 /* Taken from autoconf.texi:Fortran Compiler. */
377 #define FOOBAR_F77 F77_FUNC (foobar, FOOBAR)
378 #ifdef __cplusplus
379 extern "C"  /* prevent C++ name mangling */
380 #endif
381 void FOOBAR_F77 (int *x);
383 /* Taken from autoconf.texi:Fortran Compiler.  */
384 #ifdef __cplusplus
385   extern "C"
386 #endif
387 int F77_MAIN (int argc, char *argv[]);
389 int F77_MAIN (int argc, char *argv[])
391   int x = 42;
392   puts ("output from C main");
393   fflush (stdout);
394   FOOBAR_F77 (&x);
395   puts ("more output from C main");
396   return 0;
400 AT_CHECK_AUTOCONF
401 AT_CHECK_AUTOHEADER
402 AT_CHECK_CONFIGURE
403 : "${MAKE=make}"
404 AT_CHECK([$MAKE], [], [ignore], [ignore])
405 dnl AT_CHECK([./cprogram], [], [output from C main
406 dnl  some output from Fortran sources
407 dnl more output from C main
408 dnl ])
410 AT_CLEANUP
413 ## ----------------- ##
414 ## AC_FC_MAIN usage. ##
415 ## ----------------- ##
417 AT_SETUP([AC_FC_MAIN usage])
419 AT_DATA([configure.ac],
420 [[AC_INIT
421 AC_CONFIG_HEADERS([config.h:config.hin])
422 AC_PROG_FC
423 AC_FC_FIXEDFORM
424 AC_FC_MAIN
425 AC_FC_WRAPPERS
426 AC_PROG_CC
427 AC_CONFIG_FILES([Makefile])
428 AC_OUTPUT
431 AT_DATA([Makefile.in],
432 [[all: cprogram@EXEEXT@
434 cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
435         @CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FCLIBS@
437 .SUFFIXES: .c .f .@OBJEXT@
438 .f.@OBJEXT@:
439         @FC@ @FCFLAGS@ -c $<
440 .c.@OBJEXT@:
441         @CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
444 AT_DATA([foobar.f],
445 [[C     This uses Fortran I/O, so is likely to require Fortran startup.
446       subroutine foobar (x)
447       integer x
448       if (x == 42) then
449         write (*,*) 'some output from Fortran sources'
450       end if
451       end
454 AT_DATA([cprogram.c],
455 [[#include <config.h>
456 #include <stdio.h>
458 /* Taken from autoconf.texi:Fortran Compiler. */
459 #define FOOBAR_FC FC_FUNC (foobar, FOOBAR)
460 #ifdef __cplusplus
461 extern "C"  /* prevent C++ name mangling */
462 #endif
463 void FOOBAR_FC (int *x);
465 /* Taken from autoconf.texi:Fortran Compiler.  */
466 #ifdef __cplusplus
467   extern "C"
468 #endif
469 int FC_MAIN (int argc, char *argv[]);
471 int FC_MAIN (int argc, char *argv[])
473   int x = 42;
474   puts ("output from C main");
475   fflush (stdout);
476   FOOBAR_FC (&x);
477   puts ("more output from C main");
478   return 0;
482 AT_CHECK_AUTOCONF
483 AT_CHECK_AUTOHEADER
484 AT_CHECK_CONFIGURE
485 : "${MAKE=make}"
486 AT_CHECK([$MAKE], [], [ignore], [ignore])
487 dnl AT_CHECK([./cprogram], [], [output from C main
488 dnl  some output from Fortran sources
489 dnl more output from C main
490 dnl ])
492 AT_CLEANUP
495 ## ------------------ ##
496 ## AC_F77_FUNC usage. ##
497 ## ------------------ ##
499 AT_SETUP([AC_F77_FUNC usage])
501 AT_DATA([configure.ac],
502 [[AC_INIT
503 AC_PROG_F77
504 AC_F77_FUNC([foobar])
505 AC_SUBST([foobar])
506 AC_PROG_CC
507 AC_CONFIG_FILES([cprogram.c:cprogram.in])
508 AC_CONFIG_FILES([Makefile])
509 AC_OUTPUT
512 AT_DATA([Makefile.in],
514 all: cprogram@EXEEXT@
516 cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
517         @CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FLIBS@
519 .SUFFIXES: .c .f .@OBJEXT@
520 .f.@OBJEXT@:
521         @F77@ @FFLAGS@ -c $<
522 .c.@OBJEXT@:
523         @CC@ @DEFS@ @CPPFLAGS@ @CFLAGS@ -c $<
526 AT_DATA([foobar.f],
527 [[      subroutine foobar (x)
528       integer x
529       x = 42
530       return
531       end
534 AT_DATA([cprogram.in],
535 [[#include <math.h>
537 #ifdef __cplusplus
538 extern "C"  /* prevent C++ name mangling */
539 #endif
540 void @foobar@ (int *x);
542 /* Taken from autoconf.texi:Fortran Compiler.  */
543 #ifdef F77_DUMMY_MAIN
544 #  ifdef __cplusplus
545      extern "C"
546 #  endif
547    int F77_DUMMY_MAIN () { return 1; }
548 #endif
550 int main(int argc, char *argv[])
552   int x;
553   @foobar@ (&x);
554   if (x != 42)
555     return 1;
556   return 0;
560 AT_CHECK_AUTOCONF
561 AT_CHECK_CONFIGURE
562 : "${MAKE=make}"
563 AT_CHECK([$MAKE], [], [ignore], [ignore])
564 dnl AT_CHECK([./cprogram])
566 AT_CLEANUP
569 ## ----------------- ##
570 ## AC_FC_FUNC usage. ##
571 ## ----------------- ##
573 AT_SETUP([AC_FC_FUNC usage])
575 AT_DATA([configure.ac],
576 [[AC_INIT
577 AC_PROG_FC
578 AC_FC_FUNC([foobar])
579 AC_SUBST([foobar])
580 AC_PROG_CC
581 AC_CONFIG_FILES([cprogram.c:cprogram.in])
582 AC_CONFIG_FILES([Makefile])
583 AC_OUTPUT
586 AT_DATA([Makefile.in],
588 all: cprogram@EXEEXT@
590 cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
591         @CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FCLIBS@
593 .SUFFIXES: .c .f .@OBJEXT@
594 .f.@OBJEXT@:
595         @FC@ @FCFLAGS@ -c $<
596 .c.@OBJEXT@:
597         @CC@ @DEFS@ @CPPFLAGS@ @CFLAGS@ -c $<
600 AT_DATA([foobar.f],
601 [[      subroutine foobar (x)
602       integer x
603       x = 42
604       return
605       end
608 AT_DATA([cprogram.in],
609 [[#include <math.h>
611 #ifdef __cplusplus
612 extern "C"  /* prevent C++ name mangling */
613 #endif
614 void @foobar@ (int *x);
616 /* Taken from autoconf.texi:Fortran Compiler.  */
617 #ifdef FC_DUMMY_MAIN
618 #  ifdef __cplusplus
619      extern "C"
620 #  endif
621    int FC_DUMMY_MAIN () { return 1; }
622 #endif
624 int main(int argc, char *argv[])
626   int x;
627   @foobar@ (&x);
628   if (x != 42)
629     return 1;
630   return 0;
634 AT_CHECK_AUTOCONF
635 AT_CHECK_CONFIGURE
636 : "${MAKE=make}"
637 AT_CHECK([$MAKE], [], [ignore], [ignore])
638 dnl AT_CHECK([./cprogram])
639 AT_CLEANUP
642 ## ------------------- ##
643 ## AC_FC_SRCEXT usage. ##
644 ## ------------------- ##
646 AT_SETUP([AC_FC_SRCEXT usage])
648 AT_DATA([configure.ac],
649 [[AC_INIT
650 AC_PROG_FC
651 FCFLAGS_NOFREE=$FCFLAGS
652 AC_SUBST([FCFLAGS_NOFREE])
653 AC_FC_FREEFORM
654 # Unconditionally require .f to work.
655 AC_FC_SRCEXT([f])
656 # For each other extension, fail gracefully if it does not work:
657 # Not all compilers support all extensions/language versions.
658 m4@&t@_foreach([ext], [f77, f90, f95, f03, f08],
659   [AC_FC_SRCEXT(ext, ext[_object='foo]ext[.$(OBJEXT)'], ext[_object=])
660    AC_SUBST(ext[_object])])
661 AC_CONFIG_FILES([Makefile])
662 AC_OUTPUT
665 AT_DATA([Makefile.in],
666 [[OBJEXT = @OBJEXT@
668 all: prog@EXEEXT@
669 prog@EXEEXT@: foof.@OBJEXT@ @f77_object@ @f90_object@ \
670               @f95_object@ @f03_object@ @f08_object@
671         @FC@ @FCFLAGS@ -o $@ foof.@OBJEXT@ @f77_object@ @f90_object@ \
672                              @f95_object@ @f03_object@ @f08_object@
674 .SUFFIXES: .f .f77 .f90 .f95 .f03 .f08 .@OBJEXT@
675 .f.@OBJEXT@:
676         @FC@ -c @FCFLAGS_NOFREE@ @FCFLAGS_f@ $<
677 .f77.@OBJEXT@:
678         @FC@ -c @FCFLAGS_NOFREE@ @FCFLAGS_f77@ $<
679 .f90.@OBJEXT@:
680         @FC@ -c @FCFLAGS@ @FCFLAGS_f90@ $<
681 .f95.@OBJEXT@:
682         @FC@ -c @FCFLAGS@ @FCFLAGS_f95@ $<
683 .f03.@OBJEXT@:
684         @FC@ -c @FCFLAGS@ @FCFLAGS_f03@ $<
685 .f08.@OBJEXT@:
686         @FC@ -c @FCFLAGS@ @FCFLAGS_f08@ $<
689 AT_DATA([foof.f],
690 [[      program main
691       end
694 AT_DATA([foof77.f77],
695 [[      subroutine foof77
696       end
699 AT_DATA([foof90.f90],
700 [[subroutine foof90
704 AT_DATA([foof95.f95],
705 [[subroutine foof95
709 AT_DATA([foof03.f03],
710 [[subroutine foof03
714 AT_DATA([foof08.f08],
715 [[subroutine foof08
719 AT_CHECK_AUTOCONF
720 AT_CHECK_CONFIGURE
721 : "${MAKE=make}"
722 AT_CHECK([$MAKE], [], [ignore], [ignore])
724 AT_CLEANUP
727 ## --------------- ##
728 ## AC_FC_FREEFORM. ##
729 ## --------------- ##
731 AT_SETUP([AC_FC_FREEFORM])
733 AT_DATA([configure.ac],
734 [[AC_INIT
735 AC_PROG_FC
736 AC_FC_FREEFORM
737 AC_CONFIG_FILES([Makefile])
738 AC_OUTPUT
741 AT_DATA([Makefile.in],
742 [[prog: prog.@OBJEXT@
743         @FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
745 .SUFFIXES: .f .@OBJEXT@
746 .f.@OBJEXT@:
747         @FC@ @FCFLAGS@ -c $<
750 AT_DATA([prog.f],
751 [[program main
755 AT_CHECK_AUTOCONF
756 AT_CHECK_CONFIGURE
757 : "${MAKE=make}"
758 AT_CHECK([$MAKE], [], [ignore], [ignore])
759 dnl AT_CHECK([./prog])
761 AT_CLEANUP
764 ## --------------------------------- ##
765 ## AC_FC_FREEFORM with AC_FC_SRCEXT. ##
766 ## --------------------------------- ##
768 AT_SETUP([AC_FC_FREEFORM with AC_FC_SRCEXT])
770 AT_DATA([configure.ac],
771 [[AC_INIT
772 AC_FC_SRCEXT([f90], [], [AS_EXIT([77])])
773 AC_PROG_FC
774 AC_FC_FREEFORM
775 AC_CONFIG_FILES([Makefile])
776 AC_OUTPUT
779 AT_DATA([Makefile.in],
780 [[prog: prog.@OBJEXT@
781         @FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
783 .SUFFIXES: .f90 .@OBJEXT@
784 .f90.@OBJEXT@:
785         @FC@ @FCFLAGS@ -c @FCFLAGS_f90@ $<
788 AT_DATA([prog.f90],
789 [[program main
793 AT_CHECK_AUTOCONF
794 AT_CHECK_CONFIGURE
795 : "${MAKE=make}"
796 AT_CHECK([$MAKE], [], [ignore], [ignore])
797 dnl AT_CHECK([./prog])
799 AT_CLEANUP
802 ## ---------------- ##
803 ## AC_FC_FIXEDFORM. ##
804 ## ---------------- ##
806 AT_SETUP([AC_FC_FIXEDFORM])
808 AT_DATA([configure.ac],
809 [[AC_INIT
810 AC_PROG_FC
811 AC_FC_FIXEDFORM
812 AC_CONFIG_FILES([Makefile])
813 AC_OUTPUT
816 AT_DATA([Makefile.in],
817 [[prog: prog.@OBJEXT@
818         @FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
820 .SUFFIXES: .f .@OBJEXT@
821 .f.@OBJEXT@:
822         @FC@ @FCFLAGS@ -c $<
825 AT_DATA([prog.f],
826 [[      program main
827 C      fixed-form style comment
828        end
831 AT_CHECK_AUTOCONF
832 AT_CHECK_CONFIGURE
833 : "${MAKE=make}"
834 AT_CHECK([$MAKE], [], [ignore], [ignore])
835 dnl AT_CHECK([./prog])
837 AT_CLEANUP
840 ## ---------------------------------- ##
841 ## AC_FC_FIXEDFORM with AC_FC_SRCEXT. ##
842 ## ---------------------------------- ##
844 AT_SETUP([AC_FC_FIXEDFORM with AC_FC_SRCEXT])
846 AT_DATA([configure.ac],
847 [[AC_INIT
848 AC_PROG_FC
849 AC_FC_SRCEXT([f90], [], [AS_EXIT([77])])
850 AC_FC_FIXEDFORM
851 AC_CONFIG_FILES([Makefile])
852 AC_OUTPUT
855 AT_DATA([Makefile.in],
856 [[prog: prog.@OBJEXT@
857         @FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
859 .SUFFIXES: .f90 .@OBJEXT@
860 .f90.@OBJEXT@:
861         @FC@ @FCFLAGS@ -c @FCFLAGS_f90@ $<
864 AT_DATA([prog.f90],
865 [[      program main
866 C      fixed-form style comment
867        end
870 AT_CHECK_AUTOCONF
871 AT_CHECK_CONFIGURE
872 : "${MAKE=make}"
873 AT_CHECK([$MAKE], [], [ignore], [ignore])
874 dnl AT_CHECK([./prog])
876 AT_CLEANUP
879 ## ------------------ ##
880 ## AC_FC_LINE_LENGTH. ##
881 ## ------------------ ##
883 AT_SETUP([AC_FC_LINE_LENGTH])
885 AT_DATA([Makefile.in],
886 [[prog@EXEEXT@: prog.@OBJEXT@
887         @FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
889 .SUFFIXES: .f .@OBJEXT@
890 .f.@OBJEXT@:
891         @FC@ @FCFLAGS@ -c @FCFLAGS_f@ $<
893 clean:
894         rm -f *.@OBJEXT@ prog@EEXEXT@
897 line_80=\
898 'subroutine foo(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11)'
899 line_132=\
900 'subroutine foo(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,'\
901 'arg12,arg13,arg14,arg15,arg16,arg17,arg18,arg19)'
902 line_254=\
903 'subroutine foo(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,'\
904 'arg12,arg13,arg14,arg15,arg16,arg17,arg18,arg19,arg20,arg21,arg22,arg23,'\
905 'arg24,arg25,arg26,arg27,arg28,arg29,arg30,arg31,arg32,arg33,arg34,arg35,'\
906 'arg36,arg37,arg38,arg39,arg40)'
908 for len in 80 132 254
910   if test $len -eq 254; then arg=unlimited; else arg=$len; fi
911   eval long_line=\$line_$len
913   # Try free-form first, it has a bigger chance of succeeding.
914   for fixed_or_free in FREEFORM FIXEDFORM
915   do
917     cat >configure.ac <<EOF
918 AC_INIT
919 AC_PROG_FC
920 AC_FC_SRCEXT([f])
921 AC_FC_$fixed_or_free
922 AC_FC_LINE_LENGTH([$arg])
923 AC_CONFIG_FILES([Makefile])
924 AC_OUTPUT
927     cat >prog.f <<EOF
928        $long_line
929        end subroutine
930        program main
931        end program
934     AT_CHECK_AUTOCONF
935     AT_CHECK_CONFIGURE
936     : "${MAKE=make}"
937     AT_CHECK([$MAKE], [], [ignore], [ignore])
938     dnl AT_CHECK([./prog])
939     AT_CHECK([$MAKE clean], [], [ignore], [ignore])
941   done
942 done
944 AT_CLEANUP