AC_HEADER_MAJOR: port to glibc 2.25
[autoconf/ericb.git] / tests / tools.at
blob4993b3f58acfae7a469b3c31613cf50770e0d8c9
1 #                                                       -*- Autotest -*-
3 AT_BANNER([Executables (autoheader, autoupdate...).])
5 # Copyright (C) 2000-2001, 2003-2004, 2006-2016 Free Software
6 # Foundation, 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/>.
22 ## ----------------------------- ##
23 ## Syntax of the shell scripts.  ##
24 ## ----------------------------- ##
26 # We use `/bin/sh -n script' to check that there are no syntax errors
27 # in the scripts.  Although incredible, there are /bin/sh that go into
28 # endless loops with `-n', e.g., SunOS's:
30 #   $ uname -a
31 #   SunOS ondine 4.1.3 2 sun4m unknown
32 #   $ cat endless.sh
33 #   while false
34 #   do
35 #     :
36 #   done
37 #   exit 0
38 #   $ time sh endless.sh
39 #   sh endless.sh  0,02s user 0,03s system 78% cpu 0,064 total
40 #   $ time sh -nx endless.sh
41 #   ^Csh -nx endless.sh  3,67s user 0,03s system 63% cpu 5,868 total
43 # So before using `/bin/sh -n' to check our scripts, we first check
44 # that `/bin/sh -n' is not broken to death.
46 AT_SETUP([Syntax of the shell scripts])
48 AT_CHECK([test "$ac_cv_sh_n_works" = yes || exit 77])
50 # Specify the absolute name of the tool, as some shells don't honor PATH when
51 # running `sh PROG'.
53 AT_CHECK_SHELL_SYNTAX(["$abs_top_builddir/bin/autoconf"])
54 AT_CHECK_SHELL_SYNTAX(["$abs_top_builddir/tests/autoconf"])
55 AT_CHECK_SHELL_SYNTAX(["$abs_top_builddir/tests/testsuite"])
57 # These are not built, they are in the src tree.
58 AT_CHECK_SHELL_SYNTAX(["$abs_top_srcdir/build-aux/install-sh"])
59 AT_CHECK_SHELL_SYNTAX(["$abs_top_srcdir/build-aux/missing"])
61 AT_CLEANUP
66 ## ---------------------------- ##
67 ## Syntax of the Perl scripts.  ##
68 ## ---------------------------- ##
70 AT_SETUP([Syntax of the Perl scripts])
72 AT_CHECK_PERL_SYNTAX([autoheader])
73 AT_CHECK_PERL_SYNTAX([autom4te])
74 AT_CHECK_PERL_SYNTAX([autoreconf])
75 AT_CHECK_PERL_SYNTAX([autoscan])
76 AT_CHECK_PERL_SYNTAX([autoupdate])
77 AT_CHECK_PERL_SYNTAX([ifnames])
79 AT_CLEANUP
84 ## ------------------ ##
85 ## autom4te's cache.  ##
86 ## ------------------ ##
88 AT_SETUP([autom4te cache])
90 AT_DATA_M4SUGAR([[script.4s]],
91 [[m4_include([foo])
92 ]])
94 # Everything is OK.
95 touch foo
96 AT_CHECK_M4SUGAR
98 # We moved a file: it should fail
99 mkdir sub
100 mv foo sub
101 AT_CHECK_M4SUGAR([], [1], [],
102 [m4:script.4s:1: cannot open `foo': No such file or directory
103 autom4te: m4 failed with exit status: 1
106 # But if we change the main file, then we should no longer complain of
107 # missing files.
108 AT_DATA_M4SUGAR([[script.4s]],
109 [[m4_include([sub/foo])
111 AT_CHECK_M4SUGAR
113 AT_CLEANUP
116 # autom4te --force
117 # ----------------
119 AT_SETUP([autom4te --force])
121 AT_DATA([file.m4],
122 [[right
124 AT_CHECK_AUTOM4TE([-o file file.m4])
126 # Create a file whose time stamp is in the future.
127 # (next year)-01-01 00:01 UTC should always be in the future,
128 # even on slow machines.
129 echo BAD >file
130 this_year=`TZ=UTC0 date +%Y`
131 AS_VAR_ARITH([next_year], [$this_year + 1])
132 TZ=UTC0 touch -t ${next_year}01010001 file
134 AT_CHECK_AUTOM4TE([--force -o file file.m4])
135 AT_CHECK([cat file], 0,
136 [[right
139 AT_CLEANUP
142 # autom4te and file names containing whitespace
143 # ---------------------------------------------
145 AT_SETUP([autom4te and whitespace in file names])
148 export x
149 rm -f a b
150 for funny in \
151   'with  funny '\'' $x & #! name' \
152   'with  funny \ '\'' \'\'' " <a >b * ? name ' # "restore font-lock
154   funny=`func_sanitize_file_name "$funny"`
155   file=" file $funny"
156   outfile="$file out "
157   dir=`func_sanitize_dir_name " dir $funny"`
158   cachedir=" cache$dir"
159   TMPDIR=" tmp$dir"
160   export TMPDIR
162   # skip if we cannot create such a file or directory
163   AT_CHECK([mkdir "$dir" "$cachedir" "$TMPDIR" && touch "$file" || exit 77])
165   cat >"$file" <<'END'
166 [m4@&t@_init[]m4@&t@_include(foo.m4)
167 m4@&t@_divert([])d@&t@nl
168 FOO]
170   cat >"$dir"/foo.m4 <<'END'
171 [m4@&t@_define([FOO], [bar])]
174   AT_CHECK_AUTOM4TE([-C "$cachedir" -B "$dir" --language=m4sugar -o "$outfile" "$file"])
175   AT_CHECK([cat "$outfile"], [],
176   [[bar
178   rm -rf "$outfile" "$cachedir"
179   AT_CHECK_AUTOM4TE([-C "$cachedir" -I "$dir" --language=m4sugar -o "$outfile" "$file"])
180   AT_CHECK([cat "$outfile"], [],
181   [[bar
184   # This exercises a slightly different code path and will catch an open with
185   # trailing whitespace:
186   cat >"$file" <<'END'
187 [m4@&t@_init[]m4@&t@_include(foo.m4)
188 m4@&t@_pattern_forbid([^bar$])
189 m4@&t@_divert([])d@&t@nl
190 FOO]
192   rm -rf "$outfile" "$cachedir"
193   AT_CHECK_AUTOM4TE([-C "$cachedir" -I "$dir" --language=m4sugar -o "$outfile" "$file"],
194                     [1], [], [stderr])
195   AT_CHECK([grep 'possibly undefined macro' stderr], [], [ignore])
197   cat >"$file" <<'END'
198 [m4@&t@_init[]m4@&t@_include(foo.m4)
199 m4@&t@_divert([])d@&t@nl]
201   rm -rf "$file.m4f"
202   AT_CHECK_AUTOM4TE([-C "$cachedir" -I "$dir" --language=m4sugar --freeze -o "$file.m4f" "$file"])
203   AT_CHECK([test -s "$file.m4f"])
205   # Check --reload-state
206   AT_CHECK_AUTOM4TE([-C "$cachedir" --language=m4sugar -o "$outfile" "$file.m4f" /dev/null])
208   test ! -f b
209 done
211 AT_CLEANUP
214 # autom4te --trace and unusual macro names
215 # ----------------------------------------
217 AT_SETUP([autom4te --trace and unusual macro names])
219 AT_DATA([file.m4],
222 AT_CHECK_AUTOM4TE([-t 'TR A CE' -t 'TR(A)CE' file.m4])
224 AT_CLEANUP
227 AT_SETUP([autom4te --trace and whitespace])
229 dnl line numbering differs between m4 1.4.6 and 1.4.13 if we don't
230 dnl go through a single line wrapper
231 AT_DATA_M4SUGAR([file.m4],
232 [[m4_define([foo], [m4_echo([  a
233 b       c  ], [\
235 ])])
238 AT_CHECK_AUTOM4TE([--language=m4sugar -t 'm4@&t@_echo' file.m4], [0],
239 [[file.m4:5:m4@&t@_echo: a b c :d
242 AT_CLEANUP
245 ## ------------------ ##
246 ## autoconf --trace.  ##
247 ## ------------------ ##
250 # autoconf --trace: user macros
251 # -----------------------------
252 AT_SETUP([autoconf --trace: user macros])
254 AT_DATA([configure.ac],
255 [[m4_define([active], [ACTIVE])
256 m4_define([TRACE1], [TRACE2(m4_shift($@))])
257 m4_define([TRACE2], [[$2], $1])
259 # No arguments.
260 TRACE1
261 TRACE2
263 # With arguments, single line.
264 TRACE1(foo, @bar, @baz)
265 TRACE1(foo, TRACE1(bar, baz))
266 TRACE1(foo, active, baz)
267 TRACE1(foo, [active], TRACE1(active, [active]))
270 # Several --traces.
271 AT_CHECK_AUTOCONF([-t TRACE1 -t TRACE2], 0,
272 [[configure.ac:6:TRACE1:
273 configure.ac:6:TRACE2:
274 configure.ac:7:TRACE2:
275 configure.ac:10:TRACE1:foo:@bar:@baz
276 configure.ac:10:TRACE2:@bar:@baz
277 configure.ac:11:TRACE1:bar:baz
278 configure.ac:11:TRACE2:baz
279 configure.ac:11:TRACE1:foo::baz
280 configure.ac:11:TRACE2::baz
281 configure.ac:12:TRACE1:foo:ACTIVE:baz
282 configure.ac:12:TRACE2:ACTIVE:baz
283 configure.ac:13:TRACE1:ACTIVE:active
284 configure.ac:13:TRACE2:active
285 configure.ac:13:TRACE1:foo:active::ACTIVE
286 configure.ac:13:TRACE2:active::ACTIVE
289 # Several line requests.
290 AT_CHECK_AUTOCONF([[-t TRACE1:'
291 [$1], [$2], [$3].']], 0,
293 [], [], [].
295 [foo], [@bar], [@baz].
297 [bar], [baz], [].
299 [foo], [], [baz].
301 [foo], [ACTIVE], [baz].
303 [ACTIVE], [active], [].
305 [foo], [active], [].
308 # ${sep}@.
309 AT_CHECK_AUTOCONF([-t TRACE2:'${)===(}@'], 0,
310 [[[]
312 [@bar])===([@baz]
313 [baz]
314 [])===([baz]
315 [ACTIVE])===([baz]
316 [active]
317 [active])===([])===([ACTIVE]
320 # Arguments spanning multiple lines.
321 AT_DATA([configure.ac],
322 [[m4_define([TRACE], [])
323 TRACE(foo
324 bar,
326 foo)
329 AT_CHECK_AUTOCONF([-t TRACE:'$%'], 0,
330 [[foo bar:bar foo
333 AT_CLEANUP
336 # autoconf --trace: builtins
337 # --------------------------
338 AT_SETUP([autoconf --trace: builtins])
340 AT_DATA([configure.ac],
341 [[define([active], [ACTIVE])
344 AT_CHECK_AUTOCONF([[-t define | sed -n '$p']],
345          0,
346 [[configure.ac:1:define:active:ACTIVE
349 # FIXME: Without `$1' the following test dies.  Groumphf, once again to
350 # dive into obscure feature interaction...
351 # Note that using `-i' means we need the *.m4 files, not the *.m4f files,
352 # hence we need srcdir, not builddir.
353 AT_CHECK_AUTOCONF([[-t define:'$1' -i| sed -n '$p']],
354          0,
355 [[active
358 AT_CLEANUP
361 # autoconf --trace: AC_CONFIG_MACRO_DIRS
362 # --------------------------------------
363 AT_SETUP([autoconf --trace: AC_CONFIG_MACRO_DIRS])
364 AT_KEYWORDS([AC_CONFIG_MACRO_DIR AC_CONFIG_MACRO_DIR_TRACE])
366 AT_DATA([configure.ac],
367 [[AC_INIT
368 AC_CONFIG_MACRO_DIR([dir1])
369 AC_CONFIG_MACRO_DIRS([dir2 dir3 \
370 dir4])
371 AC_CONFIG_MACRO_DIRS([dir5])
374 # Legacy tracing
375 AT_CHECK_AUTOCONF([-t AC_CONFIG_MACRO_DIR], 0,
376 [[configure.ac:2:AC_CONFIG_MACRO_DIR:dir1
379 # Preferred tracing
380 AT_CHECK_AUTOCONF([-t AC_CONFIG_MACRO_DIR_TRACE], 0,
381 [[configure.ac:2:AC_CONFIG_MACRO_DIR_TRACE:dir1
382 configure.ac:3:AC_CONFIG_MACRO_DIR_TRACE:dir2
383 configure.ac:3:AC_CONFIG_MACRO_DIR_TRACE:dir3
384 configure.ac:3:AC_CONFIG_MACRO_DIR_TRACE:dir4
385 configure.ac:5:AC_CONFIG_MACRO_DIR_TRACE:dir5
388 # Legacy macro can only be used once
389 AT_DATA([configure.ac],
390 [[AC_INIT
391 AC_CONFIG_MACRO_DIR([dir1])
392 AC_CONFIG_MACRO_DIR([dir2])
394 AT_CHECK_AUTOCONF([], [1], [], [stderr])
395 AT_CHECK([grep 'error: AC_CONFIG_MACRO_DIR can only be used once' stderr],
396 [], [ignore])
398 # Legacy macro must be used first, if present
399 AT_DATA([configure.ac],
400 [[AC_INIT
401 AC_CONFIG_MACRO_DIRS([dir1])
402 AC_CONFIG_MACRO_DIR([dir2])
404 AT_CHECK_AUTOCONF([], [1], [], [stderr])
405 AT_CHECK([grep 'error: AC_CONFIG_MACRO_DIR can only be used once' stderr],
406 [], [ignore])
408 # Only use the public macros
409 AT_DATA([configure.ac],
410 [[AC_INIT
411 AC_CONFIG_MACRO_DIR_TRACE([dir1])
413 AT_CHECK_AUTOCONF([], [1], [],
414 [[configure.ac:2: error: Do not invoke AC_CONFIG_MACRO_DIR_TRACE directly
415 configure.ac:2: the top level
416 autom4te: m4 failed with exit status: 1
419 # Legacy macro use is not required, but still gets traced
420 AT_DATA([configure.ac],
421 [[AC_INIT
422 AC_CONFIG_MACRO_DIRS([dir1])
423 AC_CONFIG_MACRO_DIRS([dir2])
425 AT_CHECK_AUTOCONF([], [0], [], [])
426 AT_CHECK_AUTOCONF([-t AC_CONFIG_MACRO_DIR], [0],
427 [[configure.ac:2:AC_CONFIG_MACRO_DIR:dir1
430 AT_CLEANUP
433 ## ---------------------------- ##
434 ## autoconf: forbidden tokens.  ##
435 ## ---------------------------- ##
438 # autoconf: forbidden tokens, basic
439 # ---------------------------------
440 AT_SETUP([autoconf: forbidden tokens,[] basic])
442 AT_DATA_M4SH([configure.ac],
443 [[AS_INIT
444 m4_foo
445 _m4_bar
446 AS_FOO
447 _AS_BAR
448 [dnl]
451 dnl This test needs autom4te's cache, in spite of any ~/.autom4te.cfg.
452 AT_DATA([.autom4te.cfg], [[
453 begin-language: "Autoconf"
454 args: --cache=autom4te.cache
455 end-language: "Autoconf"
456 begin-language: "Autoconf-without-aclocal-m4"
457 args: --cache=autom4te.cache
458 end-language: "Autoconf-without-aclocal-m4"
461 AT_CHECK_AUTOCONF([], 1, [],
462 [[configure.ac:2: error: possibly undefined macro: m4@&t@_foo
463       If this token and others are legitimate, please use m4@&t@_pattern_allow.
464       See the Autoconf documentation.
465 configure.ac:3: error: possibly undefined macro: _m4@&t@_bar
466 configure.ac:4: error: possibly undefined macro: AS@&t@_FOO
467 configure.ac:5: error: possibly undefined macro: _AS@&t@_BAR
468 configure.ac:6: error: possibly undefined macro: d@&t@nl
470 # Second run should succeed and yield no output.
471 AT_CHECK([autoconf])
473 AT_CLEANUP
476 # autoconf: forbidden tokens, exceptions
477 # --------------------------------------
478 AT_SETUP([autoconf: forbidden tokens,[] exceptions])
480 AT_DATA_M4SH([configure.ac],
481 [[AS_INIT
483 # This is allowed in spite of the name.
484 # It is on purpose that we check the case where there are several
485 # tokens on the same line.
486 m4_pattern_allow([^AS_ALLOWED$])
487 NOT_AS_ALLOWED AS_ALLOWED AS_ALLOWED_NOT
489 # Test forbidding.
490 m4_pattern_forbid([^FORBIDDEN$])
491 NOT_FORBIDDEN FORBIDDEN FORBIDDEN_NOT
493 # Test Autoconf's patterns.
494 AS_THIS_IS_INVALID and _AS_THIS_IS_INVALID_TOO
495 BUT_AZ_THIS_IS_NOT ALTHOUGH_AS_THIS_IS
496 # This is legal, although there is `AS_DEFINE' in there.
497 BAS_DEFINE
498 # AS_THIS_IS_A_COMMENT so just shut up.
499 It would be very bad if Autoconf forgot to expand [AS_]INIT!
502 AT_CHECK_AUTOCONF([], 1, [],
503 [[configure.ac:1: error: possibly undefined macro: AS@&t@_INIT
504       If this token and others are legitimate, please use m4@&t@_pattern_allow.
505       See the Autoconf documentation.
506 configure.ac:7: error: possibly undefined macro: AS@&t@_ALLOWED_NOT
507 configure.ac:10: error: possibly undefined macro: FORBIDDEN
508 configure.ac:14: error: possibly undefined macro: AS@&t@_THIS_IS_INVALID
509 configure.ac:14: error: possibly undefined macro: _AS@&t@_THIS_IS_INVALID_TOO
512 AT_CLEANUP
515 # autoconf: automatically allowed tokens
516 # --------------------------------------
517 AT_SETUP([autoconf: automatically allowed tokens])
519 AT_DATA_M4SH([configure.ac],
520 [[AC_INIT
521 m4_pattern_forbid([^FB_])
522 AC_DEFINE([FB_ONE])
523 AC_SUBST([FB_TWO])
524 AC_OUTPUT
527 AT_CHECK_AUTOCONF
529 AT_CLEANUP
532 # autoconf: do not forbid the empty token
533 # ---------------------------------------
534 AT_SETUP([autoconf: the empty token])
536 AT_DATA_M4SH([configure.ac],
537 [[m4_init[]m4_pattern_allow([^foo$])
538 m4_divert([])dnl
539  line that begins with a space
542 AT_CHECK_AUTOCONF
544 AT_CLEANUP
547 # autoconf: subdirectories
548 # ------------------------
549 AT_SETUP([autoconf: subdirectories])
551 AT_DATA([configure.ac],
552 [[AC_INIT
553 AC_PROG_MKDIR_P
554 AC_CONFIG_FILES(sub/foo)
555 AC_OUTPUT
558 mkdir sub
560 AT_DATA([sub/foo.in],
561 [[@MKDIR_P@
564 AT_DATA([install-sh])
566 AT_CHECK_AUTOCONF
567 AT_CHECK_CONFIGURE
568 AT_CHECK([[grep '^[^/].*/mkdir -p' sub/foo]], 1)
570 AT_CLEANUP
573 # autoconf: input from stdin
574 # --------------------------
575 AT_SETUP([autoconf: input from stdin])
577 # Past Autoconf versions failed to read from stdin when other, non-frozen input
578 # files were present.
579 AT_DATA([aclocal.m4])
581 AT_CHECK([echo 'AC_INIT(X, 1.0, bug-autoconf@gnu.org)' | autoconf -t AC_INIT -],
582          0, [stdin:1:AC_INIT:X:1.0:bug-autoconf@gnu.org
584 AT_CHECK([echo 'AC_INIT(X, 2.0, bug-autoconf@gnu.org)' | autoconf -t AC_INIT -],
585          0, [stdin:1:AC_INIT:X:2.0:bug-autoconf@gnu.org
588 AT_CLEANUP
591 # autoconf: AC_AUTOCONF_VERSION
592 # -----------------------------
593 AT_SETUP([autoconf: AC_AUTOCONF_VERSION])
595 AT_DATA([configure.ac],
596 [[AC_INIT
597 version m4@&t@_defn([AC_AUTOCONF_VERSION]) version
598 AC_OUTPUT
601 AT_CHECK_AUTOCONF
602 AT_CHECK([[grep 'version ]]AT_PACKAGE_VERSION[[ version' configure]],
603 0, [ignore])
605 AT_CLEANUP
609 # autoconf: AC_PRESERVE_HELP_ORDER
610 # --------------------------------
611 AT_SETUP([autoconf: AC_PRESERVE_HELP_ORDER])
612 AT_KEYWORDS([m4@&t@_divert_text])
614 AT_DATA_AUTOCONF([configure.ac],
615 [[AC_INIT
616 AC_PRESERVE_HELP_ORDER
617 AC_ARG_WITH([one], [  --with-one])
618 AC_ARG_ENABLE([two], [  --enable-two])
619 m4_divert_text([HELP_ENABLE], [arbitrary $text])
620 AC_ARG_WITH([three], [  --with-three])
621 AC_OUTPUT
624 AT_CHECK_AUTOCONF
625 AT_CHECK_CONFIGURE([--help], [], [stdout])
626 AT_CHECK([sed -n '/^Optional/,/^$/p' stdout], [],
627 [[Optional Features and Packages:
628   --disable-option-checking  ignore unrecognized --enable/--with options
629   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
630   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
631   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
632   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
633   --with-one
634   --enable-two
635 arbitrary $text
636   --with-three
640 AT_CLEANUP
644 ## --------- ##
645 ## ifnames.  ##
646 ## --------- ##
648 AT_SETUP([ifnames])
650 AT_DATA([iftest1.c],
651 [[#ifdef DEF1
652 #ifndef DEF2
653 #if ! defined DEF3 && defined DEF4 /* but not defined DEF5 */
654     # if SPACES
655         #       if      TABS
656 /* #if C_COMMENTS */
657 // #if CXX_COMMENTS
658 #if LINE1 = \
659 LINE2
660 #if (VAL1*VAL2)==VAL3+VAL4 /* Not VAL5 !!! */
663 AT_DATA([iftest2.c],
664 [[#ifdef IFTEST2
665 #if VAL1
668 AT_CHECK([ifnames iftest1.c iftest2.c], 0,
669 [DEF1 iftest1.c
670 DEF2 iftest1.c
671 DEF3 iftest1.c
672 DEF4 iftest1.c
673 IFTEST2 iftest2.c
674 LINE1 iftest1.c
675 LINE2 iftest1.c
676 SPACES iftest1.c
677 TABS iftest1.c
678 VAL1 iftest1.c iftest2.c
679 VAL2 iftest1.c
680 VAL3 iftest1.c
681 VAL4 iftest1.c
682 ], [])
684 AT_CLEANUP
688 ## ------------ ##
689 ## autoheader.  ##
690 ## ------------ ##
692 # autoheader is intensively used in its modern form throughout this
693 # test suite.  But we also have to check that acconfig.h still works.
694 # autoheader uses autoconf --trace, so traces first.
696 AT_SETUP([autoheader])
698 AT_DATA([acconfig.h],
699 [[/* Define this to whatever you want. */
700 #undef this
704 # 1. Check that `acconfig.h' is still honored.
705 AT_DATA([configure.ac],
706 [[AC_INIT
707 AC_CONFIG_HEADERS(config.h:config.hin)
708 AC_DEFINE(this, "whatever you want.")
711 AT_CHECK_AUTOHEADER([], [], [], [ignore])
712 AT_CHECK([cat config.hin], 0,
713 [[/* config.hin.  Generated from configure.ac by autoheader.  */
714 /* Define this to whatever you want. */
715 #undef this
717 /* Define to the address where bug reports for this package should be sent. */
718 #undef PACKAGE_BUGREPORT
720 /* Define to the full name of this package. */
721 #undef PACKAGE_NAME
723 /* Define to the full name and version of this package. */
724 #undef PACKAGE_STRING
726 /* Define to the one symbol short name of this package. */
727 #undef PACKAGE_TARNAME
729 /* Define to the home page for this package. */
730 #undef PACKAGE_URL
732 /* Define to the version of this package. */
733 #undef PACKAGE_VERSION
737 # 2. Check that missing templates are a fatal error.
738 AT_DATA([configure.ac],
739 [[AC_INIT
740 AC_CONFIG_HEADERS(config.h:config.hin)
741 AC_DEFINE(that, "whatever you want.")
744 # The test suite goes too fast for the cache time stamps...
745 # Pass --force.
746 AT_CHECK_AUTOHEADER([--force], [1], [], [ignore])
749 # 3. Check TOP and BOTTOM.
750 AT_DATA([acconfig.h],
751 [[/* Top from acconfig.h. */
752 @TOP@
753 /* Middle from acconfig.h. */
754 @BOTTOM@
755 /* Bottom from acconfig.h. */
758 AT_DATA([configure.ac],
759 [[AC_INIT
760 AC_CONFIG_HEADERS(config.h:config.hin)
761 AH_TOP([Top1 from configure.ac.])
762 AH_TOP([Top2 from configure.ac.])
763 AH_TOP([The Cat in a h@t.])
764 AH_VERBATIM([Middle], [Middle from configure.ac.])
765 AH_VERBATIM([Mouse],  [The Mouse in a h@t.])
766 AH_BOTTOM([Bottom1 from configure.ac.])
767 AH_BOTTOM([Bottom2 from configure.ac.])
768 AH_BOTTOM([The Dog in a h@t.])
770 AC_DEFINE([ANT], [@], [The Ant in a h@t.])
774 # Yes, that's right: the `middle' part of `acconfig.h' is still before
775 # the AH_TOP part.  But so what, you're not supposed to use the two
776 # together.
777 # Ignore STDERR which is the longish complaint against autoheader junk
778 # files.
779 AT_CHECK_AUTOHEADER([--force], [], [], [ignore])
780 AT_CHECK([cat config.hin], 0,
781 [[/* config.hin.  Generated from configure.ac by autoheader.  */
782 /* Top from acconfig.h. */
783 /* Middle from acconfig.h. */
785 Top1 from configure.ac.
787 Top2 from configure.ac.
789 The Cat in a h@t.
791 /* The Ant in a h@t. */
792 #undef ANT
794 Middle from configure.ac.
796 The Mouse in a h@t.
798 /* Define to the address where bug reports for this package should be sent. */
799 #undef PACKAGE_BUGREPORT
801 /* Define to the full name of this package. */
802 #undef PACKAGE_NAME
804 /* Define to the full name and version of this package. */
805 #undef PACKAGE_STRING
807 /* Define to the one symbol short name of this package. */
808 #undef PACKAGE_TARNAME
810 /* Define to the home page for this package. */
811 #undef PACKAGE_URL
813 /* Define to the version of this package. */
814 #undef PACKAGE_VERSION
816 Bottom1 from configure.ac.
818 Bottom2 from configure.ac.
820 The Dog in a h@t.
821 /* Bottom from acconfig.h. */
824 AT_CLEANUP
827 # autoheader should see through m4 macros, just like autoconf
828 # http://lists.gnu.org/archive/html/bug-autoconf/2009-06/msg00000.html
829 AT_SETUP([autoheader and macros])
831 AT_DATA([configure.ac],
832 [[AC_INIT
833 AC_CONFIG_HEADER([config.h])
834 m4_define([PETER], [SIMSALABIM])
835 m4_define([PAUL], [OPENSESAME])
836 AC_DEFINE([PETER], [10], [Peter's public info])
837 AC_DEFINE_UNQUOTED([PAUL], [`expr 4 + 6`], [Paul's public info])
838 AC_OUTPUT
841 AT_CHECK_AUTOCONF
842 AT_CHECK_AUTOHEADER
843 AT_CHECK([grep -c SIMSALABIM configure config.h.in], [0],
844 [[configure:1
845 config.h.in:1
847 AT_CHECK([grep -c OPENSESAME configure config.h.in], [0],
848 [[configure:1
849 config.h.in:1
851 AT_CHECK([grep -c PETER configure config.h.in], [1],
852 [[configure:0
853 config.h.in:0
855 AT_CHECK([grep -c PAUL configure config.h.in], [1],
856 [[configure:0
857 config.h.in:0
860 AT_CLEANUP
865 ## ------------ ##
866 ## autoupdate.  ##
867 ## ------------ ##
869 # Check that AC_CANONICAL_SYSTEM and AC_OUTPUT are properly updated.
870 AT_SETUP([autoupdate])
872 AT_DATA([configure.ac],
873 [[AC_INIT(Test, 1.0)
874 AC_CANONICAL_SYSTEM
875 # The doc says 27 is a valid fubar.
876 fubar=27
877 AC_OUTPUT(Makefile, echo $fubar, fubar=$fubar)
880 AT_DATA([expout],
881 [[AC_INIT([Test],[1.0])
882 AC_CANONICAL_TARGET
883 # The doc says 27 is a valid fubar.
884 fubar=27
885 AC_CONFIG_FILES([Makefile])
886 AC_CONFIG_COMMANDS([default],[echo $fubar],[fubar=$fubar])
887 AC_OUTPUT
890 # Checking `autoupdate'.
891 AT_CHECK_AUTOUPDATE
892 AT_CHECK([cat configure.ac], 0, [expout])
893 # Checking that `autoupdate' is idempotent
894 AT_CHECK_AUTOUPDATE
895 AT_CHECK([cat configure.ac], 0, [expout])
897 AT_CLEANUP
900 # autoupdating AC_LINK_FILES
901 # --------------------------
902 AT_SETUP([autoupdating AC_LINK_FILES])
904 AT_DATA([configure.ac],
905 [[AC_INIT
906 AC_LINK_FILES(dst1 dst2, src1 src2)
907 AC_OUTPUT
910 AT_DATA([dst1], dst1
912 AT_DATA([dst2], dst2
915 # Checking `autoupdate'.
916 AT_CHECK_AUTOUPDATE([], 0, [], ignore)
917 AT_CHECK_AUTOCONF
918 AT_CHECK_CONFIGURE
919 AT_CHECK([cat src1], 0, [dst1
921 AT_CHECK([cat src2], 0, [dst2
924 AT_CLEANUP
927 # autoupdating AC_PREREQ
928 # ----------------------
929 AT_SETUP([autoupdating AC_PREREQ])
931 # Produce `AC_PREREQ(<AUTOUPDATE VERSION>)'.
932 AT_CHECK([autoupdate --version | sed 's/.*) //;q'], 0, [stdout])
933 autoupdate_version=`cat stdout`
934 [echo "AC_PREREQ([$autoupdate_version])" >expout]
936 AT_CHECK([echo "AC_PREREQ(1.0)" | autoupdate -],
937          0, [expout], [])
939 AT_CHECK([echo "AC_PREREQ($autoupdate_version)" | autoupdate -],
940          0, [expout], [])
942 AT_CHECK([echo "AC_PREREQ(999.99)" | autoupdate -],
943          63, [], [ignore])
945 AT_CLEANUP
948 # autoupdating AU_ALIAS
949 # ---------------------
950 AT_SETUP([autoupdating AU_ALIAS])
952 AT_DATA([configure.ac],
953 [[AC_INIT
954 AC_DEFUN([FOO], [$#])
955 AU_ALIAS([BAZ],[FOO])
956 test "FOO:FOO():FOO(x) BAZ:BAZ():BAZ(x)" = "0:1:1 0:1:1" || exit 1
957 AC_PROG_CC
958 AC_WORDS_BIGENDIAN
959 AC_OUTPUT
962 # Checking `autoupdate'.
963 AT_CHECK_AUTOUPDATE
964 AT_CHECK_AUTOCONF
965 AT_CHECK_CONFIGURE
966 AT_CHECK([grep 'AC_C_BIGENDIAN[(]' configure.ac], 1, [ignore], [ignore])
967 AT_CHECK([grep 'AC_C_BIGENDIAN' configure.ac], 0, [ignore], [ignore])
969 AT_CLEANUP
972 # autoupdating OLD to NEW
973 # -----------------------
975 # The example taken from the code comments.
976 AT_SETUP([autoupdating OLD to NEW])
978 AT_DATA([aclocal.m4],
979 [[AU_DEFUN([OLD], [NEW([$1, $2], m4@&t@_eval([$1 + $2]))])
980 AC_DEFUN([NEW], [echo "sum($1) = $2"])
983 AT_DATA([configure.ac],
984 [[AC_INIT
985 OLD(1, 2)
986 NEW([0, 0], [0])
989 # Checking `autoupdate'.
990 AT_CHECK_AUTOUPDATE
991 AT_CHECK_AUTOCONF
992 AT_CHECK_CONFIGURE
993 AT_CHECK([[grep 'NEW(\[1, 2], *\[3])' configure.ac]], 0, [ignore], [ignore])
994 AT_CHECK([[grep 'NEW(\[0, 0], *\[0])' configure.ac]], 0, [ignore], [ignore])
996 AT_CLEANUP
999 # autoupdating macros recursively
1000 # -------------------------------
1002 AT_SETUP([autoupdating macros recursively])
1004 AT_XFAIL_IF([:])
1006 AT_DATA([configure.ac],
1007 [[AC_INIT
1008 AC_PROG_CC
1009 AC_TRY_COMPILE([], [choke me], [echo bogus1],
1010                [AC_TRY_COMPILE([], [return 0;], [echo good], [echo bogus2])])
1011 AC_OUTPUT
1014 # Checking `autoupdate'.
1015 AT_CHECK_AUTOUPDATE
1016 AT_CHECK([grep changequote configure.ac], [1])
1017 AT_CHECK([grep TRY_COMPILE configure.ac], [1])
1018 AT_CHECK_AUTOCONF
1019 AT_CHECK_CONFIGURE
1021 AT_CLEANUP
1024 # autoupdating AC_HELP_STRING
1025 # ---------------------------
1026 AT_SETUP([autoupdating AC_HELP_STRING])
1028 AT_DATA([configure.ac],
1029 [[AC_INIT
1030 AC_ARG_ENABLE([foo], [AC_HELP_STRING([--enable-foo], [foo bar])], [:], [:])
1033 # Checking `autoupdate'.
1034 AT_CHECK_AUTOUPDATE([], [], [], [ignore])
1035 AT_CHECK_AUTOCONF
1036 AT_CHECK_CONFIGURE([], [], [], [ignore])
1037 AT_CHECK([[grep '\[--enable-foo], *\[foo bar]' configure.ac]], 0, [ignore], [ignore])
1039 AT_CLEANUP
1042 # autoupdating with m4sugar
1043 # -------------------------
1044 AT_SETUP([autoupdating with m4sugar])
1046 AT_DATA([aclocal.m4],
1047 [[AU_DEFUN([OLD],
1048 [m4@&t@_pushdef([foo], [bar])dn@&t@l
1049 echo "foo $1 foo"
1050 m4@&t@_popdef([foo])dn@&t@l
1054 touch foo.in
1056 AT_DATA([configure.ac],
1057 [[AC_PREREQ(2.54)
1058 m4_define([gnumeric_version_epoch], [1])
1059 AC_INIT
1060 OLD([ bla  bla ])
1061 AC_FOREACH([name], [n1 n2],
1062            [echo name
1064 AC_CHECKING([for feature])
1065 AC_MSG_RESULT_UNQUOTED([`echo done`])
1067 AC_OUTPUT([foo])
1070 # Checking `autoupdate'.
1071 AT_CHECK_AUTOUPDATE([], [], [], [ignore])
1072 AT_CHECK_AUTOCONF
1073 AT_CHECK_CONFIGURE([], [], [], [ignore])
1075 AT_CLEANUP
1078 # autoupdating with m4_pushdef
1079 # ----------------------------
1080 AT_SETUP([autoupdating with m4@&t@_pushdef])
1082 AT_XFAIL_IF([:])
1084 touch foo.in
1085 AT_DATA([configure.ac],
1086 [[AC_INIT
1087 AC_PROG_CC
1088 # temporarily override this macro
1089 m4@&t@_pushdef([AC_MSG_RESULT_UNQUOTED], [:])
1090 AC_C_BIGENDIAN
1091 m4@&t@_popdef([AC_MSG_RESULT_UNQUOTED])
1092 AC_OUTPUT
1095 # Checking `autoupdate'.
1096 AT_CHECK_AUTOUPDATE([], [], [], [ignore])
1097 AT_CHECK([grep changequote configure.ac], [1])
1098 AT_CHECK([grep [pushdef.*AC_MSG_RESULT_UNQUOTED] configure.ac], [0], [ignore])
1099 AT_CHECK_AUTOCONF
1100 AT_CHECK_CONFIGURE([], [], [], [ignore])
1102 AT_CLEANUP
1105 # autoupdating with AC_REQUIRE
1106 # ----------------------------
1107 AT_SETUP([autoupdating with AC_REQUIRE])
1109 AT_XFAIL_IF([:])
1111 AT_DATA([configure.ac],
1112 [[AC_DEFUN([MACRO],
1113 [AC_REQUIRE([AC_DECL_SYS_SIGLIST])
1114 AC_CHECK_DECLS([_sys_siglist], [], [], [#include <signal.h>])
1117 AC_INIT
1118 MACRO
1119 AC_OUTPUT
1122 # Checking `autoupdate'.
1123 AT_CHECK_AUTOUPDATE([], [], [], [ignore])
1124 AT_CHECK_AUTOCONF
1125 AT_CHECK_CONFIGURE([], [], [], [ignore])
1127 AT_CLEANUP
1130 # autoupdating with complex quoting
1131 # ---------------------------------
1132 AT_SETUP([autoupdating with complex quoting])
1134 AT_XFAIL_IF([:])
1136 AT_DATA([configure.ac],
1137 [[m4_define([MACRO],
1138 [[#define STRING "hello, world\n"
1141 AC_INIT
1142 AC_TRY_COMPILE([#include <stdio.h>
1143                ]MACRO[], [printf (STRING);],
1144                [], [AS_EXIT([1])])
1145 AC_OUTPUT
1148 # Checking `autoupdate'.
1149 AT_CHECK_AUTOUPDATE([], [], [], [ignore])
1150 AT_CHECK_AUTOCONF
1151 AT_CHECK([grep MACRO configure], [1])
1152 AT_CHECK_CONFIGURE([], [], [], [ignore])
1154 AT_CLEANUP
1157 # autoupdating AC_LANG_SAVE
1158 # -------------------------
1159 AT_SETUP([autoupdating AC_LANG_SAVE])
1161 AT_DATA([configure.ac],
1162 [[AC_INIT
1163 AC_LANG_SAVE
1164 AC_LANG_RESTORE
1165 AC_LANG_SAVE
1166 AC_LANG_RESTORE
1169 # Checking `autoupdate'.
1170 AT_CHECK_AUTOUPDATE([], [], [], [ignore])
1171 AT_CHECK_AUTOCONF
1172 AT_CHECK_CONFIGURE([], [], [], [ignore])
1174 AT_CLEANUP
1177 # autoupdating AC_FOREACH
1178 # -----------------------
1179 AT_SETUP([autoupdating AC_FOREACH])
1181 AT_DATA([aclocal.m4],
1182 [[AU_DEFUN([OLD], [AC_FOREACH([myvar], [4 5 6], [' myvar'])])
1185 AT_DATA([configure.ac],
1186 [[AC_INIT
1187 echo AC_FOREACH([myvar], [1 2 3], [' myvar'])OLD
1190 # Checking `autoupdate'.
1191 AT_CHECK_AUTOUPDATE
1192 AT_CHECK([[grep 'echo 1 2 3 4 5 6' configure.ac]], 1, [ignore], [ignore])
1193 AT_CHECK([[grep 'm4@&t@_foreach_w' configure.ac]], 0, [ignore], [ignore])
1194 AT_CHECK_AUTOCONF
1195 AT_CHECK_CONFIGURE([], [0], [stdout])
1196 AT_CHECK([[grep ' 1 2 3 4 5 6' stdout]], 0, [ignore], [ignore])
1198 AT_CLEANUP
1201 # autoupdating with aclocal and m4_include
1202 # ----------------------------------------
1203 AT_SETUP([autoupdating with aclocal and m4@&t@_include])
1205 # We use aclocal.
1206 AT_CHECK([aclocal --version || exit 77], [], [ignore], [ignore])
1208 mkdir m4 aclocal
1209 AT_DATA([configure.ac],
1210 [[AC_INIT(x,0)
1211 AC_UNCHANGED_MACRO
1212 AC_OLD_MACRO
1213 AC_OUTPUT
1215 AT_DATA([m4/stuff.m4],
1216 [[AU_ALIAS([AC_OLD_MACRO], [AC_NEW_MACRO])
1217 AC_DEFUN([AC_NEW_MACRO], [echo hi])
1218 AC_DEFUN([AC_UNCHANGED_MACRO], [echo one])
1220 cp m4/stuff.m4 aclocal/stuff.m4
1221 AT_CHECK([aclocal -I aclocal], [0], [ignore], [ignore])
1222 # Checking `autoupdate'.
1223 AT_CHECK_AUTOUPDATE
1224 AT_CHECK([aclocal -I m4], [0], [ignore], [ignore])
1225 AT_CHECK_AUTOUPDATE
1227 AT_CLEANUP
1230 # Keeping autom4te.cfg complete
1231 # -----------------------------
1233 AT_SETUP([autom4te preselections])
1234 : ${sleep='sleep 1'}    # Command to force different time stamps.
1235 # If this test should run on FAT file systems and older w32,
1236 # then setting $sleep correctly needs to be revisited.
1238 # We use aclocal and automake.  Skip broken automake wrappers.
1239 AT_CHECK([automake --version || exit 77], [], [stdout], [ignore])
1240 AT_CHECK([[grep '[1-9]\.[0-9]' stdout || exit 77]], [], [ignore])
1241 AT_CHECK([test ! -f $HOME/.autom4te.cfg || exit 77], [], [ignore], [ignore])
1243 AT_DATA([configure.ac],
1244 [[AC_INIT(GNU foo, 1.0)
1245 AM_INIT_AUTOMAKE
1246 AC_CONFIG_FILES([Makefile])
1247 AC_OUTPUT
1250 AT_DATA([Makefile.am],
1251 [[AUTOMAKE_OPTIONS = foreign
1254 $sleep # `aclocal.m4' should be strictly younger than its inputs
1256 # If Autoconf is too old, or the user has turned caching off, skip:
1257 AT_CHECK([aclocal || { ret=$?; test $ret -eq 63 && ret=77; exit $ret; }],
1258          [], [], [ignore])
1259 AT_CHECK([test -d autom4te.cache || exit 77])
1260 AT_CHECK([autoconf])
1262 # If this test fails due to missing entries in lib/autom4te.in, then
1263 # comparing the old and new requests is a good place to start debugging:
1264 sort autom4te.cache/requests >old-requests
1265 echo newer >newer
1266 $sleep # if `configure' is regenerated, we want it to be strictly newer,
1267        # to catch the error consistently.
1268 AT_CHECK([aclocal], [], [], [ignore])
1269 AT_CHECK([automake --no-force --add-missing], [], [], [ignore])
1270 AT_CHECK([autoconf])
1271 AT_CHECK([test "`find configure -newer newer`" = "" ||
1272           { sort autom4te.cache/requests | diff old-requests -; exit 1; }],
1273          [], [], [],
1274          [extract_version=['s/^[^0-9]*\([0-9][^ ]*\).*/\1/;q']
1275           automake_version=`automake --version | sed "$extract_version"`
1276           used_automake_version=`sed "$extract_version" "$abs_top_srcdir/Makefile.in"`
1277           AT_CHECK([if test "$automake_version" = "$used_automake_version"; ]dnl
1278                     [then exit 1; else exit 77; fi])])
1279 AT_CLEANUP
1282 # autom4te cache creation
1283 # -----------------------
1284 # Ensure autom4te fails when it cannot create the cache directory
1285 # or create files there.
1286 AT_SETUP([autom4te cache creation])
1288 AT_CHECK([test ! -f $HOME/.autom4te.cfg || exit 77], [], [ignore], [ignore])
1290 # Work in a subdirectory so autotest can scribble in the toplevel.
1291 mkdir sub
1292 chmod a-w sub
1294 AT_DATA([configure.ac],
1295 [[AC_INIT
1298 AT_DATA([.autom4te.cfg],
1299 [[begin-language: "Autoconf-without-aclocal-m4"
1300 args: --cache=sub/autom4te.cache
1301 end-language: "Autoconf-without-aclocal-m4"
1304 # Do not try this when we are root or on systems without permissions.
1305 # A failed redirection may cause a status of 2 with FreeBSD sh.
1306 AT_CHECK([(: > sub/some-file) || exit 1 && exit 77], 1, [ignore], [ignore])
1308 # Failure to create cache directory.
1309 AT_CHECK_AUTOCONF([], [1], [ignore], [stderr])
1310 AT_CHECK([grep 'cannot create .*autom4te.cache' stderr], [0], [ignore])
1311 AT_CHECK([test -f configure], [1])
1313 chmod u+w sub
1314 AT_CHECK_AUTOCONF
1316 rm -f configure sub/autom4te.cache/*
1317 chmod a-w sub/autom4te.cache
1319 # Failure to create a file in the cache directory.
1320 AT_CHECK_AUTOCONF([], [1], [ignore], [stderr])
1321 AT_CHECK([grep 'cannot open.*autom4te.cache' stderr], [0], [ignore])
1323 AT_CLEANUP
1326 # autom4te cache locking
1327 # ----------------------
1329 AT_SETUP([autom4te cache locking])
1331 # Cannot use AT_CHECK here, autotest internals could be messed up.
1333 (echo AC_INIT; sleep 2; echo) \
1334   | (autom4te --language=autoconf -o configure -; echo $? >&2 ) 2>errlog &
1335 AT_CHECK([echo AC_INIT | autom4te --language=autoconf -o configure -])
1336 wait
1338 # Ignore additional output from shell verbose or xtrace mode.
1339 AT_CHECK([grep 'cannot rename' errlog], [1])
1340 AT_CHECK([grep '^0$' errlog], [], [ignore])
1341 AT_CHECK_CONFIGURE
1343 AT_CLEANUP
1346 # autotools and file names containing whitespace
1347 # ----------------------------------------------
1349 AT_SETUP([autotools and whitespace in file names])
1351 # We use aclocal.
1352 AT_CHECK([aclocal --version || exit 77], [], [ignore], [ignore])
1355 export x
1356 rm -f a b
1357 for funny in \
1358   'with  funny '\'' $x & #! name ' \
1359   'with  funny \ '\'' \'\'' " <a >b * ? name ' #"
1361   funny=`func_sanitize_file_name "$funny"`
1362   file=" file $funny"
1363   dir=`func_sanitize_dir_name " dir $funny"`
1364   TMPDIR=" tmp$dir"
1365   export TMPDIR
1367   # skip if we cannot create such a file or directory
1368   AT_CHECK([mkdir "$dir" "$TMPDIR" && touch "$file.ac" || exit 77])
1370   cat >"$file.ac" <<'END'
1371 [AC_INIT(x,0)
1372 m4@&t@_include([foo.m4])
1373 AC_CONFIG_HEADERS([config.h:config.hin])
1374 AC_MACRO
1375 AC_OUTPUT]
1377   cat >"$dir"/foo.m4 <<'END'
1378 [AC_DEFUN([AC_MACRO], [echo hi])]
1381   AT_CHECK_AUTOHEADER([-B "$dir" "$file.ac"])
1382   AT_CHECK_AUTOHEADER([--force -I "$dir" "$file.ac"])
1383   AT_CHECK_AUTOUPDATE([-B "$dir" "$file.ac"])
1384   AT_CHECK_AUTOUPDATE([--force -I "$dir" "$file.ac"])
1385   AT_CHECK_AUTOUPDATE([-B "$dir" - < "$file.ac"], [], [ignore])
1386   AT_CHECK_AUTOCONF([-B "$dir" -o "$file" "$file.ac"])
1387   AT_CHECK_AUTOCONF([-I "$dir" -o "$file" "$file.ac"])
1388   # In autoconf, these exercise a slightly different code path:
1389   AT_CHECK_AUTOCONF([--prepend-include="$dir" -o "$file" "$file.ac"])
1390   AT_CHECK_AUTOCONF([--include="$dir" -o "$file" "$file.ac"])
1391   AT_CHECK([autoscan -B "$dir"], [], [], [ignore])
1392   AT_CHECK([autoscan --force -I "$dir"], [], [], [ignore])
1393   # autoreconf requires a sane input file name.  Also, disable aclocal.
1394   mv -f "$file.ac" configure.ac
1395   AT_DATA([aclocal.m4])
1396   AT_CHECK([autoreconf -B "$dir"])
1397   AT_CHECK([autoreconf --force -I "$dir"])
1399   cat >"$file.c" <<'END'
1400 #if FOO
1401 #endif
1403   AT_CHECK([ifnames "$file.c"], [], [ignore])
1405   test ! -f b
1406 done
1408 AT_CLEANUP