We learned in [1] that it doesn't generally work to use AC_LIBOBJ of a file in module X from within the m4 macros of module Y.
Eric agreed [2] that this is "sane". The first fix in this direction: fflush vs. fseeko. In the mentioned situation, where 'fclose' and 'fseeko' are imported in lib/ but 'fflush' is only imported in tests/, it will fix the error message "missing file gnulib/tests/fseeko.c". [1] http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00174.html [2] http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00176.html 2011-05-05 Bruno Haible <br...@clisp.org> fflush, fseeko: Respect rules for use of AC_LIBOBJ. * m4/fflush.m4 (gl_FUNC_FFLUSH_STDIN): New macro, extracted from gl_FUNC_FFLUSH. (gl_FUNC_FFLUSH): Use it. (gl_REPLACE_FFLUSH): Don't invoke gl_REPLACE_FSEEKO. * m4/fseeko.m4 (gl_FUNC_FSEEKO): Invoke gl_FUNC_FFLUSH_STDIN and gl_REPLACE_FSEEKO here. --- m4/fflush.m4.orig Fri May 6 00:20:18 2011 +++ m4/fflush.m4 Fri May 6 00:12:31 2011 @@ -1,4 +1,4 @@ -# fflush.m4 serial 9 +# fflush.m4 serial 10 # Copyright (C) 2007-2011 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation @@ -12,6 +12,18 @@ AC_DEFUN([gl_FUNC_FFLUSH], [ + gl_FUNC_FFLUSH_STDIN + if test $gl_cv_func_fflush_stdin = no; then + gl_REPLACE_FFLUSH + gl_REPLACE_FCLOSE + fi +]) + +dnl Determine whether fflush works on input streams. +dnl Sets gl_cv_func_fflush_stdin. + +AC_DEFUN([gl_FUNC_FFLUSH_STDIN], +[ AC_CACHE_CHECK([whether fflush works on input streams], [gl_cv_func_fflush_stdin], [echo hello world > conftest.txt @@ -59,10 +71,6 @@ gl_cv_func_fflush_stdin=no]) rm conftest.txt ]) - if test $gl_cv_func_fflush_stdin = no; then - gl_REPLACE_FFLUSH - gl_REPLACE_FCLOSE - fi ]) AC_DEFUN([gl_REPLACE_FFLUSH], @@ -71,7 +79,6 @@ AC_REQUIRE([gl_STDIO_H_DEFAULTS]) REPLACE_FFLUSH=1 gl_PREREQ_FFLUSH - gl_REPLACE_FSEEKO ]) # Prerequisites of lib/fflush.c. --- m4/fseeko.m4.orig Fri May 6 00:20:18 2011 +++ m4/fseeko.m4 Fri May 6 00:12:49 2011 @@ -1,4 +1,4 @@ -# fseeko.m4 serial 11 +# fseeko.m4 serial 12 dnl Copyright (C) 2007-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -23,6 +23,12 @@ gl_REPLACE_FSEEKO fi fi + m4_ifdef([gl_FUNC_FFLUSH_STDIN], [ + gl_FUNC_FFLUSH_STDIN + if test $gl_cv_func_fflush_stdin = no; then + gl_REPLACE_FSEEKO + fi + ]) ]) dnl Tests whether fseeko is available. -- In memoriam Peter van Pels <http://en.wikipedia.org/wiki/Peter_van_Pels>