gcc/fixincludes/configure.ac
Xi Ruoyao 21c74b6ea4
fixincludes: Declare memmem if it's not declared in system headers [PR109293]
memmem is not POSIX so the system may lack it.  Then libiberty will
provide an implementation, but it's a "supplemental function" and not
declared in libiberty.h.  We need to declare the prototype to use it
then.

See libiberty doc at
https://gcc.gnu.org/onlinedocs/libiberty/Supplemental-Functions.html.

Tested by bootstrapping GCC in the following container environments on
x86_64-linux-gnu:

1. "Vanilla" system with memmem in Glibc.
2. memmem removed from string.h.
3. memmem removed from both string.h and libc.so.

For 3, also verified that memmem from libiberty is linked into fixincl
executable.

Ok for trunk?

fixincludes/ChangeLog:

	PR other/109293
	* configure.ac (AC_CHECK_DECLS): Add memmem.
	* configure: Regenerate.
	* config.h.in: Regenerate.
	* system.h (memmem): Declare if HAVE_DECL_MEMMEM is zero.
2023-03-28 15:26:14 +08:00

121 lines
3.5 KiB
Text

AC_INIT(fixincludes, [ ])
AC_CONFIG_SRCDIR(inclhack.def)
AC_CONFIG_AUX_DIR(..)
m4_sinclude(../libtool.m4)
AC_CANONICAL_SYSTEM
AC_PROG_CC
AC_USE_SYSTEM_EXTENSIONS
AC_PROG_SED
# Figure out what compiler warnings we can enable.
# See config/warnings.m4 for details.
ACX_PROG_CC_WARNING_OPTS([-W -Wall -Wwrite-strings -Wstrict-prototypes \
-Wmissing-prototypes -Wold-style-definition \
-Wmissing-format-attribute -Wno-overlength-strings])
ACX_PROG_CC_WARNING_ALMOST_PEDANTIC([-Wno-long-long])
# Only enable with --enable-werror-always until existing warnings are
# corrected.
ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual])
# Determine the noncanonical target name, for directory use.
ACX_NONCANONICAL_TARGET
# Specify the local prefix
local_prefix=
AC_ARG_WITH(local-prefix,
[ --with-local-prefix=DIR specifies directory to put local include],
[case "${withval}" in
yes) AC_MSG_ERROR(bad value ${withval} given for local include directory prefix) ;;
no) ;;
*) local_prefix=$with_local_prefix ;;
esac])
# Default local prefix if it is empty
if test x$local_prefix = x; then
local_prefix=/usr/local
fi
# Choose one or two-process fix methodology. Systems that cannot handle
# bi-directional pipes must use the two process method.
#
AC_ARG_ENABLE([twoprocess],
[ --enable-twoprocess Use a separate process to apply the fixes],
[if test "x$enable_twoprocess" = xyes; then
TARGET=twoprocess
else
TARGET=oneprocess
fi],
[case $host in
i?86-*-msdosdjgpp* | \
i?86-*-mingw32* | \
x86_64-*-mingw32* | \
*-*-beos* | \
*-*-*vms*)
TARGET=twoprocess
;;
* )
TARGET=oneprocess
;;
esac])
AC_SUBST(TARGET)
if test $TARGET = twoprocess; then
AC_DEFINE(SEPARATE_FIX_PROC, 1,
[Define if testing and fixing are done by separate process])
fi
case $host in
vax-dec-bsd* )
AC_DEFINE(exit, xexit, [Define to xexit if the host system does not support atexit])
AC_DEFINE(atexit, xatexit, [Define to xatexit if the host system does not support atexit])
;;
esac
AC_DEFINE_UNQUOTED([EXE_EXT], "$ac_exeext",
[Defined to the executable file extension on the host system])
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([stddef.h stdlib.h strings.h unistd.h fcntl.h sys/file.h \
sys/stat.h])
define(fixincludes_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
ferror_unlocked fflush_unlocked fgetc_unlocked fgets_unlocked dnl
fileno_unlocked fprintf_unlocked fputc_unlocked fputs_unlocked dnl
fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
putchar_unlocked putc_unlocked)
AC_CHECK_FUNCS(fixincludes_UNLOCKED_FUNCS)
AC_CHECK_DECLS([abort, asprintf, basename(char *), errno, vasprintf, memmem])
AC_CHECK_DECLS(m4_split(m4_normalize(fixincludes_UNLOCKED_FUNCS)))
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
# Checks for library functions.
GCC_AC_FUNC_MMAP_BLACKLIST
AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
AC_ARG_ENABLE(maintainer-mode,
[ --enable-maintainer-mode enable make rules and dependencies not useful
(and sometimes confusing) to the casual installer],
USE_MAINTAINER_MODE=$enableval,
USE_MAINTAINER_MODE=no)
AC_MSG_RESULT($USE_MAINTAINER_MODE)
if test "$USE_MAINTAINER_MODE" = yes; then
MAINT=
else
MAINT='#'
fi
AC_SUBST(MAINT)
AC_DEFINE_UNQUOTED([SED_PROGRAM], "${SED}",
[Defined to the best working sed program on the host system])
# Determine what GCC version number to use in filesystem paths.
GCC_BASE_VER
AC_CONFIG_HEADERS(config.h, [echo timestamp > stamp-h])
AC_CONFIG_FILES(Makefile mkheaders.almost:mkheaders.in)
AC_OUTPUT