ppp/configure.ac
Richard Purdie c2881a6b71
pppd: Drop linux IPX support (#326)
The 5.15 Linux kernel has removed ipx support, along with the userspace
visible header. This support wasn't very well maintained in the kernel
for several years so drop the support from ppp as well since this won't
be usable in future.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-01-13 17:48:14 +11:00

416 lines
13 KiB
Plaintext

AC_PREREQ([2.69])
AC_INIT([ppp],
[2.4.10-dev],
[https://github.com/ppp-project/ppp])
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE
AM_MAINTAINER_MODE([enable])
AC_LANG(C)
AC_CONFIG_SRCDIR([pppd/main.c])
AC_CONFIG_HEADERS([pppd/config.h pppd/pppdconf.h])
# Checks for programs.
AC_PROG_CC
AM_PROG_CC_C_O
AC_PROG_INSTALL
AC_PROG_LIBTOOL
AC_PROG_LN_S
PKG_PROG_PKG_CONFIG
AC_CANONICAL_HOST
build_linux=no
build_sunos=no
case "${host_os}" in
linux*)
build_linux=yes
;;
solaris2*)
build_sunos=yes
;;
*)
AC_MSG_ERROR(["OS ${host_os} not supported"])
;;
esac
AM_CONDITIONAL([LINUX], [test "${build_linux}" = "yes" ])
AM_CONDITIONAL([SUNOS], [test "${build_sunos}" = "yes" ])
AM_COND_IF([SUNOS],
CFLAGS="$CFLAGS -DSOL2 -DSRV4")
#
# Checks for header files, these will set the HAVE_[FILE]_H macros in config.h
AC_HEADER_STDBOOL
AC_CHECK_HEADERS([ \
asm/types.h \
crypt.h \
paths.h \
shadow.h \
sys/dlpi.h \
sys/ioctl.h \
sys/socket.h \
sys/time.h \
sys/uio.h \
time.h \
unistd.h \
utmp.h])
#
# Check for linux specific headers, required by pppoe, or pppol2tp
AM_COND_IF([LINUX], [
AC_CHECK_HEADERS([ \
net/bpf.h \
net/if.h \
net/if_types.h \
net/if_arp.h \
linux/if.h \
linux/if_ether.h \
linux/if_packet.h \
netinet/if_ether.h \
netpacket/packet.h])])
AC_CHECK_SIZEOF(unsigned int)
AC_CHECK_SIZEOF(unsigned long)
AC_CHECK_SIZEOF(unsigned short)
# Checks for library functions.
AC_CHECK_FUNCS([ \
mmap \
logwtmp \
strerror])
#
# If libc doesn't provide logwtmp, check if libutil provides logwtmp(), and if so link to it.
AS_IF([test "x${ac_cv_func_logwtmp}" != "xyes"], [
AC_CHECK_LIB([util], [logwtmp], [
AC_DEFINE(HAVE_LOGWTMP, 1, ["System provides the logwtmp() function"])
AC_SUBST([UTIL_LIBS], ["-lutil"])
])
])
#
# Check if libcrypt have crypt() function
AC_CHECK_LIB([crypt], [crypt],
AC_SUBST([CRYPT_LIBS], ["-lcrypt"]))
#
# Should pppd link with -lsystemd (Linux only)
AC_ARG_ENABLE([systemd],
AS_HELP_STRING([--enable-systemd], [Enable support for systemd notification]))
AM_CONDITIONAL(WITH_SYSTEMD, test "x${enable_systemd}" = "xyes")
AM_COND_IF([WITH_SYSTEMD],
AC_DEFINE([SYSTEMD], 1, [Enable support for systemd notifications]))
#
# Enable Callback Protocol Support, disabled by default
AC_ARG_ENABLE([cbcp],
AS_HELP_STRING([--enable-cbcp], [Enable Callback Protocol]))
AM_CONDITIONAL(WITH_CBCP, test "x${enable_cbcp}" = "xyes")
AM_COND_IF([WITH_CBCP],
AC_DEFINE([CBCP_SUPPORT], 1, [Have Callback Protocol support]))
#
# Disable support for limiting session duration by maximum octets
AC_ARG_ENABLE([maxoctets],
AS_HELP_STRING([--disable-maxoctets], [Disable support for limiting session by maximum octets]))
AS_IF([test "x$enable_maxoctets" != "xno"],
AC_DEFINE([MAXOCTETS], 1, ["Limit sessions by maximum number of octets"]))
#
# Disable Microsoft extensions will remove CHAP and MPPE support
AC_ARG_ENABLE([microsoft-extensions],
AS_HELP_STRING([--disable-microsoft-extensions], [Disable Microsoft CHAP / MPPE extensions]))
AM_CONDITIONAL(WITH_CHAPMS, test "x${enable_microsoft_extensions}" != "xno")
AM_COND_IF([WITH_CHAPMS],
AC_DEFINE([CHAPMS], 1, ["Have Microsoft CHAP support"]))
AM_CONDITIONAL(WITH_MPPE, test "x${enable_microsoft_extensions}" != "xno")
AM_COND_IF([WITH_MPPE],
AC_DEFINE([MPPE], 1, ["Have Microsoft MPPE support"]))
#
# Enable Microsoft LAN Manager support, depends on Microsoft Extensions
AC_ARG_ENABLE([mslanman],
AS_HELP_STRING([--enable-mslanman], [Enable Microsoft LAN Manager support]))
AS_IF([test "x${enable_mslanman}" = "xyes" && test "x${enable_microsoft_extensions}" != "xno"],
AC_DEFINE([MSLANMAN], 1, ["Have Microsoft LAN Manager support"]))
#
# Disable IPv6 support
AC_ARG_ENABLE([ipv6-support],
AS_HELP_STRING([--disable-ipv6-support], [Disable IPv6 support]))
AM_CONDITIONAL(WITH_INET6, test "x${enable_ipv6_support}" != "xno")
AM_COND_IF([WITH_INET6],
AC_DEFINE(INET6, 1, ["Have IPv6 support"]))
#
# Disable Multilink support
AC_ARG_ENABLE([multilink],
AS_HELP_STRING([--enable-multilink], [Enable multilink support]))
AM_CONDITIONAL(WITH_MULTILINK, test "x${enable_multilink}" = "xyes")
AM_COND_IF([WITH_MULTILINK],
AC_DEFINE([HAVE_MULTILINK], 1, ["Have multilink support"]))
AS_IF([test "x${build_sunos}" = "xyes" && test "x${enable_multilink}" = "xyes"],
[AC_MSG_ERROR([Multilink is not supported on SunOS])])
#
# Multilink require Trivial Database Support
AM_CONDITIONAL(WITH_TDB, test "x${enable_multilink}" = "xyes")
AM_COND_IF([WITH_TDB],
AC_DEFINE([USE_TDB], 1, ["Include TDB support"]))
#
# Enable support for loadable plugins
AC_ARG_ENABLE([plugins],
AS_HELP_STRING([--disable-plugins], [Disable support for loadable plugins]))
AS_IF([test "x$enable_plugins" != "xno"],
AC_DEFINE([PLUGIN], 1, ["Have support for loadable plugins"]))
AM_CONDITIONAL(WITH_PLUGINS, test "${enable_plugins}" != "no")
#
# Disable EAP-TLS support
AC_ARG_ENABLE([eaptls],
AS_HELP_STRING([--disable-eaptls], [Disable EAP-TLS authentication support]))
AS_IF([test "x$enable_eaptls" != "xno"],
AC_DEFINE([USE_EAPTLS], 1, ["Have EAP-TLS authentication support"]))
AM_CONDITIONAL(WITH_EAPTLS, test "x${enable_eaptls}" != "xno")
#
# Disable PEAP support
AC_ARG_ENABLE([peap],
AS_HELP_STRING([--disable-peap], [Disable PEAP authentication support]))
AS_IF([test "x${enable_peap}" != "xno"],
AC_DEFINE([USE_PEAP], 1, ["Have PEAP authentication support"]))
AM_CONDITIONAL([WITH_PEAP], test "x${enable_peap}" != "xno")
#
# Disable OpenSSL engine support
AC_ARG_ENABLE([openssl-engine],
AS_HELP_STRING([--disable-openssl-engine], [Disable OpenSSL engine support]))
AS_IF([test "x$enable_openssl_engine" != "xno"], [],
AC_DEFINE([OPENSSL_NO_ENGINE], 1, ["OpenSSL engine support"]))
#
# Specify runtime directory
AC_ARG_WITH([plugin-dir],
AC_HELP_STRING([--with-plugin-dir=DIR], [Specify the plugin directory for pppd]))
AS_IF([test -n "$with_plugin_dir"],
[PPPD_PLUGIN_DIR="$with_plugin_dir"],
[PPPD_PLUGIN_DIR="${libdir}/pppd/$VERSION"])
AC_SUBST(PPPD_PLUGIN_DIR, "$PPPD_PLUGIN_DIR", [The pppd plugin directory])
#
# Specify runtime directory
AC_ARG_WITH([runtime-dir],
AC_HELP_STRING([--with-runtime-dir=DIR], [Specify the runtime directory for pppd]))
AS_IF([test -n "$with_runtime_dir"],
[PPPD_RUNTIME_DIR="$with_runtime_dir"],
[PPPD_RUNTIME_DIR="${localstatedir}/run/pppd"])
AC_SUBST(PPPD_RUNTIME_DIR)
#
# Specify runtime directory
AC_ARG_WITH([logfile-dir],
AC_HELP_STRING([--with-logfile-dir=DIR], [Specify the log directory for pppd]))
AS_IF([test -n "$with_logfile_dir"],
[PPPD_LOGFILE_DIR="$with_logfile_dir"],
[PPPD_LOGFILE_DIR="${localstatedir}/log/pppd"])
AC_SUBST(PPPD_LOGFILE_DIR)
#
# Check for OpenSSL
AX_CHECK_OPENSSL
AM_CONDITIONAL(WITH_OPENSSL, test "${with_openssl}" != "no")
#
# Check if OpenSSL has compiled in support for various ciphers
AS_IF([test "x${with_openssl}" != "xno" ], [
AX_CHECK_OPENSSL_DEFINE([OPENSSL_NO_MD4], [md4])
AX_CHECK_OPENSSL_DEFINE([OPENSSL_NO_MD5], [md5])
AX_CHECK_OPENSSL_DEFINE([OPENSSL_NO_DES], [des])
AX_CHECK_OPENSSL_DEFINE([OPENSSL_NO_SHA], [sha])
], [
AS_IF([test "x${enable_eaptls}" != "xno" || test "x${enable_peap}" != "xno"],
[AC_MSG_ERROR([OpenSSL not found, and if this is your intention then run configure --disable-eaptls and --disable-peap])])
])
AM_CONDITIONAL([OPENSSL_HAVE_MD4], test "x${ac_cv_openssl_md4}" = "xyes")
AM_COND_IF([OPENSSL_HAVE_MD4],,
AC_DEFINE([USE_MD4], 1, [Use included md4 included with pppd]))
AM_CONDITIONAL([OPENSSL_HAVE_MD5], test "x${ac_cv_openssl_md5}" = "xyes")
AM_COND_IF([OPENSSL_HAVE_MD5],,
AC_DEFINE([USE_MD5], 1, [Use included md5 included with pppd]))
AM_CONDITIONAL([OPENSSL_HAVE_SHA], test "x${ac_cv_openssl_sha}" = "xyes")
AM_COND_IF([OPENSSL_HAVE_SHA],,
AC_DEFINE([USE_SHA], 1, [Use included sha included with pppd]))
AM_CONDITIONAL([OPENSSL_HAVE_DES], test "x${ac_cv_openssl_des}" = "xyes")
AM_COND_IF([OPENSSL_HAVE_DES],,
AC_DEFINE([USE_CRYPT], 1, [Use included des included with pppd]))
#
# If OpenSSL doesn't support DES, then use the one from libcrypt (glibc dropped support for this in 2.27).
AS_IF([test "${ac_cv_openssl_des}" = "no" ], [
AC_CHECK_LIB([crypt], [encrypt],
[LIBS="$LIBS -lcrypt"],
[AC_MSG_ERROR([OpenSSL not found or does not support DES, and libcrypt also doesn't support encrypt])]
)
])
#
# With libsrp support
AX_CHECK_SRP
#
# With libatm support
AX_CHECK_ATM
#
# With libpam support
AX_CHECK_PAM(AC_DEFINE([USE_PAM], 1, ["Support for Pluggable Authentication Modules"]))
AM_CONDITIONAL(WITH_PAM, test "x${with_pam}" = "xyes")
#
# With libpcap support, activate pppd on network activity
AX_CHECK_PCAP
#
# SunOS provides a version of libpcap that would work, but SunOS has no support for activity filter
AM_CONDITIONAL([WITH_FILTER], [ test "x${with_pcap}" = "xyes" && test "x${build_sunos}" != "xyes" ])
AM_COND_IF([WITH_FILTER], [
AC_DEFINE([PPP_FILTER], 1, ["Have packet activity filter support"])], [
AS_IF([test "x${build_sunos}" = "xyes"], [
AC_MSG_WARN([Packet activity filter not supported on SunOS])
with_pcap="no"
])
])
#
# Some contributions require GTK/GLIB
AC_ARG_WITH([gtk], AS_HELP_STRING([--with-gtk], [Build contributions with the GTK+ interface]))
if test "x${with_gtk}" = "xyes"; then
PKG_CHECK_MODULES([GTK], [gtk+-2.0])
PKG_CHECK_MODULES([GLIB], [glib-2.0])
fi
AM_CONDITIONAL([WITH_GTK], test "x${with_gtk}" = "xyes")
AC_CONFIG_FILES([
Makefile
chat/Makefile
contrib/Makefile
contrib/pppgetpass/Makefile
common/Makefile
include/Makefile
modules/Makefile
pppd/Makefile
pppd/pppd.pc
pppd/plugins/Makefile
pppd/plugins/pppoe/Makefile
pppd/plugins/pppoatm/Makefile
pppd/plugins/pppol2tp/Makefile
pppd/plugins/radius/Makefile
pppdump/Makefile
pppstats/Makefile
scripts/Makefile
])
AC_OUTPUT
AS_IF([test "x${build_sunos}" = "xyes" ], [[
echo "
Setting up SunOS kernel module(s)"
mkmkf() {
rm -f $2
if [ -f $1 ]; then
echo " $2 <= $1"
sed -e "s,@DESTDIR@,$prefix,g" \
-e "s,@SYSCONF@,$sysconfdir,g" \
-e "s,@CC@,$CC,g" \
-e "s|@CFLAGS@|$CFLAGS|g" $1 > $2
fi
}
release=`uname -r`
karch=`/usr/bin/isainfo -k`
makext="sol2"
archvariant=
case "$karch" in
amd64)
archvariant='-64x'
;;
sparcv9)
archvariant='-64'
;;
*)
;;
esac
usegcc=$CC
if [ -x /opt/SUNWspro/bin/cc -a "$usegcc" != gcc ] &&
/opt/SUNWspro/bin/cc -flags >/dev/null 2>&1; then
if [ "$archvariant" = "-64x" ]; then
( cd /tmp; echo "int x;" > ppp$$.c
/opt/SUNWspro/bin/cc -c -errwarn -xchip=opteron -m64 ppp$$.c >/dev/null 2>&1 || (
echo "WorkShop C is unable to make 64 bit modules, and your $karch system needs"
echo "them. Consider upgrading cc on this machine."
rm -f ppp$$.c
exit 1
) || exit 1
rm -f ppp$$.c ppp$$.o
) || exit 1
fi
elif gcc --version >/dev/null 2>&1; then
archvariant=gcc$archvariant
compiletype=.gcc
if [ "$archvariant" = "gcc-64" -o"$archvariant" = "gcc-64x" ]; then
( cd /tmp; touch ppp$$.c
gcc -c -m64 ppp$$.c >/dev/null 2>&1 || (
echo "gcc is unable to make 64 bit modules, and your $karch system needs them."
echo "Consider upgrading gcc on this machine, or switching to Sun WorkShop."
rm -f ppp$$.c
exit 1
) || exit 1
rm -f ppp$$.c ppp$$.o
) || exit 1
fi
else
echo "C compiler not found; hoping for the best."
fi
mkmkf solaris/Makedefs$compiletype Makedefs.com
mkmkf solaris/Makefile.sol2$archvariant solaris/Makefile
]])
echo "
$PACKAGE_NAME version $PACKAGE_VERSION
Prefix...............: $prefix
Runtime Dir..........: $PPPD_RUNTIME_DIR
Logfile Dir..........: $PPPD_LOGFILE_DIR
Plugin Dir...........: $PPPD_PLUGIN_DIR
With OpenSSL.........: ${with_openssl:-yes}
With libatm..........: ${with_atm:-no}
With libpam..........: ${with_pam:-no}
With libpcap.........: ${with_pcap:-no}
With libsrp..........: ${with_srp:-no}
C Compiler...........: $CC $CFLAGS
Linker...............: $LD $LDFLAGS $LIBS
Features enabled
Microsoft Extensions.: ${enable_microsoft_extensions:-yes}
Multilink............: ${enable_multilink:-no}
Plugins..............: ${enable_plugins:-yes}
CBCP.................: ${enable_cbcp:-no}
EAP-TLS..............: ${enable_eaptls:-yes}
PEAP.................: ${enable_peap:-yes}
"