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 static /**/const char *const rcsid[] = { (char *)rcsid, "\100(#)" msg }
12 #undef HAVE_GETHOSTBYNAME
13 #undef HAVE_RES_SEARCH
15 #undef STRUCT_SOCKADDR_HAS_SA_LEN
16 #if !defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
17 # if ENDIANESS_IN_SYS_PARAM_H
19 # include <sys/types.h>
20 # include <sys/param.h>
21 # if BYTE_ORDER == BIG_ENDIAN
22 # define WORDS_BIGENDIAN 1
25 # if defined(AUTOCONF_FOUND_BIGENDIAN)
26 # define WORDS_BIGENDIAN 1
28 # undef WORDS_BIGENDIAN
32 # if defined(AUTOCONF_FOUND_BIGENDIAN)
33 # define WORDS_BIGENDIAN 1
35 # undef WORDS_BIGENDIAN
39 # if defined(__BIG_ENDIAN__)
40 # define WORDS_BIGENDIAN 1
42 # undef WORDS_BIGENDIAN
47 #undef AFS_LARGEFILE_ENV
50 #undef BOS_RESTRICTED_MODE
53 #undef FULL_LISTVOL_SWITCH
54 #undef COMPLETION_H_EXISTS
55 #undef DEFINED_FOR_EACH_PROCESS
56 #undef DEFINED_PREV_TASK
57 #undef EXPORTED_KALLSYMS_ADDRESS
58 #undef EXPORTED_KALLSYMS_SYMBOL
59 #undef EXPORTED_SYS_CALL_TABLE
60 #undef EXPORTED_IA32_SYS_CALL_TABLE
61 #undef EXPORTED_TASKLIST_LOCK
62 #undef INODE_SETATTR_NOT_VOID
63 #undef IRIX_HAS_MEM_FUNCS
64 #undef RECALC_SIGPENDING_TAKES_VOID
65 #undef STRUCT_ADDRESS_SPACE_HAS_GFP_MASK
66 #undef STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK
67 #undef STRUCT_FS_HAS_FS_ROLLED
68 #undef STRUCT_INODE_HAS_I_DEVICES
69 #undef STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS
70 #undef STRUCT_INODE_HAS_I_ALLOC_SEM
71 #undef STRUCT_INODE_HAS_I_TRUNCATE_SEM
72 #undef STRUCT_TASK_STRUCT_HAS_PARENT
73 #undef STRUCT_TASK_STRUCT_HAS_REAL_PARENT
74 #undef STRUCT_TASK_STRUCT_HAS_SIG
75 #undef STRUCT_TASK_STRUCT_HAS_SIGHAND
76 #undef STRUCT_TASK_STRUCT_HAS_SIGMASK_LOCK
78 #undef HAVE_STRUCT_BUF
79 #undef HAVE_ARPA_NAMESER_COMPAT_H
80 /* glue for RedHat kernel bug */
81 #undef ENABLE_REDHAT_BUILDSYS
82 #if defined(ENABLE_REDHAT_BUILDSYS) && defined(KERNEL) && defined(REDHAT_FIX)
83 #include "redhat-fix.h"
92 AC_ARG_WITH([afs-sysname],
93 [AS_HELP_STRING([--with-afs-sysname=sys], [use sys for the afs sysname])])
95 dnl General feature options.
96 AC_ARG_ENABLE([afsdb],
97 [AS_HELP_STRING([--disable-afsdb], [disable AFSDB DNS RR support])],
101 [AS_HELP_STRING([--disable-pam], [disable PAM support])],
104 AC_ARG_ENABLE([bos-restricted-mode],
105 [AS_HELP_STRING([--enable-bos-restricted-mode],
106 [enable bosserver restricted mode which disables certain bosserver
109 [enable_bos_restricted_mode="no"])
110 AC_ARG_ENABLE([bos-new-config],
111 [AS_HELP_STRING([--enable-bos-new-config],
112 [enable bosserver pickup of BosConfig.new on restarts])],
114 [enable_bos_new_config="no"])
115 AC_ARG_ENABLE([largefile-fileserver],
116 [AS_HELP_STRING([--disable-largefile-fileserver],
117 [disable large file support in fileserver])],
119 [enable_largefile_fileserver="yes"])
120 AC_ARG_ENABLE([namei-fileserver],
121 [AS_HELP_STRING([--enable-namei-fileserver],
122 [force compilation of namei fileserver in preference to inode
125 [enable_namei_fileserver="default"])
126 AC_ARG_ENABLE([cache-bypass],
127 [AS_HELP_STRING([--enable-cache-bypass],
128 [enable client support for cache bypass])],
130 [enable_cache_bypass="no"])
131 AC_ARG_ENABLE([supergroups],
132 [AS_HELP_STRING([--enable-supergroups],
133 [enable support for nested pts groups])],
135 [enable_supergroups="no"])
136 AC_ARG_ENABLE([fast-restart],
137 [AS_HELP_STRING([--enable-fast-restart],
138 [enable fast startup of file server without salvaging])],
140 [enable_fast_restart="no"])
141 AC_ARG_ENABLE([bitmap-later],
142 [AS_HELP_STRING([--enable-bitmap-later],
143 [enable fast startup of file server by not reading bitmap till
146 [enable_bitmap_later="no"])
147 AC_ARG_ENABLE([demand-attach-fs],
148 [AS_HELP_STRING([--enable-demand-attach-fs],
149 [enable Demand Attach Fileserver (please see documentation)])],
151 [enable_demand_attach_fs="no"])
152 AC_ARG_ENABLE([disconnected],
153 [AS_HELP_STRING([--enable-disconnected],
154 [enable disconnected support in cache manager (experimental)])],
156 [enable_disconnected="no"])
157 AC_ARG_ENABLE([unix-sockets],
158 [AS_HELP_STRING([--enable-unix-sockets],
159 [enable use of unix domain sockets for fssync])],
161 [enable_unix_sockets="yes"])
162 AC_ARG_ENABLE([full-vos-listvol-switch],
163 [AS_HELP_STRING([--disable-full-vos-listvol-switch],
164 [disable vos full listvol switch for formatted output])],
166 [enable_full_vos_listvol_switch="yes"])
167 AC_ARG_ENABLE([icmp-pmtu-discovery],
168 [AS_HELP_STRING([--enable-icmp-pmtu-discovery],
169 [enable path MTU discovery by decoding ICMP unreachable replies])],
171 [enable_icmp_pmtu_discovery="no"])
172 AC_ARG_ENABLE([tivoli-tsm],
173 [AS_HELP_STRING([--enable-tivoli-tsm],
174 [enable use of the Tivoli TSM API libraries for butc support])],
176 [enable_tivoli_tsm="no"])
177 AC_ARG_ENABLE([pthreaded-ubik],
178 [AS_HELP_STRING([--enable-pthreaded-ubik],
179 [enable installation of pthreaded ubik applications (defaults to
182 [enable_pthreaded_ubik="no"])
183 AC_ARG_ENABLE([linux-fh],
184 [AS_HELP_STRING([--enable-linux-fh],
185 [enable opening cache files by file hande instead of inode numbers
186 with linux (defaults to disabled)])],
188 [enable_linux_fh="no"])
190 dnl Kernel module build options.
191 AC_ARG_WITH([dux-kernel-headers],
192 [AS_HELP_STRING([--with-dux-kernel-headers=path],
193 [use the kernel headers found at path (optional, defaults to first
194 match in /usr/sys)])])
195 AC_ARG_WITH([linux-kernel-headers],
196 [AS_HELP_STRING([--with-linux-kernel-headers=path],
197 [use the kernel headers found at path (optional, defaults to
198 /usr/src/linux-2.4, then /usr/src/linux)])])
199 AC_ARG_WITH([linux-kernel-build],
200 [AS_HELP_STRING([--with-linux-kernel-build=path],
201 [use the kernel build found at path(optional, defaults to
202 /usr/src/linux-2.4, then /usr/src/linux)])])
203 AC_ARG_WITH([bsd-kernel-headers],
204 [AS_HELP_STRING([--with-bsd-kernel-headers=path],
205 [use the kernel headers found at path (optional, defaults to
207 AC_ARG_WITH([bsd-kernel-build],
208 [AS_HELP_STRING([--with-bsd-kernel-build=path],
209 [use the kernel build found at path (optional, defaults to
210 KSRC/i386/compile/GENERIC)])])
211 AC_ARG_WITH([linux-kernel-packaging],
212 [AS_HELP_STRING([--with-linux-kernel-packaging],
213 [use standard naming conventions to aid Linux kernel build packaging
214 (disables MPS, sets the kernel module name to openafs.ko, and
215 installs kernel modules into the standard Linux location)])],
216 [AC_SUBST(LINUX_KERNEL_PACKAGING, "yes")
217 AC_SUBST(LINUX_LIBAFS_NAME, "openafs")],
218 [AC_SUBST(LINUX_LIBAFS_NAME, "libafs")])
219 AC_ARG_ENABLE([kernel-module],
220 [AS_HELP_STRING([--disable-kernel-module],
221 [disable compilation of the kernel module (defaults to enabled)])],
223 [enable_kernel_module="yes"])
224 AC_ARG_ENABLE([redhat-buildsys],
225 [AS_HELP_STRING([--enable-redhat-buildsys],
226 [enable compilation of the redhat build system kernel (defaults to
229 [enable_redhat_buildsys="no"])
231 dnl Installation locations.
232 AC_ARG_ENABLE([transarc-paths],
233 [AS_HELP_STRING([--enable-transarc-paths],
234 [use Transarc style paths like /usr/afs and /usr/vice])],
236 [enable_transarc_paths="no"])
238 dnl Optimization and debugging flags.
239 AC_ARG_ENABLE([strip-binaries],
240 [AS_HELP_STRING([--disable-strip-binaries],
241 [disable stripping of symbol information from binaries (defaults to
244 [enable_strip_binaries="maybe"])
245 AC_ARG_ENABLE([debug],
246 [AS_HELP_STRING([--enable-debug],
247 [enable compilation of the user space code with debugging information
248 (defaults to disabled)])],
251 AC_ARG_ENABLE([optimize],
252 [AS_HELP_STRING([--disable-optimize],
253 [disable optimization for compilation of the user space code (defaults
256 [enable_optimize="yes"])
257 AC_ARG_ENABLE([warnings],
258 [AS_HELP_STRING([--enable-warnings],
259 [enable compilation warnings when building with gcc (defaults to
262 [enable_warnings="no"])
263 AC_ARG_ENABLE([debug-kernel],
264 [AS_HELP_STRING([--enable-debug-kernel],
265 [enable compilation of the kernel module with debugging information
266 (defaults to disabled)])],
268 [enable_debug_kernel="no"])
269 AC_ARG_ENABLE([optimize-kernel],
270 [AS_HELP_STRING([--disable-optimize-kernel],
271 [disable compilation of the kernel module with optimization (defaults
272 based on platform)])],
274 [enable_optimize_kernel="yes"])
275 AC_ARG_ENABLE([debug-lwp],
276 [AS_HELP_STRING([--enable-debug-lwp],
277 [enable compilation of the LWP code with debugging information
278 (defaults to disabled)])],
280 [enable_debug_lwp="no"])
281 AC_ARG_ENABLE([optimize-lwp],
282 [AS_HELP_STRING([--disable-optimize-lwp],
283 [disable optimization for compilation of the LWP code (defaults to
286 [enable_optimize_lwp="yes"])
287 AC_ARG_ENABLE([debug-pam],
288 [AS_HELP_STRING([--enable-debug-pam],
289 [enable compilation of the PAM code with debugging information
290 (defaults to disabled)])],
292 [enable_debug_pam="no"])
293 AC_ARG_ENABLE([optimize-pam],
294 [AS_HELP_STRING([--disable-optimize-pam],
295 [disable optimization for compilation of the PAM code (defaults to
298 [enable_optimize_pam="yes"])
303 dnl weird ass systems
308 dnl Various compiler setup.
312 COMPILER_HAS_FUNCTION_MACRO
314 dnl Checks for programs.
321 OPENAFS_CHECK_BIGENDIAN
323 AC_MSG_CHECKING(your OS)
329 if test "x$enable_redhat_buildsys" = "xyes"; then
330 AC_DEFINE(ENABLE_REDHAT_BUILDSYS, 1, [define if you have redhat buildsystem])
332 if test "x$enable_kernel_module" = "xyes"; then
333 if test "x$with_linux_kernel_headers" != "x"; then
334 LINUX_KERNEL_PATH="$with_linux_kernel_headers"
336 LINUX_KERNEL_PATH="/lib/modules/`uname -r`/source"
337 if test ! -f "$LINUX_KERNEL_PATH/include/linux/version.h"; then
338 LINUX_KERNEL_PATH="/lib/modules/`uname -r`/build"
340 if test ! -f "$LINUX_KERNEL_PATH/include/linux/version.h"; then
341 LINUX_KERNEL_PATH="/usr/src/linux-2.4"
343 if test ! -f "$LINUX_KERNEL_PATH/include/linux/version.h"; then
344 LINUX_KERNEL_PATH="/usr/src/linux"
347 if test "x$with_linux_kernel_build" != "x"; then
348 LINUX_KERNEL_BUILD="$with_linux_kernel_build"
350 LINUX_KERNEL_BUILD=$LINUX_KERNEL_PATH
352 if test -f "$LINUX_KERNEL_BUILD/include/linux/utsrelease.h"; then
353 linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/linux/utsrelease.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
354 LINUX_VERSION="$linux_kvers"
356 if test -f "$LINUX_KERNEL_BUILD/include/linux/version.h"; then
357 linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/linux/version.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
358 if test "x$linux_kvers" = "x"; then
359 if test -f "$LINUX_KERNEL_BUILD/include/linux/version-up.h"; then
360 linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/linux/version-up.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
361 if test "x$linux_kvers" = "x"; then
363 AC_MSG_ERROR(Linux headers lack version definition [2])
366 LINUX_VERSION="$linux_kvers"
369 AC_MSG_ERROR(Linux headers lack version definition)
373 LINUX_VERSION="$linux_kvers"
376 enable_kernel_module="no"
379 if test ! -f "$LINUX_KERNEL_BUILD/include/linux/autoconf.h"; then
380 enable_kernel_module="no"
382 if test "x$enable_kernel_module" = "xno"; then
383 if test "x$with_linux_kernel_headers" != "x"; then
384 AC_MSG_ERROR(No usable linux headers found at $LINUX_KERNEL_PATH)
387 AC_MSG_WARN(No usable linux headers found at $LINUX_KERNEL_PATH so disabling kernel module)
390 dnl do we need to determine SUBARCH from autoconf.h
394 if test "x$enable_kernel_module" = "xyes"; then
395 AFS_SYSKVERS=`echo $LINUX_VERSION | awk -F\. '{print $[]1 $[]2}'`
396 if test "x${AFS_SYSKVERS}" = "x"; then
397 AC_MSG_ERROR(Couldn't guess your Linux version [2])
404 SOLARIS_UFSVFS_HAS_DQRWLOCK
405 SOLARIS_PROC_HAS_P_COREFILE
406 SOLARIS_FS_HAS_FS_ROLLED
410 enable_kernel_module=no
416 if test -f "/usr/old/usr/include/ndir.h"; then
417 AC_DEFINE(HAVE_USR_OLD_USR_INCLUDE_NDIR_H, 1, [define if you have old ndir.h])
421 if test -d /usr/include/sys/SN/SN1; then
422 IRIX_BUILD_IP35="IP35"
429 AC_MSG_RESULT(rs_aix)
433 AC_MSG_RESULT(alpha_dux)
437 AC_MSG_RESULT(ppc_darwin)
441 AC_MSG_RESULT(x86_darwin)
445 AC_MSG_RESULT(i386_fbsd)
449 AC_MSG_RESULT(amd64_fbsd)
457 AC_MSG_RESULT(i386_obsd)
460 AC_MSG_RESULT($system)
464 if test "x$with_afs_sysname" != "x"; then
465 AFS_SYSNAME="$with_afs_sysname"
467 AC_MSG_CHECKING(your AFS sysname)
473 AFS_SYSNAME="i386_obsd${vM}${vm}"
475 sparc64-*-openbsd?.?)
479 AFS_SYSNAME="sparc64_obsd${vM}${vm}"
485 AFS_SYSNAME="i386_fbsd_${vM}${vm}"
491 AFS_SYSNAME="amd64_fbsd_${vM}${vm}"
494 AFS_SYSNAME="i386_nbsd15"
497 AFS_SYSNAME="alpha_nbsd15"
499 i?86-*-netbsd*1.6[[M-Z]]*)
500 AFS_SYSNAME="i386_nbsd20"
502 powerpc-*-netbsd*1.6[[M-Z]]*)
503 AFS_SYSNAME="ppc_nbsd20"
506 AFS_SYSNAME="i386_nbsd20"
509 AFS_SYSNAME="amd64_nbsd20"
511 x86_64-*-netbsd*3.[[0-8]]*)
512 AFS_PARAM_COMMON=param.nbsd30.h
513 AFS_SYSNAME="amd64_nbsd30"
515 x86_64-*-netbsd*4.[[0-8]]*)
516 AFS_PARAM_COMMON=param.nbsd40.h
517 AFS_SYSNAME="amd64_nbsd40"
519 powerpc-*-netbsd*2.0*)
520 AFS_SYSNAME="ppc_nbsd20"
523 AFS_SYSNAME="i386_nbsd16"
526 AFS_SYSNAME="alpha_nbsd16"
528 powerpc-*-netbsd*1.6*)
529 AFS_SYSNAME="ppc_nbsd16"
532 AFS_SYSNAME="i386_nbsd21"
535 AFS_SYSNAME="i386_nbsd30"
537 i?86-*-netbsd*3.[[0-8]]*)
538 AFS_SYSNAME="i386_nbsd30"
541 AFS_SYSNAME="i386_nbsd30"
543 i?86-*-netbsd*4.[[0-8]]*)
544 AFS_SYSNAME="i386_nbsd40"
547 AFS_SYSNAME="i386_nbsd40"
550 AFS_SYSNAME="hp_ux110"
553 AFS_SYSNAME="hp_ux11i"
556 AFS_SYSNAME="hp_ux1123"
559 AFS_SYSNAME="ia64_hpux1122"
562 AFS_SYSNAME="ia64_hpux1123"
565 AFS_SYSNAME="hp_ux102"
567 powerpc-apple-darwin1.2*)
568 AFS_SYSNAME="ppc_darwin_12"
570 powerpc-apple-darwin1.3*)
571 AFS_SYSNAME="ppc_darwin_13"
573 powerpc-apple-darwin1.4*)
574 AFS_SYSNAME="ppc_darwin_14"
576 powerpc-apple-darwin5.1*)
577 AFS_SYSNAME="ppc_darwin_14"
579 powerpc-apple-darwin5.2*)
580 AFS_SYSNAME="ppc_darwin_14"
582 powerpc-apple-darwin5.3*)
583 AFS_SYSNAME="ppc_darwin_14"
585 powerpc-apple-darwin5.4*)
586 AFS_SYSNAME="ppc_darwin_14"
588 powerpc-apple-darwin5.5*)
589 AFS_SYSNAME="ppc_darwin_14"
591 powerpc-apple-darwin6.0*)
592 AFS_SYSNAME="ppc_darwin_60"
594 powerpc-apple-darwin6.1*)
595 AFS_SYSNAME="ppc_darwin_60"
597 powerpc-apple-darwin6.2*)
598 AFS_SYSNAME="ppc_darwin_60"
600 powerpc-apple-darwin6.3*)
601 AFS_SYSNAME="ppc_darwin_60"
603 powerpc-apple-darwin6.4*)
604 AFS_SYSNAME="ppc_darwin_60"
606 powerpc-apple-darwin6.5*)
607 AFS_SYSNAME="ppc_darwin_60"
609 powerpc-apple-darwin7.0*)
610 AFS_SYSNAME="ppc_darwin_70"
612 powerpc-apple-darwin7.1*)
613 AFS_SYSNAME="ppc_darwin_70"
615 powerpc-apple-darwin7.2*)
616 AFS_SYSNAME="ppc_darwin_70"
618 powerpc-apple-darwin7.3*)
619 AFS_SYSNAME="ppc_darwin_70"
621 powerpc-apple-darwin7.4*)
622 AFS_SYSNAME="ppc_darwin_70"
624 powerpc-apple-darwin7.5*)
625 AFS_SYSNAME="ppc_darwin_70"
627 powerpc-apple-darwin8.0*)
628 AFS_SYSNAME="ppc_darwin_80"
630 powerpc-apple-darwin8.*)
631 AFS_SYSNAME="ppc_darwin_80"
633 i386-apple-darwin8.*)
634 AFS_SYSNAME="x86_darwin_80"
636 powerpc-apple-darwin9.*)
637 AFS_SYSNAME="ppc_darwin_90"
639 i386-apple-darwin9.*)
640 AFS_SYSNAME="x86_darwin_90"
642 sparc-sun-solaris2.5*)
643 AFS_SYSNAME="sun4x_55"
646 sparc-sun-solaris2.6)
647 AFS_SYSNAME="sun4x_56"
649 sparc-sun-solaris2.7)
650 AFS_SYSNAME="sun4x_57"
652 sparc-sun-solaris2.8)
653 AFS_SYSNAME="sun4x_58"
655 sparc-sun-solaris2.9)
656 AFS_SYSNAME="sun4x_59"
658 sparc-sun-solaris2.10)
659 AFS_SYSNAME="sun4x_510"
661 sparc-sun-solaris2.11)
662 AFS_SYSNAME="sun4x_511"
665 AFS_SYSNAME="sun4_413"
669 AFS_SYSNAME="sunx86_57"
672 AFS_SYSNAME="sunx86_58"
675 AFS_SYSNAME="sunx86_59"
678 AFS_SYSNAME="sunx86_510"
681 AFS_SYSNAME="sunx86_511"
684 AFS_SYSNAME="alpha_dux40"
687 AFS_SYSNAME="alpha_dux50"
690 AFS_SYSNAME="alpha_dux51"
696 AFS_SYSNAME="ia64_linuxXX"
699 AFS_SYSNAME="`/bin/arch`_linuxXX"
702 AFS_SYSNAME="ppc64_linuxXX"
705 AFS_SYSNAME="alpha_linux_XX"
708 AFS_SYSNAME="s390_linuxXX"
711 AFS_SYSNAME="s390x_linuxXX"
714 AFS_SYSNAME="`/bin/arch`_linuxXX"
717 AFS_SYSNAME="sparc64_linuxXX"
720 AFS_SYSNAME="i386_linuxXX"
722 parisc-*-linux-gnu|hppa-*-linux-gnu)
723 AFS_SYSNAME="parisc_linuxXX"
727 AFS_SYSNAME="rs_aix42"
731 AFS_SYSNAME="rs_aix42"
735 AFS_SYSNAME="rs_aix51"
739 AFS_SYSNAME="rs_aix52"
743 AFS_SYSNAME="rs_aix53"
747 AFS_SYSNAME="rs_aix61"
751 AFS_SYSNAME="amd64_linuxXX"
755 AC_MSG_ERROR(An AFS sysname is required)
760 *_linux* | *_umlinux*)
761 if test "x${AFS_SYSKVERS}" = "x"; then
762 AC_MSG_ERROR(Couldn't guess your Linux version. Please use the --with-afs-sysname option to configure an AFS sysname.)
764 _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/XX\$/$AFS_SYSKVERS/`
765 AFS_SYSNAME="$_AFS_SYSNAME"
766 save_CPPFLAGS="$CPPFLAGS"
767 CPPFLAGS="-I${LINUX_KERNEL_PATH}/include $CPPFLAGS"
769 [#include <linux/autoconf.h>],
770 [#ifndef CONFIG_USERMODE
773 ac_cv_linux_is_uml=yes,)
774 if test "${ac_cv_linux_is_uml}" = yes; then
775 _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/linux/umlinux/`
777 CPPFLAGS="$save_CPPFLAGS"
778 AFS_SYSNAME="$_AFS_SYSNAME"
781 AC_MSG_RESULT($AFS_SYSNAME)
784 dnl Some hosts have a separate common param file they should include. Figure
785 dnl out if we're on one of them now that we know the sysname.
787 *_nbsd15) AFS_PARAM_COMMON=param.nbsd15.h ;;
788 *_nbsd16) AFS_PARAM_COMMON=param.nbsd16.h ;;
789 *_nbsd20) AFS_PARAM_COMMON=param.nbsd20.h ;;
790 *_nbsd21) AFS_PARAM_COMMON=param.nbsd21.h ;;
791 *_nbsd30) AFS_PARAM_COMMON=param.nbsd30.h ;;
792 *_nbsd40) AFS_PARAM_COMMON=param.nbsd40.h ;;
793 *_linux22) AFS_PARAM_COMMON=param.linux22.h ;;
794 *_linux24) AFS_PARAM_COMMON=param.linux24.h ;;
795 *_linux26) AFS_PARAM_COMMON=param.linux26.h ;;
798 case $AFS_SYSNAME in *_linux* | *_umlinux*)
800 # Add (sub-) architecture-specific paths needed by conftests
803 UMLINUX26_FLAGS="-I$LINUX_KERNEL_PATH/arch/um/include"
804 UMLINUX26_FLAGS="$UMLINUX26_FLAGS -I$LINUX_KERNEL_PATH/arch/um/kernel/tt/include"
805 UMLINUX26_FLAGS="$UMLINUX26_FLAGS -I$LINUX_KERNEL_PATH/arch/um/kernel/skas/include"
806 CPPFLAGS="$CPPFLAGS $UMLINUX26_FLAGS"
809 if test "x$enable_kernel_module" = "xyes"; then
810 if test "x$enable_debug_kernel" = "xno"; then
811 LINUX_GCC_KOPTS="$LINUX_GCC_KOPTS -fomit-frame-pointer"
813 OPENAFS_GCC_SUPPORTS_MARCH
814 AC_SUBST(P5PLUS_KOPTS)
815 OPENAFS_GCC_NEEDS_NO_STRENGTH_REDUCE
816 OPENAFS_GCC_NEEDS_NO_STRICT_ALIASING
817 OPENAFS_GCC_SUPPORTS_NO_COMMON
818 OPENAFS_GCC_SUPPORTS_PIPE
819 AC_SUBST(LINUX_GCC_KOPTS)
820 ifdef([OPENAFS_CONFIGURE_LIBAFS],
821 [LINUX_BUILD_VNODE_FROM_INODE(src/config,src/afs)],
822 [LINUX_BUILD_VNODE_FROM_INODE(${srcdir}/src/config,src/afs/LINUX,${srcdir}/src/afs/LINUX)]
825 LINUX_KBUILD_USES_EXTRA_CFLAGS
826 LINUX_KERNEL_COMPILE_WORKS
827 LINUX_EXPORTS_FIND_TASK_BY_PID
828 LINUX_EXPORTS_PROC_ROOT_FS
829 LINUX_HAVE_CURRENT_KERNEL_TIME
830 LINUX_HAVE_WRITE_BEGIN_AOP
832 LINUX_KMEM_CACHE_INIT
833 LINUX_HAVE_KMEM_CACHE_T
834 LINUX_KMEM_CACHE_CREATE_TAKES_DTOR
835 LINUX_D_PATH_TAKES_STRUCT_PATH
837 LINUX_CONFIG_H_EXISTS
838 LINUX_COMPLETION_H_EXISTS
839 LINUX_SEMAPHORE_H_EXISTS
840 LINUX_EXPORTFS_H_EXISTS
841 LINUX_DEFINES_FOR_EACH_PROCESS
842 LINUX_DEFINES_PREV_TASK
843 LINUX_FS_STRUCT_SUPER_HAS_ALLOC_INODE
844 LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK
845 LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_GFP_MASK
846 LINUX_FS_STRUCT_INODE_HAS_I_ALLOC_SEM
847 LINUX_FS_STRUCT_INODE_HAS_I_BLKBITS
848 LINUX_FS_STRUCT_INODE_HAS_I_BLKSIZE
849 LINUX_FS_STRUCT_INODE_HAS_I_TRUNCATE_SEM
850 LINUX_FS_STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS
851 LINUX_FS_STRUCT_INODE_HAS_I_DEVICES
852 LINUX_FS_STRUCT_INODE_HAS_I_MMAP_SHARED
853 LINUX_FS_STRUCT_INODE_HAS_I_MUTEX
854 LINUX_FS_STRUCT_INODE_HAS_I_SB_LIST
855 LINUX_FS_STRUCT_INODE_HAS_I_SECURITY
856 LINUX_FS_STRUCT_INODE_HAS_INOTIFY_LOCK
857 LINUX_FS_STRUCT_INODE_HAS_INOTIFY_SEM
858 LINUX_INODE_SETATTR_RETURN_TYPE
859 LINUX_WRITE_INODE_RETURN_TYPE
860 LINUX_IOP_I_CREATE_TAKES_NAMEIDATA
861 LINUX_IOP_I_LOOKUP_TAKES_NAMEIDATA
862 LINUX_IOP_I_PERMISSION_TAKES_NAMEIDATA
863 LINUX_IOP_I_PUT_LINK_TAKES_COOKIE
864 LINUX_DOP_D_REVALIDATE_TAKES_NAMEIDATA
865 LINUX_FOP_F_FLUSH_TAKES_FL_OWNER_T
866 LINUX_AOP_WRITEBACK_CONTROL
867 LINUX_FS_STRUCT_FOP_HAS_FLOCK
868 LINUX_FS_STRUCT_FOP_HAS_SENDFILE
869 LINUX_FS_STRUCT_FOP_HAS_SPLICE
870 LINUX_KERNEL_LINUX_SYSCALL_H
871 LINUX_KERNEL_LINUX_SEQ_FILE_H
872 LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG
874 LINUX_KERNEL_SOCK_CREATE
875 LINUX_KERNEL_PAGE_FOLLOW_LINK
876 LINUX_KERNEL_HLIST_UNHASHED
877 LINUX_KEY_TYPE_H_EXISTS
879 LINUX_RECALC_SIGPENDING_ARG_TYPE
880 LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_PARENT
881 LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_REAL_PARENT
882 LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIG
883 LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGHAND
884 LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGMASK_LOCK
885 LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_RLIM
886 LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM
887 LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_EXIT_STATE
888 LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_TGID
889 LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_TODO
890 LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_THREAD_INFO
891 LINUX_EXPORTS_TASKLIST_LOCK
892 LINUX_GET_SB_HAS_STRUCT_VFSMOUNT
893 LINUX_STATFS_TAKES_DENTRY
894 LINUX_FREEZER_H_EXISTS
895 LINUX_HAVE_SVC_ADDR_IN
896 if test "x$ac_cv_linux_freezer_h_exists" = "xyes" ; then
897 AC_DEFINE(FREEZER_H_EXISTS, 1, [define if you have linux/freezer.h])
900 LINUX_LINUX_KEYRING_SUPPORT
901 LINUX_KEY_ALLOC_NEEDS_STRUCT_TASK
903 LINUX_GENERIC_FILE_AIO_READ
904 LINUX_INIT_WORK_HAS_DATA
905 LINUX_REGISTER_SYSCTL_TABLE_NOFLAG
906 LINUX_SYSCTL_TABLE_CHECKING
908 LINUX_FS_STRUCT_NAMEIDATA_HAS_PATH
909 LINUX_EXPORTS_INIT_MM
910 LINUX_EXPORTS_SYS_CHDIR
911 LINUX_EXPORTS_SYS_CLOSE
912 LINUX_EXPORTS_SYS_OPEN
913 LINUX_EXPORTS_SYS_WAIT4
914 LINUX_EXPORTS_RCU_READ_LOCK
915 if test "x$with_linux_kernel_packaging" = "xno" ; then
920 if test "x$ac_cv_linux_config_modversions" = "xno" -o $AFS_SYSKVERS -ge 26; then
921 AC_MSG_WARN([Cannot determine sys_call_table status. assuming it isn't exported])
922 ac_cv_linux_exports_sys_call_table=no
923 if test -f "$LINUX_KERNEL_PATH/include/asm/ia32_unistd.h"; then
924 ac_cv_linux_exports_ia32_sys_call_table=yes
927 LINUX_EXPORTS_KALLSYMS_ADDRESS
928 LINUX_EXPORTS_KALLSYMS_SYMBOL
929 LINUX_EXPORTS_SYS_CALL_TABLE
930 LINUX_EXPORTS_IA32_SYS_CALL_TABLE
931 if test "x$ac_cv_linux_exports_sys_call_table" = "xno"; then
932 linux_syscall_method=none
933 if test "x$ac_cv_linux_exports_init_mm" = "xyes"; then
934 linux_syscall_method=scan
935 if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
936 linux_syscall_method=scan_with_kallsyms_address
939 if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
940 linux_syscall_method=kallsyms_symbol
942 if test "x$linux_syscall_method" = "xnone"; then
943 AC_MSG_WARN([no available sys_call_table access method -- guessing scan])
944 linux_syscall_method=scan
948 if test -f "$LINUX_KERNEL_PATH/include/linux/in_systm.h"; then
949 AC_DEFINE(HAVE_IN_SYSTM_H, 1, [define if you have in_systm.h header file])
951 if test -f "$LINUX_KERNEL_PATH/include/linux/mm_inline.h"; then
952 AC_DEFINE(HAVE_MM_INLINE_H, 1, [define if you have mm_inline.h header file])
954 if test -f "$LINUX_KERNEL_PATH/include/linux/in_systm.h"; then
955 AC_DEFINE(HAVE_IN_SYSTM_H, 1, [define if you have in_systm.h header file])
957 if test "x$ac_cv_linux_exports_sys_chdir" = "xyes" ; then
958 AC_DEFINE(EXPORTED_SYS_CHDIR, 1, [define if your linux kernel exports sys_chdir])
960 if test "x$ac_cv_linux_exports_sys_open" = "xyes" ; then
961 AC_DEFINE(EXPORTED_SYS_OPEN, 1, [define if your linux kernel exports sys_open])
963 if test "x$ac_cv_linux_exports_sys_close" = "xyes" ; then
964 AC_DEFINE(EXPORTED_SYS_CLOSE, 1, [define if your linux kernel exports sys_close])
966 if test "x$ac_cv_linux_exports_sys_wait4" = "xyes" ; then
967 AC_DEFINE(EXPORTED_SYS_WAIT4, 1, [define if your linux kernel exports sys_wait4])
969 if test "x$ac_cv_linux_exports_sys_call_table" = "xyes"; then
970 AC_DEFINE(EXPORTED_SYS_CALL_TABLE, 1, [define if your linux kernel exports sys_call_table])
972 if test "x$ac_cv_linux_exports_ia32_sys_call_table" = "xyes"; then
973 AC_DEFINE(EXPORTED_IA32_SYS_CALL_TABLE, 1, [define if your linux kernel exports ia32_sys_call_table])
975 if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
976 AC_DEFINE(EXPORTED_KALLSYMS_SYMBOL, 1, [define if your linux kernel exports kallsyms])
978 if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
979 AC_DEFINE(EXPORTED_KALLSYMS_ADDRESS, 1, [define if your linux kernel exports kallsyms address])
981 if test "x$ac_cv_linux_completion_h_exists" = "xyes" ; then
982 AC_DEFINE(COMPLETION_H_EXISTS, 1, [define if completion_h exists])
984 if test "x$ac_cv_linux_config_h_exists" = "xyes" ; then
985 AC_DEFINE(CONFIG_H_EXISTS, 1, [define if config.h exists])
987 if test "x$ac_cv_linux_exportfs_h_exists" = "xyes"; then
988 AC_DEFINE(EXPORTFS_H_EXISTS, 1, [define if linux/exportfs.h exists])
990 if test "x$ac_cv_linux_key_type_h_exists" = "xyes" ; then
991 AC_DEFINE(KEY_TYPE_H_EXISTS, 1, [define if key-type.h exists])
993 if test "x$ac_cv_linux_defines_for_each_process" = "xyes" ; then
994 AC_DEFINE(DEFINED_FOR_EACH_PROCESS, 1, [define if for_each_process defined])
996 if test "x$ac_cv_linux_defines_prev_task" = "xyes" ; then
997 AC_DEFINE(DEFINED_PREV_TASK, 1, [define if prev_task defined])
999 if test "x$ac_cv_linux_func_inode_setattr_returns_int" = "xyes" ; then
1000 AC_DEFINE(INODE_SETATTR_NOT_VOID, 1, [define if your setattr return return non-void])
1002 if test "x$ac_cv_linux_func_write_inode_returns_int" = "xyes" ; then
1003 AC_DEFINE(WRITE_INODE_NOT_VOID, 1, [define if your sops.write_inode returns non-void])
1005 if test "x$ac_cv_linux_fs_struct_super_has_alloc_inode" = "xyes" ; then
1006 AC_DEFINE(STRUCT_SUPER_HAS_ALLOC_INODE, 1, [define if your struct super_operations has alloc_inode])
1008 if test "x$ac_cv_linux_fs_struct_address_space_has_page_lock" = "xyes"; then
1009 AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK, 1, [define if your struct address_space has page_lock])
1011 if test "x$ac_cv_linux_fs_struct_address_space_has_gfp_mask" = "xyes"; then
1012 AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_GFP_MASK, 1, [define if your struct address_space has gfp_mask])
1014 if test "x$ac_cv_linux_fs_struct_inode_has_i_truncate_sem" = "xyes"; then
1015 AC_DEFINE(STRUCT_INODE_HAS_I_TRUNCATE_SEM, 1, [define if your struct inode has truncate_sem])
1017 if test "x$ac_cv_linux_fs_struct_inode_has_i_alloc_sem" = "xyes"; then
1018 AC_DEFINE(STRUCT_INODE_HAS_I_ALLOC_SEM, 1, [define if your struct inode has alloc_sem])
1020 if test "x$ac_cv_linux_fs_struct_inode_has_i_blksize" = "xyes"; then
1021 AC_DEFINE(STRUCT_INODE_HAS_I_BLKSIZE, 1, [define if your struct inode has i_blksize])
1023 if test "x$ac_cv_linux_fs_struct_inode_has_i_devices" = "xyes"; then
1024 AC_DEFINE(STRUCT_INODE_HAS_I_DEVICES, 1, [define if you struct inode has i_devices])
1026 if test "x$ac_cv_linux_fs_struct_inode_has_i_security" = "xyes"; then
1027 AC_DEFINE(STRUCT_INODE_HAS_I_SECURITY, 1, [define if you struct inode has i_security])
1029 if test "x$ac_cv_linux_fs_struct_inode_has_i_mutex" = "xyes"; then
1030 AC_DEFINE(STRUCT_INODE_HAS_I_MUTEX, 1, [define if you struct inode has i_mutex])
1032 if test "x$ac_cv_linux_fs_struct_inode_has_i_sb_list" = "xyes"; then
1033 AC_DEFINE(STRUCT_INODE_HAS_I_SB_LIST, 1, [define if you struct inode has i_sb_list])
1035 if test "x$ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers" = "xyes"; then
1036 AC_DEFINE(STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS, 1, [define if your struct inode has data_buffers])
1038 if test "x$ac_cv_linux_fs_struct_inode_has_inotify_lock" = "xyes"; then
1039 AC_DEFINE(STRUCT_INODE_HAS_INOTIFY_LOCK, 1, [define if your struct inode has inotify_lock])
1041 if test "x$ac_cv_linux_fs_struct_inode_has_inotify_sem" = "xyes"; then
1042 AC_DEFINE(STRUCT_INODE_HAS_INOTIFY_SEM, 1, [define if your struct inode has inotify_sem])
1044 if test "x$ac_cv_linux_func_recalc_sigpending_takes_void" = "xyes"; then
1045 AC_DEFINE(RECALC_SIGPENDING_TAKES_VOID, 1, [define if your recalc_sigpending takes void])
1047 if test "x$ac_cv_linux_kernel_posix_lock_file_wait_arg" = "xyes" ; then
1048 AC_DEFINE(POSIX_LOCK_FILE_WAIT_ARG, 1, [define if your linux kernel uses 3 arguments for posix_lock_file])
1050 if test "x$ac_cv_linux_kernel_is_selinux" = "xyes" ; then
1051 AC_DEFINE(LINUX_KERNEL_IS_SELINUX, 1, [define if your linux kernel uses SELinux features])
1053 if test "x$ac_cv_linux_kernel_sock_create_v" = "xyes" ; then
1054 AC_DEFINE(LINUX_KERNEL_SOCK_CREATE_V, 1, [define if your linux kernel uses 5 arguments for sock_create])
1056 if test "x$ac_cv_linux_kernel_page_follow_link" = "xyes" ; then
1057 AC_DEFINE(HAVE_KERNEL_PAGE_FOLLOW_LINK, 1, [define if your linux kernel provides page_follow_link])
1059 if test "x$ac_cv_linux_kernel_hlist_unhashed" = "xyes" ; then
1060 AC_DEFINE(HAVE_KERNEL_HLIST_UNHASHED, 1, [define if your linux kernel provides hlist_unhashed])
1062 if test "x$ac_linux_syscall" = "xyes" ; then
1063 AC_DEFINE(HAVE_KERNEL_LINUX_SYSCALL_H, 1, [define if your linux kernel has linux/syscall.h])
1065 if test "x$ac_linux_seq_file" = "xyes" ; then
1066 AC_DEFINE(HAVE_KERNEL_LINUX_SEQ_FILE_H, 1, [define if your linux kernel has linux/seq_file.h])
1068 if test "x$ac_cv_linux_sched_struct_task_struct_has_parent" = "xyes"; then
1069 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_PARENT, 1, [define if your struct task_struct has parent])
1071 if test "x$ac_cv_linux_sched_struct_task_struct_has_real_parent" = "xyes"; then
1072 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_REAL_PARENT, 1, [define if your struct task_struct has real_parent])
1074 if test "x$ac_cv_linux_sched_struct_task_struct_has_sigmask_lock" = "xyes"; then
1075 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_SIGMASK_LOCK, 1, [define if your struct task_struct has sigmask_lock])
1077 if test "x$ac_cv_linux_sched_struct_task_struct_has_sighand" = "xyes"; then
1078 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_SIGHAND, 1, [define if your struct task_struct has sighand])
1080 if test "x$ac_cv_linux_sched_struct_task_struct_has_sig" = "xyes"; then
1081 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_SIG, 1, [define if your struct task_struct has sig])
1083 if test "x$ac_cv_linux_sched_struct_task_struct_has_rlim" = "xyes"; then
1084 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_RLIM, 1, [define if your struct task_struct has rlim])
1086 if test "x$ac_cv_linux_sched_struct_task_struct_has_signal_rlim" = "xyes"; then
1087 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM, 1, [define if your struct task_struct has signal->rlim])
1089 if test "x$ac_cv_linux_sched_struct_task_struct_has_exit_state" = "xyes"; then
1090 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_EXIT_STATE, 1, [define if your struct task_struct has exit_state])
1092 if test "x$ac_cv_linux_sched_struct_task_struct_has_tgid" = "xyes"; then
1093 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_TGID, 1, [define if your struct task_struct has tgid])
1095 if test "x$ac_cv_linux_sched_struct_task_struct_has_todo" = "xyes"; then
1096 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_TODO, 1, [define if your struct task_struct has todo])
1098 if test "x$ac_cv_linux_sched_struct_task_struct_has_thread_info" = "xyes"; then
1099 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_THREAD_INFO, 1, [define if your struct task_struct has thread_info])
1101 if test "x$ac_cv_linux_get_sb_has_struct_vfsmount" = "xyes"; then
1102 AC_DEFINE(GET_SB_HAS_STRUCT_VFSMOUNT, 1, [define if your get_sb_nodev needs a struct vfsmount argument])
1104 if test "x$ac_cv_linux_statfs_takes_dentry" = "xyes"; then
1105 AC_DEFINE(STATFS_TAKES_DENTRY, 1, [define if your statfs takes a dentry argument])
1107 if test "x$ac_cv_linux_func_a_writepage_takes_writeback_control" = "xyes" ; then
1108 AC_DEFINE(AOP_WRITEPAGE_TAKES_WRITEBACK_CONTROL, 1, [define if your aops.writepage takes a struct writeback_control argument])
1110 if test "x$ac_cv_linux_func_refrigerator_takes_pf_freeze" = "xyes" ; then
1111 AC_DEFINE(LINUX_REFRIGERATOR_TAKES_PF_FREEZE, 1, [define if your refrigerator takes PF_FREEZE])
1113 if test "x$ac_cv_linux_func_i_create_takes_nameidata" = "xyes" ; then
1114 AC_DEFINE(IOP_CREATE_TAKES_NAMEIDATA, 1, [define if your iops.create takes a nameidata argument])
1116 if test "x$ac_cv_linux_func_f_flush_takes_fl_owner_t" = "xyes" ; then
1117 AC_DEFINE(FOP_FLUSH_TAKES_FL_OWNER_T, 1, [define if your fops.flush takes an fl_owner_t argument])
1119 if test "x$ac_cv_linux_func_i_lookup_takes_nameidata" = "xyes" ; then
1120 AC_DEFINE(IOP_LOOKUP_TAKES_NAMEIDATA, 1, [define if your iops.lookup takes a nameidata argument])
1122 if test "x$ac_cv_linux_func_i_permission_takes_nameidata" = "xyes" ; then
1123 AC_DEFINE(IOP_PERMISSION_TAKES_NAMEIDATA, 1, [define if your iops.permission takes a nameidata argument])
1125 if test "x$ac_cv_linux_func_d_revalidate_takes_nameidata" = "xyes" ; then
1126 AC_DEFINE(DOP_REVALIDATE_TAKES_NAMEIDATA, 1, [define if your dops.d_revalidate takes a nameidata argument])
1128 if test "x$ac_cv_linux_init_work_has_data" = "xyes" ; then
1129 AC_DEFINE(INIT_WORK_HAS_DATA, 1, [define if INIT_WORK takes a data (3rd) argument])
1131 if test "x$ac_cv_linux_fs_struct_fop_has_flock" = "xyes" ; then
1132 AC_DEFINE(STRUCT_FILE_OPERATIONS_HAS_FLOCK, 1, [define if your struct file_operations has flock])
1134 if test "x$ac_cv_linux_fs_struct_fop_has_sendfile" = "xyes" ; then
1135 AC_DEFINE(STRUCT_FILE_OPERATIONS_HAS_SENDFILE, 1, [define if your struct file_operations has sendfile])
1137 if test "x$ac_cv_linux_fs_struct_fop_has_splice" = "xyes" ; then
1138 AC_DEFINE(STRUCT_FILE_OPERATIONS_HAS_SPLICE, 1, [define if your struct file_operations has splice_write and splice_read])
1140 if test "x$ac_cv_linux_register_sysctl_table_noflag" = "xyes" ; then
1141 AC_DEFINE(REGISTER_SYSCTL_TABLE_NOFLAG, 1, [define if register_sysctl_table has no insert_at head flag])
1143 if test "x$ac_cv_linux_sysctl_table_checking" = "xyes" ; then
1144 AC_DEFINE(SYSCTL_TABLE_CHECKING, 1, [define if your kernel has sysctl table checking])
1146 if test "x$ac_cv_linux_have_iget" = "xyes" ; then
1147 AC_DEFINE(HAVE_IGET, 1, [define if your kernel has iget])
1149 if test "x$ac_cv_linux_struct_nameidata_has_path" = "xyes" ; then
1150 AC_DEFINE(STRUCT_NAMEIDATA_HAS_PATH, 1, [define if your struct nameidata has path])
1152 if test "x$ac_cv_linux_exports_init_mm" = "xyes" ; then
1153 AC_DEFINE(EXPORTED_INIT_MM, 1, [define if your kernel exports init_mm])
1155 if test "x$ac_cv_linux_exports_tasklist_lock" = "xyes" ; then
1156 AC_DEFINE(EXPORTED_TASKLIST_LOCK, 1, [define if tasklist_lock exported])
1158 if test "x$ac_cv_linux_have_kmem_cache_t" = "xyes" ; then
1159 AC_DEFINE(HAVE_KMEM_CACHE_T, 1, [define if kmem_cache_t exists])
1161 if test "x$ac_cv_linux_kmem_cache_init" = "xyes" ; then
1162 AC_DEFINE(KMEM_CACHE_INIT, 1, [define for new kmem_cache init function parameters])
1164 if test "x$ac_cv_linux_have_current_kernel_time" = "xyes" ; then
1165 AC_DEFINE(HAVE_CURRENT_KERNEL_TIME, 1, [define if current_kernel_time() exists])
1167 if test "x$ac_cv_linux_have_kmem_cache_t" = "xyes" ; then
1168 AC_DEFINE(KMEM_CACHE_TAKES_DTOR, 1, [define if kmem_cache_create takes a destructor argument])
1170 if test "$enable_linux_fh" = "yes"; then
1171 AC_DEFINE(LINUX_USE_FH, 1, [define if you want to open cache files by file handle instead of inode numbers])
1173 if test "x$ac_cv_linux_kernel_page_follow_link" = "xyes" -o "x$ac_cv_linux_func_i_put_link_takes_cookie" = "xyes"; then
1174 AC_DEFINE(USABLE_KERNEL_PAGE_SYMLINK_CACHE, 1, [define if your kernel has a usable symlink cache API])
1176 AC_MSG_WARN([your kernel does not have a usable symlink cache API])
1178 if test "x$ac_cv_linux_have_svc_addr_in" = "xyes"; then
1179 AC_DEFINE(HAVE_SVC_ADDR_IN, 1, [define if svc_add_in exists])
1185 case $AFS_SYSNAME in
1187 DARWIN_PLIST=src/libafs/afs.${AFS_SYSNAME}.plist
1188 DARWIN_INFOFILE=afs.${AFS_SYSNAME}.plist
1189 dnl the test below fails on darwin, even if the CPPFLAGS below
1190 dnl are added. the headers from Kernel.framework must be used
1191 dnl when KERNEL is defined.
1193 dnl really, such a thing isn't guaranteed to work on any
1194 dnl platform until the kernel cflags from MakefileProto are
1195 dnl known to configure
1196 AC_DEFINE(HAVE_STRUCT_BUF, 1, [define if you have a struct buf])
1199 AC_MSG_CHECKING(for definition of struct buf)
1200 dnl save_CPPFLAGS="$CPPFLAGS"
1201 dnl CPPFLAGS="$CPPFLAGS -DKERNEL -D_KERNEL -D__KERNEL -D__KERNEL__"
1202 AC_CACHE_VAL(ac_cv_have_struct_buf, [
1203 ac_cv_have_struct_buf=no
1205 [#include <sys/buf.h>],
1207 printf("%d\n", sizeof(x));],
1208 ac_cv_have_struct_buf=yes,)
1211 dnl CPPFLAGS="$save_CPPFLAGS"
1212 AC_MSG_RESULT($ac_cv_have_struct_buf)
1213 if test "$ac_cv_have_struct_buf" = yes; then
1214 AC_DEFINE(HAVE_STRUCT_BUF, 1, [define if you have a struct buf])
1220 AC_CACHE_VAL(ac_cv_sockaddr_len,
1222 AC_MSG_CHECKING([if struct sockaddr has sa_len field])
1223 AC_TRY_COMPILE( [#include <sys/types.h>
1224 #include <sys/socket.h>],
1225 [struct sockaddr *a;
1226 a->sa_len=0;], ac_cv_sockaddr_len=yes, ac_cv_sockaddr_len=no)
1227 AC_MSG_RESULT($ac_cv_sockaddr_len)])
1228 if test "$ac_cv_sockaddr_len" = "yes"; then
1229 AC_DEFINE(STRUCT_SOCKADDR_HAS_SA_LEN, 1, [define if you struct sockaddr sa_len])
1231 if test "x${MKAFS_OSTYPE}" = "xIRIX"; then
1232 echo Skipping library tests because they confuse Irix.
1234 AC_CHECK_FUNCS(socket)
1236 if test "$ac_cv_func_socket" = no; then
1237 for lib in socket inet; do
1238 if test "$HAVE_SOCKET" != 1; then
1239 AC_CHECK_LIB(${lib}, socket,LIBS="$LIBS -l$lib";HAVE_SOCKET=1;AC_DEFINE(HAVE_SOCKET, 1, [define if you have socket]))
1244 AC_CHECK_FUNCS(connect)
1246 if test "$ac_cv_func_connect" = no; then
1248 if test "$HAVE_CONNECT" != 1; then
1249 AC_CHECK_LIB(${lib}, connect,LIBS="$LIBS -l$lib";HAVE_CONNECT=1;AC_DEFINE(HAVE_CONNECT, 1, [define if you have connect]))
1254 AC_CHECK_FUNCS(gethostbyname)
1255 if test "$ac_cv_func_gethostbyname" = no; then
1256 for lib in dns nsl resolv; do
1257 if test "$HAVE_GETHOSTBYNAME" != 1; then
1258 AC_CHECK_LIB(${lib}, gethostbyname, LIBS="$LIBS -l$lib";HAVE_GETHOSTBYNAME=1;AC_DEFINE(HAVE_GETHOSTBYNAME, 1, [define if you have gethostbyname]))
1263 dnl darwin wants it, aix hates it
1264 AC_MSG_CHECKING(for the useability of arpa/nameser_compat.h)
1268 #include <sys/types.h>
1269 #include <sys/socket.h>
1270 #include <netinet/in.h>
1271 #include <arpa/inet.h>
1272 #include <arpa/nameser.h>
1273 #include <arpa/nameser_compat.h>
1275 ], [static int i; i = 0;],
1277 AC_DEFINE(HAVE_ARPA_NAMESER_COMPAT_H, 1, [define if arpa/nameser_compat.h exists])],
1281 openafs_save_libs="$LIBS"
1282 AC_MSG_CHECKING([for res_search])
1285 if test "$ac_cv_func_res_search" = no; then
1286 for lib in dns nsl resolv; do
1287 if test "$ac_cv_func_res_search" != yes; then
1290 LIBS="$openafs_save_libs"
1293 if test "$ac_cv_func_res_search" = yes; then
1294 LIB_res_search="-l$lib"
1295 AC_DEFINE(HAVE_RES_SEARCH, 1, [])
1296 AC_MSG_RESULT([yes, in lib$lib])
1301 AC_DEFINE(HAVE_RES_SEARCH, 1, [])
1307 AC_CACHE_VAL(ac_cv_setsockopt_iprecverr,
1309 AC_MSG_CHECKING([for setsockopt(, SOL_IP, IP_RECVERR)])
1310 AC_TRY_COMPILE( [#include <sys/types.h>
1311 #include <sys/socket.h>
1312 #include <netinet/in.h>],
1314 setsockopt(0, SOL_IP, IP_RECVERR, &on, sizeof(on));], ac_cv_setsockopt_iprecverr=yes, ac_cv_setsockopt_iprecverr=no)
1315 AC_MSG_RESULT($ac_cv_setsockopt_iprecverr)])
1316 if test "$ac_cv_setsockopt_iprecverr" = "yes"; then
1317 AC_DEFINE(ADAPT_PMTU_RECVERR, 1, [define if asynchronous socket errors can be received])
1321 if test "x$MKAFS_OSTYPE" = OBSD; then
1322 PTHREAD_LIBS="-pthread"
1324 if test "x$PTHREAD_LIBS" = xerror; then
1325 AC_CHECK_LIB(pthread, pthread_attr_init,
1326 PTHREAD_LIBS="-lpthread")
1328 if test "x$PTHREAD_LIBS" = xerror; then
1329 AC_CHECK_LIB(pthreads, pthread_attr_init,
1330 PTHREAD_LIBS="-lpthreads")
1332 if test "x$PTHREAD_LIBS" = xerror; then
1333 AC_CHECK_LIB(c_r, pthread_attr_init,
1334 PTHREAD_LIBS="-lc_r")
1336 if test "x$PTHREAD_LIBS" = xerror; then
1337 AC_CHECK_FUNC(pthread_attr_init, PTHREAD_LIBS="")
1339 if test "x$PTHREAD_LIBS" = xerror; then
1340 # pthread_attr_init is a macro under HPUX 11.0 and 11.11
1341 AC_CHECK_LIB(pthread, pthread_attr_destroy,
1342 PTHREAD_LIBS="-lpthread")
1344 if test "x$PTHREAD_LIBS" = xerror; then
1345 AC_MSG_WARN(*** Unable to locate working posix thread library ***)
1347 AC_SUBST(PTHREAD_LIBS)
1349 HOST_CPU="$host_cpu"
1351 if test "x$with_bsd_kernel_headers" != "x"; then
1352 BSD_KERNEL_PATH="$with_bsd_kernel_headers"
1354 BSD_KERNEL_PATH="/usr/src/sys"
1357 if test "x$with_bsd_kernel_build" != "x"; then
1358 BSD_KERNEL_BUILD="$with_bsd_kernel_build"
1360 case $AFS_SYSNAME in
1362 BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/compile/GENERIC"
1365 BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/${HOST_CPU}/compile/GENERIC"
1371 if test "$enable_supergroups" = "yes"; then
1372 AC_DEFINE(SUPERGROUPS, 1, [define if you want to have support for nested pts groups])
1375 if test "$enable_fast_restart" = "yes"; then
1376 AC_DEFINE(FAST_RESTART, 1, [define if you want to have fast restart])
1379 if test "$enable_bitmap_later" = "yes"; then
1380 AC_DEFINE(BITMAP_LATER, 1, [define if you want to salvager to check bitmasks later])
1383 if test "$enable_demand_attach_fs" = "yes"; then
1384 AC_DEFINE(DEMAND_ATTACH_ENABLE, 1, [define if you want the demand attach fileserver])
1389 AC_SUBST(DEMAND_ATTACH)
1391 if test "$enable_disconnected" = "yes"; then
1392 AC_DEFINE(AFS_DISCON_ENV, 1, [define if you want support for disconnected operation])
1395 if test "$enable_unix_sockets" = "yes"; then
1396 AC_DEFINE(USE_UNIX_SOCKETS, 1, [define if you want to use UNIX sockets for fssync.])
1397 USE_UNIX_SOCKETS="yes"
1399 USE_UNIX_SOCKETS="no"
1401 AC_SUBST(USE_UNIX_SOCKETS)
1403 if test "$enable_fast_restart" = "yes" &&
1404 test "$enable_demand_attach_fs" = "yes" ; then
1405 AC_MSG_ERROR([The Demand Attach and Fast Restart extensions are mutually exclusive. Demand Attach fileservers automatically salvage volumes in the background, thereby making Fast Restart pointless.])
1409 if test "$enable_full_vos_listvol_switch" = "yes"; then
1410 AC_DEFINE(FULL_LISTVOL_SWITCH, 1, [define if you want to want listvol switch])
1413 if test "$enable_icmp_pmtu_discovery" = "yes"; then
1414 if test "$ac_cv_setsockopt_iprecverr" = "yes"; then
1415 AC_DEFINE(ADAPT_PMTU, 1, [define if you want to decode icmp unreachable packets to discover path mtu])
1419 if test "$enable_bos_restricted_mode" = "yes"; then
1420 AC_DEFINE(BOS_RESTRICTED_MODE, 1, [define if you want to want bos restricted mode])
1423 if test "$enable_bos_new_config" = "yes"; then
1424 AC_DEFINE(BOS_NEW_CONFIG, 1, [define if you want to enable automatic renaming of BosConfig.new to BosConfig at startup])
1427 if test "$enable_largefile_fileserver" = "yes"; then
1428 AC_DEFINE(AFS_LARGEFILE_ENV, 1, [define if you want large file fileserver])
1431 if test "$enable_cache_bypass" = "yes"; then
1432 AC_DEFINE(AFS_CACHE_BYPASS, 1, [define to activate cache bypassing Unix client])
1435 if test "$enable_namei_fileserver" = "yes"; then
1436 AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1438 if test "$enable_namei_fileserver" = "default"; then
1441 AC_MSG_WARN(Some Solaris 10 versions are not safe with the inode fileserver. Forcing namei. Override with --disable-namei-fileserver)
1442 AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1445 AC_MSG_WARN(Solaris 11 versions are not safe with the inode fileserver. Forcing namei. Override with --disable-namei-fileserver)
1446 AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1454 if test "$enable_afsdb" = "yes"; then
1455 LIB_AFSDB="$LIB_res_search"
1456 AC_DEFINE(AFS_AFSDB_ENV, 1, [define if you want to want search afsdb rr])
1459 dnl check for tivoli
1460 AC_MSG_CHECKING(for tivoli tsm butc support)
1462 if test "$enable_tivoli_tsm" = "yes"; then
1463 XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen
1464 XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen
1465 XBSADIR3=/usr/tivoli/tsm/client/api/bin/sample
1466 XBSADIR4=/opt/tivoli/tsm/client/api/bin/sample
1468 if test -r "$XBSADIR3/dsmapifp.h"; then
1469 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR3"
1471 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1472 elif test -r "$XBSADIR4/dsmapifp.h"; then
1473 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR4"
1475 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1476 elif test -r "$XBSADIR1/xbsa.h"; then
1477 XBSA_CFLAGS="-Dxbsa -I$XBSADIR1"
1479 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1480 elif test -r "$XBSADIR2/xbsa.h"; then
1481 XBSA_CFLAGS="-Dxbsa -I$XBSADIR2"
1483 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1485 AC_MSG_RESULT([no, missing xbsa.h and dsmapifp.h header files])
1490 AC_SUBST(XBSA_CFLAGS)
1491 AC_SUBST(XBSA_XLIBS)
1493 dnl checks for header files.
1497 AC_CHECK_HEADERS(stdlib.h string.h unistd.h poll.h fcntl.h sys/time.h sys/file.h)
1498 AC_CHECK_HEADERS(netinet/in.h netdb.h sys/fcntl.h sys/mnttab.h sys/mntent.h)
1499 AC_CHECK_HEADERS(mntent.h sys/vfs.h sys/param.h sys/fs_types.h sys/fstyp.h)
1500 AC_CHECK_HEADERS(sys/mount.h strings.h termios.h signal.h poll.h)
1501 AC_CHECK_HEADERS(windows.h malloc.h winsock2.h direct.h io.h sys/user.h)
1502 AC_CHECK_HEADERS(security/pam_modules.h siad.h usersec.h ucontext.h regex.h values.h)
1503 AC_CHECK_HEADERS(linux/errqueue.h,,,[#include <linux/types.h>])
1505 dnl Don't build PAM on IRIX; the interface doesn't work for us.
1506 if test "$ac_cv_header_security_pam_modules_h" = yes -a "$enable_pam" = yes; then
1507 case $AFS_SYSNAME in
1520 if test "$enable_login" = yes; then
1525 AC_SUBST(BUILD_LOGIN)
1527 AC_CHECK_FUNCS(utimes random srandom getdtablesize snprintf strlcat strlcpy re_comp re_exec flock)
1528 AC_CHECK_FUNCS(setprogname getprogname sigaction mkstemp vsnprintf strerror strcasestr)
1529 AC_CHECK_FUNCS(setvbuf vsyslog)
1530 AC_FUNC_SETVBUF_REVERSED
1531 AC_CHECK_FUNCS(regcomp regexec regerror)
1532 AC_MSG_CHECKING([for POSIX regex library])
1533 if test "$ac_cv_header_regex_h" = "yes" && \
1534 test "$ac_cv_func_regcomp" = "yes" && \
1535 test "$ac_cv_func_regexec" = "yes" && \
1536 test "$ac_cv_func_regerror" = "yes"; then
1537 AC_DEFINE(HAVE_POSIX_REGEX, 1, [define if you have POSIX regex library])
1544 AC_CHECK_TYPE(ssize_t, int)
1545 AC_CHECK_TYPE([sig_atomic_t], ,
1546 [AC_DEFINE([sig_atomic_t], [int],
1547 [Define to int if <signal.h> does not define.])],
1548 [#include <sys/types.h>
1549 #include <signal.h>])
1550 AC_SIZEOF_TYPE(long)
1552 AC_CHECK_FUNCS(timegm)
1553 AC_CHECK_FUNCS(daemon)
1555 dnl Directory PATH handling
1556 if test "x$enable_transarc_paths" = "xyes" ; then
1557 afsconfdir=${afsconfdir=/usr/afs/etc}
1558 viceetcdir=${viceetcdir=/usr/vice/etc}
1559 afskerneldir=${afskerneldir=${viceetcdir}}
1560 afssrvbindir=${afssrvbindir=/usr/afs/bin}
1561 afssrvsbindir=${afssrvsbindir=/usr/afs/bin}
1562 afssrvlibexecdir=${afssrvlibexecdir=/usr/afs/bin}
1563 afsdbdir=${afsdbdir=/usr/afs/db}
1564 afslogsdir=${afslogsdir=/usr/afs/logs}
1565 afslocaldir=${afslocaldir=/usr/afs/local}
1566 afsbackupdir=${afsbackupdir=/usr/afs/backup}
1567 afsbosconfigdir=${afsbosconfigdir=/usr/afs/local}
1569 afsconfdir=${afsconfdir='${sysconfdir}/openafs/server'}
1570 viceetcdir=${viceetcdir='${sysconfdir}/openafs'}
1571 afskerneldir=${afskerneldir='${libdir}/openafs'}
1572 afssrvbindir=${afssrvbindir='${bindir}'}
1573 afssrvsbindir=${afssrvsbindir='${sbindir}'}
1574 afssrvlibexecdir=${afssrvlibexecdir='${libexecdir}/openafs'}
1575 afsdbdir=${afsdbdir='${localstatedir}/openafs/db'}
1576 afslogsdir=${afslogsdir='${localstatedir}/openafs/logs'}
1577 afslocaldir=${afslocaldir='${localstatedir}/openafs'}
1578 afsbackupdir=${afsbackupdir='${localstatedir}/openafs/backup'}
1579 afsbosconfigdir=${afsbosconfigdir='${sysconfdir}/openafs'}
1581 AC_SUBST(afsconfdir)
1582 AC_SUBST(viceetcdir)
1583 AC_SUBST(afskerneldir)
1584 AC_SUBST(afssrvbindir)
1585 AC_SUBST(afssrvsbindir)
1586 AC_SUBST(afssrvlibexecdir)
1588 AC_SUBST(afslogsdir)
1589 AC_SUBST(afslocaldir)
1590 AC_SUBST(afsbackupdir)
1591 AC_SUBST(afsbosconfigdir)
1593 if test "x$enable_kernel_module" = "xyes"; then
1594 ENABLE_KERNEL_MODULE=libafs
1597 if test "x$enable_pthreaded_ubik" = "xyes"; then
1598 ENABLE_PTHREADED_UBIK=yes
1601 AC_SUBST(AFS_SYSNAME)
1602 AC_SUBST(AFS_PARAM_COMMON)
1603 AC_SUBST(ENABLE_KERNEL_MODULE)
1604 AC_SUBST(ENABLE_PTHREADED_UBIK)
1606 AC_SUBST(LINUX_KERNEL_PATH)
1607 AC_SUBST(LINUX_KERNEL_BUILD)
1609 AC_SUBST(BSD_KERNEL_PATH)
1610 AC_SUBST(BSD_KERNEL_BUILD)
1611 AC_SUBST(LINUX_VERSION)
1612 AC_SUBST(MKAFS_OSTYPE)
1613 AC_SUBST(TOP_OBJDIR)
1614 AC_SUBST(TOP_SRCDIR)
1615 AC_SUBST(TOP_INCDIR)
1616 AC_SUBST(TOP_LIBDIR)
1618 AC_SUBST(DARWIN_INFOFILE)
1619 AC_SUBST(IRIX_BUILD_IP35)
1624 TOP_SRCDIR="${srcdir}/src"
1626 dnl If we're using ./configure, need a more reasonable TOP_SRCDIR, since relative links don't work everywhere
1632 TOP_SRCDIR=`cd $TOP_SRCDIR; pwd`
1636 TOP_OBJDIR="${SRCDIR_PARENT}"
1637 TOP_INCDIR="${SRCDIR_PARENT}/include"
1638 TOP_LIBDIR="${SRCDIR_PARENT}/lib"
1639 if test "${DEST}x" = "x"; then
1640 DEST="${SRCDIR_PARENT}/${AFS_SYSNAME}/dest"
1643 HELPER_SPLINT="${TOP_SRCDIR}/helper-splint.sh"
1644 HELPER_SPLINTCFG="${TOP_SRCDIR}/splint.cfg"
1645 AC_SUBST(HELPER_SPLINT)
1646 AC_SUBST(HELPER_SPLINTCFG)
1648 mkdir -p ${TOP_OBJDIR}/src/JAVA/libjafs