3 AT_BANNER([Fortran low level compiling/preprocessing macros.])
5 # Copyright (C) 2000-2001, 2003, 2008-2017, 2020-2024 Free Software
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 <https://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([autoreconf -vi], [], [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([autoreconf -vi], [], [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 (void) { return 1; }
229 int main(int argc, char *argv[])
231 double x = 2.7183, y;
233 if (fabs (8.539784097 - y) > 1.e-6)
240 AT_CHECK_AUTOHEADER([], [
248 AT_CHECK([./cprogram])
253 ## ----------------------- ##
254 ## AC_FC_DUMMY_MAIN usage. ##
255 ## ----------------------- ##
257 AT_SETUP([AC_FC_DUMMY_MAIN usage])
262 AC_FC_DUMMY_MAIN([], [AC_MSG_FAILURE([failed to determine FC dummy main], [77])])
265 AC_CONFIG_FILES([Makefile])
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@
279 @CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
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
292 AT_DATA([cprogram.c],
293 [[#include <config.h>
296 /* Taken from autoconf.texi:Fortran Compiler. */
297 #define FOOBAR_FC FC_FUNC (foobar, FOOBAR)
299 extern "C" /* prevent C++ name mangling */
301 void FOOBAR_FC(double *x, double *y);
303 /* Taken from autoconf.texi:Fortran Compiler. */
308 int FC_DUMMY_MAIN (void) { return 1; }
311 int main (int argc, char *argv[])
313 double x = 2.7183, y;
315 if (fabs (8.539784097 - y) > 1.e-6)
322 AT_CHECK_AUTOHEADER([], [
330 AT_CHECK([./cprogram])
335 ## ------------------ ##
336 ## AC_F77_MAIN usage. ##
337 ## ------------------ ##
339 AT_SETUP([AC_F77_MAIN usage])
346 AC_CONFIG_FILES([Makefile])
349 AT_DATA([Makefile.in],
351 all: cprogram@EXEEXT@
353 cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
354 @CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FLIBS@
356 .SUFFIXES: .c .f .@OBJEXT@
360 @CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
364 [[C This uses Fortran I/O, so is likely to require Fortran startup.
365 subroutine foobar (x)
368 write(*,*) 'some output from Fortran sources'
373 AT_DATA([cprogram.c],
374 [[#include <config.h>
377 /* Taken from autoconf.texi:Fortran Compiler. */
378 #define FOOBAR_F77 F77_FUNC (foobar, FOOBAR)
380 extern "C" /* prevent C++ name mangling */
382 void FOOBAR_F77 (int *x);
384 /* Taken from autoconf.texi:Fortran Compiler. */
388 int F77_MAIN (int argc, char *argv[]);
390 int F77_MAIN (int argc, char *argv[])
393 puts ("output from C main");
396 puts ("more output from C main");
402 AT_CHECK_AUTOHEADER([], [
411 AT_CHECK([./cprogram], [], [output from C main
412 some output from Fortran sources
413 more output from C main
419 ## ----------------- ##
420 ## AC_FC_MAIN usage. ##
421 ## ----------------- ##
423 AT_SETUP([AC_FC_MAIN usage])
431 AC_CONFIG_FILES([Makefile])
434 AT_DATA([Makefile.in],
435 [[all: cprogram@EXEEXT@
437 cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
438 @CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FCLIBS@
440 .SUFFIXES: .c .f .@OBJEXT@
444 @CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
448 [[C This uses Fortran I/O, so is likely to require Fortran startup.
449 subroutine foobar (x)
452 write (*,*) 'some output from Fortran sources'
457 AT_DATA([cprogram.c],
458 [[#include <config.h>
461 /* Taken from autoconf.texi:Fortran Compiler. */
462 #define FOOBAR_FC FC_FUNC (foobar, FOOBAR)
464 extern "C" /* prevent C++ name mangling */
466 void FOOBAR_FC (int *x);
468 /* Taken from autoconf.texi:Fortran Compiler. */
472 int FC_MAIN (int argc, char *argv[]);
474 int FC_MAIN (int argc, char *argv[])
477 puts ("output from C main");
480 puts ("more output from C main");
486 AT_CHECK_AUTOHEADER([], [
495 AT_CHECK([./cprogram], [], [output from C main
496 some output from Fortran sources
497 more output from C main
503 ## ------------------ ##
504 ## AC_F77_FUNC usage. ##
505 ## ------------------ ##
507 AT_SETUP([AC_F77_FUNC usage])
511 AC_F77_FUNC([foobar])
514 AC_CONFIG_FILES([cprogram.c:cprogram.in])
515 AC_CONFIG_FILES([Makefile])
518 AT_DATA([Makefile.in],
520 all: cprogram@EXEEXT@
522 cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
523 @CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FLIBS@
525 .SUFFIXES: .c .f .@OBJEXT@
529 @CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
533 [[ subroutine foobar (x)
540 AT_DATA([cprogram.in],
541 [[#include <config.h>
545 extern "C" /* prevent C++ name mangling */
547 void @foobar@ (int *x);
549 /* Taken from autoconf.texi:Fortran Compiler. */
550 #ifdef F77_DUMMY_MAIN
554 int F77_DUMMY_MAIN (void) { return 1; }
557 int main(int argc, char *argv[])
568 AT_CHECK_AUTOHEADER([], [
574 AT_CHECK([./cprogram])
579 ## ----------------- ##
580 ## AC_FC_FUNC usage. ##
581 ## ----------------- ##
583 AT_SETUP([AC_FC_FUNC usage])
590 AC_CONFIG_FILES([cprogram.c:cprogram.in])
591 AC_CONFIG_FILES([Makefile])
594 AT_DATA([Makefile.in],
596 all: cprogram@EXEEXT@
598 cprogram@EXEEXT@: cprogram.@OBJEXT@ foobar.@OBJEXT@
599 @CC@ @CFLAGS@ @LDFLAGS@ -o $@ cprogram.@OBJEXT@ foobar.@OBJEXT@ @LIBS@ @FCLIBS@
601 .SUFFIXES: .c .f .@OBJEXT@
605 @CC@ @DEFS@ -I. @CPPFLAGS@ @CFLAGS@ -c $<
609 [[ subroutine foobar (x)
616 AT_DATA([cprogram.in],
617 [[#include <config.h>
621 extern "C" /* prevent C++ name mangling */
623 void @foobar@ (int *x);
625 /* Taken from autoconf.texi:Fortran Compiler. */
630 int FC_DUMMY_MAIN (void) { return 1; }
633 int main(int argc, char *argv[])
644 AT_CHECK_AUTOHEADER([], [
650 AT_CHECK([./cprogram])
655 ## ------------------- ##
656 ## AC_FC_SRCEXT usage. ##
657 ## ------------------- ##
659 AT_SETUP([AC_FC_SRCEXT usage])
661 AT_DATA([configure.ac],
664 FCFLAGS_NOFREE=$FCFLAGS
665 AC_SUBST([FCFLAGS_NOFREE])
667 # Unconditionally require .f to work.
669 # For each other extension, fail gracefully if it does not work:
670 # Not all compilers support all extensions/language versions.
671 m4@&t@_foreach([ext], [f77, f90, f95, f03, f08],
672 [AC_FC_SRCEXT(ext, ext[_object='foo]ext[.$(OBJEXT)'], ext[_object=])
673 AC_SUBST(ext[_object])])
674 AC_CONFIG_FILES([Makefile])
678 AT_DATA([Makefile.in],
682 prog@EXEEXT@: foof.@OBJEXT@ @f77_object@ @f90_object@ \
683 @f95_object@ @f03_object@ @f08_object@
684 @FC@ @FCFLAGS@ -o $@ foof.@OBJEXT@ @f77_object@ @f90_object@ \
685 @f95_object@ @f03_object@ @f08_object@
687 .SUFFIXES: .f .f77 .f90 .f95 .f03 .f08 .@OBJEXT@
689 @FC@ -c @FCFLAGS_NOFREE@ @FCFLAGS_f@ $<
691 @FC@ -c @FCFLAGS_NOFREE@ @FCFLAGS_f77@ $<
693 @FC@ -c @FCFLAGS@ @FCFLAGS_f90@ $<
695 @FC@ -c @FCFLAGS@ @FCFLAGS_f95@ $<
697 @FC@ -c @FCFLAGS@ @FCFLAGS_f03@ $<
699 @FC@ -c @FCFLAGS@ @FCFLAGS_f08@ $<
707 AT_DATA([foof77.f77],
712 AT_DATA([foof90.f90],
717 AT_DATA([foof95.f95],
722 AT_DATA([foof03.f03],
727 AT_DATA([foof08.f08],
739 ## ---------------------- ##
740 ## AC_FC_PP_SRCEXT usage. ##
741 ## ---------------------- ##
743 AT_SETUP([AC_FC_PP_SRCEXT usage])
745 AT_DATA([configure.ac],
748 # Unconditionally require .f and .F to work.
751 # For each other extension, fail gracefully if it does not work:
752 # Not all compilers support all extensions/language versions.
753 m4@&t@_foreach([ext], [f77, f90, f95, f03, f08],
754 [AC_FC_PP_SRCEXT(ext, ext[_object='foo]ext[.$(OBJEXT)'], ext[_object=])
755 AC_SUBST(ext[_object])])
756 m4@&t@_foreach([ext], [F77, F90, F95, F03, F08],
757 [AC_FC_PP_SRCEXT(ext, ext[_object='bar]ext[.$(OBJEXT)'], ext[_object=])
758 AC_SUBST(ext[_object])])
759 AC_CONFIG_FILES([Makefile])
763 AT_DATA([Makefile.in],
767 prog@EXEEXT@: foof.@OBJEXT@ @f77_object@ @f90_object@ \
768 @f95_object@ @f03_object@ @f08_object@ \
769 barF.@OBJEXT@ @F77_object@ @F90_object@ \
770 @F95_object@ @F03_object@ @F08_object@
771 @FC@ @FCFLAGS@ -o $@ foof.@OBJEXT@ @f77_object@ @f90_object@ \
772 @f95_object@ @f03_object@ @f08_object@ \
773 barF.@OBJEXT@ @F77_object@ @F90_object@ \
774 @F95_object@ @F03_object@ @F08_object@
776 .SUFFIXES: .f .f77 .f90 .f95 .f03 .f08 .F .F77 .F90 .F95 .F03 .F08 .@OBJEXT@
778 @FC@ -c @FCFLAGS@ @FCFLAGS_f@ $<
780 @FC@ -c @FCFLAGS@ @FCFLAGS_f77@ $<
782 @FC@ -c @FCFLAGS@ @FCFLAGS_f90@ $<
784 @FC@ -c @FCFLAGS@ @FCFLAGS_f95@ $<
786 @FC@ -c @FCFLAGS@ @FCFLAGS_f03@ $<
788 @FC@ -c @FCFLAGS@ @FCFLAGS_f08@ $<
790 @FC@ -c @FCFLAGS@ @FCFLAGS_F@ $<
792 @FC@ -c @FCFLAGS@ @FCFLAGS_F77@ $<
794 @FC@ -c @FCFLAGS@ @FCFLAGS_F90@ $<
796 @FC@ -c @FCFLAGS@ @FCFLAGS_F95@ $<
798 @FC@ -c @FCFLAGS@ @FCFLAGS_F03@ $<
800 @FC@ -c @FCFLAGS@ @FCFLAGS_F08@ $<
803 for ext in f77 f90 f95 f03 f08; do
804 cat > foo$ext.$ext <<EOF
807 this is not correct fortran
813 for ext in F F77 F90 F95 F03 F08; do
814 cat > bar$ext.$ext <<EOF
817 this is not correct fortran
826 this is not correct fortran
839 ## --------------- ##
840 ## AC_FC_FREEFORM. ##
841 ## --------------- ##
843 AT_SETUP([AC_FC_FREEFORM])
845 AT_DATA([configure.ac],
849 AC_CONFIG_FILES([Makefile])
853 AT_DATA([Makefile.in],
854 [[prog: prog.@OBJEXT@
855 @FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
857 .SUFFIXES: .f .@OBJEXT@
875 ## --------------------------------- ##
876 ## AC_FC_FREEFORM with AC_FC_SRCEXT. ##
877 ## --------------------------------- ##
879 AT_SETUP([AC_FC_FREEFORM with AC_FC_SRCEXT])
881 AT_DATA([configure.ac],
883 AC_FC_SRCEXT([f90], [], [AS_EXIT([77])])
886 AC_CONFIG_FILES([Makefile])
890 AT_DATA([Makefile.in],
891 [[prog: prog.@OBJEXT@
892 @FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
894 .SUFFIXES: .f90 .@OBJEXT@
896 @FC@ @FCFLAGS@ -c @FCFLAGS_f90@ $<
912 ## ---------------- ##
913 ## AC_FC_FIXEDFORM. ##
914 ## ---------------- ##
916 AT_SETUP([AC_FC_FIXEDFORM])
918 AT_DATA([configure.ac],
922 AC_CONFIG_FILES([Makefile])
926 AT_DATA([Makefile.in],
927 [[prog: prog.@OBJEXT@
928 @FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
930 .SUFFIXES: .f .@OBJEXT@
937 C fixed-form style comment
949 ## ---------------------------------- ##
950 ## AC_FC_FIXEDFORM with AC_FC_SRCEXT. ##
951 ## ---------------------------------- ##
953 AT_SETUP([AC_FC_FIXEDFORM with AC_FC_SRCEXT])
955 AT_DATA([configure.ac],
958 AC_FC_SRCEXT([f90], [], [AS_EXIT([77])])
960 AC_CONFIG_FILES([Makefile])
964 AT_DATA([Makefile.in],
965 [[prog: prog.@OBJEXT@
966 @FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
968 .SUFFIXES: .f90 .@OBJEXT@
970 @FC@ @FCFLAGS@ -c @FCFLAGS_f90@ $<
975 C fixed-form style comment
987 ## ------------------ ##
988 ## AC_FC_LINE_LENGTH. ##
989 ## ------------------ ##
991 AT_SETUP([AC_FC_LINE_LENGTH])
993 AT_DATA([Makefile.in],
994 [[prog@EXEEXT@: prog.@OBJEXT@
995 @FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
997 .SUFFIXES: .f .@OBJEXT@
999 @FC@ @FCFLAGS@ -c @FCFLAGS_f@ $<
1002 rm -f *.@OBJEXT@ prog@EXEEXT@
1005 # When preceded by 7 spaces and followed by newline, line_80 generates
1006 # a line of exactly 79 columns, line_132 generates a line of exactly 131
1007 # coluns, and line_250 generates a line of exactly 250 columns.
1008 # FIXME: Shouldn't line_80 and line_132 generate lines that are one column
1009 # longer, so that their contents match the variable names?
1011 'subroutine foo(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11)'
1013 'subroutine foo(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,'\
1014 'arg12,arg13,arg14,arg15,arg16,arg17,arg18,arg19)'
1016 'subroutine foofoo(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,'\
1017 'arg12,arg13,arg14,arg15,arg16,arg17,arg18,arg19,arg20,arg21,arg22,arg23,'\
1018 'arg24,arg25,arg26,arg27,arg28,arg29,arg30,arg31,arg32,arg33,arg34,arg35,'\
1019 'arg36,arg37,arg38,arg39)'
1021 for len in 80 132 250
1023 if test $len -eq 250; then arg=unlimited; else arg=$len; fi
1024 eval long_line=\$line_$len
1026 # Try free-form first, it has a bigger chance of succeeding.
1027 for fixed_or_free in FREEFORM FIXEDFORM
1030 cat >configure.ac <<EOF
1034 AC_FC_$fixed_or_free
1035 AC_FC_LINE_LENGTH([$arg])
1036 AC_CONFIG_FILES([Makefile])
1051 AT_CHECK_MAKE([clean])
1059 ## ------------------- ##
1060 ## AC_FC_CHECK_BOUNDS. ##
1061 ## ------------------- ##
1063 AT_SETUP([AC_FC_CHECK_BOUNDS])
1065 AT_DATA([Makefile.in],
1066 [[prog@EXEEXT@: prog.@OBJEXT@
1067 @FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
1069 .SUFFIXES: .f .@OBJEXT@
1071 @FC@ @FCFLAGS@ -c @FCFLAGS_f@ $<
1074 rm -f *.@OBJEXT@ prog@EXEEXT@
1077 cat >configure.ac <<EOF
1082 AC_CONFIG_FILES([Makefile])
1088 subroutine copy(a,b,n)
1089 integer a(:), b(:), n, i
1096 integer, parameter :: n = 20
1097 integer a(1:n), b(1:n-1), i
1099 subroutine copy(a,b,n)
1100 integer a(:), b(:), i
1111 AT_CHECK([./prog || exit 1], [1], [ignore], [ignore])
1112 AT_CHECK_MAKE([clean])
1117 ## ------------------ ##
1118 ## AC_FC_MODULE_FLAG. ##
1119 ## ------------------ ##
1121 AT_SETUP([AC_FC_MODULE_FLAG])
1123 AT_DATA([Makefile.in],
1127 ac_empty = @ac_empty@
1129 FC_MODEXT = @FC_MODEXT@
1130 FC_MODINC = @FC_MODINC@
1132 FCFLAGS_f = @FCFLAGS_f@
1134 prog$(EXEEXT): sub/mod.$(OBJEXT) prog.$(OBJEXT)
1135 $(FC) $(FCFLAGS) -o $@ prog.$(OBJEXT) sub/mod.$(OBJEXT) $(LIBS)
1137 sub/mod.$(OBJEXT): sub/mod.f
1138 cd sub && $(FC) $(FCFLAGS) -c $(FCFLAGS_f) mod.f
1140 # Depend on the object, for the module dependency.
1141 prog.$(OBJEXT): prog.f sub/mod.$(OBJEXT)
1142 $(FC) $(FCFLAGS) $(FC_MODINC). $(FC_MODINC)sub -c $(FCFLAGS_f) $<
1145 -test -z "$(FC_MODEXT)" || rm -f *.$(FC_MODEXT) sub/*.$(FC_MODEXT)
1146 -rm -f *.$(OBJEXT) sub/*.$(OBJEXT) prog$(EXEEXT)
1149 AT_DATA([configure.ac],
1154 if test -n "$FC_MODINC"; then
1155 FCFLAGS="$FCFLAGS $FC_MODINC. ${FC_MODINC}sub"
1157 AC_FC_MODULE_EXTENSION
1158 AC_CONFIG_FILES([Makefile])
1164 AT_DATA([sub/mod.f],
1177 AT_CHECK_MAKE([], [], [], [stdout], [stderr])
1178 # Both the FCFLAGS setting from configure.ac, and the Makefile rule
1179 # should add to the module search path.
1180 AT_CHECK([grep 'sub .*sub ' stdout stderr], [], [ignore])
1181 AT_CHECK([./prog], [], [ignore], [ignore])
1182 AT_CHECK_MAKE([clean])
1187 ## --------------------- ##
1188 ## AC_F77_CRAY_POINTERS. ##
1189 ## --------------------- ##
1191 AT_SETUP([AC_F77_CRAY_POINTERS])
1193 AT_DATA([configure.ac],
1196 AC_F77_CRAY_POINTERS
1197 AC_CONFIG_FILES([Makefile])
1201 AT_DATA([Makefile.in],
1202 [[prog@EXEEXT@: prog.@OBJEXT@
1203 @F77@ @FFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
1205 .SUFFIXES: .f .@OBJEXT@
1207 @F77@ @FFLAGS@ -c $<
1210 rm -f *.@OBJEXT@ prog@EXEEXT@
1216 pointer (iptr, aptr)
1224 AT_CHECK_MAKE([clean])
1229 ## -------------------- ##
1230 ## AC_FC_CRAY_POINTERS. ##
1231 ## -------------------- ##
1233 AT_SETUP([AC_FC_CRAY_POINTERS])
1235 AT_DATA([configure.ac],
1240 AC_CONFIG_FILES([Makefile])
1244 AT_DATA([Makefile.in],
1245 [[prog@EXEEXT@: prog.@OBJEXT@
1246 @FC@ @FCFLAGS@ -o $@ prog.@OBJEXT@ @LIBS@
1248 .SUFFIXES: .f .@OBJEXT@
1250 @FC@ @FCFLAGS@ -c @FCFLAGS_f@ $<
1253 rm -f *.@OBJEXT@ prog@EXEEXT@
1259 pointer (iptr, aptr)
1267 AT_CHECK_MAKE([clean])