summaryrefslogtreecommitdiff
path: root/configure.ac
blob: 7ee06d3b513a9a1d539033b3bd6ed26a0633c5c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
AC_PREREQ([2.69])
AC_INIT([ppp],
        [2.5.1-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 pppd/plugins/pppoe/config.h])
AC_ENABLE_STATIC(no)

# Checks for programs.
AC_PROG_CC
AM_PROG_CC_C_O
AC_PROG_INSTALL
AC_PROG_LN_S
LT_INIT

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 "x${build_linux}" = "xyes" ])
AM_CONDITIONAL([SUNOS], [test "x${build_sunos}" = "xyes" ])
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        \
    stddef.h        \
    stdarg.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_TYPES([struct sockaddr_ll], [], [], [#include <linux/if_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]))
AS_IF([test "x${enable_systemd}" = "xyes"], [
	PKG_CHECK_MODULES([SYSTEMD], [libsystemd])])

#
# Enable Callback Protocol Support, disabled by default
AC_ARG_ENABLE([cbcp],
    AS_HELP_STRING([--enable-cbcp], [Enable Callback Protocol]))
AM_CONDITIONAL(PPP_WITH_CBCP, test "x${enable_cbcp}" = "xyes")
AM_COND_IF([PPP_WITH_CBCP],
    AC_DEFINE([PPP_WITH_CBCP], 1, [Have Callback Protocol support]))

#
# 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(PPP_WITH_CHAPMS, test "x${enable_microsoft_extensions}" != "xno")
AM_COND_IF([PPP_WITH_CHAPMS],
    AC_DEFINE([PPP_WITH_CHAPMS], 1, [Have Microsoft CHAP support]))

AM_CONDITIONAL(PPP_WITH_MPPE, test "x${enable_microsoft_extensions}" != "xno")
AM_COND_IF([PPP_WITH_MPPE],
    AC_DEFINE([PPP_WITH_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([PPP_WITH_MSLANMAN], 1, [Have Microsoft LAN Manager support]))

#
# Disable IPv6 support
AC_ARG_ENABLE([ipv6cp],
    AS_HELP_STRING([--disable-ipv6cp], [Disable IPv6 Control Protocol]))
AM_CONDITIONAL(PPP_WITH_IPV6CP, test "x${enable_ipv6cp}" != "xno")
AM_COND_IF([PPP_WITH_IPV6CP],
    AC_DEFINE(PPP_WITH_IPV6CP, 1, [Have IPv6 Control Protocol]))

#
# Disable Multilink support
AC_ARG_ENABLE([multilink],
    AS_HELP_STRING([--enable-multilink], [Enable multilink support]))
AM_CONDITIONAL(PPP_WITH_MULTILINK, test "x${enable_multilink}" = "xyes")
AM_COND_IF([PPP_WITH_MULTILINK],
    AC_DEFINE([PPP_WITH_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(PPP_WITH_TDB, test "x${enable_multilink}" = "xyes")
AM_COND_IF([PPP_WITH_TDB],
    AC_DEFINE([PPP_WITH_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([PPP_WITH_PLUGINS], 1, [Have support for loadable plugins]))
AM_CONDITIONAL(PPP_WITH_PLUGINS, test "x${enable_plugins}" != "xno")

#
# 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([PPP_WITH_EAPTLS], 1, [Have EAP-TLS authentication support]))
AM_CONDITIONAL(PPP_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([PPP_WITH_PEAP], 1, [Have PEAP authentication support]))
AM_CONDITIONAL([PPP_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],
	AS_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],
	AS_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="${runstatedir}/pppd"])
AC_SUBST(PPPD_RUNTIME_DIR)

#
# Specify runtime directory
AC_ARG_WITH([logfile-dir],
	AS_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/ppp"])
AC_SUBST(PPPD_LOGFILE_DIR)

#
# System CA certificates path
AC_ARG_WITH(system-ca-path,
    AS_HELP_STRING([--with-system-ca-path=/path/to/ssl/certs], [path to system CA certificates]),
    [
       case "$withval" in
       "" | y | ye | yes)
            with_system_ca_path="${sysconfdir}/ssl/certs"
            ;;
       n | no)
            ;;
       *)
            with_system_ca_path="$withval"
            ;;
       esac
    ],[with_system_ca_path="${sysconfdir}/ssl/certs"])
AM_CONDITIONAL(PPP_WITH_SYSTEM_CA_PATH, [test "$with_system_ca_path" != "no"])
AM_COND_IF(PPP_WITH_SYSTEM_CA_PATH, [
    SYSTEM_CA_PATH="$with_system_ca_path"
])
AC_SUBST(SYSTEM_CA_PATH)

#
# Check for OpenSSL
AX_CHECK_OPENSSL
AM_CONDITIONAL(PPP_WITH_OPENSSL, test "x${with_openssl}" != "xno")
AM_COND_IF([PPP_WITH_OPENSSL],
    AC_DEFINE([PPP_WITH_OPENSSL], 1, [PPP is compiled with openssl support]))

#
# 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([OPENSSL_HAVE_MD4], 1, [Use MD4 included with openssl]))

AM_CONDITIONAL([OPENSSL_HAVE_MD5], test "x${ac_cv_openssl_md5}" = "xyes")
AM_COND_IF([OPENSSL_HAVE_MD5],
    AC_DEFINE([OPENSSL_HAVE_MD5], 1, [Use MD5 included with openssl]))

AM_CONDITIONAL([OPENSSL_HAVE_SHA], test "x${ac_cv_openssl_sha}" = "xyes")
AM_COND_IF([OPENSSL_HAVE_SHA],
    AC_DEFINE([OPENSSL_HAVE_SHA], 1, [Use SHA included with openssl]))

AM_CONDITIONAL([OPENSSL_HAVE_DES], test "x${ac_cv_openssl_des}" = "xyes")
AM_COND_IF([OPENSSL_HAVE_DES],
    AC_DEFINE([OPENSSL_HAVE_DES], 1, [Use DES included with openssl]))

#
# With libsrp support
AX_CHECK_SRP([
    AC_DEFINE([PPP_WITH_SRP], 1, [Support for libsrp authentication module])])

#
# With libatm support
AX_CHECK_ATM

#
# With libpam support
AX_CHECK_PAM(AC_DEFINE([PPP_WITH_PAM], 1, [Support for Pluggable Authentication Modules]))
AM_CONDITIONAL(PPP_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([PPP_WITH_FILTER], [ test "x${with_pcap}" = "xyes" && test "x${build_sunos}" != "xyes" ])
AM_COND_IF([PPP_WITH_FILTER], [
    AC_DEFINE([PPP_WITH_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_DEFINE_UNQUOTED(PPPD_VERSION, "$VERSION", [Version of pppd])

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
    System CA Path ......: ${SYSTEM_CA_PATH:-not set}
    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}
    IPV6CP...............: ${enable_ipv6cp:-yes}
    EAP-TLS..............: ${enable_eaptls:-yes}
    PEAP.................: ${enable_peap:-yes}
    systemd notifications: ${enable_systemd:-no}
"