1 AC_PREREQ([2.69]) 2 AC_INIT([ppp], 3 [2.5.2], 4 [https://github.com/ppp-project/ppp]) 5 6 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) 7 AC_CONFIG_MACRO_DIR([m4]) 8 9 AM_INIT_AUTOMAKE 10 AM_MAINTAINER_MODE([enable]) 11 12 AC_LANG(C) 13 AC_CONFIG_SRCDIR([pppd/main.c]) 14 AC_CONFIG_HEADERS([pppd/config.h pppd/pppdconf.h pppd/plugins/pppoe/config.h]) 15 AC_ENABLE_STATIC(no) 16 17 # Checks for programs. 18 AC_PROG_CC 19 AM_PROG_CC_C_O 20 AC_PROG_INSTALL 21 AC_PROG_LN_S 22 LT_INIT 23 24 PKG_PROG_PKG_CONFIG 25 26 AC_CANONICAL_HOST 27 build_linux=no 28 build_sunos=no 29 30 case "${host_os}" in 31 linux*) 32 build_linux=yes 33 ;; 34 solaris2*) 35 build_sunos=yes 36 ;; 37 netbsd*) 38 build_netbsd=yes 39 ;; 40 *) 41 AC_MSG_ERROR(["OS ${host_os} not supported"]) 42 ;; 43 esac 44 45 AM_CONDITIONAL([LINUX], [test "x${build_linux}" = "xyes" ]) 46 AM_CONDITIONAL([SUNOS], [test "x${build_sunos}" = "xyes" ]) 47 AM_CONDITIONAL([NETBSD], [test "x${build_netbsd}" = "xyes" ]) 48 AM_COND_IF([SUNOS], 49 CFLAGS="$CFLAGS -DSOL2 -DSRV4") 50 51 # 52 # Checks for header files, these will set the HAVE_[FILE]_H macros in config.h 53 AC_HEADER_STDBOOL 54 AC_CHECK_HEADERS([ \ 55 asm/types.h \ 56 crypt.h \ 57 paths.h \ 58 shadow.h \ 59 stddef.h \ 60 stdarg.h \ 61 sys/dlpi.h \ 62 sys/ioctl.h \ 63 sys/socket.h \ 64 sys/time.h \ 65 sys/uio.h \ 66 time.h \ 67 unistd.h \ 68 utmp.h]) 69 70 # 71 # Check for linux specific headers, required by pppoe, or pppol2tp 72 AM_COND_IF([LINUX], [ 73 AC_CHECK_HEADERS([ \ 74 net/bpf.h \ 75 net/if.h \ 76 net/if_types.h \ 77 net/if_arp.h \ 78 linux/if.h \ 79 linux/if_ether.h \ 80 linux/if_packet.h \ 81 netinet/if_ether.h \ 82 netpacket/packet.h]) 83 84 AC_MSG_CHECKING([for struct sockaddr_ll in <linux/if_packet.h>]) 85 AC_COMPILE_IFELSE( 86 [AC_LANG_PROGRAM([@%:@include <linux/if_packet.h>], [sizeof(struct sockaddr_ll)])], 87 [AC_MSG_RESULT([yes]) 88 AC_DEFINE(HAVE_STRUCT_SOCKADDR_LL, 1, [Struct sockaddr_ll is present on system]) 89 ], 90 AC_MSG_RESULT([no])) 91 ]) 92 93 94 AC_CHECK_SIZEOF(unsigned int) 95 AC_CHECK_SIZEOF(unsigned long) 96 AC_CHECK_SIZEOF(unsigned short) 97 98 # Checks for library functions. 99 AC_CHECK_FUNCS([ \ 100 mmap \ 101 logwtmp \ 102 strerror]) 103 104 # 105 # If libc doesn't provide logwtmp, check if libutil provides logwtmp(), and if so link to it. 106 AS_IF([test "x${ac_cv_func_logwtmp}" != "xyes"], [ 107 AC_CHECK_LIB([util], [logwtmp], [ 108 AC_DEFINE(HAVE_LOGWTMP, 1, [System provides the logwtmp() function]) 109 AC_SUBST([UTIL_LIBS], ["-lutil"]) 110 ]) 111 ]) 112 113 # 114 # Check if libcrypt have crypt() function 115 AC_CHECK_LIB([crypt], [crypt], 116 AC_SUBST([CRYPT_LIBS], ["-lcrypt"])) 117 118 # 119 # Should pppd link with -lsystemd (Linux only) 120 AC_ARG_ENABLE([systemd], 121 AS_HELP_STRING([--enable-systemd], [Enable support for systemd notification])) 122 AM_CONDITIONAL(WITH_SYSTEMD, test "x${enable_systemd}" = "xyes") 123 AM_COND_IF([WITH_SYSTEMD], 124 AC_DEFINE([SYSTEMD], 1, [Enable support for systemd notifications])) 125 AS_IF([test "x${enable_systemd}" = "xyes"], [ 126 PKG_CHECK_MODULES([SYSTEMD], [libsystemd])]) 127 128 # 129 # Enable Callback Protocol Support, disabled by default 130 AC_ARG_ENABLE([cbcp], 131 AS_HELP_STRING([--enable-cbcp], [Enable Callback Protocol])) 132 AM_CONDITIONAL(PPP_WITH_CBCP, test "x${enable_cbcp}" = "xyes") 133 AM_COND_IF([PPP_WITH_CBCP], 134 AC_DEFINE([PPP_WITH_CBCP], 1, [Have Callback Protocol support])) 135 136 # 137 # Disable Microsoft extensions will remove CHAP, MPPE and PEAP support 138 AC_ARG_ENABLE([microsoft-extensions], 139 AS_HELP_STRING([--disable-microsoft-extensions], [Disable Microsoft CHAP / MPPE / PEAP extensions])) 140 141 AM_CONDITIONAL(PPP_WITH_CHAPMS, test "x${enable_microsoft_extensions}" != "xno") 142 AM_COND_IF([PPP_WITH_CHAPMS], 143 AC_DEFINE([PPP_WITH_CHAPMS], 1, [Have Microsoft CHAP support])) 144 145 AM_CONDITIONAL(PPP_WITH_MPPE, test "x${build_sunos}" != "xyes" && test "x${enable_microsoft_extensions}" != "xno") 146 AM_COND_IF([PPP_WITH_MPPE], 147 AC_DEFINE([PPP_WITH_MPPE], 1, [Have Microsoft MPPE support])) 148 149 # 150 # Enable Microsoft LAN Manager support, depends on Microsoft Extensions 151 AC_ARG_ENABLE([mslanman], 152 AS_HELP_STRING([--enable-mslanman], [Enable Microsoft LAN Manager support])) 153 AS_IF([test "x${enable_mslanman}" = "xyes" && test "x${enable_microsoft_extensions}" != "xno"], 154 AC_DEFINE([PPP_WITH_MSLANMAN], 1, [Have Microsoft LAN Manager support])) 155 156 # 157 # Disable IPv6 support 158 AC_ARG_ENABLE([ipv6cp], 159 AS_HELP_STRING([--disable-ipv6cp], [Disable IPv6 Control Protocol])) 160 AM_CONDITIONAL(PPP_WITH_IPV6CP, test "x${enable_ipv6cp}" != "xno") 161 AM_COND_IF([PPP_WITH_IPV6CP], 162 AC_DEFINE(PPP_WITH_IPV6CP, 1, [Have IPv6 Control Protocol])) 163 164 # 165 # Disable Multilink support 166 AC_ARG_ENABLE([multilink], 167 AS_HELP_STRING([--enable-multilink], [Enable multilink support])) 168 AM_CONDITIONAL(PPP_WITH_MULTILINK, test "x${enable_multilink}" = "xyes") 169 AM_COND_IF([PPP_WITH_MULTILINK], 170 AC_DEFINE([PPP_WITH_MULTILINK], 1, [Have multilink support])) 171 AS_IF([test "x${build_sunos}" = "xyes" && test "x${enable_multilink}" = "xyes"], 172 [AC_MSG_ERROR([Multilink is not supported on SunOS])]) 173 174 # 175 # Multilink require Trivial Database Support 176 AM_CONDITIONAL(PPP_WITH_TDB, test "x${enable_multilink}" = "xyes") 177 AM_COND_IF([PPP_WITH_TDB], 178 AC_DEFINE([PPP_WITH_TDB], 1, [Include TDB support])) 179 180 # 181 # Enable support for loadable plugins 182 AC_ARG_ENABLE([plugins], 183 AS_HELP_STRING([--disable-plugins], [Disable support for loadable plugins])) 184 AS_IF([test "x$enable_plugins" != "xno"], 185 AC_DEFINE([PPP_WITH_PLUGINS], 1, [Have support for loadable plugins])) 186 AM_CONDITIONAL(PPP_WITH_PLUGINS, test "x${enable_plugins}" != "xno") 187 188 # 189 # Disable EAP-TLS support 190 AC_ARG_ENABLE([eaptls], 191 AS_HELP_STRING([--disable-eaptls], [Disable EAP-TLS authentication support])) 192 AS_IF([test "x$enable_eaptls" != "xno"], 193 AC_DEFINE([PPP_WITH_EAPTLS], 1, [Have EAP-TLS authentication support])) 194 AM_CONDITIONAL(PPP_WITH_EAPTLS, test "x${enable_eaptls}" != "xno") 195 196 # 197 # Disable PEAP support 198 AC_ARG_ENABLE([peap], 199 AS_HELP_STRING([--disable-peap], [Disable PEAP authentication support])) 200 AS_IF([test "x${enable_peap}" != "xno" && test "x${enable_microsoft_extensions}" != "xno"], 201 AC_DEFINE([PPP_WITH_PEAP], 1, [Have PEAP authentication support])) 202 AM_CONDITIONAL([PPP_WITH_PEAP], test "x${enable_peap}" != "xno" && test "x${enable_microsoft_extensions}" != "xno") 203 204 # 205 # Disable OpenSSL engine support 206 AC_ARG_ENABLE([openssl-engine], 207 AS_HELP_STRING([--disable-openssl-engine], [Disable OpenSSL engine support])) 208 AS_IF([test "x$enable_openssl_engine" != "xno"], [], 209 AC_DEFINE([OPENSSL_NO_ENGINE], 1, [OpenSSL engine support])) 210 211 # 212 # Specify runtime directory 213 AC_ARG_WITH([plugin-dir], 214 AS_HELP_STRING([--with-plugin-dir=DIR],[Specify the plugin directory for pppd])) 215 AS_IF([test -n "$with_plugin_dir"], 216 [PPPD_PLUGIN_DIR="$with_plugin_dir"], 217 [PPPD_PLUGIN_DIR="${libdir}/pppd/$VERSION"]) 218 AC_SUBST(PPPD_PLUGIN_DIR, "$PPPD_PLUGIN_DIR", [The pppd plugin directory]) 219 220 # 221 # Specify runtime directory 222 AC_ARG_WITH([runtime-dir], 223 AS_HELP_STRING([--with-runtime-dir=DIR],[Specify the runtime directory for pppd])) 224 AS_IF([test -n "$with_runtime_dir"], 225 [PPPD_RUNTIME_DIR="$with_runtime_dir"], 226 [PPPD_RUNTIME_DIR="${runstatedir}/pppd"]) 227 AC_SUBST(PPPD_RUNTIME_DIR) 228 229 # 230 # Specify runtime directory 231 AC_ARG_WITH([logfile-dir], 232 AS_HELP_STRING([--with-logfile-dir=DIR],[Specify the log directory for pppd])) 233 AS_IF([test -n "$with_logfile_dir"], 234 [PPPD_LOGFILE_DIR="$with_logfile_dir"], 235 [PPPD_LOGFILE_DIR="${localstatedir}/log/ppp"]) 236 AC_SUBST(PPPD_LOGFILE_DIR) 237 238 # 239 # System CA certificates path 240 AC_ARG_WITH(system-ca-path, 241 AS_HELP_STRING([--with-system-ca-path=/path/to/ssl/certs], [path to system CA certificates]), 242 [ 243 case "$withval" in 244 "" | y | ye | yes) 245 with_system_ca_path="${sysconfdir}/ssl/certs" 246 ;; 247 n | no) 248 ;; 249 *) 250 with_system_ca_path="$withval" 251 ;; 252 esac 253 ],[with_system_ca_path="${sysconfdir}/ssl/certs"]) 254 AM_CONDITIONAL(PPP_WITH_SYSTEM_CA_PATH, [test "$with_system_ca_path" != "no"]) 255 AM_COND_IF(PPP_WITH_SYSTEM_CA_PATH, [ 256 SYSTEM_CA_PATH="$with_system_ca_path" 257 ]) 258 AC_SUBST(SYSTEM_CA_PATH) 259 260 # 261 # Check for OpenSSL 262 AX_CHECK_OPENSSL 263 AM_CONDITIONAL(PPP_WITH_OPENSSL, test "x${with_openssl}" != "xno") 264 AM_COND_IF([PPP_WITH_OPENSSL], 265 AC_DEFINE([PPP_WITH_OPENSSL], 1, [PPP is compiled with openssl support])) 266 267 # 268 # Check if OpenSSL has compiled in support for various ciphers 269 AS_IF([test "x${with_openssl}" != "xno" ], [ 270 AX_CHECK_OPENSSL_DEFINE([OPENSSL_NO_MD4], [md4]) 271 AX_CHECK_OPENSSL_DEFINE([OPENSSL_NO_MD5], [md5]) 272 AX_CHECK_OPENSSL_DEFINE([OPENSSL_NO_DES], [des]) 273 AX_CHECK_OPENSSL_DEFINE([OPENSSL_NO_SHA], [sha]) 274 ], [ 275 AS_IF([test "x${enable_eaptls}" != "xno" || test "x${enable_peap}" != "xno"], 276 [AC_MSG_ERROR([OpenSSL not found, and if this is your intention then run configure --disable-eaptls and --disable-peap])]) 277 ]) 278 279 AM_CONDITIONAL([OPENSSL_HAVE_MD4], test "x${ac_cv_openssl_md4}" = "xyes") 280 AM_COND_IF([OPENSSL_HAVE_MD4], 281 AC_DEFINE([OPENSSL_HAVE_MD4], 1, [Use MD4 included with openssl])) 282 283 AM_CONDITIONAL([OPENSSL_HAVE_MD5], test "x${ac_cv_openssl_md5}" = "xyes") 284 AM_COND_IF([OPENSSL_HAVE_MD5], 285 AC_DEFINE([OPENSSL_HAVE_MD5], 1, [Use MD5 included with openssl])) 286 287 AM_CONDITIONAL([OPENSSL_HAVE_SHA], test "x${ac_cv_openssl_sha}" = "xyes") 288 AM_COND_IF([OPENSSL_HAVE_SHA], 289 AC_DEFINE([OPENSSL_HAVE_SHA], 1, [Use SHA included with openssl])) 290 291 AM_CONDITIONAL([OPENSSL_HAVE_DES], test "x${ac_cv_openssl_des}" = "xyes") 292 AM_COND_IF([OPENSSL_HAVE_DES], 293 AC_DEFINE([OPENSSL_HAVE_DES], 1, [Use DES included with openssl])) 294 295 # 296 # With libsrp support 297 AX_CHECK_SRP([ 298 AC_DEFINE([PPP_WITH_SRP], 1, [Support for libsrp authentication module])]) 299 300 # 301 # With libatm support 302 AX_CHECK_ATM 303 304 # 305 # With libpam support 306 AX_CHECK_PAM(AC_DEFINE([PPP_WITH_PAM], 1, [Support for Pluggable Authentication Modules])) 307 AM_CONDITIONAL(PPP_WITH_PAM, test "x${with_pam}" = "xyes") 308 309 # 310 # With libpcap support, activate pppd on network activity 311 AX_CHECK_PCAP 312 313 # 314 # SunOS provides a version of libpcap that would work, but SunOS has no support for activity filter 315 AM_CONDITIONAL([PPP_WITH_FILTER], [ test "x${with_pcap}" = "xyes" && test "x${build_sunos}" != "xyes" ]) 316 AM_COND_IF([PPP_WITH_FILTER], [ 317 AC_DEFINE([PPP_WITH_FILTER], 1, [Have packet activity filter support])], [ 318 AS_IF([test "x${build_sunos}" = "xyes"], [ 319 AC_MSG_WARN([Packet activity filter not supported on SunOS]) 320 with_pcap="no" 321 ]) 322 ]) 323 324 AC_DEFINE_UNQUOTED(PPPD_VERSION, "$VERSION", [Version of pppd]) 325 326 AC_CONFIG_FILES([ 327 Makefile 328 chat/Makefile 329 include/Makefile 330 pppd/Makefile 331 pppd/pppd.pc 332 pppd/plugins/Makefile 333 pppd/plugins/pppoe/Makefile 334 pppd/plugins/pppoatm/Makefile 335 pppd/plugins/pppol2tp/Makefile 336 pppd/plugins/radius/Makefile 337 pppdump/Makefile 338 pppstats/Makefile 339 scripts/Makefile 340 ]) 341 AC_OUTPUT 342 343 344 echo " 345 $PACKAGE_NAME version $PACKAGE_VERSION 346 Prefix...............: $prefix 347 Runtime Dir..........: $PPPD_RUNTIME_DIR 348 Logfile Dir..........: $PPPD_LOGFILE_DIR 349 Plugin Dir...........: $PPPD_PLUGIN_DIR 350 System CA Path ......: ${SYSTEM_CA_PATH:-not set} 351 With OpenSSL.........: ${with_openssl:-yes} 352 With libatm..........: ${with_atm:-no} 353 With libpam..........: ${with_pam:-no} 354 With libpcap.........: ${with_pcap:-no} 355 With libsrp..........: ${with_srp:-no} 356 C Compiler...........: $CC $CFLAGS 357 Linker...............: $LD $LDFLAGS $LIBS 358 359 Features enabled 360 Microsoft Extensions.: ${enable_microsoft_extensions:-yes} 361 Multilink............: ${enable_multilink:-no} 362 Plugins..............: ${enable_plugins:-yes} 363 CBCP.................: ${enable_cbcp:-no} 364 IPV6CP...............: ${enable_ipv6cp:-yes} 365 EAP-TLS..............: ${enable_eaptls:-yes} 366 systemd notifications: ${enable_systemd:-no} 367 " 368