1#                                               -*- Autoconf -*-
2# Process this file with autoconf to produce a configure script.
3
4
5AC_PREREQ(2.53)
6
7# Making releases on the stable branch:
8#   WZD_MICRO_VERSION += 1;
9#   WZD_INTERFACE_AGE += 1;
10#
11# unstable branch: increment micro, interface_age is always 0
12
13m4_define([wzd_major_version], [0])
14m4_define([wzd_minor_version], [8])
15m4_define([wzd_micro_version], [2])
16m4_define([wzd_real_version],
17          [wzd_major_version.wzd_minor_version.wzd_micro_version])
18m4_define([wzd_version], [wzd_real_version])
19m4_define([wzd_interface_age], [1])
20m4_define([wzd_binary_age],
21          [m4_eval(100 * wzd_minor_version + wzd_micro_version)])
22
23# For overriding the version string. Comment out if not needed.
24# m4_define([wzd_version], [0.7.0])
25
26m4_define([wzd_unstable],
27          m4_if(m4_eval(wzd_minor_version % 2), [1], [yes], [no]))
28m4_define([wzd_stable],
29          m4_if(m4_eval(wzd_minor_version % 2), [0], [yes], [no]))
30
31AC_INIT(wzdftpd, [wzd_version], pollux@wzdftpd.net)
32
33# having both commands will give warnings, but is necessary for BSD
34AC_CANONICAL_TARGET
35AM_INIT_AUTOMAKE
36
37# AC_CONFIG_SRCDIR([backends/plaintext/libplaintext_main.c])
38AM_CONFIG_HEADER([config.h])
39
40
41AM_MAINTAINER_MODE
42
43
44# libtool versioning
45m4_define([lt_current], [m4_eval(100 * wzd_minor_version + wzd_micro_version - wzd_interface_age)])
46m4_define([lt_revision], [wzd_interface_age])
47m4_define([lt_age], [m4_eval(wzd_binary_age - wzd_interface_age)])
48LT_VERSION_INFO="lt_current:lt_revision:lt_age"
49LT_CURRENT_MINUS_AGE=m4_eval(lt_current - lt_age)
50AC_SUBST(LT_VERSION_INFO)
51AC_SUBST(LT_CURRENT_MINUS_AGE)
52
53WZD_VERSION="wzd_version"
54AC_SUBST(WZD_VERSION)
55
56# Checks for programs.
57#CFLAGS=""
58#CXXFLAGS=""
59AC_PROG_CC
60AM_PROG_LEX
61AC_PROG_INSTALL
62AC_PROG_LN_S
63AC_PROG_MAKE_SET
64
65AC_SYS_LARGEFILE
66
67dnl not building static libraries makes compilation fail on *bsd !
68dnl AC_DISABLE_STATIC
69dnl following also fails on *BSD
70#if eval "test x$CYGWIN != xyes"; then
71#  CXX=no
72#  #F77=no
73#  #GCJ=no
74#fi
75
76dnl AC_LIBTOOL_WIN32_DLL
77AM_PROG_LIBTOOL
78
79AH_TEMPLATE([NEED_UNDERSCORE],
80            [Need underscore.])
81AC_CACHE_CHECK(if your system prepends an underscore on symbols,ac_cv_underscore,[
82cat >uscore.c << __EOF__
83int main() {
84	return 0;
85}
86__EOF__
87$CC -o uscore $CFLAGS uscore.c 1>&5
88if test -z "`strings -a uscore |grep '^_main$'`"; then
89ac_cv_underscore=no
90else
91ac_cv_underscore=yes
92fi
93rm -f uscore uscore.c
94])
95if test "$ac_cv_underscore" = "yes"; then
96AC_DEFINE(NEED_UNDERSCORE)
97fi
98
99# Checks for typedefs, structures, and compiler characteristics.
100AC_C_CONST
101AC_TYPE_OFF_T
102AC_TYPE_PID_T
103AC_TYPE_SIZE_T
104AC_CHECK_TYPES(unsigned long long,,exit 1)
105AC_CHECK_DECLS([sys_siglist])
106AC_CHECK_HEADER(pthread.h)
107
108AC_CHECK_HEADER(winsock2.h)
109
110case "$host" in
111  *-cygwin*)
112    LIBS="${LIBS} -lwsock32"
113    ;;
114  *-darwin*)
115    darwin_version=`uname -r | grep '8.'`
116    if test -n "$darwin_version" ; then
117      AC_DEFINE([HAVE_OSX_TIGER], 1, [We are running OSX Tiger])
118    fi
119    ;;
120esac
121
122# Checks for library functions.
123AC_FUNC_CLOSEDIR_VOID
124AC_FUNC_FORK
125dnl AC_PROG_GCC_TRADITIONAL
126AC_FUNC_LSTAT
127AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
128AC_FUNC_MALLOC
129AC_FUNC_MKTIME
130AC_FUNC_SELECT_ARGTYPES
131AC_TYPE_SIGNAL
132AC_FUNC_STAT
133AC_FUNC_STRFTIME
134AC_FUNC_UTIME_NULL
135AC_FUNC_VPRINTF
136dnl AC_FUNC_WAIT3
137AC_CHECK_HEADERS([execinfo.h limits.h utime.h])
138AC_CHECK_FUNCS([backtrace])
139
140AC_CHECK_FUNCS([gethostbyaddr gethostbyname gettimeofday inet_ntoa regcomp select socket statfs])
141AC_CHECK_FUNCS([crypt strlcat strndup strptime strtok_r strtoull getopt_long inet_ntop inet_pton statvfs])
142AC_CHECK_FUNCS(getaddrinfo getnameinfo)
143
144AC_CHECK_FUNCS([getcwd memmove memset mkdir realloc rmdir strcasecmp strchr strdup strerror strncasecmp strpbrk strrchr strtol strtoul utime],,exit 1)
145
146AC_CHECK_HEADERS([sys/param.h sys/stafs.h sys/statvfs.h sys/vfs.h])
147
148AC_CHECK_HEADERS(sys/mount.h, [], [],
149[#ifdef HAVE_SYS_PARAM_H
150# include <sys/param.h>
151#endif
152])
153
154AC_CHECK_LIB(dl, dlopen,DL_FLAGS="-ldl",)
155AC_CHECK_LIB(crypt, crypt,CRYPT_FLAGS="-lcrypt",)
156ACX_PTHREAD(,have_pthreads=no)
157# ACX_PTHREAD(,exit 1)
158
159AC_CHECK_FUNCS([crypt])
160
161WZD_STAT64
162
163dnl WZD_LIB_BERKELEY_DB(4, 1, 24, [db-4.2 db-4.1 db-4 db4 db])
164WZD_TLS
165WZD_LIB_KRB5  # disabled for release 0.6
166WZD_LIB_PAM
167WZD_LIB_PERL
168WZD_LIB_MYSQL
169WZD_LIB_SQLITE3
170WZD_LIB_ZEROCONF
171WZD_LIB_PGSQL
172WZD_LIB_TCL(8,3)
173
174# check for zlib (optional, used in module sfv)
175AC_CHECK_LIB(z, inflateEnd, [zlib_cv_libz=yes], [zlib_cv_libz=no])
176AC_CHECK_HEADER(zlib.h, [zlib_cv_zlib_h=yes], [zlib_cvs_zlib_h=no])
177AC_MSG_CHECKING(zlib)
178if test "$zlib_cv_libz" = "yes" -a "$zlib_cv_zlib_h" = "yes"
179then
180  #
181  # If both library and header were found, use them
182  #
183  AC_MSG_RESULT(ok)
184  AC_DEFINE(HAVE_ZLIB,1,"Define to 1 if you have the `zlib' library (-lz)")
185else
186  AC_MSG_RESULT(failed)
187fi
188AM_CONDITIONAL(USE_ZLIB, test "$zlib_cv_libz" = "yes" -a "$zlib_cv_zlib_h" = "yes")
189
190# Build options string
191WZD_BUILD_OPTS="threads"
192COMMA=','
193
194AC_MSG_CHECKING(whether to build in debug mode)
195
196AC_ARG_ENABLE(debug, [  --enable-debug          enable debug mode],
197    if eval "test x$enable_debug = xyes"; then
198      AC_MSG_RESULT(yes)
199      WZD_BUILD_OPTS="${WZD_BUILD_OPTS}${COMMA}debug"
200      CPPFLAGS="$CPPFLAGS -DDEBUG"
201    else
202      AC_MSG_RESULT(no)
203      WZD_BUILD_OPTS="${WZD_BUILD_OPTS}${COMMA}release"
204    fi,
205    AC_MSG_RESULT(no)
206    WZD_BUILD_OPTS="${WZD_BUILD_OPTS}${COMMA}release"
207)
208
209if eval "test x$enable_debug = xyes"; then
210  AM_WITH_MPATROL
211fi
212
213if eval "test x$wzd_lib_openssl = xyes"; then
214  WZD_BUILD_OPTS="${WZD_BUILD_OPTS}${COMMA}ssl"
215fi
216
217AC_MSG_CHECKING(whether to build ipv6 support)
218
219wzd_have_ipv6=no
220AC_ARG_ENABLE(ipv6, [  --enable-ipv6           enable ipv6 support (EXPERIMENTAL)],
221    if eval "test x$enable_ipv6 = xyes"; then
222      AC_MSG_RESULT(yes)
223      CPPFLAGS="$CPPFLAGS -DIPV6_SUPPORT"
224      WZD_BUILD_OPTS="${WZD_BUILD_OPTS}${COMMA}ipv6"
225    else
226      AC_MSG_RESULT(no)
227    fi,
228    AC_MSG_RESULT(no)
229)
230
231AC_MSG_CHECKING(whether to build utf8 support)
232
233wzd_have_utf8=no
234AC_ARG_ENABLE(utf8, [  --disable-utf8          disable utf8 support],
235    if eval "test x$enable_utf8 = xno"; then
236      AC_MSG_RESULT(no)
237    else
238      AC_MSG_RESULT(yes)
239      WZD_BUILD_OPTS="${WZD_BUILD_OPTS}${COMMA}utf8"
240      wzd_have_utf8=yes
241    fi,
242    AC_MSG_RESULT(yes)
243    WZD_BUILD_OPTS="${WZD_BUILD_OPTS}${COMMA}utf8"
244    wzd_have_utf8=yes
245    )
246
247if eval "test x$wzd_have_utf8 = xyes"; then
248  AM_ICONV
249  WZD_LIB_UNICODE
250  AC_DEFINE(HAVE_UTF8, 1, [Define if using utf8])
251fi
252
253AM_CONDITIONAL(USE_ICC, test x$CC = xicc)
254if eval "test x$CC = xicc"; then
255  WZD_BUILD_OPTS="${WZD_BUILD_OPTS}${COMMA}icc"
256  echo "Changing dependancy mode to match intel compiler"
257  CCDEPMODE="depmode=gcc"
258#  CPPFLAGS="$CPPFLAGS -I/usr/include"
259fi
260
261
262AC_DEFINE_UNQUOTED(WZD_BUILD_OPTS,"$WZD_BUILD_OPTS")
263
264AH_TEMPLATE([WZD_BUILD_OPTS],
265            [Build options.])
266
267AM_CONDITIONAL([HAVE_KRB5], [test "$wzd_have_krb5" = "yes"])
268AM_CONDITIONAL([HAVE_MYSQL], [test "$wzd_have_mysql" = "yes"])
269AM_CONDITIONAL([HAVE_SQLITE3], [test "$wzd_have_sqlite3" = "yes"])
270AM_CONDITIONAL([HAVE_PAM], [test "$wzd_have_pam" = "yes"])
271AM_CONDITIONAL([HAVE_PERL], [test "$wzd_have_perl" = "yes"])
272AM_CONDITIONAL([HAVE_PGSQL], [test "$wzd_have_pgsql" = "yes"])
273AM_CONDITIONAL([HAVE_TCL], [test "$wzd_have_tcl" = "yes"])
274AM_CONDITIONAL([HAVE_ZEROCONF], [test "$with_zeroconf" = "yes"])
275AM_CONDITIONAL([USE_BONJOUR], [test "$enable_bonjour" = "yes"])
276AM_CONDITIONAL([USE_AVAHI], [test "$enable_avahi" = "yes"])
277AM_CONDITIONAL([USE_HOWL], [test "$enable_howl" = "yes"])
278
279WZD_BUILD_NUM="`date +%Y%m%d`"
280AC_DEFINE_UNQUOTED(WZD_BUILD_NUM,"$WZD_BUILD_NUM")
281AH_TEMPLATE([WZD_BUILD_NUM],
282            [Build number.])
283
284
285WZD_VERSION_LONG="$PACKAGE_NAME $ac_build_alias mt $PACKAGE_VERSION"
286AC_DEFINE_UNQUOTED(WZD_VERSION_LONG,"$WZD_VERSION_LONG")
287AH_TEMPLATE([WZD_VERSION_LONG],
288            [Version string])
289
290# we assume that $sysconfdir is always equal to $prefix/etc
291WZD_DEFAULT_CONF="$prefix/etc/$PACKAGE_NAME/wzd.cfg"
292AC_DEFINE_UNQUOTED(WZD_DEFAULT_CONF,"$WZD_DEFAULT_CONF")
293AH_TEMPLATE([WZD_DEFAULT_CONF],
294            [Default configuration file])
295
296AC_SUBST(CRYPT_FLAGS)
297AC_SUBST(DL_FLAGS)
298AC_SUBST(PTHREAD_FLAGS)
299AC_SUBST(WZD_BUILD_NUM)
300AC_SUBST(WZD_BUILD_OPTS)
301AC_SUBST(WZD_DEFAULT_CONF)
302AC_SUBST(WZD_VERSION)
303AC_SUBST(WZD_VERSION_LONG)
304
305AC_CONFIG_FILES([Makefile
306		 ac-helpers/Makefile
307                 backends/Makefile
308                 backends/plaintext/Makefile
309                 backends/mysql/Makefile
310		 backends/sqlite/Makefile
311                 backends/pam/Makefile
312                 backends/pgsql/Makefile
313		 init.d/Makefile
314                 init.d/wzdftpd
315		 libwzd/Makefile
316		 libwzd-auth/Makefile
317		 libwzd-base/Makefile
318		 libwzd-core/Makefile
319		 libwzd-core/arch/Makefile
320		 libwzd-perl/Makefile
321		 libwzd-perl/ext/Makefile.PL
322		 m4/Makefile
323		 man/Makefile
324                 modules/Makefile
325                 modules/debug/Makefile
326                 modules/perl/Makefile
327                 modules/sfv/Makefile
328                 modules/sfv/minizip/Makefile
329                 modules/tcl/Makefile
330                 modules/test/Makefile
331                 modules/zeroconf/Makefile
332                 redhat/Makefile
333                 tests/Makefile
334                 tools/Makefile
335                 tools/siteconfig/Makefile
336                 tools/siteuptime/Makefile
337                 tools/sitewho/Makefile
338		 wzd-config
339		 wzdftpd/Makefile
340		 wzdftpd.pc
341		 wzd_version.h])
342
343AC_CONFIG_COMMANDS([default], [
344	chmod +x wzd-config
345])
346
347AC_OUTPUT
348
349
350# print summary
351cat << EOF
352
353Here is a short summary of what I've found on your system :
354
355  core options:
356       debug:  $enable_debug
357       IPv6:   $enable_ipv6
358       SSL:    $wzd_lib_openssl
359       GnuTLS: $wzd_have_gnutls
360       UTF-8:  $wzd_have_utf8
361       Kerberos:  $wzd_have_krb5
362
363  backends:
364       MySQL:  $wzd_have_mysql
365       Sqlite3: $wzd_have_sqlite3
366       PAM:    $wzd_have_pam
367       PostgreSQL:  $wzd_have_pgsql
368
369  modules:
370       Perl:   $wzd_have_perl
371       SFV:    yes
372       TCL:    $wzd_have_tcl
373       Zeroconf:  $with_zeroconf
374       Bonjour:  $enable_bonjour
375       Avahi:  $enable_avahi
376       Howl:  $enable_howl
377
378EOF
379
380