1AC_INIT(configure.in)
2
3AM_CONFIG_HEADER(config.h)
4AM_INIT_AUTOMAKE(pptpd,0.8.5)
5
6AC_DEFINE(BCRELAY,[],"Enable Broadcast Relay")
7AC_DEFINE(PPPD_VERSION,[],"PPPD version")
8AC_DEFINE(PPTP_FACILITY,[],"syslog facility to use")
9#AC_DEFINE(socklen_t,[],"")
10# check common command line options early
11
12AC_DEFINE(PPP_BINARY, "/usr/sbin/pppd","pppd binary")
13AC_DEFINE(KERNELVERSION,[],"kernel version")
14
15
16AC_MSG_CHECKING(command line for syslog facility name)
17AC_ARG_ENABLE(facility,
18    [  --enable-facility=name    Use another syslog facility, default LOG_DAEMON ],
19    [
20	AC_MSG_RESULT($enableval)
21	AC_DEFINE_UNQUOTED(PPTP_FACILITY, $enableval)
22	],
23    [
24	AC_MSG_RESULT(default LOG_DAEMON)
25	AC_DEFINE_UNQUOTED(PPTP_FACILITY, LOG_DAEMON)
26    ])
27
28AC_MSG_CHECKING(command line for bcrelay build)
29AC_ARG_ENABLE(bcrelay,
30	[  --enable-bcrelay          Enable broadcast relay function ],
31	[ 
32	    case "$enableval" in
33		yes)
34		    AC_MSG_RESULT(yes)
35		    AC_DEFINE(BCRELAY)
36		    BCRELAY=$enableval
37		    break;
38		    ;;
39		no)
40		    AC_MSG_RESULT(explicit no)
41		    ;;
42		*)
43		    # only yes or no are expected for this option
44		    AC_MSG_RESULT(unrecognised... terminating)
45		    exit 1
46		    ;;
47	    esac
48	], [AC_MSG_RESULT(default no)])
49
50AC_PROG_CC
51AC_PROG_RANLIB
52AC_PROG_INSTALL
53AC_PROG_LN_S
54AC_PROG_MAKE_SET
55
56AC_C_CONST
57AC_C_INLINE
58
59AC_EXEEXT
60AC_OBJEXT
61AC_SYS_INTERPRETER
62
63AC_CHECK_FUNCS(setsid daemon setproctitle getservbyname strlcpy fork memmove strerror writev)
64
65AC_CHECK_HEADERS(string.h)
66AC_CHECK_HEADERS(syslog.h)
67AC_CHECK_HEADERS(libintl.h)
68AC_CHECK_HEADERS(libutil.h)
69AC_CHECK_HEADERS(sys/uio.h)
70
71AC_CHECK_TYPE(size_t, unsigned int)
72AC_CHECK_TYPE(ssize_t, int)
73AC_CHECK_TYPE(u_int8_t, unsigned char)
74AC_CHECK_TYPE(u_int16_t, unsigned short)
75AC_CHECK_TYPE(u_int32_t, unsigned int)
76
77dnl Check for type in sys/socket.h - from Squid source (GPL)
78AC_CACHE_CHECK(for socklen_t, ac_cv_type_socklen_t, [
79  AC_EGREP_CPP([socklen_t[^a-zA-Z_0-9]], [#include <sys/types.h>
80#include <sys/socket.h>
81#if STDC_HEADERS
82#include <stdlib.h>
83#include <stddef.h>
84#endif],
85    ac_cv_type_socklen_t=yes,
86    ac_cv_type_socklen_t=no)
87])
88if test $ac_cv_type_socklen_t = no; then
89  AC_DEFINE(socklen_t, int,"")
90fi
91
92dnl Check for libwrap (black magic check)
93AC_ARG_WITH(libwrap,
94	[  --with-libwrap          Use libwrap (tcp wrappers) ],
95[
96 if test "$with_libwrap" = "yes"; then
97 XYZZY_LIBS="$LIBS"
98 AC_MSG_CHECKING(for libwrap alone)
99 LIBS="$XYZZY_LIBS -lwrap"
100 AC_TRY_LINK([ int allow_severity, deny_severity; ],
101	     [ hosts_access(); ],
102	     [ AC_MSG_RESULT(yes)
103	       AC_DEFINE(HAVE_LIBWRAP,[],"use libwrap")
104	       LIBWRAP="yes"
105	       XTRALIBS_MGR="-lwrap" ],
106	     [ AC_MSG_RESULT(no)
107   LIBS="$XYZZY_LIBS -lwrap -lnsl"
108   AC_MSG_CHECKING(for libwrap with libnsl)
109   AC_TRY_LINK([ int allow_severity, deny_severity; ],
110	       [ hosts_access(); ],
111	       [ AC_MSG_RESULT(yes)
112	         AC_DEFINE(HAVE_LIBWRAP)
113		 LIBWRAP="yes"
114	         XTRALIBS_MGR="-lwrap -lnsl" ],
115	       [ AC_MSG_RESULT(no) ])
116 ])
117 LIBS="$XYZZY_LIBS"
118 fi
119])
120
121dnl More ugliness; -lnsl, -lutil and -lsocket
122XYZZY_LIBS="$LIBS"
123AC_CHECK_LIB(c, accept)
124AC_CHECK_LIB(c, gethostbyname)
125AC_CHECK_LIB(c, gettext)
126AC_CHECK_LIB(socket, accept)
127AC_CHECK_LIB(nsl, gethostbyname)
128AC_CHECK_LIB(intl, gettext)
129LIBS="$XYZZY_LIBS"
130if test "$ac_cv_lib_c_accept" = no; then
131  if test "$ac_cv_lib_socket_accept" = yes; then
132	LIBS="$LIBS -lsocket"
133  else
134	echo "Couldn't find a usable accept!" 1>&2
135	exit 1
136  fi
137fi
138if test "$ac_cv_lib_c_gethostbyname" = no; then
139  if test "$ac_cv_lib_nsl_gethostbyname" = yes; then
140	LIBS="$LIBS -lnsl"
141	if test "$XTRALIBS_MGR" = "-lwrap -lnsl"; then
142	  XTRALIBS_MGR="-lwrap"
143	fi
144  else
145	echo "Couldn't find a usable gethostbyname!" 1>&2
146	exit 1
147  fi
148fi
149if test "$ac_cv_header_libintl_h" = yes; then
150  if test "$ac_cv_lib_c_gettext" = no; then
151    if test "$ac_cv_lib_intl_gettext" = yes; then
152      XTRALIBS_MGR = "$XTRALIBS_MGR -lintl"
153    else
154      echo "Have libintl.h but no usable gettext!" 1>&2
155      exit 1
156    fi
157  fi
158fi
159
160AC_SUBST(XTRALIBS_CTRL)
161AC_SUBST(XTRALIBS_MGR)
162
163if test "$BCRELAY" = "yes"; then
164  if test "$BCRELAY" = "yes"; then
165    XTRA_PROG="bcrelay"
166    true
167  else
168    echo "No BCrelay selected." 1>&2
169  fi
170fi
171
172AC_SUBST(XTRA_PROG)
173
174AC_MSG_CHECKING([for linux kernel herders])
175if test -n "${KDIR}"; then
176	if test -f ${KDIR}/include/linux/version.h; then
177		header=${KDIR}/include
178	else
179		AC_MSG_RESULT(not found)
180		AC_MSG_ERROR(Could not find linux kernel headers)
181	fi
182else
183	kernel=`uname -r`
184	if test -f /usr/src/linux/include/linux/version.h; then 
185		header=/usr/src/linux/include
186	elif test -f /lib/modules/${kernel}/build/include/linux/version.h; then
187		header=/lib/modules/${kernel}/build/include
188	else
189		AC_MSG_RESULT(not found)
190		AC_MSG_ERROR(Could not find linux kernel headers)
191	fi
192fi
193
194VERSION=$(cat ${header/include}Makefile | grep '^VERSION = ' | awk '{print $3}')
195PATCHLEVEL=$(cat ${header/include}Makefile | grep '^PATCHLEVEL = ' | awk '{print $3}')
196SUBLEVEL=$(cat ${header/include}Makefile | grep '^SUBLEVEL = ' | awk '{print $3}')
197EXTRAVERSION=$(cat ${header/include}Makefile | grep '^EXTRAVERSION = ' | awk '{print $3}')
198KERNELVERSION=$VERSION.$PATCHLEVEL.$SUBLEVEL$EXTRAVERSION
199AC_DEFINE_UNQUOTED(KERNELVERSION,"$KERNELVERSION")
200
201AC_MSG_RESULT(found ($KERNELVERSION at ${header/include}))
202CFLAGS="${CFLAGS} -I. -I${header}"
203AC_SUBST(kernel_headers,${header})
204
205AC_MSG_CHECKING(for pppd)
206pppd=`which pppd 2>&1`
207if test $? -eq 1; then
208	pppd=""
209	for path in /usr/sbin /usr/local/sbin /usr/bin /usr/local/bin /sbin; do
210		if test -x ${path}/pppd; then
211			pppd=${path}/pppd
212			break;
213		fi
214	done
215fi
216
217if test -z "${pppd}"; then
218    AC_MSG_RESULT(not found)
219    AC_MSG_ERROR(Could not find pppd)
220fi    
221pppd_ver=`${pppd} --version 2>&1 | grep version | sed 's/pppd version //'`
222AC_MSG_RESULT($pppd ($pppd_ver))
223AC_DEFINE_UNQUOTED(PPPD_VERSION,"${pppd_ver}")
224
225
226echo '==============================================================================='
227
228echo 'Configuration chosen:'
229
230echo    '   PPPD:               '${pppd_ver}
231
232echo -n '   LIBWRAP security:   '
233if test "$LIBWRAP" = "yes"; then
234  echo 'Yes.'
235else
236  echo 'No.'
237fi
238
239echo -n '   Broadcast Relay:    '
240if test "$BCRELAY" = "yes"; then
241  echo 'Yes.'
242else
243  echo 'No.'
244fi
245
246echo    '   linux kernel:       '$KERNELVERSION at ${header/include}
247
248AC_CACHE_SAVE
249AC_OUTPUT(Makefile)
250