mirror of
https://kernel.googlesource.com/pub/scm/network/tftp/tftp-hpa
synced 2025-04-26 01:49:52 +03:00
270 lines
6 KiB
Text
270 lines
6 KiB
Text
dnl
|
|
dnl autoconf input file to generate MCONFIG
|
|
dnl
|
|
|
|
AC_PREREQ(2.52)
|
|
AC_INIT(MCONFIG.in)
|
|
AC_PREFIX_DEFAULT(/usr)
|
|
|
|
AC_ISC_POSIX
|
|
AC_AIX
|
|
AC_MINIX
|
|
AC_PROG_CC
|
|
|
|
dnl
|
|
dnl Feature-test macros. These need to be set in CFLAGS, rather in
|
|
dnl aconfig.h, or "configure" will run in a different environment than
|
|
dnl we eventually we build in.
|
|
dnl
|
|
|
|
dnl Needed on Solaris/cc or Solaris/gcc
|
|
CFLAGS="$CFLAGS -D_XPG4_2"
|
|
CFLAGS="$CFLAGS -D_XOPEN_SOURCE"
|
|
CFLAGS="$CFLAGS -D__EXTENSIONS__"
|
|
|
|
dnl Needed on some glibc systems
|
|
CFLAGS="$CFLAGS -D_GNU_SOURCE"
|
|
|
|
dnl Needed on Digital Unix
|
|
CFLAGS="$CFLAGS -D_OSF_SOURCE"
|
|
CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED"
|
|
|
|
AC_C_CONST
|
|
AC_C_INLINE
|
|
|
|
PA_ADD_CFLAGS(-W)
|
|
PA_ADD_CFLAGS(-Wall)
|
|
PA_ADD_CFLAGS(-Wpointer-arith)
|
|
PA_ADD_CFLAGS(-Wbad-function-cast)
|
|
PA_ADD_CFLAGS(-Wcast-equal)
|
|
PA_ADD_CFLAGS(-Wstrict-prototypes)
|
|
PA_ADD_CFLAGS(-Wmissing-prototypes)
|
|
PA_ADD_CFLAGS(-Wmissing-declarations)
|
|
PA_ADD_CFLAGS(-Wnested-externs)
|
|
PA_ADD_CFLAGS(-Winline)
|
|
PA_ADD_CFLAGS(-Wwrite-strings)
|
|
PA_ADD_CFLAGS(-Wundef)
|
|
PA_ADD_CFLAGS(-Wshadow)
|
|
PA_ADD_CFLAGS(-Wsign-compare)
|
|
PA_ADD_CFLAGS(-pipe)
|
|
PA_ADD_CFLAGS(-fno-strict-aliasing)
|
|
|
|
AC_HEADER_STDC
|
|
AC_CHECK_HEADERS(inttypes.h)
|
|
AC_CHECK_HEADERS(stdint.h)
|
|
PA_CHECK_INTTYPES_H_SANE
|
|
AC_CHECK_HEADERS(fcntl.h)
|
|
AC_CHECK_HEADERS(getopt.h)
|
|
AC_CHECK_HEADERS(grp.h)
|
|
AC_CHECK_HEADERS(libgen.h)
|
|
AC_CHECK_HEADERS(memory.h)
|
|
AC_CHECK_HEADERS(setjmp.h)
|
|
AC_CHECK_HEADERS(stddef.h)
|
|
AC_CHECK_HEADERS(stdlib.h)
|
|
AC_CHECK_HEADERS(string.h)
|
|
AC_CHECK_HEADERS(strings.h)
|
|
AC_CHECK_HEADERS(sysexits.h)
|
|
AC_CHECK_HEADERS(time.h)
|
|
AC_CHECK_HEADERS(unistd.h)
|
|
AC_CHECK_HEADERS(sys/filio.h)
|
|
AC_CHECK_HEADERS(sys/stat.h)
|
|
AC_CHECK_HEADERS(sys/time.h)
|
|
AC_CHECK_HEADERS(sys/types.h)
|
|
AC_CHECK_HEADERS(arpa/inet.h)
|
|
AC_HEADER_TIME
|
|
dnl This is needed on some versions of FreeBSD...
|
|
AC_CHECK_HEADERS(machine/param.h)
|
|
AC_CHECK_HEADERS(sys/socket.h)
|
|
AC_CHECK_HEADERS(winsock2.h)
|
|
AC_CHECK_HEADERS(winsock.h)
|
|
|
|
AC_SYS_LARGEFILE
|
|
|
|
AC_TYPE_OFF_T
|
|
AC_TYPE_PID_T
|
|
AC_TYPE_MODE_T
|
|
AC_TYPE_SIZE_T
|
|
AC_CHECK_TYPES(intmax_t)
|
|
AC_CHECK_TYPES(long long)
|
|
AC_CHECK_TYPES(uint16_t)
|
|
AC_CHECK_TYPES(uint32_t)
|
|
AC_CHECK_TYPES(u_short)
|
|
AC_CHECK_TYPES(u_long)
|
|
|
|
dnl
|
|
dnl <sys/socket.h> isn't among the list of standard headers that autoconf checks,
|
|
dnl but POSIX requires <sys/socket.h> for socklen_t to be defined.
|
|
dnl
|
|
AC_CHECK_TYPES(socklen_t,,,
|
|
[
|
|
#include <stdio.h>
|
|
#if HAVE_SYS_TYPES_H
|
|
# include <sys/types.h>
|
|
#endif
|
|
#if HAVE_SYS_STAT_H
|
|
# include <sys/stat.h>
|
|
#endif
|
|
#if STDC_HEADERS
|
|
# include <stdlib.h>
|
|
# include <stddef.h>
|
|
#else
|
|
# if HAVE_STDLIB_H
|
|
# include <stdlib.h>
|
|
# endif
|
|
#endif
|
|
#if HAVE_STRING_H
|
|
# if !STDC_HEADERS && HAVE_MEMORY_H
|
|
# include <memory.h>
|
|
# endif
|
|
# include <string.h>
|
|
#endif
|
|
#if HAVE_STRINGS_H
|
|
# include <strings.h>
|
|
#endif
|
|
#if HAVE_INTTYPES_H
|
|
# include <inttypes.h>
|
|
#else
|
|
# if HAVE_STDINT_H
|
|
# include <stdint.h>
|
|
# endif
|
|
#endif
|
|
#if HAVE_UNISTD_H
|
|
# include <unistd.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
# include <sys/socket.h>
|
|
#endif
|
|
])
|
|
|
|
AC_SEARCH_LIBS(socket, [socket ws2_32 wsock32], , [AC_MSG_ERROR(socket library not found)])
|
|
AC_SEARCH_LIBS(gethostbyname, [nsl resolv], , [AC_MSG_ERROR(gethostbyname not found)])
|
|
AC_SEARCH_LIBS(inet_aton, [nsl resolv], , [AC_MSG_ERROR(inet_aton not found)])
|
|
AC_SEARCH_LIBS(herror, [nsl resolv], , [AC_MSG_ERROR(herror not found)])
|
|
|
|
AC_CHECK_FUNCS(fcntl)
|
|
AC_CHECK_FUNCS(setsid)
|
|
AC_CHECK_FUNCS(recvmsg)
|
|
AC_CHECK_FUNCS(ftruncate)
|
|
AC_CHECK_FUNCS(setreuid)
|
|
AC_CHECK_FUNCS(setregid)
|
|
AC_CHECK_FUNCS(initgroups)
|
|
AC_CHECK_FUNCS(setgroups)
|
|
|
|
dnl Solaris 8 has [u]intmax_t but not strtoumax(). How utterly braindamaged.
|
|
AC_CHECK_FUNCS(strtoumax)
|
|
AC_CHECK_FUNCS(strtoull)
|
|
|
|
PA_MSGHDR_MSG_CONTROL
|
|
PA_STRUCT_IN_PKTINFO
|
|
|
|
PA_HEADER_DEFINES(fcntl.h, int, O_NONBLOCK)
|
|
PA_HEADER_DEFINES(fcntl.h, int, O_BINARY)
|
|
PA_HEADER_DEFINES(fcntl.h, int, O_TEXT)
|
|
|
|
AH_TEMPLATE([HAVE_SIGSETJMP],
|
|
[Define if we have sigsetjmp, siglongjmp and sigjmp_buf.])
|
|
PA_SIGSETJMP([AC_DEFINE(HAVE_SIGSETJMP)])
|
|
|
|
dnl
|
|
dnl Get common paths
|
|
dnl
|
|
SRCROOT=`cd $srcdir && pwd`
|
|
OBJROOT=`pwd`
|
|
|
|
XTRA=false
|
|
AC_SEARCH_LIBS(xmalloc, iberty, , [XTRA=true; AC_LIBOBJ(xmalloc)])
|
|
AC_SEARCH_LIBS(xstrdup, iberty, , [XTRA=true; AC_LIBOBJ(xstrdup)])
|
|
AC_SEARCH_LIBS(bsd_signal, bsd, , [XTRA=true; AC_LIBOBJ(bsdsignal)])
|
|
AC_CHECK_FUNCS(daemon, , [XTRA=true; AC_LIBOBJ(daemon)])
|
|
AC_CHECK_FUNCS(dup2, , [XTRA=true; AC_LIBOBJ(dup2)])
|
|
if $XTRA
|
|
then
|
|
XTRALIBS="$OBJROOT/lib/libxtra.a $XTRALIBS"
|
|
fi
|
|
|
|
dnl
|
|
dnl These libraries apply to the server only
|
|
dnl
|
|
|
|
common_libs="$LIBS"
|
|
|
|
PA_HEADER_DEFINES(netinet/in.h, int, IPPORT_TFTP)
|
|
|
|
PA_WITH_BOOL(tcpwrappers, 1,
|
|
[ --without-tcpwrappers disable tcpwrapper permissions checking],
|
|
[
|
|
AC_SEARCH_LIBS(yp_get_default_domain, [nsl resolv])
|
|
PA_HAVE_TCPWRAPPERS
|
|
],:)
|
|
|
|
|
|
AH_TEMPLATE([WITH_REGEX],
|
|
[Define if we are compiling with regex filename remapping.])
|
|
|
|
PA_WITH_BOOL(remap, 1,
|
|
[ --without-remap disable regex-based filename remapping],
|
|
[
|
|
AC_CHECK_HEADER(regex.h,
|
|
[
|
|
AC_SEARCH_LIBS(regcomp, [regex rx],
|
|
[
|
|
AC_DEFINE(WITH_REGEX)
|
|
TFTPDOBJS="remap.${OBJEXT} $TFTPDOBJS"
|
|
])
|
|
])
|
|
],:)
|
|
|
|
TFTPD_LIBS="$LIBS $XTRALIBS"
|
|
LIBS="$common_libs"
|
|
|
|
dnl
|
|
dnl These libraries apply to the client only
|
|
dnl
|
|
|
|
AH_TEMPLATE([WITH_READLINE],
|
|
[Define if we are compiling with readline command-line editing.])
|
|
|
|
PA_WITH_BOOL(readline, 1,
|
|
[ --without-readline disable the use of readline command-line editing],
|
|
[
|
|
AC_CHECK_HEADER(readline/readline.h,
|
|
[
|
|
dnl readline may need libtermcap or somesuch...
|
|
AC_SEARCH_LIBS(tputs, [termcap terminfo])
|
|
|
|
AC_SEARCH_LIBS(readline, [readline history],
|
|
[
|
|
AC_DEFINE(WITH_READLINE)
|
|
],
|
|
[],
|
|
[-ltermcap])
|
|
AC_CHECK_HEADERS(readline/history.h)
|
|
])
|
|
],:)
|
|
|
|
TFTP_LIBS="$LIBS $XTRALIBS"
|
|
LIBS="$common_libs"
|
|
|
|
AC_SUBST(SRCROOT)
|
|
AC_SUBST(OBJROOT)
|
|
|
|
AC_SUBST(TFTP_LIBS)
|
|
AC_SUBST(TFTPD_LIBS)
|
|
AC_SUBST(TFTPDOBJS)
|
|
|
|
AC_PROG_LN_S
|
|
AC_PROG_RANLIB
|
|
|
|
dnl
|
|
dnl Make sure the install program has an absolute path if it
|
|
dnl has a path at all. autoconf doesn't do this "in order
|
|
dnl to not pollute the cache." Sigh.
|
|
dnl Note: the $ needs to be double-quoted for reasons unknown.
|
|
dnl
|
|
AC_PROG_INSTALL
|
|
[if echo "$INSTALL" | grep '^[^/].*/' > /dev/null 2>&1; then
|
|
INSTALL='\${SRCROOT}'/"$INSTALL"
|
|
fi]
|
|
|
|
AC_CONFIG_HEADERS(aconfig.h)
|
|
AC_OUTPUT(MCONFIG)
|