]> arthur.barton.de Git - netatalk.git/blob - configure.ac
New option parsing
[netatalk.git] / configure.ac
1 dnl configure.in for netatalk
2
3 AC_INIT(etc/afpd/main.c)
4
5 NETATALK_VERSION=`cat $srcdir/VERSION`
6 AC_SUBST(NETATALK_VERSION)
7
8 AC_CANONICAL_SYSTEM
9 AM_INIT_AUTOMAKE(netatalk, ${NETATALK_VERSION})
10 AM_CONFIG_HEADER(config.h)
11 AM_MAINTAINER_MODE([enable])
12
13 dnl Checks for programs.
14 AC_PROG_AWK
15 AC_PROG_CC
16 AC_PROG_CC_C99
17 AC_PROG_INSTALL
18 AC_PROG_LN_S
19 AC_PROG_MAKE_SET
20 AC_LIBTOOL_DLOPEN
21 AC_PROG_LIBTOOL
22 AC_PROG_PERL
23 AC_PROG_GREP
24 AC_PROG_PS
25 AM_PROG_CC_C_O
26
27 dnl Checks for typedefs, structures, and compiler characteristics.
28 AC_C_INLINE
29
30 dnl Request SUSv3 standard interfaces plus anything else the platform may have
31 CFLAGS="$CFLAGS -D_XOPEN_SOURCE=600 -D__EXTENSIONS__ -D_GNU_SOURCE"
32
33 dnl Check if we can use attribute unused (gcc only) from ethereal
34 AC_MSG_CHECKING(to see if we can add '__attribute__((unused))' to CFLAGS)
35 if test x$GCC != x ; then
36   CFLAGS="-D_U_=\"__attribute__((unused))\" $CFLAGS"
37   AC_MSG_RESULT(yes)
38 else
39   CFLAGS="-D_U_=\"\" $CFLAGS"
40   AC_MSG_RESULT(no)
41 fi
42
43 dnl Checks for header files, some checks are obsolete, unfortunately the code
44 dnl uses the resulting macros, so the code has to cleaned up too before
45 dnl we can remove the checks here.
46 AC_CHECK_HEADERS(mntent.h unistd.h termios.h ufs/quota.h)
47 AC_CHECK_HEADERS(netdb.h sgtty.h statfs.h dlfcn.h langinfo.h locale.h)
48 AC_CHECK_HEADERS(sys/param.h sys/fcntl.h sys/termios.h)
49 AC_CHECK_HEADERS(sys/mnttab.h sys/statvfs.h sys/stat.h sys/vfs.h)
50 dnl Checks for header files, confirmed to be required as of 2011
51 AC_CHECK_HEADERS(sys/epoll.h)
52 AC_CHECK_HEADERS([sys/mount.h], , , 
53 [#ifdef HAVE_SYS_PARAM_H
54 #include <sys/param.h>
55 #endif
56 ])
57
58 AC_SYS_LARGEFILE([], AC_MSG_ERROR([AFP 3.x support requires Large File Support.]))
59
60 dnl --------------------------------------------------------------------------
61 dnl check if dlsym needs to add an underscore, uses libtool macros 
62 dnl --------------------------------------------------------------------------
63 AC_LTDL_DLLIB
64 AC_CHECK_FUNCS(dlopen dlsym dlclose)
65 AC_LTDL_DLSYM_USCORE
66 if test x"$libltdl_cv_need_uscore" = xyes; then
67     AC_DEFINE(DLSYM_PREPEND_UNDERSCORE, 1, [BSD compatibility macro])
68 fi
69
70 dnl Special hecks
71 ac_neta_haveatfuncs=yes
72 AC_CHECK_FUNCS(openat renameat fstatat unlinkat, , ac_neta_haveatfuncs=no)
73 if test x"$ac_neta_haveatfuncs" = x"yes" ; then
74    AC_DEFINE([_ATFILE_SOURCE], 1, AT file source)
75    AC_DEFINE([HAVE_ATFUNCS], 1, whether at funcs are available)
76 fi
77 AC_CHECK_MEMBERS(struct tm.tm_gmtoff,,, [#include <time.h>])
78
79 dnl these tests have been comfirmed to be needed in 2011
80 AC_CHECK_FUNC(epoll_create, AC_DEFINE([HAVE_EPOLL], 1, Whether Linux epoll is available)) 
81 AC_CHECK_FUNCS(backtrace_symbols dirfd getusershell pread pwrite pselect)
82 AC_CHECK_FUNCS(setlinebuf strlcat strlcpy strnlen)
83 AC_CHECK_FUNCS(mmap utime getpagesize) dnl needed by tbd
84
85 dnl search for necessary libraries
86 AC_SEARCH_LIBS(gethostbyname, nsl)
87 AC_SEARCH_LIBS(connect, socket)
88 AC_SEARCH_LIBS(pthread_sigmask, pthread,,[AC_MSG_ERROR([missing pthread_sigmask])])
89 if test x"$ac_cv_search_pthread_sigmask" != x"none required" ; then
90    PTHREAD_LIBS=$ac_cv_search_pthread_sigmask
91 fi
92 AC_SUBST(PTHREAD_LIBS)
93
94 AC_DEFINE(OPEN_NOFOLLOW_ERRNO, ELOOP, errno returned by open with O_NOFOLLOW)
95
96 AC_CACHE_SAVE
97
98 dnl --------------------------------------------------------------------------
99 dnl 64bit platform check
100 dnl --------------------------------------------------------------------------
101
102 AC_MSG_CHECKING([whether to check for 64bit libraries])
103 # Test if the compiler is in 64bit mode
104 echo 'int i;' > conftest.$ac_ext
105 atalk_cv_cc_64bit_output=no
106 if AC_TRY_EVAL(ac_compile); then
107     case `/usr/bin/file conftest.$ac_objext` in
108     *"ELF 64"*)
109       atalk_cv_cc_64bit_output=yes
110       ;;
111     esac
112 fi
113 rm -rf conftest*
114
115 case $host_cpu:$atalk_cv_cc_64bit_output in
116 powerpc64:yes | s390x:yes | sparc*:yes | x86_64:yes | i386:yes)
117     case $target_os in
118     solaris2*)
119         AC_MSG_RESULT([yes])
120         atalk_libname="lib/64"
121         ;;
122     *bsd* | dragonfly*)
123         AC_MSG_RESULT([no])
124         atalk_libname="lib"
125         ;;
126     *)
127         AC_MSG_RESULT([yes])
128         atalk_libname="lib64"
129         ;;
130     esac
131     ;;
132 *:*)
133     AC_MSG_RESULT([no])
134     atalk_libname="lib"
135     ;;
136 esac
137
138 dnl --------------------------------------------------------------------------
139 dnl OS specific configuration comes in here:
140 dnl --------------------------------------------------------------------------
141
142 AC_NETATALK_OS_SPECIFIC
143
144 dnl --------------------------------------------------------------------------
145 dnl specific configuration comes in here:
146 dnl --------------------------------------------------------------------------
147
148 dnl Check for optional admin group support
149 AC_NETATALK_ADMIN_GROUP
150
151 dnl Check for optional AFS support
152 AC_NETATALK_AFS_CHECK
153
154 dnl --with-pkgconfdir check to change configuration directory location
155 AC_NETATALK_CONFIG_DIRS
156
157 dnl Check for optional cracklib support
158 AC_NETATALK_CRACKLIB
159
160 dnl Check whether to enable debug code
161 AC_NETATALK_DEBUG
162
163 dnl Check whethe to disable tickle SIGALARM stuff, which eases debugging
164 AC_NETATALK_DEBUGGING
165
166 dnl     Check for libiconv support
167 AC_NETATALK_CHECK_ICONV
168
169 dnl Check for CNID database backends
170 AC_NETATALK_CNID([bdb_required=yes],[bdb_required=no])
171
172 dnl Check for quota support
173 AC_NETATALK_CHECK_QUOTA
174
175 dnl Check for optional Zeroconf support
176 AC_NETATALK_ZEROCONF
177
178 dnl Check for optional TCP-wrappers support
179 AC_NETATALK_TCP_WRAPPERS
180
181 dnl Check for PAM libs
182 AC_NETATALK_PATH_PAM
183
184 dnl Check for optional shadow password support
185 AC_NETATALK_SHADOW
186         
187 dnl Check for optional valid-shell-check support
188 AC_NETATALK_SHELL_CHECK
189
190 dnl Check for optional Webmin
191 AC_NETATALK_WEBMIN
192
193 dnl Check for optional sysv initscript install
194 AC_NETATALK_SYSV_STYLE
195
196 dnl Path where UAM modules shall be installed
197 AC_ARG_WITH(uams-path, [  --with-uams-path=PATH   path to UAMs [[PKGCONF/uams]]], [uams_path="$withval"], [uams_path="${PKGCONFDIR}/uams"])
198
199 dnl Check for libgcrypt, if found enables DHX2 UAM
200 AC_NETATALK_PATH_LIBGCRYPT([1:1.2.3])
201
202 dnl Check for openssl, if found enables DHX UAM and Randnum UAM
203 AC_NETATALK_PATH_SSL
204
205 dnl Check for Berkeley DB library
206 AC_NETATALK_PATH_BDB
207
208 dnl Check for crypt
209 AC_NETATALK_CRYPT
210
211 dnl Check for building PGP UAM module
212 AC_NETATALK_PGP_UAM
213
214 dnl Check for building Kerberos V UAM module
215 AC_NETATALK_KRB5_UAM
216
217 dnl Check for overwrite the config files or not
218 AC_NETATALK_OVERWRITE_CONFIG
219
220 dnl Check for LDAP support, for client-side ACL visibility
221 AC_NETATALK_LDAP
222
223 dnl Check for ACL support
224 AC_NETATALK_ACL
225
226 dnl Check for Extended Attributes support
227 AC_NETATALK_EXTENDED_ATTRIBUTES
228
229 dnl Check for libsmbsharemodes from Samba for Samba/Netatalk access/deny/share modes interop
230 AC_NETATALK_SMB_SHAREMODES
231
232 dnl Check if realpath() takes NULL
233 AC_NETATALK_REALPATH
234
235 dnl Check for sendfile()
236 AC_NETATALK_SENDFILE
237
238 dnl --------------------------------------------------------------------------
239 dnl FHS stuff has to be done last because it overrides other defaults
240 dnl --------------------------------------------------------------------------
241
242 AC_MSG_CHECKING([whether to use Filesystem Hierarchy Standard (FHS) compatibility])
243 AC_ARG_ENABLE(fhs,
244         [  --enable-fhs            use Filesystem Hierarchy Standard (FHS) compatibility],[
245         if test "$enableval" = "yes"; then
246                 uams_path="${libdir}/netatalk"
247                 sysconfdir="/etc"
248                 PKGCONFDIR=${sysconfdir}/netatalk
249                 SERVERTEXT="${PKGCONFDIR}/msg"
250                 use_pam_so=yes
251                 mandir="/usr/share/man"
252                 AC_DEFINE(FHS_COMPATIBILITY, 1, [Define if you want compatibily with the FHS])
253                 AC_MSG_RESULT([yes])
254         else
255                 AC_MSG_RESULT([no])
256         fi
257         ],[
258                 AC_MSG_RESULT([no])
259         ]
260 )
261
262 dnl --------------------------------------------------------------------------
263 dnl post-FHS substitutions, etc
264 dnl --------------------------------------------------------------------------
265
266 UAMS_PATH="${uams_path}"
267 AC_SUBST(UAMS_PATH)
268
269 dnl --------------------------------------------------------------------------
270 dnl drop in includes for top level directory structures here...
271 dnl --------------------------------------------------------------------------
272
273 dnl Note: $(top_srcdir)/include should be added before all other includes
274 dnl       so that includes from that directory a preferred to includes from
275 dnl       /usr/include or similar places.
276 LIBS="$LIBS -L\$(top_srcdir)/libatalk"
277 CFLAGS="-I\$(top_srcdir)/include -I\$(top_srcdir)/sys $CFLAGS"
278
279
280 dnl --------------------------------------------------------------------------
281 dnl Last minute substitutions
282 dnl --------------------------------------------------------------------------
283
284 dnl ac_cv_target_os is now host_os, ac_cv_target_cpu is now host_cpu
285 AC_SUBST(LIBS)
286 AC_SUBST(CFLAGS)
287
288 AM_CONDITIONAL(SOLARIS_MODULE, test x$solaris_module = xyes)
289 AM_CONDITIONAL(HAVE_LIBGCRYPT, test x$neta_cv_have_libgcrypt = xyes)
290 AM_CONDITIONAL(HAVE_OPENSSL, test x$neta_cv_have_openssl = xyes)
291 AM_CONDITIONAL(HAVE_ACLS, test x"$with_acl_support" = x"yes")
292 AM_CONDITIONAL(HAVE_LDAP, test x"$with_ldap" = x"yes")
293 AM_CONDITIONAL(USE_DHX, test x$neta_cv_compile_dhx = xyes)
294 AM_CONDITIONAL(USE_DHX2, test x$neta_cv_compile_dhx2 = xyes)
295 AM_CONDITIONAL(USE_RANDNUM, test x$neta_cv_have_openssl = xyes)
296 AM_CONDITIONAL(USE_PAM_SO, test x$use_pam_so = xyes)
297 AM_CONDITIONAL(USE_PAM, test x$netatalk_cv_install_pam = xyes)
298 AM_CONDITIONAL(BUILD_PAM, test x$compile_pam = xyes)
299 AM_CONDITIONAL(USE_PGP, test x$compile_pgp = xyes)
300 AM_CONDITIONAL(DEFAULT_HOOK, test x$neta_cv_have_libgcrypt != xyes && test x$neta_cv_have_openssl != xyes)
301 AM_CONDITIONAL(USE_BDB, test x$bdb_required = xyes)
302 AM_CONDITIONAL(HAVE_ATFUNCS, test x"$ac_neta_haveatfuncs" = x"yes")
303
304 dnl --------------------- generate files
305
306 AC_OUTPUT([Makefile
307         bin/Makefile
308         bin/ad/Makefile
309         bin/afppasswd/Makefile
310         bin/cnid/Makefile
311         bin/cnid/cnid2_create
312         bin/megatron/Makefile
313     bin/misc/Makefile
314         bin/uniconv/Makefile
315         config/Makefile
316         config/pam/Makefile
317         contrib/Makefile
318         contrib/macusers/Makefile
319         contrib/macusers/macusers
320         contrib/shell_utils/Makefile
321         contrib/shell_utils/apple_dump
322         contrib/shell_utils/asip-status.pl
323         distrib/Makefile
324         distrib/config/Makefile
325         distrib/config/netatalk-config
326         distrib/initscripts/Makefile
327         distrib/m4/Makefile
328         distrib/systemd/Makefile
329         doc/Makefile
330         etc/Makefile
331         etc/afpd/Makefile
332         etc/cnid_dbd/Makefile
333         etc/uams/Makefile
334         include/Makefile
335         include/atalk/Makefile
336         libatalk/Makefile
337         libatalk/acl/Makefile
338         libatalk/adouble/Makefile
339         libatalk/bstring/Makefile
340         libatalk/cnid/Makefile
341         libatalk/cnid/cdb/Makefile
342         libatalk/cnid/last/Makefile
343         libatalk/cnid/dbd/Makefile
344         libatalk/cnid/tdb/Makefile
345         libatalk/compat/Makefile
346         libatalk/dsi/Makefile
347         libatalk/iniparser/Makefile
348         libatalk/tdb/Makefile
349         libatalk/unicode/Makefile
350         libatalk/unicode/charsets/Makefile
351         libatalk/util/Makefile
352         libatalk/vfs/Makefile
353         macros/Makefile
354         man/Makefile
355         man/man1/Makefile
356         man/man5/Makefile
357         man/man8/Makefile
358         test/Makefile
359         test/afpd/Makefile
360         ],
361         [chmod a+x distrib/config/netatalk-config contrib/shell_utils/apple_*]
362 )
363
364 AC_NETATALK_LIBS_SUMMARY
365 AC_NETATALK_CONFIG_SUMMARY