1 dnl This file contains the common configuration code which would
2 dnl otherwise be duplicated between configure and configure-libafs.
4 dnl NB: Because this code is a macro, references to positional shell
5 dnl parameters must be done like $[]1 instead of $1
7 AC_DEFUN([OPENAFS_CONFIGURE_COMMON],[
10 #undef STRUCT_SOCKADDR_HAS_SA_LEN
11 #if !defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
12 # if ENDIANESS_IN_SYS_PARAM_H
14 # include <sys/types.h>
15 # include <sys/param.h>
16 # if BYTE_ORDER == BIG_ENDIAN
17 # define WORDS_BIGENDIAN 1
20 # if defined(AUTOCONF_FOUND_BIGENDIAN)
21 # define WORDS_BIGENDIAN 1
23 # undef WORDS_BIGENDIAN
27 # if defined(AUTOCONF_FOUND_BIGENDIAN)
28 # define WORDS_BIGENDIAN 1
30 # undef WORDS_BIGENDIAN
34 # if defined(__BIG_ENDIAN__)
35 # define WORDS_BIGENDIAN 1
37 # undef WORDS_BIGENDIAN
42 * Always use 64-bit file offsets for UKERNEL code. Needed for UKERNEL stuff to
43 * play nice with some other interfaces like FUSE. We technically only would
44 * need to define this when building for such interfaces, but set it always to
45 * try and reduce potential confusion.
47 #define _FILE_OFFSET_BITS 64
48 #define AFS_CACHE_VNODE_PATH
54 #undef DEFINED_FOR_EACH_PROCESS
55 #undef DEFINED_PREV_TASK
56 #undef EXPORTED_SYS_CALL_TABLE
57 #undef EXPORTED_IA32_SYS_CALL_TABLE
58 #undef IRIX_HAS_MEM_FUNCS
59 #undef RECALC_SIGPENDING_TAKES_VOID
60 #undef STRUCT_FS_HAS_FS_ROLLED
62 /* glue for RedHat kernel bug */
63 #undef ENABLE_REDHAT_BUILDSYS
64 #if defined(ENABLE_REDHAT_BUILDSYS) && defined(KERNEL) && defined(REDHAT_FIX)
65 #include "redhat-fix.h"
74 AC_ARG_WITH([afs-sysname],
75 [AS_HELP_STRING([--with-afs-sysname=sys], [use sys for the afs sysname])])
77 dnl General feature options.
79 [AS_HELP_STRING([--disable-pam], [disable PAM support])],
83 AS_HELP_STRING([--disable-gtx], [disable gtx curses-based terminal tools]))
85 AS_HELP_STRING([--disable-uss], [disable uss bulk creation tool]))
86 AC_ARG_ENABLE([namei-fileserver],
87 [AS_HELP_STRING([--enable-namei-fileserver],
88 [force compilation of namei fileserver in preference to inode
91 [enable_namei_fileserver="default"])
92 AC_ARG_ENABLE([supergroups],
93 [AS_HELP_STRING([--enable-supergroups],
94 [enable support for nested pts groups])],
96 [enable_supergroups="no"])
97 AC_ARG_ENABLE([bitmap-later],
98 [AS_HELP_STRING([--enable-bitmap-later],
99 [enable fast startup of file server by not reading bitmap till
102 [enable_bitmap_later="no"])
103 AC_ARG_ENABLE([unix-sockets],
104 [AS_HELP_STRING([--disable-unix-sockets],
105 [disable use of unix domain sockets for fssync (defaults to enabled)])],
107 [enable_unix_sockets="yes"])
108 AC_ARG_ENABLE([tivoli-tsm],
109 [AS_HELP_STRING([--enable-tivoli-tsm],
110 [enable use of the Tivoli TSM API libraries for butc support])],
112 [enable_tivoli_tsm="no"])
113 AC_ARG_ENABLE([pthreaded-ubik],
114 [AS_HELP_STRING([--enable-pthreaded-ubik],
115 [enable installation of pthreaded ubik applications (defaults to
118 [enable_pthreaded_ubik="no"])
120 dnl Kernel module build options.
121 AC_ARG_WITH([linux-kernel-headers],
122 [AS_HELP_STRING([--with-linux-kernel-headers=path],
123 [use the kernel headers found at path (optional, defaults to
124 /usr/src/linux-2.4, then /usr/src/linux)])])
125 AC_ARG_WITH([linux-kernel-build],
126 [AS_HELP_STRING([--with-linux-kernel-build=path],
127 [use the kernel build found at path(optional, defaults to
128 /usr/src/linux-2.4, then /usr/src/linux)])])
129 AC_ARG_WITH([bsd-kernel-headers],
130 [AS_HELP_STRING([--with-bsd-kernel-headers=path],
131 [use the kernel headers found at path (optional, defaults to
133 AC_ARG_WITH([bsd-kernel-build],
134 [AS_HELP_STRING([--with-bsd-kernel-build=path],
135 [use the kernel build found at path (optional, defaults to
136 KSRC/i386/compile/GENERIC)])])
137 AC_ARG_WITH([linux-kernel-packaging],
138 [AS_HELP_STRING([--with-linux-kernel-packaging],
139 [use standard naming conventions to aid Linux kernel build packaging
140 (disables MPS, sets the kernel module name to openafs.ko, and
141 installs kernel modules into the standard Linux location)])],
142 [AC_SUBST(LINUX_KERNEL_PACKAGING, "yes")
143 AC_SUBST(LINUX_LIBAFS_NAME, "openafs")],
144 [AC_SUBST(LINUX_LIBAFS_NAME, "libafs")])
145 AC_ARG_ENABLE([kernel-module],
146 [AS_HELP_STRING([--disable-kernel-module],
147 [disable compilation of the kernel module (defaults to enabled)])],
149 [enable_kernel_module="yes"])
150 AC_ARG_ENABLE([redhat-buildsys],
151 [AS_HELP_STRING([--enable-redhat-buildsys],
152 [enable compilation of the redhat build system kernel (defaults to
155 [enable_redhat_buildsys="no"])
157 dnl Installation locations.
158 AC_ARG_ENABLE([transarc-paths],
159 [AS_HELP_STRING([--enable-transarc-paths],
160 [use Transarc style paths like /usr/afs and /usr/vice])],
162 [enable_transarc_paths="no"])
164 dnl Optimization and debugging flags.
165 AC_ARG_ENABLE([strip-binaries],
166 [AS_HELP_STRING([--disable-strip-binaries],
167 [disable stripping of symbol information from binaries (defaults to
170 [enable_strip_binaries="maybe"])
171 AC_ARG_ENABLE([debug],
172 [AS_HELP_STRING([--enable-debug],
173 [enable compilation of the user space code with debugging information
174 (defaults to disabled)])],
177 AC_ARG_ENABLE([optimize],
178 [AS_HELP_STRING([--disable-optimize],
179 [disable optimization for compilation of the user space code (defaults
182 [enable_optimize="yes"])
183 AC_ARG_ENABLE([warnings],
184 [AS_HELP_STRING([--enable-warnings],
185 [enable compilation warnings when building with gcc (defaults to
188 [enable_warnings="no"])
189 AC_ARG_ENABLE([checking],
190 [AS_HELP_STRING([--enable-checking],
191 [turn compilation warnings into errors when building with gcc (defaults
193 [enable_checking="$enableval"],
194 [enable_checking="no"])
195 AC_ARG_ENABLE([debug-locks],
196 [AS_HELP_STRING([--enable-debug-locks],
197 [turn on lock debugging assertions (defaults to disabled)])],
198 [enable_debug_locks="$enableval"],
199 [enable_debug_locks="no"])
200 AC_ARG_ENABLE([debug-kernel],
201 [AS_HELP_STRING([--enable-debug-kernel],
202 [enable compilation of the kernel module with debugging information
203 (defaults to disabled)])],
205 [enable_debug_kernel="no"])
206 AC_ARG_ENABLE([optimize-kernel],
207 [AS_HELP_STRING([--disable-optimize-kernel],
208 [disable compilation of the kernel module with optimization (defaults
209 based on platform)])],
211 [enable_optimize_kernel=""])
212 AC_ARG_ENABLE([debug-lwp],
213 [AS_HELP_STRING([--enable-debug-lwp],
214 [enable compilation of the LWP code with debugging information
215 (defaults to disabled)])],
217 [enable_debug_lwp="no"])
218 AC_ARG_ENABLE([optimize-lwp],
219 [AS_HELP_STRING([--disable-optimize-lwp],
220 [disable optimization for compilation of the LWP code (defaults to
223 [enable_optimize_lwp="yes"])
224 AC_ARG_ENABLE([debug-pam],
225 [AS_HELP_STRING([--enable-debug-pam],
226 [enable compilation of the PAM code with debugging information
227 (defaults to disabled)])],
229 [enable_debug_pam="no"])
230 AC_ARG_ENABLE([optimize-pam],
231 [AS_HELP_STRING([--disable-optimize-pam],
232 [disable optimization for compilation of the PAM code (defaults to
235 [enable_optimize_pam="yes"])
236 AC_ARG_ENABLE([linux-syscall-probing],
237 [AS_HELP_STRING([--enable-linux-syscall-probing],
238 [enable Linux syscall probing (defaults to autodetect)])],
240 [enable_linux_syscall_probing="maybe"])
241 AC_ARG_WITH([crosstools-dir],
242 [AS_HELP_STRING([--with-crosstools-dir=path], [use path for native versions of rxgen, compile_et and config])])
244 AC_ARG_WITH([xslt-processor],
245 AS_HELP_STRING([--with-xslt-processor=ARG],
246 [which XSLT processor to use (possible choices are: libxslt, saxon, xalan-j, xsltproc)]),
247 [XSLTPROC="$withval"],
248 AC_CHECK_PROGS([XSLTPROC], [libxslt saxon xalan-j xsltproc], [echo]))
250 AC_ARG_WITH([html-xsl],
251 AS_HELP_STRING([--with-html-xsl],
252 [build HTML documentation using this stylesheet (default is html/chunk.dsl; specify either html/chunk.xsl or html/docbook.xsl)]),
253 [HTML_XSL="$withval"],
254 [HTML_XSL="html/chunk.xsl"])
256 AC_ARG_WITH([docbook2pdf],
257 AS_HELP_STRING([--with-docbook2pdf=ARG],
258 [which Docbook to PDF utility to use (possible choices are: fop, dblatex, docbook2pdf)]),
259 [DOCBOOK2PDF="$withval"],
260 AC_CHECK_PROGS([DOCBOOK2PDF], [fop dblatex docbook2pdf], [echo]))
262 AC_ARG_WITH([docbook-stylesheets],
263 AS_HELP_STRING([--with-docbook-stylesheets=ARG],
264 [location of DocBook stylesheets (default is to search a set of likely paths)]),
265 [DOCBOOK_STYLESHEETS="$withval"],
266 OPENAFS_SEARCH_DIRLIST([DOCBOOK_STYLESHEETS], [/usr/share/xml/docbook/stylesheet/nwalsh/current /usr/share/xml/docbook/stylesheet/nwalsh /usr/share/xml/docbook/xsl-stylesheets /usr/share/sgml/docbook/docbook-xsl-stylesheets /usr/share/sgml/docbook/xsl-stylesheets /usr/share/docbook-xsl /usr/share/sgml/docbkxsl /usr/local/share/xsl/docbook /sw/share/xml/xsl/docbook-xsl /opt/local/share/xsl/docbook-xsl], [$HTML_XSL])
267 if test "x$DOCBOOK_STYLESHEETS" = "x"; then
268 AC_WARN([Docbook stylesheets not found; some documentation can't be built])
273 dnl Check whether kindlegen exists. If not, we'll suppress that part of the
274 dnl documentation build.
275 AC_CHECK_PROGS([KINDLEGEN], [kindlegen])
277 dnl weird ass systems
282 dnl Various compiler setup.
286 dnl Checks for programs.
292 dnl if we are flex, be lex-compatible
293 OPENAFS_LEX_IS_FLEX([AC_SUBST([LEX], ["$LEX -l"])])
295 OPENAFS_FORCE_ABS_INSTALL
296 OPENAFS_CHECK_BIGENDIAN
297 OPENAFS_PRINTF_TAKES_Z_LEN
299 AC_MSG_CHECKING(your OS)
305 if test "x$enable_redhat_buildsys" = "xyes"; then
306 AC_DEFINE(ENABLE_REDHAT_BUILDSYS, 1, [define if you have redhat buildsystem])
308 if test "x$enable_kernel_module" = "xyes"; then
309 if test "x$with_linux_kernel_headers" != "x"; then
310 LINUX_KERNEL_PATH="$with_linux_kernel_headers"
312 for utsdir in "/lib/modules/`uname -r`/build" \
313 "/lib/modules/`uname -r`/source" \
314 "/usr/src/linux-2.4" \
316 LINUX_KERNEL_PATH="$utsdir"
317 for utsfile in "include/generated/utsrelease.h" \
318 "include/linux/utsrelease.h" \
319 "include/linux/version.h" \
320 "include/linux/version-up.h"; do
321 if grep "UTS_RELEASE" "$utsdir/$utsfile" >/dev/null 2>&1; then
327 if test "x$with_linux_kernel_build" != "x"; then
328 LINUX_KERNEL_BUILD="$with_linux_kernel_build"
330 LINUX_KERNEL_BUILD=$LINUX_KERNEL_PATH
332 if test -f "$LINUX_KERNEL_BUILD/include/generated/utsrelease.h"; then
333 linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/generated/utsrelease.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
334 LINUX_VERSION="$linux_kvers"
336 if test -f "$LINUX_KERNEL_BUILD/include/linux/utsrelease.h"; then
337 linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/linux/utsrelease.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
338 LINUX_VERSION="$linux_kvers"
340 if test -f "$LINUX_KERNEL_BUILD/include/linux/version.h"; then
341 linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/linux/version.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
342 if test "x$linux_kvers" = "x"; then
343 if test -f "$LINUX_KERNEL_BUILD/include/linux/version-up.h"; then
344 linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/linux/version-up.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
345 if test "x$linux_kvers" = "x"; then
346 AC_MSG_ERROR(Linux headers lack version definition [2])
349 LINUX_VERSION="$linux_kvers"
352 AC_MSG_ERROR(Linux headers lack version definition)
356 LINUX_VERSION="$linux_kvers"
359 enable_kernel_module="no"
363 if test ! -f "$LINUX_KERNEL_BUILD/include/generated/autoconf.h" &&
364 test ! -f "$LINUX_KERNEL_BUILD/include/linux/autoconf.h"; then
365 enable_kernel_module="no"
367 if test "x$enable_kernel_module" = "xno"; then
368 if test "x$with_linux_kernel_headers" != "x"; then
369 AC_MSG_ERROR(No usable linux headers found at $LINUX_KERNEL_PATH)
372 AC_MSG_WARN(No usable linux headers found at $LINUX_KERNEL_PATH so disabling kernel module)
375 dnl do we need to determine SUBARCH from autoconf.h
379 if test "x$enable_kernel_module" = "xyes"; then
380 case "$LINUX_VERSION" in
381 2.2.*) AFS_SYSKVERS=22 ;;
382 2.4.*) AFS_SYSKVERS=24 ;;
383 2.6.* | 3.*) AFS_SYSKVERS=26 ;;
384 *) AC_MSG_ERROR(Couldn't guess your Linux version [2]) ;;
391 AC_PATH_PROG(SOLARISCC, [cc], ,
392 [/opt/SUNWspro/bin:/opt/SunStudioExpress/bin:/opt/solarisstudio12.3/bin:/opt/solstudio12.2/bin:/opt/sunstudio12.1/bin])
393 if test "x$SOLARISCC" = "x" ; then
394 AC_MSG_FAILURE(Could not find the solaris cc program. Please define the environment variable SOLARISCC to specify the path.)
396 SOLARIS_UFSVFS_HAS_DQRWLOCK
397 SOLARIS_FS_HAS_FS_ROLLED
398 SOLARIS_SOLOOKUP_TAKES_SOCKPARAMS
402 enable_kernel_module=no
408 if test -f "/usr/old/usr/include/ndir.h"; then
409 AC_DEFINE(HAVE_USR_OLD_USR_INCLUDE_NDIR_H, 1, [define if you have old ndir.h])
413 if test -d /usr/include/sys/SN/SN1; then
414 IRIX_BUILD_IP35="IP35"
421 AC_MSG_RESULT(rs_aix)
425 AC_MSG_RESULT(arm_darwin)
429 AC_MSG_RESULT(ppc_darwin)
433 AC_MSG_RESULT(x86_darwin)
437 AC_MSG_RESULT(x86_darwin)
441 AC_MSG_RESULT(i386_fbsd)
445 AC_MSG_RESULT(amd64_fbsd)
453 AC_MSG_RESULT(amd64_obsd)
457 AC_MSG_RESULT(i386_obsd)
461 AC_MSG_RESULT(i386_dfbsd)
464 AC_MSG_RESULT($system)
468 if test "x$with_afs_sysname" != "x"; then
469 AFS_SYSNAME="$with_afs_sysname"
471 AC_MSG_CHECKING(your AFS sysname)
477 AFS_SYSNAME="i386_obsd${vM}${vm}"
479 sparc64-*-openbsd?.?)
483 AFS_SYSNAME="sparc64_obsd${vM}${vm}"
489 AFS_SYSNAME="amd64_obsd${vM}${vm}"
495 AFS_SYSNAME="i386_fbsd_${vM}${vm}"
501 AFS_SYSNAME="amd64_fbsd_${vM}${vm}"
507 AFS_SYSNAME="i386_dfbsd_${vM}${vm}"
509 i?86-*-netbsd*1.6[[M-Z]]*)
510 AFS_SYSNAME="i386_nbsd20"
512 powerpc-*-netbsd*1.6[[M-Z]]*)
513 AFS_SYSNAME="ppc_nbsd20"
516 arch=${host%%-unknown*}
517 arch=$(echo $arch |sed -e 's/x86_64/amd64/g' \
518 -e 's/powerpc/ppc/g')
529 if test $vm -eq 99 ; then
532 if test $vM -gt 1 ; then
535 AFS_SYSNAME="${arch}_nbsd${vM}${vm}"
538 AFS_SYSNAME="hp_ux110"
541 AFS_SYSNAME="hp_ux11i"
544 AFS_SYSNAME="hp_ux1123"
547 AFS_SYSNAME="ia64_hpux1122"
550 AFS_SYSNAME="ia64_hpux1123"
553 AFS_SYSNAME="hp_ux102"
555 powerpc-apple-darwin7*)
556 AFS_SYSNAME="ppc_darwin_70"
559 powerpc-apple-darwin8.*)
560 AFS_SYSNAME="ppc_darwin_80"
563 i386-apple-darwin8.*)
564 AFS_SYSNAME="x86_darwin_80"
567 powerpc-apple-darwin9.*)
568 AFS_SYSNAME="ppc_darwin_90"
571 i386-apple-darwin9.*)
572 AFS_SYSNAME="x86_darwin_90"
575 i?86-apple-darwin10.*)
576 AFS_SYSNAME="x86_darwin_100"
579 x86_64-apple-darwin10.*)
580 AFS_SYSNAME="x86_darwin_100"
583 arm-apple-darwin10.*)
584 AFS_SYSNAME="arm_darwin_100"
587 x86_64-apple-darwin11.*)
588 AFS_SYSNAME="x86_darwin_110"
591 i?86-apple-darwin11.*)
592 AFS_SYSNAME="x86_darwin_110"
595 x86_64-apple-darwin12.*)
596 AFS_SYSNAME="x86_darwin_120"
599 i?86-apple-darwin12.*)
600 AFS_SYSNAME="x86_darwin_120"
603 sparc-sun-solaris2.8)
604 AFS_SYSNAME="sun4x_58"
606 sparc-sun-solaris2.9)
607 AFS_SYSNAME="sun4x_59"
609 sparc-sun-solaris2.10)
610 AFS_SYSNAME="sun4x_510"
612 sparc-sun-solaris2.11)
613 AFS_SYSNAME="sun4x_511"
616 AFS_SYSNAME="sunx86_58"
619 AFS_SYSNAME="sunx86_59"
622 AFS_SYSNAME="sunx86_510"
625 AFS_SYSNAME="sunx86_511"
628 AFS_SYSNAME="alpha_dux40"
631 AFS_SYSNAME="alpha_dux50"
634 AFS_SYSNAME="alpha_dux51"
640 AFS_SYSNAME="ia64_linuxXX"
643 AFS_SYSNAME="`/bin/arch`_linuxXX"
646 AFS_SYSNAME="ppc64_linuxXX"
649 AFS_SYSNAME="alpha_linux_XX"
652 AFS_SYSNAME="s390_linuxXX"
655 AFS_SYSNAME="s390x_linuxXX"
658 AFS_SYSNAME="`/bin/arch`_linuxXX"
661 AFS_SYSNAME="sparc64_linuxXX"
664 AFS_SYSNAME="i386_linuxXX"
667 AFS_SYSNAME="arm_linuxXX"
669 parisc-*-linux-gnu|hppa-*-linux-gnu)
670 AFS_SYSNAME="parisc_linuxXX"
674 AFS_SYSNAME="rs_aix42"
678 AFS_SYSNAME="rs_aix42"
682 AFS_SYSNAME="rs_aix51"
686 AFS_SYSNAME="rs_aix52"
690 AFS_SYSNAME="rs_aix53"
694 AFS_SYSNAME="rs_aix61"
698 AFS_SYSNAME="amd64_linuxXX"
702 AC_MSG_ERROR(An AFS sysname is required)
707 *_linux* | *_umlinux*)
708 if test "x${AFS_SYSKVERS}" = "x"; then
709 AC_MSG_ERROR(Couldn't guess your Linux version. Please use the --with-afs-sysname option to configure an AFS sysname.)
711 _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/XX\$/$AFS_SYSKVERS/`
712 AFS_SYSNAME="$_AFS_SYSNAME"
715 [#ifndef CONFIG_USERMODE
718 ac_cv_linux_is_uml=yes,)
719 if test "${ac_cv_linux_is_uml}" = yes; then
720 _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/linux/umlinux/`
722 AFS_SYSNAME="$_AFS_SYSNAME"
725 AC_MSG_RESULT($AFS_SYSNAME)
730 AC_CHECK_HEADERS(crt_externs.h)
731 DARWIN_PLIST=src/libafs/afs.${AFS_SYSNAME}.plist
732 DARWIN_INFOFILE=afs.${AFS_SYSNAME}.plist
737 dnl Some hosts have a separate common param file they should include. Figure
738 dnl out if we're on one of them now that we know the sysname.
740 *_nbsd15) AFS_PARAM_COMMON=param.nbsd15.h ;;
741 *_nbsd16) AFS_PARAM_COMMON=param.nbsd16.h ;;
742 *_nbsd20) AFS_PARAM_COMMON=param.nbsd20.h ;;
743 *_nbsd21) AFS_PARAM_COMMON=param.nbsd21.h ;;
744 *_nbsd30) AFS_PARAM_COMMON=param.nbsd30.h ;;
745 *_nbsd40) AFS_PARAM_COMMON=param.nbsd40.h ;;
746 *_nbsd50) AFS_PARAM_COMMON=param.nbsd50.h ;;
747 *_nbsd60) AFS_PARAM_COMMON=param.nbsd60.h ;;
748 *_obsd31) AFS_PARAM_COMMON=param.obsd31.h ;;
749 *_obsd32) AFS_PARAM_COMMON=param.obsd32.h ;;
750 *_obsd33) AFS_PARAM_COMMON=param.obsd33.h ;;
751 *_obsd34) AFS_PARAM_COMMON=param.obsd34.h ;;
752 *_obsd35) AFS_PARAM_COMMON=param.obsd35.h ;;
753 *_obsd36) AFS_PARAM_COMMON=param.obsd36.h ;;
754 *_obsd37) AFS_PARAM_COMMON=param.obsd37.h ;;
755 *_obsd38) AFS_PARAM_COMMON=param.obsd38.h ;;
756 *_obsd39) AFS_PARAM_COMMON=param.obsd39.h ;;
757 *_obsd40) AFS_PARAM_COMMON=param.obsd40.h ;;
758 *_obsd41) AFS_PARAM_COMMON=param.obsd41.h ;;
759 *_obsd42) AFS_PARAM_COMMON=param.obsd42.h ;;
760 *_obsd43) AFS_PARAM_COMMON=param.obsd43.h ;;
761 *_obsd44) AFS_PARAM_COMMON=param.obsd44.h ;;
762 *_obsd45) AFS_PARAM_COMMON=param.obsd45.h ;;
763 *_obsd46) AFS_PARAM_COMMON=param.obsd46.h ;;
764 *_obsd47) AFS_PARAM_COMMON=param.obsd47.h ;;
765 *_obsd48) AFS_PARAM_COMMON=param.obsd48.h ;;
766 *_linux22) AFS_PARAM_COMMON=param.linux22.h ;;
767 *_linux24) AFS_PARAM_COMMON=param.linux24.h ;;
768 *_linux26) AFS_PARAM_COMMON=param.linux26.h ;;
769 # Linux alpha adds an extra underscore for no good reason.
770 *_linux_22) AFS_PARAM_COMMON=param.linux22.h ;;
771 *_linux_24) AFS_PARAM_COMMON=param.linux24.h ;;
772 *_linux_26) AFS_PARAM_COMMON=param.linux26.h ;;
777 case $AFS_SYSNAME in *_linux* | *_umlinux*)
779 # Add (sub-) architecture-specific paths needed by conftests
782 UMLINUX26_FLAGS="-I$LINUX_KERNEL_PATH/arch/um/include"
783 UMLINUX26_FLAGS="$UMLINUX26_FLAGS -I$LINUX_KERNEL_PATH/arch/um/kernel/tt/include"
784 UMLINUX26_FLAGS="$UMLINUX26_FLAGS -I$LINUX_KERNEL_PATH/arch/um/kernel/skas/include"
785 CPPFLAGS="$CPPFLAGS $UMLINUX26_FLAGS"
788 if test "x$enable_kernel_module" = "xyes"; then
789 if test "x$enable_debug_kernel" = "xno"; then
790 LINUX_GCC_KOPTS="$LINUX_GCC_KOPTS -fomit-frame-pointer"
792 OPENAFS_GCC_SUPPORTS_MARCH
793 AC_SUBST(P5PLUS_KOPTS)
794 OPENAFS_GCC_NEEDS_NO_STRENGTH_REDUCE
795 OPENAFS_GCC_NEEDS_NO_STRICT_ALIASING
796 OPENAFS_GCC_SUPPORTS_NO_COMMON
797 OPENAFS_GCC_SUPPORTS_PIPE
798 AC_SUBST(LINUX_GCC_KOPTS)
800 dnl Setup the kernel build environment
801 LINUX_KBUILD_USES_EXTRA_CFLAGS
802 LINUX_KERNEL_COMPILE_WORKS
804 dnl Check for header files
805 AC_CHECK_LINUX_HEADER([config.h])
806 AC_CHECK_LINUX_HEADER([completion.h])
807 AC_CHECK_LINUX_HEADER([exportfs.h])
808 AC_CHECK_LINUX_HEADER([freezer.h])
809 AC_CHECK_LINUX_HEADER([key-type.h])
810 AC_CHECK_LINUX_HEADER([semaphore.h])
811 AC_CHECK_LINUX_HEADER([seq_file.h])
813 dnl Type existence checks
814 AC_CHECK_LINUX_TYPE([struct vfs_path], [dcache.h])
816 dnl Check for structure elements
817 AC_CHECK_LINUX_STRUCT([address_space_operations],
818 [write_begin], [fs.h])
819 AC_CHECK_LINUX_STRUCT([backing_dev_info], [name],
821 AC_CHECK_LINUX_STRUCT([ctl_table], [ctl_name], [sysctl.h])
822 AC_CHECK_LINUX_STRUCT([dentry_operations], [d_automount], [dcache.h])
823 AC_CHECK_LINUX_STRUCT([inode], [i_alloc_sem], [fs.h])
824 AC_CHECK_LINUX_STRUCT([inode], [i_blkbits], [fs.h])
825 AC_CHECK_LINUX_STRUCT([inode], [i_blksize], [fs.h])
826 AC_CHECK_LINUX_STRUCT([inode], [i_mutex], [fs.h])
827 AC_CHECK_LINUX_STRUCT([inode], [i_security], [fs.h])
828 AC_CHECK_LINUX_STRUCT([file_operations], [flock], [fs.h])
829 AC_CHECK_LINUX_STRUCT([file_operations], [sendfile], [fs.h])
830 AC_CHECK_LINUX_STRUCT([file_system_type], [mount], [fs.h])
831 AC_CHECK_LINUX_STRUCT([filename], [name], [fs.h])
832 AC_CHECK_LINUX_STRUCT([key_type], [preparse], [key-type.h])
833 AC_CHECK_LINUX_STRUCT([nameidata], [path], [namei.h])
834 AC_CHECK_LINUX_STRUCT([proc_dir_entry], [owner], [proc_fs.h])
835 AC_CHECK_LINUX_STRUCT([super_block], [s_bdi], [fs.h])
836 AC_CHECK_LINUX_STRUCT([super_block], [s_d_op], [fs.h])
837 AC_CHECK_LINUX_STRUCT([super_operations], [alloc_inode],
839 AC_CHECK_LINUX_STRUCT([super_operations], [evict_inode],
841 AC_CHECK_LINUX_STRUCT([task_struct], [cred], [sched.h])
842 AC_CHECK_LINUX_STRUCT([task_struct], [exit_state], [sched.h])
843 AC_CHECK_LINUX_STRUCT([task_struct], [parent], [sched.h])
844 AC_CHECK_LINUX_STRUCT([task_struct], [real_parent], [sched.h])
845 AC_CHECK_LINUX_STRUCT([task_struct], [rlim], [sched.h])
846 AC_CHECK_LINUX_STRUCT([task_struct], [sig], [sched.h])
847 AC_CHECK_LINUX_STRUCT([task_struct], [sighand], [sched.h])
848 AC_CHECK_LINUX_STRUCT([task_struct], [sigmask_lock], [sched.h])
849 AC_CHECK_LINUX_STRUCT([task_struct], [tgid], [sched.h])
850 AC_CHECK_LINUX_STRUCT([task_struct], [thread_info], [sched.h])
851 LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM
853 dnl Check for typed structure elements
854 AC_CHECK_LINUX_TYPED_STRUCT([read_descriptor_t],
857 dnl Function existence checks
859 AC_CHECK_LINUX_FUNC([bdi_init],
860 [#include <linux/backing-dev.h>],
862 AC_CHECK_LINUX_FUNC([PageChecked],
863 [#include <linux/mm.h>
864 #include <linux/page-flags.h>],
866 int bchecked = PageChecked(_page);])
867 AC_CHECK_LINUX_FUNC([PageFsMisc],
868 [#include <linux/mm.h>
869 #include <linux/page-flags.h>],
871 int bchecked = PageFsMisc(_page);])
872 AC_CHECK_LINUX_FUNC([clear_inode],
873 [#include <linux/fs.h>],
874 [clear_inode(NULL);])
875 AC_CHECK_LINUX_FUNC([current_kernel_time],
876 [#include <linux/time.h>],
878 s = current_kernel_time();])
879 AC_CHECK_LINUX_FUNC([d_alloc_anon],
880 [#include <linux/fs.h>],
881 [d_alloc_anon(NULL);])
882 AC_CHECK_LINUX_FUNC([d_make_root],
883 [#include <linux/fs.h>],
884 [d_make_root(NULL);])
885 AC_CHECK_LINUX_FUNC([do_sync_read],
886 [#include <linux/fs.h>],
887 [do_sync_read(NULL, NULL, 0, NULL);])
888 AC_CHECK_LINUX_FUNC([find_task_by_pid],
889 [#include <linux/sched.h>],
890 [pid_t p; find_task_by_pid(p);])
891 AC_CHECK_LINUX_FUNC([generic_file_aio_read],
892 [#include <linux/fs.h>],
893 [generic_file_aio_read(NULL,NULL,0,0);])
894 AC_CHECK_LINUX_FUNC([grab_cache_page_write_begin],
895 [#include <linux/pagemap.h>],
896 [grab_cache_page_write_begin(NULL, 0, 0);])
897 AC_CHECK_LINUX_FUNC([hlist_unhashed],
898 [#include <linux/list.h>],
899 [hlist_unhashed(0);])
900 AC_CHECK_LINUX_FUNC([i_size_read],
901 [#include <linux/fs.h>],
902 [i_size_read(NULL);])
903 AC_CHECK_LINUX_FUNC([inode_setattr],
904 [#include <linux/fs.h>],
905 [inode_setattr(NULL, NULL);])
906 AC_CHECK_LINUX_FUNC([kernel_setsockopt],
907 [#include <linux/net.h>],
908 [kernel_setsockopt(NULL, 0, 0, NULL, 0);])
909 AC_CHECK_LINUX_FUNC([page_follow_link],
910 [#include <linux/fs.h>],
911 [page_follow_link(0,0);])
912 AC_CHECK_LINUX_FUNC([page_offset],
913 [#include <linux/pagemap.h>],
914 [page_offset(NULL);])
915 AC_CHECK_LINUX_FUNC([pagevec_lru_add_file],
916 [#include <linux/pagevec.h>],
917 [__pagevec_lru_add_file(NULL);])
918 AC_CHECK_LINUX_FUNC([path_lookup],
919 [#include <linux/fs.h>
920 #include <linux/namei.h>],
921 [path_lookup(NULL, 0, NULL);])
922 AC_CHECK_LINUX_FUNC([rcu_read_lock],
923 [#include <linux/rcupdate.h>],
925 AC_CHECK_LINUX_FUNC([set_nlink],
926 [#include <linux/fs.h>],
927 [set_nlink(NULL, 1);])
928 AC_CHECK_LINUX_FUNC([splice_direct_to_actor],
929 [#include <linux/splice.h>],
930 [splice_direct_to_actor(NULL,NULL,NULL);])
931 AC_CHECK_LINUX_FUNC([svc_addr_in],
932 [#include <linux/sunrpc/svc.h>],
933 [svc_addr_in(NULL);])
934 AC_CHECK_LINUX_FUNC([zero_user_segments],
935 [#include <linux/highmem.h>],
936 [zero_user_segments(NULL, 0, 0, 0, 0);])
937 AC_CHECK_LINUX_FUNC([noop_fsync],
938 [#include <linux/fs.h>],
939 [void *address = &noop_fsync; printk("%p\n", address)];)
940 AC_CHECK_LINUX_FUNC([kthread_run],
941 [#include <linux/kernel.h>
942 #include <linux/kthread.h>],
943 [kthread_run(NULL, NULL, "test");])
945 dnl Consequences - things which get set as a result of the
947 AS_IF([test "x$ac_cv_linux_func_d_alloc_anon" = "xno"],
948 [AC_DEFINE([AFS_NONFSTRANS], 1,
949 [define to disable the nfs translator])])
951 dnl Assorted more complex tests
953 LINUX_EXPORTS_PROC_ROOT_FS
954 LINUX_KMEM_CACHE_INIT
955 LINUX_HAVE_KMEM_CACHE_T
956 LINUX_KMEM_CACHE_CREATE_TAKES_DTOR
957 LINUX_KMEM_CACHE_CREATE_CTOR_TAKES_VOID
958 LINUX_D_PATH_TAKES_STRUCT_PATH
960 LINUX_INODE_SETATTR_RETURN_TYPE
961 LINUX_IOP_I_CREATE_TAKES_NAMEIDATA
962 LINUX_IOP_I_LOOKUP_TAKES_NAMEIDATA
963 LINUX_IOP_I_PERMISSION_TAKES_FLAGS
964 LINUX_IOP_I_PERMISSION_TAKES_NAMEIDATA
965 LINUX_IOP_I_PUT_LINK_TAKES_COOKIE
966 LINUX_DOP_D_DELETE_TAKES_CONST
967 LINUX_DOP_D_REVALIDATE_TAKES_NAMEIDATA
968 LINUX_FOP_F_FLUSH_TAKES_FL_OWNER_T
969 LINUX_FOP_F_FSYNC_TAKES_DENTRY
970 LINUX_FOP_F_FSYNC_TAKES_RANGE
971 LINUX_AOP_WRITEBACK_CONTROL
972 LINUX_FS_STRUCT_FOP_HAS_SPLICE
973 LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG
974 LINUX_POSIX_TEST_LOCK_RETURNS_CONFLICT
975 LINUX_POSIX_TEST_LOCK_CONFLICT_ARG
976 LINUX_KERNEL_SOCK_CREATE
977 LINUX_EXPORTS_KEY_TYPE_KEYRING
979 LINUX_RECALC_SIGPENDING_ARG_TYPE
980 LINUX_EXPORTS_TASKLIST_LOCK
981 LINUX_GET_SB_HAS_STRUCT_VFSMOUNT
982 LINUX_STATFS_TAKES_DENTRY
984 LINUX_HAVE_TRY_TO_FREEZE
985 LINUX_LINUX_KEYRING_SUPPORT
986 LINUX_KEY_ALLOC_NEEDS_STRUCT_TASK
987 LINUX_KEY_ALLOC_NEEDS_CRED
988 LINUX_INIT_WORK_HAS_DATA
989 LINUX_REGISTER_SYSCTL_TABLE_NOFLAG
990 LINUX_HAVE_DCACHE_LOCK
992 LINUX_IOP_MKDIR_TAKES_UMODE_T
993 LINUX_IOP_CREATE_TAKES_UMODE_T
994 LINUX_EXPORT_OP_ENCODE_FH_TAKES_INODES
995 LINUX_KMAP_ATOMIC_TAKES_NO_KM_TYPE
996 LINUX_DENTRY_OPEN_TAKES_PATH
997 LINUX_D_ALIAS_IS_HLIST
998 LINUX_IOP_I_CREATE_TAKES_BOOL
999 LINUX_DOP_D_REVALIDATE_TAKES_UNSIGNED
1000 LINUX_IOP_LOOKUP_TAKES_UNSIGNED
1002 dnl If we are guaranteed that keyrings will work - that is
1003 dnl a) The kernel has keyrings enabled
1004 dnl b) The code is new enough to give us a key_type_keyring
1005 dnl then we just disable syscall probing unless we've been
1008 AS_IF([test "$enable_linux_syscall_probing" = "maybe"],
1009 [AS_IF([test "$ac_cv_linux_keyring_support" = "yes" -a "$ac_cv_linux_exports_key_type_keyring" = "yes"],
1010 [enable_linux_syscall_probing="no"],
1011 [enable_linux_syscall_probing="yes"])
1014 dnl Syscall probing needs a few tests of its own, and just
1015 dnl won't work if the kernel doesn't export init_mm
1016 AS_IF([test "$enable_linux_syscall_probing" = "yes"], [
1017 LINUX_EXPORTS_INIT_MM
1018 AS_IF([test "$ac_cv_linux_exports_init_mm" = "no"], [
1020 [Can't do syscall probing without exported init_mm])
1022 LINUX_EXPORTS_SYS_CHDIR
1023 LINUX_EXPORTS_SYS_OPEN
1024 AC_DEFINE(ENABLE_LINUX_SYSCALL_PROBING, 1,
1025 [define to enable syscall table probes])
1028 dnl Packaging and SMP build
1029 if test "x$with_linux_kernel_packaging" != "xyes" ; then
1036 if test "x$ac_cv_linux_config_modversions" = "xno" -o $AFS_SYSKVERS -ge 26; then
1037 AS_IF([test "$enable_linux_syscall_probing" = "yes"], [
1038 AC_MSG_WARN([Cannot determine sys_call_table status. assuming it isn't exported])
1040 ac_cv_linux_exports_sys_call_table=no
1041 if test -f "$LINUX_KERNEL_PATH/include/asm/ia32_unistd.h"; then
1042 ac_cv_linux_exports_ia32_sys_call_table=yes
1045 LINUX_EXPORTS_KALLSYMS_ADDRESS
1046 LINUX_EXPORTS_KALLSYMS_SYMBOL
1047 LINUX_EXPORTS_SYS_CALL_TABLE
1048 LINUX_EXPORTS_IA32_SYS_CALL_TABLE
1049 if test "x$ac_cv_linux_exports_sys_call_table" = "xno"; then
1050 linux_syscall_method=none
1051 if test "x$ac_cv_linux_exports_init_mm" = "xyes"; then
1052 linux_syscall_method=scan
1053 if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
1054 linux_syscall_method=scan_with_kallsyms_address
1057 if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
1058 linux_syscall_method=kallsyms_symbol
1060 if test "x$linux_syscall_method" = "xnone"; then
1061 AC_MSG_WARN([no available sys_call_table access method -- guessing scan])
1062 linux_syscall_method=scan
1066 if test -f "$LINUX_KERNEL_PATH/include/linux/in_systm.h"; then
1067 AC_DEFINE(HAVE_IN_SYSTM_H, 1, [define if you have in_systm.h header file])
1069 if test -f "$LINUX_KERNEL_PATH/include/linux/mm_inline.h"; then
1070 AC_DEFINE(HAVE_MM_INLINE_H, 1, [define if you have mm_inline.h header file])
1072 if test "x$ac_cv_linux_kernel_page_follow_link" = "xyes" -o "x$ac_cv_linux_func_i_put_link_takes_cookie" = "xyes"; then
1073 AC_DEFINE(USABLE_KERNEL_PAGE_SYMLINK_CACHE, 1, [define if your kernel has a usable symlink cache API])
1075 AC_MSG_WARN([your kernel does not have a usable symlink cache API])
1079 dnl Linux-only, but just enable always.
1080 AC_DEFINE(AFS_CACHE_BYPASS, 1, [define to activate cache bypassing Unix client])
1083 AC_CACHE_CHECK([if compiler has __sync_add_and_fetch],
1084 [ac_cv_sync_fetch_and_add],
1085 [AC_TRY_LINK(, [int var; return __sync_add_and_fetch(&var, 1);],
1086 [ac_cv_sync_fetch_and_add=yes],
1087 [ac_cv_sync_fetch_and_add=no])
1089 AS_IF([test "$ac_cv_sync_fetch_and_add" = "yes"],
1090 [AC_DEFINE(HAVE_SYNC_FETCH_AND_ADD, 1,
1091 [define if your C compiler has __sync_add_and_fetch])])
1093 AC_CACHE_CHECK([if struct sockaddr has sa_len field],
1094 [ac_cv_sockaddr_len],
1095 [AC_TRY_COMPILE( [#include <sys/types.h>
1096 #include <sys/socket.h>],
1097 [struct sockaddr *a; a->sa_len=0;],
1098 [ac_cv_sockaddr_len=yes],
1099 [ac_cv_sockaddr_len=no])
1101 AS_IF([test "$ac_cv_sockaddr_len" = "yes"],
1102 [AC_DEFINE(STRUCT_SOCKADDR_HAS_SA_LEN, 1,
1103 [define if you struct sockaddr sa_len])])
1105 if test "x${MKAFS_OSTYPE}" = "xIRIX"; then
1106 echo Skipping library tests because they confuse Irix.
1108 AC_SEARCH_LIBS([socket], [socket inet])
1109 AC_SEARCH_LIBS([connect], [nsl])
1110 AC_SEARCH_LIBS([gethostbyname], [dns nsl resolv])
1112 dnl darwin wants it, aix hates it
1113 AC_MSG_CHECKING(for the useability of arpa/nameser_compat.h)
1117 #include <sys/types.h>
1118 #include <sys/socket.h>
1119 #include <netinet/in.h>
1120 #include <arpa/inet.h>
1121 #include <arpa/nameser.h>
1122 #include <arpa/nameser_compat.h>
1124 ], [static int i; i = 0;],
1126 AC_DEFINE(HAVE_ARPA_NAMESER_COMPAT_H, 1, [define if arpa/nameser_compat.h exists])],
1130 openafs_save_libs="$LIBS"
1131 AC_MSG_CHECKING([for res_search])
1134 if test "$ac_cv_func_res_search" = no; then
1135 for lib in dns nsl resolv; do
1136 if test "$ac_cv_func_res_search" != yes; then
1139 LIBS="$openafs_save_libs"
1142 if test "$ac_cv_func_res_search" = yes; then
1144 AC_DEFINE(HAVE_RES_SEARCH, 1, [])
1145 AC_MSG_RESULT([yes, in lib$lib])
1150 AC_DEFINE(HAVE_RES_SEARCH, 1, [])
1155 XLIBS="$LIB_AFSDB $XLIBS"
1157 AC_CHECK_RESOLV_RETRANS
1159 AC_CACHE_CHECK([for setsockopt(, SOL_IP, IP_RECVERR)],
1160 [ac_cv_setsockopt_iprecverr],
1162 #include <sys/types.h>
1163 #include <sys/socket.h>
1164 #include <netinet/in.h>],
1166 setsockopt(0, SOL_IP, IP_RECVERR, &on, sizeof(on));],
1167 [ac_cv_setsockopt_iprecverr=yes],
1168 [ac_cv_setsockopt_iprecverr=no])])
1170 AS_IF([test "$ac_cv_setsockopt_iprecverr" = "yes"],
1171 [AC_DEFINE([HAVE_SETSOCKOPT_IP_RECVERR], [1],
1172 [define if we can receive socket errors via IP_RECVERR])])
1175 if test "x$MKAFS_OSTYPE" = OBSD; then
1176 PTHREAD_LIBS="-pthread"
1178 if test "x$MKAFS_OSTYPE" = xDFBSD; then
1179 PTHREAD_LIBS="-pthread"
1181 if test "x$PTHREAD_LIBS" = xerror; then
1182 AC_CHECK_LIB(pthread, pthread_attr_init,
1183 PTHREAD_LIBS="-lpthread")
1185 if test "x$PTHREAD_LIBS" = xerror; then
1186 AC_CHECK_LIB(pthreads, pthread_attr_init,
1187 PTHREAD_LIBS="-lpthreads")
1189 if test "x$PTHREAD_LIBS" = xerror; then
1190 AC_CHECK_LIB(c_r, pthread_attr_init,
1191 PTHREAD_LIBS="-lc_r")
1193 if test "x$PTHREAD_LIBS" = xerror; then
1194 AC_CHECK_FUNC(pthread_attr_init, PTHREAD_LIBS="")
1196 if test "x$PTHREAD_LIBS" = xerror; then
1197 # pthread_attr_init is a macro under HPUX 11.0 and 11.11
1198 AC_CHECK_LIB(pthread, pthread_attr_destroy,
1199 PTHREAD_LIBS="-lpthread")
1201 if test "x$PTHREAD_LIBS" = xerror; then
1202 AC_MSG_WARN(*** Unable to locate working posix thread library ***)
1204 AC_SUBST(PTHREAD_LIBS)
1206 HOST_CPU="$host_cpu"
1208 if test "x$with_bsd_kernel_headers" != "x"; then
1209 BSD_KERNEL_PATH="$with_bsd_kernel_headers"
1211 BSD_KERNEL_PATH="/usr/src/sys"
1214 if test "x$with_bsd_kernel_build" != "x"; then
1215 BSD_KERNEL_BUILD="$with_bsd_kernel_build"
1217 case $AFS_SYSNAME in
1219 BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/${HOST_CPU}/compile/GENERIC"
1222 BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/arch/${HOST_CPU}/compile/GENERIC"
1227 if test "$enable_supergroups" = "yes"; then
1228 AC_DEFINE(SUPERGROUPS, 1, [define if you want to have support for nested pts groups])
1231 if test "$enable_bitmap_later" = "yes"; then
1232 AC_DEFINE(BITMAP_LATER, 1, [define if you want to salvager to check bitmasks later])
1235 if test "$enable_unix_sockets" = "yes"; then
1236 AC_DEFINE(USE_UNIX_SOCKETS, 1, [define if you want to use UNIX sockets for fssync.])
1237 USE_UNIX_SOCKETS="yes"
1239 USE_UNIX_SOCKETS="no"
1241 AC_SUBST(USE_UNIX_SOCKETS)
1243 if test "$enable_namei_fileserver" = "yes"; then
1244 AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1247 if test "$enable_namei_fileserver" = "default"; then
1250 AC_MSG_WARN(Some Solaris 10 versions are not safe with the inode fileserver. Forcing namei. Override with --disable-namei-fileserver)
1251 AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1255 AC_MSG_WARN(Solaris 11 versions are not safe with the inode fileserver. Forcing namei. Override with --disable-namei-fileserver)
1256 AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1268 dnl check for tivoli
1269 AC_MSG_CHECKING(for tivoli tsm butc support)
1271 if test "$enable_tivoli_tsm" = "yes"; then
1272 XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen
1273 XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen
1274 XBSADIR3=/usr/tivoli/tsm/client/api/bin/sample
1275 XBSADIR4=/opt/tivoli/tsm/client/api/bin/sample
1277 if test -r "$XBSADIR3/dsmapifp.h"; then
1278 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR3"
1280 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1281 elif test -r "$XBSADIR4/dsmapifp.h"; then
1282 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR4"
1284 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1285 elif test -r "$XBSADIR1/xbsa.h"; then
1286 XBSA_CFLAGS="-Dxbsa -I$XBSADIR1"
1288 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1289 elif test -r "$XBSADIR2/xbsa.h"; then
1290 XBSA_CFLAGS="-Dxbsa -I$XBSADIR2"
1292 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1294 AC_MSG_RESULT([no, missing xbsa.h and dsmapifp.h header files])
1299 AC_SUBST(XBSA_CFLAGS)
1300 AC_SUBST(XBSA_XLIBS)
1302 dnl checks for header files.
1306 AC_CHECK_HEADERS([ \
1323 security/pam_appl.h \
1365 AC_CHECK_HEADERS([resolv.h], [], [], [AC_INCLUDES_DEFAULT
1366 #ifdef HAVE_NETINET_IN_H
1367 # include <netinet/in.h>
1370 AC_CHECK_HEADERS([net/if.h],[],[],[AC_INCLUDES_DEFAULT
1371 #ifdef HAVE_SYS_SOCKET_H
1372 # include <sys/socket.h>
1375 AC_CHECK_HEADERS([netinet/if_ether.h],[],[],[AC_INCLUDES_DEFAULT
1376 #ifdef HAVE_SYS_SOCKET_H
1377 # include <sys/socket.h>
1379 #ifdef HAVE_NETINET_IN_H
1380 # include <netinet/in.h>
1382 #ifdef HAVE_NET_IF_H
1383 # include <net/if.h>
1386 AC_CHECK_HEADERS([security/pam_modules.h],[],[],[AC_INCLUDES_DEFAULT
1387 #ifdef HAVE_SECURITY_PAM_APPL_H
1388 # include <security/pam_appl.h>
1391 AC_CHECK_HEADERS(linux/errqueue.h,,,[#include <linux/types.h>])
1393 AC_CHECK_TYPES([fsblkcnt_t],,,[
1394 #include <sys/types.h>
1395 #ifdef HAVE_SYS_BITYPES_H
1396 #include <sys/bitypes.h>
1398 #ifdef HAVE_SYS_STATFS_H
1399 #include <sys/statfs.h>
1401 #ifdef HAVE_SYS_STATVFS_H
1402 #include <sys/statvfs.h>
1406 dnl see what struct stat has for timestamps
1407 AC_CHECK_MEMBERS([struct stat.st_ctimespec, struct stat.st_ctimensec])
1409 dnl check for curses-lib
1410 AS_IF([test "x$enable_gtx" != "xno"],
1412 AC_CHECK_LIB( [ncurses], [setupterm],
1413 [LIB_curses=-lncurses],
1414 [AC_CHECK_LIB([Hcurses], [setupterm], [LIB_curses=-lHcurses],
1415 [AC_CHECK_LIB([curses], [setupterm], [LIB_curses=-lcurses])])
1418 AC_SUBST(LIB_curses)])
1420 OPENAFS_TEST_PACKAGE(libintl,[#include <libintl.h>],[-lintl],,,INTL)
1422 if test "$enable_debug_locks" = yes; then
1423 AC_DEFINE(OPR_DEBUG_LOCKS, 1, [turn on lock debugging in opr])
1426 dnl Don't build PAM on IRIX; the interface doesn't work for us.
1427 if test "$ac_cv_header_security_pam_modules_h" = yes -a "$enable_pam" = yes; then
1428 case $AFS_SYSNAME in
1441 if test "$enable_login" = yes; then
1446 AC_SUBST(BUILD_LOGIN)
1448 if test "$enable_uss" = yes; then
1490 OPENAFS_C_ATTRIBUTE()
1492 dnl Functions that Heimdal's libroken provides, but that we
1493 dnl haven't found a need for yet, and so haven't imported
1512 dnl Functions that are in objects that we always build from libroken
1522 dnl Functions that we're going to try and get from libroken
1523 AC_REPLACE_FUNCS([ \
1558 dnl Headers that we're going to try and get from libroken
1559 AC_CHECK_HEADERS([ \
1564 AC_CHECK_DECLS([h_errno], [], [], [
1565 #include <sys/types.h>
1574 AS_IF([test "$ac_cv_header_err_h" != "yes" ],
1575 [ROKEN_HEADERS="$ROKEN_HEADERS \$(TOP_INCDIR)/err.h"],
1577 AC_SUBST(ROKEN_HEADERS)
1579 dnl Stuff that's harder ...
1580 AC_MSG_CHECKING([for bswap16])
1581 AC_LINK_IFELSE([AC_LANG_PROGRAM([
1582 #ifdef HAVE_SYS_TYPES_H
1583 #include <sys/types.h>
1585 #ifdef HAVE_SYS_BSWAP_H
1586 #include <sys/bswap.h>
1589 [short a, b; b = bswap16(a); ])],
1591 AC_DEFINE(HAVE_BSWAP16, 1, [Define to 1 if you have the bswap16 function])
1593 [AC_MSG_RESULT(no)])
1595 AC_MSG_CHECKING([for bswap32])
1596 AC_LINK_IFELSE([AC_LANG_PROGRAM([#ifdef HAVE_SYS_TYPES_H
1597 #include <sys/types.h>
1599 #ifdef HAVE_SYS_BSWAP_H
1600 #include <sys/bswap.h>
1603 [int a, b; b = bswap32(a); ])],
1605 AC_DEFINE(HAVE_BSWAP32, 1, [Define to 1 if you have the bswap32 function])
1607 [AC_MSG_RESULT(no)])
1609 case $AFS_SYSNAME in
1611 AC_MSG_WARN([Some versions of HP-UX have a buggy positional I/O implementation. Forcing no positional I/O.])
1614 AC_MSG_CHECKING([for positional I/O])
1615 if test "$ac_cv_func_pread" = "yes" && \
1616 test "$ac_cv_func_pwrite" = "yes"; then
1617 AC_DEFINE(HAVE_PIO, 1, [define if you have pread() and pwrite()])
1622 AC_MSG_CHECKING([for vectored positional I/O])
1623 AS_IF([test "$ac_cv_func_preadv" = "yes" -a \
1624 "$ac_cv_func_pwritev" = "yes" -a \
1625 "$ac_cv_func_preadv64" = "yes" -a \
1626 "$ac_cv_func_pwritev64" = "yes"],
1627 [AC_DEFINE(HAVE_PIOV, 1, [define if you have preadv() and pwritev()])
1628 AC_MSG_RESULT(yes)],
1629 [AC_MSG_RESULT(no)])
1633 AC_MSG_CHECKING([for POSIX regex library])
1634 if test "$ac_cv_header_regex_h" = "yes" && \
1635 test "$ac_cv_func_regcomp" = "yes" && \
1636 test "$ac_cv_func_regexec" = "yes" && \
1637 test "$ac_cv_func_regerror" = "yes"; then
1638 AC_DEFINE(HAVE_POSIX_REGEX, 1, [define if you have POSIX regex library])
1644 dnl Look for "non-portable" pthreads functions.
1646 LIBS="$LIBS $PTHREAD_LIBS"
1648 pthread_set_name_np \
1649 pthread_setname_np \
1652 dnl Sadly, there are three different versions of pthread_setname_np.
1653 dnl Try to cater for all of them.
1654 if test "$ac_cv_func_pthread_setname_np" = "yes" ; then
1655 AC_MSG_CHECKING([for signature of pthread_setname_np])
1657 #include <pthread.h>
1658 #ifdef HAVE_PTHREAD_NP_H
1659 #include <pthread_np.h>
1661 ], [pthread_setname_np(pthread_self(), "test", (void *)0)], [
1662 AC_MSG_RESULT([three arguments])
1663 pthread_setname_np_args=3], [
1665 #include <pthread.h>
1666 #ifdef HAVE_PTHREAD_NP_H
1667 #include <pthread_np.h>
1669 ], [pthread_setname_np(pthread_self(), "test")], [
1670 AC_MSG_RESULT([two arguments])
1671 pthread_setname_np_args=2], [
1673 #include <pthread.h>
1674 #ifdef HAVE_PTHREAD_NP_H
1675 #include <pthread_np.h>
1677 ], [pthread_setname_np("test")], [
1678 AC_MSG_RESULT([one argument])
1679 pthread_setname_np_args=1], [pthread_setname_np_args=0])
1682 AC_DEFINE_UNQUOTED([PTHREAD_SETNAME_NP_ARGS], $pthread_setname_np_args, [Number of arguments required by pthread_setname_np() function])
1686 openafs_cv_saved_CFLAGS="$CFLAGS"
1687 CFLAGS="$CFLAGS $XCFLAGS_NOCHECKING"
1691 AC_CHECK_SIZEOF(void *)
1692 AC_CHECK_SIZEOF(unsigned long long)
1693 AC_CHECK_SIZEOF(unsigned long)
1694 AC_CHECK_SIZEOF(unsigned int)
1698 AC_CHECK_TYPE([sig_atomic_t],[],
1699 [AC_DEFINE([sig_atomic_t], [int],
1700 [Define to int if <signal.h> does not define.])],
1701 [#include <sys/types.h>
1702 #include <signal.h>])
1703 AC_CHECK_TYPE([socklen_t],[],
1704 [AC_DEFINE([socklen_t], [int],
1705 [Define to int if <sys/socket.h> does not define.])],
1706 [#include <sys/types.h>
1707 #include <sys/socket.h>])
1708 AC_CHECK_TYPES(off64_t)
1709 AC_CHECK_TYPES([ssize_t], [], [], [#include <unistd.h>])
1710 AC_CHECK_TYPES([struct winsize], [], [], [
1711 #ifdef HAVE_TERMIOS_H
1712 # include <termios.h>
1714 # include <sys/termios.h>
1716 #include <sys/ioctl.h>])
1717 AC_CHECK_TYPES([sa_family_t, socklen_t, struct sockaddr,
1718 struct sockaddr_storage],
1720 #include <sys/types.h>
1721 #include <sys/socket.h>
1723 AC_CHECK_TYPES([sa_family_t], [], [], [
1724 #include <sys/types.h>
1725 #include <sys/socket.h>
1727 AC_CHECK_TYPES([struct addrinfo], [], [], [
1728 #include <sys/types.h>
1733 AC_CHECK_TYPES([long long], [], [], [])
1735 AC_SIZEOF_TYPE(long)
1737 CFLAGS="$openafs_cv_saved_CFLAGS"
1739 RRA_HEADER_PAM_CONST
1742 dnl Directory PATH handling
1743 if test "x$enable_transarc_paths" = "xyes" ; then
1744 afsconfdir=${afsconfdir=/usr/afs/etc}
1745 viceetcdir=${viceetcdir=/usr/vice/etc}
1746 afskerneldir=${afskerneldir=${viceetcdir}}
1747 afssrvbindir=${afssrvbindir=/usr/afs/bin}
1748 afssrvsbindir=${afssrvsbindir=/usr/afs/bin}
1749 afssrvlibexecdir=${afssrvlibexecdir=/usr/afs/bin}
1750 afsdbdir=${afsdbdir=/usr/afs/db}
1751 afslogsdir=${afslogsdir=/usr/afs/logs}
1752 afslocaldir=${afslocaldir=/usr/afs/local}
1753 afsbackupdir=${afsbackupdir=/usr/afs/backup}
1754 afsbosconfigdir=${afsbosconfigdir=/usr/afs/local}
1755 afsdatadir=${afsdatadir=/usr/vice/etc}
1757 afsconfdir=${afsconfdir='${sysconfdir}/openafs/server'}
1758 viceetcdir=${viceetcdir='${sysconfdir}/openafs'}
1759 afskerneldir=${afskerneldir='${libdir}/openafs'}
1760 afssrvbindir=${afssrvbindir='${bindir}'}
1761 afssrvsbindir=${afssrvsbindir='${sbindir}'}
1762 afssrvlibexecdir=${afssrvlibexecdir='${libexecdir}/openafs'}
1763 afsdbdir=${afsdbdir='${localstatedir}/openafs/db'}
1764 afslogsdir=${afslogsdir='${localstatedir}/openafs/logs'}
1765 afslocaldir=${afslocaldir='${localstatedir}/openafs'}
1766 afsbackupdir=${afsbackupdir='${localstatedir}/openafs/backup'}
1767 afsbosconfigdir=${afsbosconfigdir='${sysconfdir}/openafs'}
1768 afsdatadir=${afsdatadir='${datadir}/openafs'}
1770 AC_SUBST(afsconfdir)
1771 AC_SUBST(viceetcdir)
1772 AC_SUBST(afskerneldir)
1773 AC_SUBST(afssrvbindir)
1774 AC_SUBST(afssrvsbindir)
1775 AC_SUBST(afssrvlibexecdir)
1777 AC_SUBST(afslogsdir)
1778 AC_SUBST(afslocaldir)
1779 AC_SUBST(afsbackupdir)
1780 AC_SUBST(afsbosconfigdir)
1781 AC_SUBST(afsdatadir)
1783 if test "x$enable_kernel_module" = "xyes"; then
1784 ENABLE_KERNEL_MODULE=libafs
1787 if test "x$enable_pthreaded_ubik" = "xyes"; then
1788 ENABLE_PTHREADED_UBIK=yes
1792 AC_SUBST(AFS_SYSNAME)
1793 AC_SUBST(AFS_PARAM_COMMON)
1794 AC_SUBST(ENABLE_KERNEL_MODULE)
1795 AC_SUBST(ENABLE_PTHREADED_UBIK)
1797 AC_SUBST(LINUX_KERNEL_PATH)
1798 AC_SUBST(LINUX_KERNEL_BUILD)
1800 AC_SUBST(BSD_KERNEL_PATH)
1801 AC_SUBST(BSD_KERNEL_BUILD)
1802 AC_SUBST(LINUX_VERSION)
1803 AC_SUBST(MKAFS_OSTYPE)
1804 AC_SUBST(TOP_OBJDIR)
1805 AC_SUBST(TOP_SRCDIR)
1806 AC_SUBST(TOP_INCDIR)
1807 AC_SUBST(TOP_LIBDIR)
1809 AC_SUBST(DARWIN_INFOFILE)
1810 AC_SUBST(IRIX_BUILD_IP35)
1813 AC_SUBST(DOCBOOK2PDF)
1814 AC_SUBST(DOCBOOK_STYLESHEETS)
1819 TOP_SRCDIR="${srcdir}/src"
1821 dnl If we're using ./configure, need a more reasonable TOP_SRCDIR, since relative links don't work everywhere
1827 TOP_SRCDIR=`cd $TOP_SRCDIR; pwd`
1831 TOP_OBJDIR="${SRCDIR_PARENT}"
1832 TOP_INCDIR="${SRCDIR_PARENT}/include"
1833 TOP_LIBDIR="${SRCDIR_PARENT}/lib"
1834 if test "${DEST}x" = "x"; then
1835 DEST="${SRCDIR_PARENT}/${AFS_SYSNAME}/dest"
1838 if test "x$with_crosstools_dir" != "x"; then
1839 if test -f "$with_crosstools_dir/rxgen" -a -f "$with_crosstools_dir/compile_et" -a -f "$with_crosstools_dir/config"; then
1840 COMPILE_ET_PATH=$with_crosstools_dir/compile_et
1841 CONFIGTOOL_PATH=$with_crosstools_dir/config
1842 RXGEN_PATH=$with_crosstools_dir/rxgen
1844 AC_MSG_ERROR(Tools not found in $with_crosstools_dir)
1848 COMPILE_ET_PATH="${SRCDIR_PARENT}/src/comerr/compile_et"
1849 CONFIGTOOL_PATH="${SRCDIR_PARENT}/src/config/config"
1850 RXGEN_PATH="${SRCDIR_PARENT}/src/rxgen/rxgen"
1852 AC_SUBST(COMPILE_ET_PATH)
1853 AC_SUBST(CONFIGTOOL_PATH)
1854 AC_SUBST(RXGEN_PATH)
1856 HELPER_SPLINT="${TOP_SRCDIR}/helper-splint.sh"
1857 HELPER_SPLINTCFG="${TOP_SRCDIR}/splint.cfg"
1858 AC_SUBST(HELPER_SPLINT)
1859 AC_SUBST(HELPER_SPLINTCFG)
1861 mkdir -p ${TOP_OBJDIR}/src/JAVA/libjafs
1863 dnl Check to see if crypt lives in a different library
1864 AC_CHECK_LIB(crypt, crypt, LIB_crypt="-lcrypt")
1867 dnl Check to see if the compiler support labels in structs
1868 AC_MSG_CHECKING(for label support in structs)
1869 AC_TRY_COMPILE([], [
1870 extern void osi_UFSOpen(void);
1872 void (*open) (void);
1874 struct labeltest struct_labeltest = {
1875 .open = osi_UFSOpen,
1879 AC_DEFINE(HAVE_STRUCT_LABEL_SUPPORT, 1, [Define to 1 if your compiler supports labels in structs.])
1884 AC_MSG_CHECKING([checking for dirfd])
1885 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
1886 #ifdef HAVE_DIRENT_H
1890 [[DIR *d = 0; dirfd(d);]])],
1891 [ac_rk_have_dirfd=yes], [ac_rk_have_dirfd=no])
1892 if test "$ac_rk_have_dirfd" = "yes" ; then
1893 AC_DEFINE_UNQUOTED(HAVE_DIRFD, 1, [have a dirfd function/macro])
1895 AC_MSG_RESULT($ac_rk_have_dirfd)
1897 OPENAFS_HAVE_STRUCT_FIELD(DIR, dd_fd, [#include <sys/types.h>
1898 #ifdef HAVE_DIRENT_H
1902 dnl Eventually, this will look for the system one, or for OpenSSL
1903 LIB_hcrypto="-lafshcrypto"
1904 LDFLAGS_hcrypto="-L\$(TOP_LIBDIR)"
1905 AC_SUBST(LIB_hcrypto)
1906 AC_SUBST(LDFLAGS_hcrypto)
1908 dnl Check for UUID library
1909 AC_CHECK_HEADERS([uuid/uuid.h])
1910 AC_CHECK_LIB(uuid, uuid_generate, LIBS_uuid="-luuid")
1911 AC_CHECK_FUNCS([uuid_generate])
1915 AC_DEFUN([SUMMARY], [
1916 # Print a configuration summary
1918 echo "**************************************"
1919 echo configure summary
1921 AS_IF([test $LIB_curses],[
1922 echo "LIB_curses : $LIB_curses" ],[
1923 echo "XXX LIB_curses not found! not building scout and afsmonitor!"
1926 echo "**************************************"