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_HAVE_I_SIZE_READ
909 LINUX_FS_STRUCT_NAMEIDATA_HAS_PATH
910 LINUX_EXPORTS_INIT_MM
911 LINUX_EXPORTS_SYS_CHDIR
912 LINUX_EXPORTS_SYS_CLOSE
913 LINUX_EXPORTS_SYS_OPEN
914 LINUX_EXPORTS_SYS_WAIT4
915 LINUX_EXPORTS_RCU_READ_LOCK
916 if test "x$with_linux_kernel_packaging" = "xno" ; then
921 if test "x$ac_cv_linux_config_modversions" = "xno" -o $AFS_SYSKVERS -ge 26; then
922 AC_MSG_WARN([Cannot determine sys_call_table status. assuming it isn't exported])
923 ac_cv_linux_exports_sys_call_table=no
924 if test -f "$LINUX_KERNEL_PATH/include/asm/ia32_unistd.h"; then
925 ac_cv_linux_exports_ia32_sys_call_table=yes
928 LINUX_EXPORTS_KALLSYMS_ADDRESS
929 LINUX_EXPORTS_KALLSYMS_SYMBOL
930 LINUX_EXPORTS_SYS_CALL_TABLE
931 LINUX_EXPORTS_IA32_SYS_CALL_TABLE
932 if test "x$ac_cv_linux_exports_sys_call_table" = "xno"; then
933 linux_syscall_method=none
934 if test "x$ac_cv_linux_exports_init_mm" = "xyes"; then
935 linux_syscall_method=scan
936 if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
937 linux_syscall_method=scan_with_kallsyms_address
940 if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
941 linux_syscall_method=kallsyms_symbol
943 if test "x$linux_syscall_method" = "xnone"; then
944 AC_MSG_WARN([no available sys_call_table access method -- guessing scan])
945 linux_syscall_method=scan
949 if test -f "$LINUX_KERNEL_PATH/include/linux/in_systm.h"; then
950 AC_DEFINE(HAVE_IN_SYSTM_H, 1, [define if you have in_systm.h header file])
952 if test -f "$LINUX_KERNEL_PATH/include/linux/mm_inline.h"; then
953 AC_DEFINE(HAVE_MM_INLINE_H, 1, [define if you have mm_inline.h header file])
955 if test -f "$LINUX_KERNEL_PATH/include/linux/in_systm.h"; then
956 AC_DEFINE(HAVE_IN_SYSTM_H, 1, [define if you have in_systm.h header file])
958 if test "x$ac_cv_linux_exports_sys_chdir" = "xyes" ; then
959 AC_DEFINE(EXPORTED_SYS_CHDIR, 1, [define if your linux kernel exports sys_chdir])
961 if test "x$ac_cv_linux_exports_sys_open" = "xyes" ; then
962 AC_DEFINE(EXPORTED_SYS_OPEN, 1, [define if your linux kernel exports sys_open])
964 if test "x$ac_cv_linux_exports_sys_close" = "xyes" ; then
965 AC_DEFINE(EXPORTED_SYS_CLOSE, 1, [define if your linux kernel exports sys_close])
967 if test "x$ac_cv_linux_exports_sys_wait4" = "xyes" ; then
968 AC_DEFINE(EXPORTED_SYS_WAIT4, 1, [define if your linux kernel exports sys_wait4])
970 if test "x$ac_cv_linux_exports_sys_call_table" = "xyes"; then
971 AC_DEFINE(EXPORTED_SYS_CALL_TABLE, 1, [define if your linux kernel exports sys_call_table])
973 if test "x$ac_cv_linux_exports_ia32_sys_call_table" = "xyes"; then
974 AC_DEFINE(EXPORTED_IA32_SYS_CALL_TABLE, 1, [define if your linux kernel exports ia32_sys_call_table])
976 if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
977 AC_DEFINE(EXPORTED_KALLSYMS_SYMBOL, 1, [define if your linux kernel exports kallsyms])
979 if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
980 AC_DEFINE(EXPORTED_KALLSYMS_ADDRESS, 1, [define if your linux kernel exports kallsyms address])
982 if test "x$ac_cv_linux_completion_h_exists" = "xyes" ; then
983 AC_DEFINE(COMPLETION_H_EXISTS, 1, [define if completion_h exists])
985 if test "x$ac_cv_linux_config_h_exists" = "xyes" ; then
986 AC_DEFINE(CONFIG_H_EXISTS, 1, [define if config.h exists])
988 if test "x$ac_cv_linux_exportfs_h_exists" = "xyes"; then
989 AC_DEFINE(EXPORTFS_H_EXISTS, 1, [define if linux/exportfs.h exists])
991 if test "x$ac_cv_linux_key_type_h_exists" = "xyes" ; then
992 AC_DEFINE(KEY_TYPE_H_EXISTS, 1, [define if key-type.h exists])
994 if test "x$ac_cv_linux_defines_for_each_process" = "xyes" ; then
995 AC_DEFINE(DEFINED_FOR_EACH_PROCESS, 1, [define if for_each_process defined])
997 if test "x$ac_cv_linux_defines_prev_task" = "xyes" ; then
998 AC_DEFINE(DEFINED_PREV_TASK, 1, [define if prev_task defined])
1000 if test "x$ac_cv_linux_func_inode_setattr_returns_int" = "xyes" ; then
1001 AC_DEFINE(INODE_SETATTR_NOT_VOID, 1, [define if your setattr return return non-void])
1003 if test "x$ac_cv_linux_func_write_inode_returns_int" = "xyes" ; then
1004 AC_DEFINE(WRITE_INODE_NOT_VOID, 1, [define if your sops.write_inode returns non-void])
1006 if test "x$ac_cv_linux_fs_struct_super_has_alloc_inode" = "xyes" ; then
1007 AC_DEFINE(STRUCT_SUPER_HAS_ALLOC_INODE, 1, [define if your struct super_operations has alloc_inode])
1009 if test "x$ac_cv_linux_fs_struct_address_space_has_page_lock" = "xyes"; then
1010 AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK, 1, [define if your struct address_space has page_lock])
1012 if test "x$ac_cv_linux_fs_struct_address_space_has_gfp_mask" = "xyes"; then
1013 AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_GFP_MASK, 1, [define if your struct address_space has gfp_mask])
1015 if test "x$ac_cv_linux_fs_struct_inode_has_i_truncate_sem" = "xyes"; then
1016 AC_DEFINE(STRUCT_INODE_HAS_I_TRUNCATE_SEM, 1, [define if your struct inode has truncate_sem])
1018 if test "x$ac_cv_linux_fs_struct_inode_has_i_alloc_sem" = "xyes"; then
1019 AC_DEFINE(STRUCT_INODE_HAS_I_ALLOC_SEM, 1, [define if your struct inode has alloc_sem])
1021 if test "x$ac_cv_linux_fs_struct_inode_has_i_blksize" = "xyes"; then
1022 AC_DEFINE(STRUCT_INODE_HAS_I_BLKSIZE, 1, [define if your struct inode has i_blksize])
1024 if test "x$ac_cv_linux_fs_struct_inode_has_i_devices" = "xyes"; then
1025 AC_DEFINE(STRUCT_INODE_HAS_I_DEVICES, 1, [define if you struct inode has i_devices])
1027 if test "x$ac_cv_linux_fs_struct_inode_has_i_security" = "xyes"; then
1028 AC_DEFINE(STRUCT_INODE_HAS_I_SECURITY, 1, [define if you struct inode has i_security])
1030 if test "x$ac_cv_linux_fs_struct_inode_has_i_mutex" = "xyes"; then
1031 AC_DEFINE(STRUCT_INODE_HAS_I_MUTEX, 1, [define if you struct inode has i_mutex])
1033 if test "x$ac_cv_linux_fs_struct_inode_has_i_sb_list" = "xyes"; then
1034 AC_DEFINE(STRUCT_INODE_HAS_I_SB_LIST, 1, [define if you struct inode has i_sb_list])
1036 if test "x$ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers" = "xyes"; then
1037 AC_DEFINE(STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS, 1, [define if your struct inode has data_buffers])
1039 if test "x$ac_cv_linux_fs_struct_inode_has_inotify_lock" = "xyes"; then
1040 AC_DEFINE(STRUCT_INODE_HAS_INOTIFY_LOCK, 1, [define if your struct inode has inotify_lock])
1042 if test "x$ac_cv_linux_fs_struct_inode_has_inotify_sem" = "xyes"; then
1043 AC_DEFINE(STRUCT_INODE_HAS_INOTIFY_SEM, 1, [define if your struct inode has inotify_sem])
1045 if test "x$ac_cv_linux_func_recalc_sigpending_takes_void" = "xyes"; then
1046 AC_DEFINE(RECALC_SIGPENDING_TAKES_VOID, 1, [define if your recalc_sigpending takes void])
1048 if test "x$ac_cv_linux_kernel_posix_lock_file_wait_arg" = "xyes" ; then
1049 AC_DEFINE(POSIX_LOCK_FILE_WAIT_ARG, 1, [define if your linux kernel uses 3 arguments for posix_lock_file])
1051 if test "x$ac_cv_linux_kernel_is_selinux" = "xyes" ; then
1052 AC_DEFINE(LINUX_KERNEL_IS_SELINUX, 1, [define if your linux kernel uses SELinux features])
1054 if test "x$ac_cv_linux_kernel_sock_create_v" = "xyes" ; then
1055 AC_DEFINE(LINUX_KERNEL_SOCK_CREATE_V, 1, [define if your linux kernel uses 5 arguments for sock_create])
1057 if test "x$ac_cv_linux_kernel_page_follow_link" = "xyes" ; then
1058 AC_DEFINE(HAVE_KERNEL_PAGE_FOLLOW_LINK, 1, [define if your linux kernel provides page_follow_link])
1060 if test "x$ac_cv_linux_kernel_hlist_unhashed" = "xyes" ; then
1061 AC_DEFINE(HAVE_KERNEL_HLIST_UNHASHED, 1, [define if your linux kernel provides hlist_unhashed])
1063 if test "x$ac_linux_syscall" = "xyes" ; then
1064 AC_DEFINE(HAVE_KERNEL_LINUX_SYSCALL_H, 1, [define if your linux kernel has linux/syscall.h])
1066 if test "x$ac_linux_seq_file" = "xyes" ; then
1067 AC_DEFINE(HAVE_KERNEL_LINUX_SEQ_FILE_H, 1, [define if your linux kernel has linux/seq_file.h])
1069 if test "x$ac_cv_linux_sched_struct_task_struct_has_parent" = "xyes"; then
1070 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_PARENT, 1, [define if your struct task_struct has parent])
1072 if test "x$ac_cv_linux_sched_struct_task_struct_has_real_parent" = "xyes"; then
1073 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_REAL_PARENT, 1, [define if your struct task_struct has real_parent])
1075 if test "x$ac_cv_linux_sched_struct_task_struct_has_sigmask_lock" = "xyes"; then
1076 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_SIGMASK_LOCK, 1, [define if your struct task_struct has sigmask_lock])
1078 if test "x$ac_cv_linux_sched_struct_task_struct_has_sighand" = "xyes"; then
1079 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_SIGHAND, 1, [define if your struct task_struct has sighand])
1081 if test "x$ac_cv_linux_sched_struct_task_struct_has_sig" = "xyes"; then
1082 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_SIG, 1, [define if your struct task_struct has sig])
1084 if test "x$ac_cv_linux_sched_struct_task_struct_has_rlim" = "xyes"; then
1085 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_RLIM, 1, [define if your struct task_struct has rlim])
1087 if test "x$ac_cv_linux_sched_struct_task_struct_has_signal_rlim" = "xyes"; then
1088 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM, 1, [define if your struct task_struct has signal->rlim])
1090 if test "x$ac_cv_linux_sched_struct_task_struct_has_exit_state" = "xyes"; then
1091 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_EXIT_STATE, 1, [define if your struct task_struct has exit_state])
1093 if test "x$ac_cv_linux_sched_struct_task_struct_has_tgid" = "xyes"; then
1094 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_TGID, 1, [define if your struct task_struct has tgid])
1096 if test "x$ac_cv_linux_sched_struct_task_struct_has_todo" = "xyes"; then
1097 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_TODO, 1, [define if your struct task_struct has todo])
1099 if test "x$ac_cv_linux_sched_struct_task_struct_has_thread_info" = "xyes"; then
1100 AC_DEFINE(STRUCT_TASK_STRUCT_HAS_THREAD_INFO, 1, [define if your struct task_struct has thread_info])
1102 if test "x$ac_cv_linux_get_sb_has_struct_vfsmount" = "xyes"; then
1103 AC_DEFINE(GET_SB_HAS_STRUCT_VFSMOUNT, 1, [define if your get_sb_nodev needs a struct vfsmount argument])
1105 if test "x$ac_cv_linux_statfs_takes_dentry" = "xyes"; then
1106 AC_DEFINE(STATFS_TAKES_DENTRY, 1, [define if your statfs takes a dentry argument])
1108 if test "x$ac_cv_linux_func_a_writepage_takes_writeback_control" = "xyes" ; then
1109 AC_DEFINE(AOP_WRITEPAGE_TAKES_WRITEBACK_CONTROL, 1, [define if your aops.writepage takes a struct writeback_control argument])
1111 if test "x$ac_cv_linux_func_refrigerator_takes_pf_freeze" = "xyes" ; then
1112 AC_DEFINE(LINUX_REFRIGERATOR_TAKES_PF_FREEZE, 1, [define if your refrigerator takes PF_FREEZE])
1114 if test "x$ac_cv_linux_func_i_create_takes_nameidata" = "xyes" ; then
1115 AC_DEFINE(IOP_CREATE_TAKES_NAMEIDATA, 1, [define if your iops.create takes a nameidata argument])
1117 if test "x$ac_cv_linux_func_f_flush_takes_fl_owner_t" = "xyes" ; then
1118 AC_DEFINE(FOP_FLUSH_TAKES_FL_OWNER_T, 1, [define if your fops.flush takes an fl_owner_t argument])
1120 if test "x$ac_cv_linux_func_i_lookup_takes_nameidata" = "xyes" ; then
1121 AC_DEFINE(IOP_LOOKUP_TAKES_NAMEIDATA, 1, [define if your iops.lookup takes a nameidata argument])
1123 if test "x$ac_cv_linux_func_i_permission_takes_nameidata" = "xyes" ; then
1124 AC_DEFINE(IOP_PERMISSION_TAKES_NAMEIDATA, 1, [define if your iops.permission takes a nameidata argument])
1126 if test "x$ac_cv_linux_func_d_revalidate_takes_nameidata" = "xyes" ; then
1127 AC_DEFINE(DOP_REVALIDATE_TAKES_NAMEIDATA, 1, [define if your dops.d_revalidate takes a nameidata argument])
1129 if test "x$ac_cv_linux_init_work_has_data" = "xyes" ; then
1130 AC_DEFINE(INIT_WORK_HAS_DATA, 1, [define if INIT_WORK takes a data (3rd) argument])
1132 if test "x$ac_cv_linux_fs_struct_fop_has_flock" = "xyes" ; then
1133 AC_DEFINE(STRUCT_FILE_OPERATIONS_HAS_FLOCK, 1, [define if your struct file_operations has flock])
1135 if test "x$ac_cv_linux_fs_struct_fop_has_sendfile" = "xyes" ; then
1136 AC_DEFINE(STRUCT_FILE_OPERATIONS_HAS_SENDFILE, 1, [define if your struct file_operations has sendfile])
1138 if test "x$ac_cv_linux_fs_struct_fop_has_splice" = "xyes" ; then
1139 AC_DEFINE(STRUCT_FILE_OPERATIONS_HAS_SPLICE, 1, [define if your struct file_operations has splice_write and splice_read])
1141 if test "x$ac_cv_linux_register_sysctl_table_noflag" = "xyes" ; then
1142 AC_DEFINE(REGISTER_SYSCTL_TABLE_NOFLAG, 1, [define if register_sysctl_table has no insert_at head flag])
1144 if test "x$ac_cv_linux_sysctl_table_checking" = "xyes" ; then
1145 AC_DEFINE(SYSCTL_TABLE_CHECKING, 1, [define if your kernel has sysctl table checking])
1147 if test "x$ac_cv_linux_have_iget" = "xyes" ; then
1148 AC_DEFINE(HAVE_IGET, 1, [define if your kernel has iget])
1150 if test "x$ac_cv_linux_struct_nameidata_has_path" = "xyes" ; then
1151 AC_DEFINE(STRUCT_NAMEIDATA_HAS_PATH, 1, [define if your struct nameidata has path])
1153 if test "x$ac_cv_linux_exports_init_mm" = "xyes" ; then
1154 AC_DEFINE(EXPORTED_INIT_MM, 1, [define if your kernel exports init_mm])
1156 if test "x$ac_cv_linux_exports_tasklist_lock" = "xyes" ; then
1157 AC_DEFINE(EXPORTED_TASKLIST_LOCK, 1, [define if tasklist_lock exported])
1159 if test "x$ac_cv_linux_have_kmem_cache_t" = "xyes" ; then
1160 AC_DEFINE(HAVE_KMEM_CACHE_T, 1, [define if kmem_cache_t exists])
1162 if test "x$ac_cv_linux_kmem_cache_init" = "xyes" ; then
1163 AC_DEFINE(KMEM_CACHE_INIT, 1, [define for new kmem_cache init function parameters])
1165 if test "x$ac_cv_linux_have_current_kernel_time" = "xyes" ; then
1166 AC_DEFINE(HAVE_CURRENT_KERNEL_TIME, 1, [define if current_kernel_time() exists])
1168 if test "x$ac_cv_linux_have_kmem_cache_t" = "xyes" ; then
1169 AC_DEFINE(KMEM_CACHE_TAKES_DTOR, 1, [define if kmem_cache_create takes a destructor argument])
1171 if test "$enable_linux_fh" = "yes"; then
1172 AC_DEFINE(LINUX_USE_FH, 1, [define if you want to open cache files by file handle instead of inode numbers])
1174 if test "x$ac_cv_linux_kernel_page_follow_link" = "xyes" -o "x$ac_cv_linux_func_i_put_link_takes_cookie" = "xyes"; then
1175 AC_DEFINE(USABLE_KERNEL_PAGE_SYMLINK_CACHE, 1, [define if your kernel has a usable symlink cache API])
1177 AC_MSG_WARN([your kernel does not have a usable symlink cache API])
1179 if test "x$ac_cv_linux_have_svc_addr_in" = "xyes"; then
1180 AC_DEFINE(HAVE_SVC_ADDR_IN, 1, [define if svc_add_in exists])
1186 case $AFS_SYSNAME in
1188 DARWIN_PLIST=src/libafs/afs.${AFS_SYSNAME}.plist
1189 DARWIN_INFOFILE=afs.${AFS_SYSNAME}.plist
1190 dnl the test below fails on darwin, even if the CPPFLAGS below
1191 dnl are added. the headers from Kernel.framework must be used
1192 dnl when KERNEL is defined.
1194 dnl really, such a thing isn't guaranteed to work on any
1195 dnl platform until the kernel cflags from MakefileProto are
1196 dnl known to configure
1197 AC_DEFINE(HAVE_STRUCT_BUF, 1, [define if you have a struct buf])
1200 AC_MSG_CHECKING(for definition of struct buf)
1201 dnl save_CPPFLAGS="$CPPFLAGS"
1202 dnl CPPFLAGS="$CPPFLAGS -DKERNEL -D_KERNEL -D__KERNEL -D__KERNEL__"
1203 AC_CACHE_VAL(ac_cv_have_struct_buf, [
1204 ac_cv_have_struct_buf=no
1206 [#include <sys/buf.h>],
1208 printf("%d\n", sizeof(x));],
1209 ac_cv_have_struct_buf=yes,)
1212 dnl CPPFLAGS="$save_CPPFLAGS"
1213 AC_MSG_RESULT($ac_cv_have_struct_buf)
1214 if test "$ac_cv_have_struct_buf" = yes; then
1215 AC_DEFINE(HAVE_STRUCT_BUF, 1, [define if you have a struct buf])
1221 AC_CACHE_VAL(ac_cv_sockaddr_len,
1223 AC_MSG_CHECKING([if struct sockaddr has sa_len field])
1224 AC_TRY_COMPILE( [#include <sys/types.h>
1225 #include <sys/socket.h>],
1226 [struct sockaddr *a;
1227 a->sa_len=0;], ac_cv_sockaddr_len=yes, ac_cv_sockaddr_len=no)
1228 AC_MSG_RESULT($ac_cv_sockaddr_len)])
1229 if test "$ac_cv_sockaddr_len" = "yes"; then
1230 AC_DEFINE(STRUCT_SOCKADDR_HAS_SA_LEN, 1, [define if you struct sockaddr sa_len])
1232 if test "x${MKAFS_OSTYPE}" = "xIRIX"; then
1233 echo Skipping library tests because they confuse Irix.
1235 AC_CHECK_FUNCS(socket)
1237 if test "$ac_cv_func_socket" = no; then
1238 for lib in socket inet; do
1239 if test "$HAVE_SOCKET" != 1; then
1240 AC_CHECK_LIB(${lib}, socket,LIBS="$LIBS -l$lib";HAVE_SOCKET=1;AC_DEFINE(HAVE_SOCKET, 1, [define if you have socket]))
1245 AC_CHECK_FUNCS(connect)
1247 if test "$ac_cv_func_connect" = no; then
1249 if test "$HAVE_CONNECT" != 1; then
1250 AC_CHECK_LIB(${lib}, connect,LIBS="$LIBS -l$lib";HAVE_CONNECT=1;AC_DEFINE(HAVE_CONNECT, 1, [define if you have connect]))
1255 AC_CHECK_FUNCS(gethostbyname)
1256 if test "$ac_cv_func_gethostbyname" = no; then
1257 for lib in dns nsl resolv; do
1258 if test "$HAVE_GETHOSTBYNAME" != 1; then
1259 AC_CHECK_LIB(${lib}, gethostbyname, LIBS="$LIBS -l$lib";HAVE_GETHOSTBYNAME=1;AC_DEFINE(HAVE_GETHOSTBYNAME, 1, [define if you have gethostbyname]))
1264 dnl darwin wants it, aix hates it
1265 AC_MSG_CHECKING(for the useability of arpa/nameser_compat.h)
1269 #include <sys/types.h>
1270 #include <sys/socket.h>
1271 #include <netinet/in.h>
1272 #include <arpa/inet.h>
1273 #include <arpa/nameser.h>
1274 #include <arpa/nameser_compat.h>
1276 ], [static int i; i = 0;],
1278 AC_DEFINE(HAVE_ARPA_NAMESER_COMPAT_H, 1, [define if arpa/nameser_compat.h exists])],
1282 openafs_save_libs="$LIBS"
1283 AC_MSG_CHECKING([for res_search])
1286 if test "$ac_cv_func_res_search" = no; then
1287 for lib in dns nsl resolv; do
1288 if test "$ac_cv_func_res_search" != yes; then
1291 LIBS="$openafs_save_libs"
1294 if test "$ac_cv_func_res_search" = yes; then
1295 LIB_res_search="-l$lib"
1296 AC_DEFINE(HAVE_RES_SEARCH, 1, [])
1297 AC_MSG_RESULT([yes, in lib$lib])
1302 AC_DEFINE(HAVE_RES_SEARCH, 1, [])
1308 AC_CACHE_VAL(ac_cv_setsockopt_iprecverr,
1310 AC_MSG_CHECKING([for setsockopt(, SOL_IP, IP_RECVERR)])
1311 AC_TRY_COMPILE( [#include <sys/types.h>
1312 #include <sys/socket.h>
1313 #include <netinet/in.h>],
1315 setsockopt(0, SOL_IP, IP_RECVERR, &on, sizeof(on));], ac_cv_setsockopt_iprecverr=yes, ac_cv_setsockopt_iprecverr=no)
1316 AC_MSG_RESULT($ac_cv_setsockopt_iprecverr)])
1317 if test "$ac_cv_setsockopt_iprecverr" = "yes"; then
1318 AC_DEFINE(ADAPT_PMTU_RECVERR, 1, [define if asynchronous socket errors can be received])
1322 if test "x$MKAFS_OSTYPE" = OBSD; then
1323 PTHREAD_LIBS="-pthread"
1325 if test "x$PTHREAD_LIBS" = xerror; then
1326 AC_CHECK_LIB(pthread, pthread_attr_init,
1327 PTHREAD_LIBS="-lpthread")
1329 if test "x$PTHREAD_LIBS" = xerror; then
1330 AC_CHECK_LIB(pthreads, pthread_attr_init,
1331 PTHREAD_LIBS="-lpthreads")
1333 if test "x$PTHREAD_LIBS" = xerror; then
1334 AC_CHECK_LIB(c_r, pthread_attr_init,
1335 PTHREAD_LIBS="-lc_r")
1337 if test "x$PTHREAD_LIBS" = xerror; then
1338 AC_CHECK_FUNC(pthread_attr_init, PTHREAD_LIBS="")
1340 if test "x$PTHREAD_LIBS" = xerror; then
1341 # pthread_attr_init is a macro under HPUX 11.0 and 11.11
1342 AC_CHECK_LIB(pthread, pthread_attr_destroy,
1343 PTHREAD_LIBS="-lpthread")
1345 if test "x$PTHREAD_LIBS" = xerror; then
1346 AC_MSG_WARN(*** Unable to locate working posix thread library ***)
1348 AC_SUBST(PTHREAD_LIBS)
1350 HOST_CPU="$host_cpu"
1352 if test "x$with_bsd_kernel_headers" != "x"; then
1353 BSD_KERNEL_PATH="$with_bsd_kernel_headers"
1355 BSD_KERNEL_PATH="/usr/src/sys"
1358 if test "x$with_bsd_kernel_build" != "x"; then
1359 BSD_KERNEL_BUILD="$with_bsd_kernel_build"
1361 case $AFS_SYSNAME in
1363 BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/compile/GENERIC"
1366 BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/${HOST_CPU}/compile/GENERIC"
1372 if test "$enable_supergroups" = "yes"; then
1373 AC_DEFINE(SUPERGROUPS, 1, [define if you want to have support for nested pts groups])
1376 if test "$enable_fast_restart" = "yes"; then
1377 AC_DEFINE(FAST_RESTART, 1, [define if you want to have fast restart])
1380 if test "$enable_bitmap_later" = "yes"; then
1381 AC_DEFINE(BITMAP_LATER, 1, [define if you want to salvager to check bitmasks later])
1384 if test "$enable_demand_attach_fs" = "yes"; then
1385 AC_DEFINE(DEMAND_ATTACH_ENABLE, 1, [define if you want the demand attach fileserver])
1390 AC_SUBST(DEMAND_ATTACH)
1392 if test "$enable_disconnected" = "yes"; then
1393 AC_DEFINE(AFS_DISCON_ENV, 1, [define if you want support for disconnected operation])
1396 if test "$enable_unix_sockets" = "yes"; then
1397 AC_DEFINE(USE_UNIX_SOCKETS, 1, [define if you want to use UNIX sockets for fssync.])
1398 USE_UNIX_SOCKETS="yes"
1400 USE_UNIX_SOCKETS="no"
1402 AC_SUBST(USE_UNIX_SOCKETS)
1404 if test "$enable_fast_restart" = "yes" &&
1405 test "$enable_demand_attach_fs" = "yes" ; then
1406 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.])
1410 if test "$enable_full_vos_listvol_switch" = "yes"; then
1411 AC_DEFINE(FULL_LISTVOL_SWITCH, 1, [define if you want to want listvol switch])
1414 if test "$enable_icmp_pmtu_discovery" = "yes"; then
1415 if test "$ac_cv_setsockopt_iprecverr" = "yes"; then
1416 AC_DEFINE(ADAPT_PMTU, 1, [define if you want to decode icmp unreachable packets to discover path mtu])
1420 if test "$enable_bos_restricted_mode" = "yes"; then
1421 AC_DEFINE(BOS_RESTRICTED_MODE, 1, [define if you want to want bos restricted mode])
1424 if test "$enable_bos_new_config" = "yes"; then
1425 AC_DEFINE(BOS_NEW_CONFIG, 1, [define if you want to enable automatic renaming of BosConfig.new to BosConfig at startup])
1428 if test "$enable_largefile_fileserver" = "yes"; then
1429 AC_DEFINE(AFS_LARGEFILE_ENV, 1, [define if you want large file fileserver])
1432 if test "$enable_cache_bypass" = "yes"; then
1433 AC_DEFINE(AFS_CACHE_BYPASS, 1, [define to activate cache bypassing Unix client])
1436 if test "$enable_namei_fileserver" = "yes"; then
1437 AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1439 if test "$enable_namei_fileserver" = "default"; then
1442 AC_MSG_WARN(Some Solaris 10 versions are not safe with the inode fileserver. Forcing namei. Override with --disable-namei-fileserver)
1443 AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1446 AC_MSG_WARN(Solaris 11 versions are not safe with the inode fileserver. Forcing namei. Override with --disable-namei-fileserver)
1447 AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1455 if test "$enable_afsdb" = "yes"; then
1456 LIB_AFSDB="$LIB_res_search"
1457 AC_DEFINE(AFS_AFSDB_ENV, 1, [define if you want to want search afsdb rr])
1460 dnl check for tivoli
1461 AC_MSG_CHECKING(for tivoli tsm butc support)
1463 if test "$enable_tivoli_tsm" = "yes"; then
1464 XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen
1465 XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen
1466 XBSADIR3=/usr/tivoli/tsm/client/api/bin/sample
1467 XBSADIR4=/opt/tivoli/tsm/client/api/bin/sample
1469 if test -r "$XBSADIR3/dsmapifp.h"; then
1470 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR3"
1472 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1473 elif test -r "$XBSADIR4/dsmapifp.h"; then
1474 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR4"
1476 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1477 elif test -r "$XBSADIR1/xbsa.h"; then
1478 XBSA_CFLAGS="-Dxbsa -I$XBSADIR1"
1480 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1481 elif test -r "$XBSADIR2/xbsa.h"; then
1482 XBSA_CFLAGS="-Dxbsa -I$XBSADIR2"
1484 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1486 AC_MSG_RESULT([no, missing xbsa.h and dsmapifp.h header files])
1491 AC_SUBST(XBSA_CFLAGS)
1492 AC_SUBST(XBSA_XLIBS)
1494 dnl checks for header files.
1498 AC_CHECK_HEADERS(stdlib.h string.h unistd.h poll.h fcntl.h sys/time.h sys/file.h)
1499 AC_CHECK_HEADERS(netinet/in.h netdb.h sys/fcntl.h sys/mnttab.h sys/mntent.h)
1500 AC_CHECK_HEADERS(mntent.h sys/vfs.h sys/param.h sys/fs_types.h sys/fstyp.h)
1501 AC_CHECK_HEADERS(sys/mount.h strings.h termios.h signal.h poll.h)
1502 AC_CHECK_HEADERS(windows.h malloc.h winsock2.h direct.h io.h sys/user.h)
1503 AC_CHECK_HEADERS(security/pam_modules.h siad.h usersec.h ucontext.h regex.h values.h)
1504 AC_CHECK_HEADERS(linux/errqueue.h,,,[#include <linux/types.h>])
1506 dnl Don't build PAM on IRIX; the interface doesn't work for us.
1507 if test "$ac_cv_header_security_pam_modules_h" = yes -a "$enable_pam" = yes; then
1508 case $AFS_SYSNAME in
1521 if test "$enable_login" = yes; then
1526 AC_SUBST(BUILD_LOGIN)
1528 AC_CHECK_FUNCS(utimes random srandom getdtablesize snprintf strlcat strlcpy re_comp re_exec flock)
1529 AC_CHECK_FUNCS(setprogname getprogname sigaction mkstemp vsnprintf strerror strcasestr)
1530 AC_CHECK_FUNCS(setvbuf vsyslog)
1531 AC_FUNC_SETVBUF_REVERSED
1532 AC_CHECK_FUNCS(regcomp regexec regerror)
1533 AC_MSG_CHECKING([for POSIX regex library])
1534 if test "$ac_cv_header_regex_h" = "yes" && \
1535 test "$ac_cv_func_regcomp" = "yes" && \
1536 test "$ac_cv_func_regexec" = "yes" && \
1537 test "$ac_cv_func_regerror" = "yes"; then
1538 AC_DEFINE(HAVE_POSIX_REGEX, 1, [define if you have POSIX regex library])
1545 AC_CHECK_TYPE(ssize_t, int)
1546 AC_CHECK_TYPE([sig_atomic_t], ,
1547 [AC_DEFINE([sig_atomic_t], [int],
1548 [Define to int if <signal.h> does not define.])],
1549 [#include <sys/types.h>
1550 #include <signal.h>])
1551 AC_SIZEOF_TYPE(long)
1553 AC_CHECK_FUNCS(timegm)
1554 AC_CHECK_FUNCS(daemon)
1556 dnl Directory PATH handling
1557 if test "x$enable_transarc_paths" = "xyes" ; then
1558 afsconfdir=${afsconfdir=/usr/afs/etc}
1559 viceetcdir=${viceetcdir=/usr/vice/etc}
1560 afskerneldir=${afskerneldir=${viceetcdir}}
1561 afssrvbindir=${afssrvbindir=/usr/afs/bin}
1562 afssrvsbindir=${afssrvsbindir=/usr/afs/bin}
1563 afssrvlibexecdir=${afssrvlibexecdir=/usr/afs/bin}
1564 afsdbdir=${afsdbdir=/usr/afs/db}
1565 afslogsdir=${afslogsdir=/usr/afs/logs}
1566 afslocaldir=${afslocaldir=/usr/afs/local}
1567 afsbackupdir=${afsbackupdir=/usr/afs/backup}
1568 afsbosconfigdir=${afsbosconfigdir=/usr/afs/local}
1570 afsconfdir=${afsconfdir='${sysconfdir}/openafs/server'}
1571 viceetcdir=${viceetcdir='${sysconfdir}/openafs'}
1572 afskerneldir=${afskerneldir='${libdir}/openafs'}
1573 afssrvbindir=${afssrvbindir='${bindir}'}
1574 afssrvsbindir=${afssrvsbindir='${sbindir}'}
1575 afssrvlibexecdir=${afssrvlibexecdir='${libexecdir}/openafs'}
1576 afsdbdir=${afsdbdir='${localstatedir}/openafs/db'}
1577 afslogsdir=${afslogsdir='${localstatedir}/openafs/logs'}
1578 afslocaldir=${afslocaldir='${localstatedir}/openafs'}
1579 afsbackupdir=${afsbackupdir='${localstatedir}/openafs/backup'}
1580 afsbosconfigdir=${afsbosconfigdir='${sysconfdir}/openafs'}
1582 AC_SUBST(afsconfdir)
1583 AC_SUBST(viceetcdir)
1584 AC_SUBST(afskerneldir)
1585 AC_SUBST(afssrvbindir)
1586 AC_SUBST(afssrvsbindir)
1587 AC_SUBST(afssrvlibexecdir)
1589 AC_SUBST(afslogsdir)
1590 AC_SUBST(afslocaldir)
1591 AC_SUBST(afsbackupdir)
1592 AC_SUBST(afsbosconfigdir)
1594 if test "x$enable_kernel_module" = "xyes"; then
1595 ENABLE_KERNEL_MODULE=libafs
1598 if test "x$enable_pthreaded_ubik" = "xyes"; then
1599 ENABLE_PTHREADED_UBIK=yes
1602 AC_SUBST(AFS_SYSNAME)
1603 AC_SUBST(AFS_PARAM_COMMON)
1604 AC_SUBST(ENABLE_KERNEL_MODULE)
1605 AC_SUBST(ENABLE_PTHREADED_UBIK)
1607 AC_SUBST(LINUX_KERNEL_PATH)
1608 AC_SUBST(LINUX_KERNEL_BUILD)
1610 AC_SUBST(BSD_KERNEL_PATH)
1611 AC_SUBST(BSD_KERNEL_BUILD)
1612 AC_SUBST(LINUX_VERSION)
1613 AC_SUBST(MKAFS_OSTYPE)
1614 AC_SUBST(TOP_OBJDIR)
1615 AC_SUBST(TOP_SRCDIR)
1616 AC_SUBST(TOP_INCDIR)
1617 AC_SUBST(TOP_LIBDIR)
1619 AC_SUBST(DARWIN_INFOFILE)
1620 AC_SUBST(IRIX_BUILD_IP35)
1625 TOP_SRCDIR="${srcdir}/src"
1627 dnl If we're using ./configure, need a more reasonable TOP_SRCDIR, since relative links don't work everywhere
1633 TOP_SRCDIR=`cd $TOP_SRCDIR; pwd`
1637 TOP_OBJDIR="${SRCDIR_PARENT}"
1638 TOP_INCDIR="${SRCDIR_PARENT}/include"
1639 TOP_LIBDIR="${SRCDIR_PARENT}/lib"
1640 if test "${DEST}x" = "x"; then
1641 DEST="${SRCDIR_PARENT}/${AFS_SYSNAME}/dest"
1644 HELPER_SPLINT="${TOP_SRCDIR}/helper-splint.sh"
1645 HELPER_SPLINTCFG="${TOP_SRCDIR}/splint.cfg"
1646 AC_SUBST(HELPER_SPLINT)
1647 AC_SUBST(HELPER_SPLINTCFG)
1649 mkdir -p ${TOP_OBJDIR}/src/JAVA/libjafs