info: autoconf.info @standards_info@ INSTALL
+# Use --no-split to avoid creating filenames > 14 chars.
autoconf.info: autoconf.texi install.texi
- $(MAKEINFO) -I$(srcdir) $(srcdir)/autoconf.texi --output=$@
+ $(MAKEINFO) -I$(srcdir) $(srcdir)/autoconf.texi --no-split --output=$@
INSTALL: install.texi
$(MAKEINFO) -I$(srcdir) $(srcdir)/install.texi --output=$@ \
--no-headers --no-validate
standards.info: standards.texi make-stds.texi
- $(MAKEINFO) -I$(srcdir) $(srcdir)/standards.texi --output=$@
+ $(MAKEINFO) -I$(srcdir) $(srcdir)/standards.texi --no-split --output=$@
dvi: autoconf.dvi @standards_dvi@
done; \
else :; fi
+# Don't cd, to avoid breaking install-sh references.
install-info: info installdirs
- -test -f autoconf.info || cd $(srcdir); \
- for i in autoconf.info*; do \
- $(INSTALL_DATA) $$i $(infodir)/$$i; \
- done
- -test -f standards.info || cd $(srcdir); \
- for i in standards.info*; do \
- $(INSTALL_DATA) $$i $(infodir)/$$i; \
- done
+ if test -f autoconf.info; then \
+ for i in *.info*; do \
+ $(INSTALL_DATA) $$i $(infodir)/$$i; \
+ done; \
+ else \
+ for i in $(srcdir)/*.info*; do \
+ $(INSTALL_DATA) $$i $(infodir)/`echo $$i | sed 's|^$(srcdir)/||'`; \
+ done; \
+ fi
uninstall:
for p in $(SCRIPTS); do \
It also occurs with a bunch more libposix4 functions that most people
probably aren't worried about yet, e.g. shm_open.
-All of these functions fail with errno set to 59. errno 59 is not
-documented and is not in /usr/include/sys/errno.h, but perror claims
-that it means ``Operation not applicable''.
+All these functions fail with errno set to ENOSYS (89)
+``Operation not applicable''.
Perhaps autoconf should have a
specific macro for fnmatch, another for glob+globfree, another for
------------------------------------------------------------------------------
+Make easy macros for checking for X functions and libraries.
+
+------------------------------------------------------------------------------
+
* Test suite: more things to test:
** That the shell scripts produce correct output on some simple data.
** Configuration header files. That autoheader does the right thing,
divert(-1)dnl Throw away output until AC_INIT is called.
changequote([, ])
-define(AC_ACVERSION, 2.1.2)
+define(AC_ACVERSION, 2.1.3)
dnl Some old m4's don't support m4exit. But they provide
dnl equivalent functionality by core dumping because of the
dnl AC_CACHE_SAVE()
define(AC_CACHE_SAVE,
-[if test -w $cache_file; then
-echo "updating cache $cache_file"
-cat > $cache_file <<\EOF
+[cat > $cache_file.$$ <<\EOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
# scripts and configure runs. It is not useful on other systems.
# and sets the high bit in the cache file unless we assign to the vars.
(set) 2>&1 |
sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \
- >> $cache_file
+ >> $cache_file.$$
changequote([, ])dnl
+if cmp -s $cache_file $cache_file.$$; then
+ :
else
-echo "not updating unwritable cache $cache_file"
+ if test -w $cache_file; then
+ echo "updating cache $cache_file"
+ cat $cache_file.$$ > $cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
fi
+rm -f $cache_file.$$
])
dnl The name of shell var CACHE-ID must contain `_cv_' in order to get saved.
[AC_MSG_CHECKING([for $1])
AC_CACHE_VAL(ac_cv_func_$1,
[AC_TRY_LINK(
-[/* This header should be one that does not declare any functions.
- Such declarations can conflict with char $1(); below. */
-#include <errno.h> /* Arbitrary system header to define __stub macros. */
+dnl Don't include <ctype.h> because on OSF/1 3.0 it includes <sys/types.h>
+dnl which includes <sys/select.h> which contains a prototype for
+dnl select. Similarly for bzero.
+[/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $1(); below. */
+#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
extern "C"
done
IFS="$ac_save_ifs"
# As a last resort, use the slow shell script.
+dnl FIXME We probably shouldn't cache a path within a source directory,
+dnl because that will break other packages using the cache if
+dnl that directory is removed.
test -z "$ac_cv_path_install" && ac_cv_path_install="$ac_install_sh"])dnl
INSTALL="$ac_cv_path_install"
fi
AC_CHECK_HEADER(vfork.h, AC_DEFINE(HAVE_VFORK_H))
AC_MSG_CHECKING(for working vfork)
AC_CACHE_VAL(ac_cv_func_vfork,
-[AC_REQUIRE([AC_TYPE_SIGNAL])
-AC_TRY_RUN([/* Thanks to Paul Eggert for this test. */
+[AC_TRY_RUN([/* Thanks to Paul Eggert for this test. */
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
-#include <signal.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_VFORK_H
#include <vfork.h>
#endif
-/* On sparc systems, changes by the child to local and incoming
+/* On some sparc systems, changes by the child to local and incoming
argument registers are propagated back to the parent.
The compiler is told about this with #include <vfork.h>,
but some compilers (e.g. gcc -O) don't grok <vfork.h>.
}
}
}
-static int signalled;
-static RETSIGTYPE catch (s) int s; { signalled = 1; }
main() {
pid_t parent = getpid ();
pid_t child;
sparc_address_test ();
- signal (SIGINT, catch);
-
child = vfork ();
if (child == 0) {
This test uses lots of local variables, at least
as many local variables as main has allocated so far
including compiler temporaries. 4 locals are enough for
- gcc 1.40.3 on a sparc, but we use 8 to be safe.
+ gcc 1.40.3 on a Solaris 4.1.3 sparc, but we use 8 to be safe.
A buggy compiler should reuse the register of parent
for one of the local variables, since it will think that
parent can't possibly be used any more in this routine.
|| p != p5 || p != p6 || p != p7)
_exit(1);
- /* On some systems (e.g. SunOS 5.2), if the parent is catching
- a signal, the child ignores the signal before execing,
- and the parent later receives that signal, the parent dumps core.
- Test for this by ignoring SIGINT in the child. */
- signal (SIGINT, SIG_IGN);
-
/* On some systems (e.g. IRIX 3.3),
vfork doesn't separate parent from child file descriptors.
If the child closes a descriptor before it execs or exits,
/* Did the vfork/compiler bug occur? */
|| parent != getpid()
- /* Did the signal handling bug occur? */
- || kill(parent, SIGINT) != 0
- || signalled != 1
-
/* Did the file descriptor bug occur? */
|| fstat(fileno(stdout), &st) != 0
);
@c @setchapternewpage odd
@c %**end of header
-@set EDITION 2.1.2
-@set VERSION 2.1.2
-@set UPDATED February 1995
+@set EDITION 2.1.3
+@set VERSION 2.1.3
+@set UPDATED March 1995
@iftex
@finalout
Transforming Program Names When Installing
-* Transformation Options:: @code{configure} options to transforme names.
+* Transformation Options:: @code{configure} options to transform names.
* Transformation Examples:: Sample uses of transforming names.
* Transformation Rules:: @file{Makefile} uses of transforming names.
package's distribution, so @code{make} will consider @file{config.h.in}
up to date. On some old BSD systems, @code{touch} or any command that
results in an empty file does not update the timestamps, so use a
-command like @code{date} as a workaround.
+command like @code{echo} as a workaround.
+@c Using @code{date} would cause needless CVS conflicts.
@example
@group
$@{srcdir@}/stamp-h.in: configure.in aclocal.m4 acconfig.h \
config.h.top config.h.bot
cd $@{srcdir@} && autoheader
- date > $@{srcdir@}/stamp-h.in
+ echo timestamp > $@{srcdir@}/stamp-h.in
config.h: stamp-h
stamp-h: config.h.in config.status
@end group
@end example
-In addition, you should pass @samp{date > stamp-h} in the @var{extra-cmds}
-argument to @code{AC_OUTPUT}, so @file{config.status} will ensure that
-@file{config.h} is considered up to date. @xref{Output}, for more
-information about @code{AC_OUTPUT}.
+In addition, you should pass @samp{echo timestamp > stamp-h} in the
+@var{extra-cmds} argument to @code{AC_OUTPUT}, so @file{config.status}
+will ensure that @file{config.h} is considered up to date.
+@xref{Output}, for more information about @code{AC_OUTPUT}.
@xref{Invoking config.status}, for more examples of handling
configuration-related dependencies.
@code{vfork} is not found, define @code{vfork} to be @code{fork}. This
macro checks for several known errors in implementations of @code{vfork}
and considers the system to not have a working @code{vfork} if it
-detects any of them.
+detects any of them. It is not considered to be an implementation error
+if a child's invocation of @code{signal} modifies the parent's signal
+handler, since child processes rarely change their signal handlers.
@end defmac
@defmac AC_FUNC_VPRINTF
@ovindex X_LIBS
@ovindex X_EXTRA_LIBS
@ovindex X_PRE_LIBS
-An enhanced version of @code{AC_PATH_X}. Add the C compiler flags that
+An enhanced version of @code{AC_PATH_X}. It adds the C compiler flags that
X needs to output variable @code{X_CFLAGS}, and the X linker flags to
-@code{X_LIBS}. If X is not available, add @samp{-DX_DISPLAY_MISSING} to
+@code{X_LIBS}. If X is not available, adds @samp{-DX_DISPLAY_MISSING} to
@code{X_CFLAGS}.
-Also check for special libraries that some systems need in order to
-compile X programs. Add any that the system needs to output variable
-@code{X_EXTRA_LIBS}. And check for special X11R6 libraries that need to
-be linked with before @samp{-lX11}, and add any found to the output
-variable @code{X_PRE_LIBS}.
+This macro also checks for special libraries that some systems need in
+order to compile X programs. It adds any that the system needs to
+output variable @code{X_EXTRA_LIBS}. And it checks for special X11R6
+libraries that need to be linked with before @samp{-lX11}, and adds any
+found to the output variable @code{X_PRE_LIBS}.
+
+@c This is an incomplete kludge. Make a real way to do it.
+@c If you need to check for other X functions or libraries yourself, then
+@c after calling this macro, add the contents of @code{X_EXTRA_LIBS} to
+@c @code{LIBS} temporarily, like this:
@end defmac
@defmac AC_SYS_LONG_FILE_NAMES
@end defmac
@menu
-* Transformation Options:: @code{configure} options to transforme names.
+* Transformation Options:: @code{configure} options to transform names.
* Transformation Examples:: Sample uses of transforming names.
* Transformation Rules:: @file{Makefile} uses of transforming names.
@end menu
tree, or the Imake configuration might assume one compiler whereas the
package or the installer needs to use another, or there might be a
version mismatch between the Imake expected by the package and the Imake
-suported by the host. These problems are much rarer with Autoconf,
+supported by the host. These problems are much rarer with Autoconf,
where each package comes with its own independent configuration
processor.
@file{acsite.m4}. @xref{Invoking autoconf}.
If you distribute @file{install.sh} with your package, rename it to
-@file{install-sh} so @code{make} builtin rules won't inadvertantly
+@file{install-sh} so @code{make} builtin rules won't inadvertently
create a file called @file{install} from it. @code{AC_PROG_INSTALL}
looks for the script under both names, but it is best to use the new name.
info: autoconf.info @standards_info@ INSTALL
+# Use --no-split to avoid creating filenames > 14 chars.
autoconf.info: autoconf.texi install.texi
- $(MAKEINFO) -I$(srcdir) $(srcdir)/autoconf.texi --output=$@
+ $(MAKEINFO) -I$(srcdir) $(srcdir)/autoconf.texi --no-split --output=$@
INSTALL: install.texi
$(MAKEINFO) -I$(srcdir) $(srcdir)/install.texi --output=$@ \
--no-headers --no-validate
standards.info: standards.texi make-stds.texi
- $(MAKEINFO) -I$(srcdir) $(srcdir)/standards.texi --output=$@
+ $(MAKEINFO) -I$(srcdir) $(srcdir)/standards.texi --no-split --output=$@
dvi: autoconf.dvi @standards_dvi@
done; \
else :; fi
+# Don't cd, to avoid breaking install-sh references.
install-info: info installdirs
- -test -f autoconf.info || cd $(srcdir); \
- for i in autoconf.info*; do \
- $(INSTALL_DATA) $$i $(infodir)/$$i; \
- done
- -test -f standards.info || cd $(srcdir); \
- for i in standards.info*; do \
- $(INSTALL_DATA) $$i $(infodir)/$$i; \
- done
+ if test -f autoconf.info; then \
+ for i in *.info*; do \
+ $(INSTALL_DATA) $$i $(infodir)/$$i; \
+ done; \
+ else \
+ for i in $(srcdir)/*.info*; do \
+ $(INSTALL_DATA) $$i $(infodir)/`echo $$i | sed 's|^$(srcdir)/||'`; \
+ done; \
+ fi
uninstall:
for p in $(SCRIPTS); do \
@c @setchapternewpage odd
@c %**end of header
-@set EDITION 2.1.2
-@set VERSION 2.1.2
-@set UPDATED February 1995
+@set EDITION 2.1.3
+@set VERSION 2.1.3
+@set UPDATED March 1995
@iftex
@finalout
Transforming Program Names When Installing
-* Transformation Options:: @code{configure} options to transforme names.
+* Transformation Options:: @code{configure} options to transform names.
* Transformation Examples:: Sample uses of transforming names.
* Transformation Rules:: @file{Makefile} uses of transforming names.
package's distribution, so @code{make} will consider @file{config.h.in}
up to date. On some old BSD systems, @code{touch} or any command that
results in an empty file does not update the timestamps, so use a
-command like @code{date} as a workaround.
+command like @code{echo} as a workaround.
+@c Using @code{date} would cause needless CVS conflicts.
@example
@group
$@{srcdir@}/stamp-h.in: configure.in aclocal.m4 acconfig.h \
config.h.top config.h.bot
cd $@{srcdir@} && autoheader
- date > $@{srcdir@}/stamp-h.in
+ echo timestamp > $@{srcdir@}/stamp-h.in
config.h: stamp-h
stamp-h: config.h.in config.status
@end group
@end example
-In addition, you should pass @samp{date > stamp-h} in the @var{extra-cmds}
-argument to @code{AC_OUTPUT}, so @file{config.status} will ensure that
-@file{config.h} is considered up to date. @xref{Output}, for more
-information about @code{AC_OUTPUT}.
+In addition, you should pass @samp{echo timestamp > stamp-h} in the
+@var{extra-cmds} argument to @code{AC_OUTPUT}, so @file{config.status}
+will ensure that @file{config.h} is considered up to date.
+@xref{Output}, for more information about @code{AC_OUTPUT}.
@xref{Invoking config.status}, for more examples of handling
configuration-related dependencies.
@code{vfork} is not found, define @code{vfork} to be @code{fork}. This
macro checks for several known errors in implementations of @code{vfork}
and considers the system to not have a working @code{vfork} if it
-detects any of them.
+detects any of them. It is not considered to be an implementation error
+if a child's invocation of @code{signal} modifies the parent's signal
+handler, since child processes rarely change their signal handlers.
@end defmac
@defmac AC_FUNC_VPRINTF
@ovindex X_LIBS
@ovindex X_EXTRA_LIBS
@ovindex X_PRE_LIBS
-An enhanced version of @code{AC_PATH_X}. Add the C compiler flags that
+An enhanced version of @code{AC_PATH_X}. It adds the C compiler flags that
X needs to output variable @code{X_CFLAGS}, and the X linker flags to
-@code{X_LIBS}. If X is not available, add @samp{-DX_DISPLAY_MISSING} to
+@code{X_LIBS}. If X is not available, adds @samp{-DX_DISPLAY_MISSING} to
@code{X_CFLAGS}.
-Also check for special libraries that some systems need in order to
-compile X programs. Add any that the system needs to output variable
-@code{X_EXTRA_LIBS}. And check for special X11R6 libraries that need to
-be linked with before @samp{-lX11}, and add any found to the output
-variable @code{X_PRE_LIBS}.
+This macro also checks for special libraries that some systems need in
+order to compile X programs. It adds any that the system needs to
+output variable @code{X_EXTRA_LIBS}. And it checks for special X11R6
+libraries that need to be linked with before @samp{-lX11}, and adds any
+found to the output variable @code{X_PRE_LIBS}.
+
+@c This is an incomplete kludge. Make a real way to do it.
+@c If you need to check for other X functions or libraries yourself, then
+@c after calling this macro, add the contents of @code{X_EXTRA_LIBS} to
+@c @code{LIBS} temporarily, like this:
@end defmac
@defmac AC_SYS_LONG_FILE_NAMES
@end defmac
@menu
-* Transformation Options:: @code{configure} options to transforme names.
+* Transformation Options:: @code{configure} options to transform names.
* Transformation Examples:: Sample uses of transforming names.
* Transformation Rules:: @file{Makefile} uses of transforming names.
@end menu
tree, or the Imake configuration might assume one compiler whereas the
package or the installer needs to use another, or there might be a
version mismatch between the Imake expected by the package and the Imake
-suported by the host. These problems are much rarer with Autoconf,
+supported by the host. These problems are much rarer with Autoconf,
where each package comes with its own independent configuration
processor.
@file{acsite.m4}. @xref{Invoking autoconf}.
If you distribute @file{install.sh} with your package, rename it to
-@file{install-sh} so @code{make} builtin rules won't inadvertantly
+@file{install-sh} so @code{make} builtin rules won't inadvertently
create a file called @file{install} from it. @code{AC_PROG_INSTALL}
looks for the script under both names, but it is best to use the new name.
divert(-1)dnl Throw away output until AC_INIT is called.
changequote([, ])
-define(AC_ACVERSION, 2.1.2)
+define(AC_ACVERSION, 2.1.3)
dnl Some old m4's don't support m4exit. But they provide
dnl equivalent functionality by core dumping because of the
dnl AC_CACHE_SAVE()
define(AC_CACHE_SAVE,
-[if test -w $cache_file; then
-echo "updating cache $cache_file"
-cat > $cache_file <<\EOF
+[cat > $cache_file.$$ <<\EOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
# scripts and configure runs. It is not useful on other systems.
# and sets the high bit in the cache file unless we assign to the vars.
(set) 2>&1 |
sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \
- >> $cache_file
+ >> $cache_file.$$
changequote([, ])dnl
+if cmp -s $cache_file $cache_file.$$; then
+ :
else
-echo "not updating unwritable cache $cache_file"
+ if test -w $cache_file; then
+ echo "updating cache $cache_file"
+ cat $cache_file.$$ > $cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
fi
+rm -f $cache_file.$$
])
dnl The name of shell var CACHE-ID must contain `_cv_' in order to get saved.
[AC_MSG_CHECKING([for $1])
AC_CACHE_VAL(ac_cv_func_$1,
[AC_TRY_LINK(
-[/* This header should be one that does not declare any functions.
- Such declarations can conflict with char $1(); below. */
-#include <errno.h> /* Arbitrary system header to define __stub macros. */
+dnl Don't include <ctype.h> because on OSF/1 3.0 it includes <sys/types.h>
+dnl which includes <sys/select.h> which contains a prototype for
+dnl select. Similarly for bzero.
+[/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $1(); below. */
+#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
extern "C"
done
IFS="$ac_save_ifs"
# As a last resort, use the slow shell script.
+dnl FIXME We probably shouldn't cache a path within a source directory,
+dnl because that will break other packages using the cache if
+dnl that directory is removed.
test -z "$ac_cv_path_install" && ac_cv_path_install="$ac_install_sh"])dnl
INSTALL="$ac_cv_path_install"
fi
AC_CHECK_HEADER(vfork.h, AC_DEFINE(HAVE_VFORK_H))
AC_MSG_CHECKING(for working vfork)
AC_CACHE_VAL(ac_cv_func_vfork,
-[AC_REQUIRE([AC_TYPE_SIGNAL])
-AC_TRY_RUN([/* Thanks to Paul Eggert for this test. */
+[AC_TRY_RUN([/* Thanks to Paul Eggert for this test. */
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
-#include <signal.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_VFORK_H
#include <vfork.h>
#endif
-/* On sparc systems, changes by the child to local and incoming
+/* On some sparc systems, changes by the child to local and incoming
argument registers are propagated back to the parent.
The compiler is told about this with #include <vfork.h>,
but some compilers (e.g. gcc -O) don't grok <vfork.h>.
}
}
}
-static int signalled;
-static RETSIGTYPE catch (s) int s; { signalled = 1; }
main() {
pid_t parent = getpid ();
pid_t child;
sparc_address_test ();
- signal (SIGINT, catch);
-
child = vfork ();
if (child == 0) {
This test uses lots of local variables, at least
as many local variables as main has allocated so far
including compiler temporaries. 4 locals are enough for
- gcc 1.40.3 on a sparc, but we use 8 to be safe.
+ gcc 1.40.3 on a Solaris 4.1.3 sparc, but we use 8 to be safe.
A buggy compiler should reuse the register of parent
for one of the local variables, since it will think that
parent can't possibly be used any more in this routine.
|| p != p5 || p != p6 || p != p7)
_exit(1);
- /* On some systems (e.g. SunOS 5.2), if the parent is catching
- a signal, the child ignores the signal before execing,
- and the parent later receives that signal, the parent dumps core.
- Test for this by ignoring SIGINT in the child. */
- signal (SIGINT, SIG_IGN);
-
/* On some systems (e.g. IRIX 3.3),
vfork doesn't separate parent from child file descriptors.
If the child closes a descriptor before it execs or exits,
/* Did the vfork/compiler bug occur? */
|| parent != getpid()
- /* Did the signal handling bug occur? */
- || kill(parent, SIGINT) != 0
- || signalled != 1
-
/* Did the file descriptor bug occur? */
|| fstat(fileno(stdout), &st) != 0
);