1 dnl This file contains the common configuration code which would
2 dnl otherwise be duplicated between configure and configure-libafs.
4 dnl NB: Because this code is a macro, references to positional shell
5 dnl parameters must be done like $[]1 instead of $1
7 AC_DEFUN([OPENAFS_CONFIGURE_COMMON],[
10 #undef STRUCT_SOCKADDR_HAS_SA_LEN
11 #if !defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
12 # if ENDIANESS_IN_SYS_PARAM_H
14 # include <sys/types.h>
15 # include <sys/param.h>
16 # if BYTE_ORDER == BIG_ENDIAN
17 # define WORDS_BIGENDIAN 1
20 # if defined(AUTOCONF_FOUND_BIGENDIAN)
21 # define WORDS_BIGENDIAN 1
23 # undef WORDS_BIGENDIAN
27 # if defined(AUTOCONF_FOUND_BIGENDIAN)
28 # define WORDS_BIGENDIAN 1
30 # undef WORDS_BIGENDIAN
34 # if defined(__BIG_ENDIAN__)
35 # define WORDS_BIGENDIAN 1
37 # undef WORDS_BIGENDIAN
42 * Always use 64-bit file offsets for UKERNEL code. Needed for UKERNEL stuff to
43 * play nice with some other interfaces like FUSE. We technically only would
44 * need to define this when building for such interfaces, but set it always to
45 * try and reduce potential confusion.
47 #define _FILE_OFFSET_BITS 64
48 #define AFS_CACHE_VNODE_PATH
54 #undef DEFINED_FOR_EACH_PROCESS
55 #undef DEFINED_PREV_TASK
56 #undef EXPORTED_SYS_CALL_TABLE
57 #undef EXPORTED_IA32_SYS_CALL_TABLE
58 #undef IRIX_HAS_MEM_FUNCS
59 #undef RECALC_SIGPENDING_TAKES_VOID
60 #undef STRUCT_FS_HAS_FS_ROLLED
62 /* glue for RedHat kernel bug */
63 #undef ENABLE_REDHAT_BUILDSYS
64 #if defined(ENABLE_REDHAT_BUILDSYS) && defined(KERNEL) && defined(REDHAT_FIX)
65 #include "redhat-fix.h"
74 AC_ARG_WITH([afs-sysname],
75 [AS_HELP_STRING([--with-afs-sysname=sys], [use sys for the afs sysname])])
77 dnl General feature options.
79 [AS_HELP_STRING([--disable-pam], [disable PAM support])],
83 AS_HELP_STRING([--disable-gtx], [disable gtx curses-based terminal tools]))
85 AS_HELP_STRING([--disable-uss], [disable uss bulk creation tool]))
86 AC_ARG_ENABLE([namei-fileserver],
87 [AS_HELP_STRING([--enable-namei-fileserver],
88 [force compilation of namei fileserver in preference to inode
91 [enable_namei_fileserver="default"])
92 AC_ARG_ENABLE([supergroups],
93 [AS_HELP_STRING([--enable-supergroups],
94 [enable support for nested pts groups])],
96 [enable_supergroups="no"])
97 AC_ARG_ENABLE([bitmap-later],
98 [AS_HELP_STRING([--enable-bitmap-later],
99 [enable fast startup of file server by not reading bitmap till
102 [enable_bitmap_later="no"])
103 AC_ARG_ENABLE([unix-sockets],
104 [AS_HELP_STRING([--disable-unix-sockets],
105 [disable use of unix domain sockets for fssync (defaults to enabled)])],
107 [enable_unix_sockets="yes"])
108 AC_ARG_ENABLE([tivoli-tsm],
109 [AS_HELP_STRING([--enable-tivoli-tsm],
110 [enable use of the Tivoli TSM API libraries for butc support])],
112 [enable_tivoli_tsm="no"])
113 AC_ARG_ENABLE([pthreaded-ubik],
114 [AS_HELP_STRING([--enable-pthreaded-ubik],
115 [enable installation of pthreaded ubik applications (defaults to
118 [enable_pthreaded_ubik="no"])
120 dnl Kernel module build options.
121 AC_ARG_WITH([linux-kernel-headers],
122 [AS_HELP_STRING([--with-linux-kernel-headers=path],
123 [use the kernel headers found at path (optional, defaults to
124 /lib/modules/`uname -r`/build, then /lib/modules/`uname -r`/source,
125 then /usr/src/linux-2.4, and lastly /usr/src/linux)])])
126 AC_ARG_WITH([linux-kernel-build],
127 [AS_HELP_STRING([--with-linux-kernel-build=path],
128 [use the kernel build found at path(optional, defaults to
129 kernel headers path)])])
130 AC_ARG_WITH([bsd-kernel-headers],
131 [AS_HELP_STRING([--with-bsd-kernel-headers=path],
132 [use the kernel headers found at path (optional, defaults to
134 AC_ARG_WITH([bsd-kernel-build],
135 [AS_HELP_STRING([--with-bsd-kernel-build=path],
136 [use the kernel build found at path (optional, defaults to
137 KSRC/i386/compile/GENERIC)])])
138 AC_ARG_WITH([linux-kernel-packaging],
139 [AS_HELP_STRING([--with-linux-kernel-packaging],
140 [use standard naming conventions to aid Linux kernel build packaging
141 (disables MPS, sets the kernel module name to openafs.ko, and
142 installs kernel modules into the standard Linux location)])],
143 [AC_SUBST(LINUX_KERNEL_PACKAGING, "yes")
144 AC_SUBST(LINUX_LIBAFS_NAME, "openafs")],
145 [AC_SUBST(LINUX_LIBAFS_NAME, "libafs")])
146 AC_ARG_ENABLE([kernel-module],
147 [AS_HELP_STRING([--disable-kernel-module],
148 [disable compilation of the kernel module (defaults to enabled)])],
150 [enable_kernel_module="yes"])
151 AC_ARG_ENABLE([redhat-buildsys],
152 [AS_HELP_STRING([--enable-redhat-buildsys],
153 [enable compilation of the redhat build system kernel (defaults to
156 [enable_redhat_buildsys="no"])
158 dnl Installation locations.
159 AC_ARG_ENABLE([transarc-paths],
160 [AS_HELP_STRING([--enable-transarc-paths],
161 [use Transarc style paths like /usr/afs and /usr/vice])],
163 [enable_transarc_paths="no"])
165 dnl Optimization and debugging flags.
166 AC_ARG_ENABLE([strip-binaries],
167 [AS_HELP_STRING([--disable-strip-binaries],
168 [disable stripping of symbol information from binaries (defaults to
171 [enable_strip_binaries="maybe"])
172 AC_ARG_ENABLE([debug],
173 [AS_HELP_STRING([--enable-debug],
174 [enable compilation of the user space code with debugging information
175 (defaults to disabled)])],
178 AC_ARG_ENABLE([optimize],
179 [AS_HELP_STRING([--disable-optimize],
180 [disable optimization for compilation of the user space code (defaults
183 [enable_optimize="yes"])
184 AC_ARG_ENABLE([warnings],
185 [AS_HELP_STRING([--enable-warnings],
186 [enable compilation warnings when building with gcc (defaults to
189 [enable_warnings="no"])
190 AC_ARG_ENABLE([checking],
191 [AS_HELP_STRING([--enable-checking],
192 [turn compilation warnings into errors when building with gcc (defaults
194 [enable_checking="$enableval"],
195 [enable_checking="no"])
196 AC_ARG_ENABLE([debug-locks],
197 [AS_HELP_STRING([--enable-debug-locks],
198 [turn on lock debugging assertions (defaults to disabled)])],
199 [enable_debug_locks="$enableval"],
200 [enable_debug_locks="no"])
201 AC_ARG_ENABLE([debug-kernel],
202 [AS_HELP_STRING([--enable-debug-kernel],
203 [enable compilation of the kernel module with debugging information
204 (defaults to disabled)])],
206 [enable_debug_kernel="no"])
207 AC_ARG_ENABLE([optimize-kernel],
208 [AS_HELP_STRING([--disable-optimize-kernel],
209 [disable compilation of the kernel module with optimization (defaults
210 based on platform)])],
212 [enable_optimize_kernel=""])
213 AC_ARG_ENABLE([debug-lwp],
214 [AS_HELP_STRING([--enable-debug-lwp],
215 [enable compilation of the LWP code with debugging information
216 (defaults to disabled)])],
218 [enable_debug_lwp="no"])
219 AC_ARG_ENABLE([optimize-lwp],
220 [AS_HELP_STRING([--disable-optimize-lwp],
221 [disable optimization for compilation of the LWP code (defaults to
224 [enable_optimize_lwp="yes"])
225 AC_ARG_ENABLE([debug-pam],
226 [AS_HELP_STRING([--enable-debug-pam],
227 [enable compilation of the PAM code with debugging information
228 (defaults to disabled)])],
230 [enable_debug_pam="no"])
231 AC_ARG_ENABLE([optimize-pam],
232 [AS_HELP_STRING([--disable-optimize-pam],
233 [disable optimization for compilation of the PAM code (defaults to
236 [enable_optimize_pam="yes"])
237 AC_ARG_ENABLE([linux-syscall-probing],
238 [AS_HELP_STRING([--enable-linux-syscall-probing],
239 [enable Linux syscall probing (defaults to autodetect)])],
241 [enable_linux_syscall_probing="maybe"])
242 AC_ARG_WITH([crosstools-dir],
243 [AS_HELP_STRING([--with-crosstools-dir=path], [use path for native versions of rxgen, compile_et and config])])
245 AC_ARG_WITH([xslt-processor],
246 AS_HELP_STRING([--with-xslt-processor=ARG],
247 [which XSLT processor to use (possible choices are: libxslt, saxon, xalan-j, xsltproc)]),
248 [XSLTPROC="$withval"],
249 AC_CHECK_PROGS([XSLTPROC], [libxslt saxon xalan-j xsltproc], [echo]))
251 AC_ARG_WITH([html-xsl],
252 AS_HELP_STRING([--with-html-xsl],
253 [build HTML documentation using this stylesheet (default is html/chunk.dsl; specify either html/chunk.xsl or html/docbook.xsl)]),
254 [HTML_XSL="$withval"],
255 [HTML_XSL="html/chunk.xsl"])
257 AC_ARG_WITH([docbook2pdf],
258 AS_HELP_STRING([--with-docbook2pdf=ARG],
259 [which Docbook to PDF utility to use (possible choices are: fop, dblatex, docbook2pdf)]),
260 [DOCBOOK2PDF="$withval"],
261 AC_CHECK_PROGS([DOCBOOK2PDF], [fop dblatex docbook2pdf], [echo]))
263 AC_ARG_WITH([docbook-stylesheets],
264 AS_HELP_STRING([--with-docbook-stylesheets=ARG],
265 [location of DocBook stylesheets (default is to search a set of likely paths)]),
266 [DOCBOOK_STYLESHEETS="$withval"],
267 OPENAFS_SEARCH_DIRLIST([DOCBOOK_STYLESHEETS], [/usr/share/xml/docbook/stylesheet/nwalsh/current /usr/share/xml/docbook/stylesheet/nwalsh /usr/share/xml/docbook/xsl-stylesheets /usr/share/sgml/docbook/docbook-xsl-stylesheets /usr/share/sgml/docbook/xsl-stylesheets /usr/share/docbook-xsl /usr/share/sgml/docbkxsl /usr/local/share/xsl/docbook /sw/share/xml/xsl/docbook-xsl /opt/local/share/xsl/docbook-xsl], [$HTML_XSL])
268 if test "x$DOCBOOK_STYLESHEETS" = "x"; then
269 AC_WARN([Docbook stylesheets not found; some documentation can't be built])
274 dnl Check whether kindlegen exists. If not, we'll suppress that part of the
275 dnl documentation build.
276 AC_CHECK_PROGS([KINDLEGEN], [kindlegen])
278 dnl weird ass systems
283 dnl Various compiler setup.
287 dnl Checks for programs.
293 dnl if we are flex, be lex-compatible
294 OPENAFS_LEX_IS_FLEX([AC_SUBST([LEX], ["$LEX -l"])])
296 OPENAFS_FORCE_ABS_INSTALL
297 OPENAFS_CHECK_BIGENDIAN
298 OPENAFS_PRINTF_TAKES_Z_LEN
300 AC_MSG_CHECKING(your OS)
306 if test "x$enable_redhat_buildsys" = "xyes"; then
307 AC_DEFINE(ENABLE_REDHAT_BUILDSYS, 1, [define if you have redhat buildsystem])
309 if test "x$enable_kernel_module" = "xyes"; then
310 if test "x$with_linux_kernel_headers" != "x"; then
311 LINUX_KERNEL_PATH="$with_linux_kernel_headers"
313 for utsdir in "/lib/modules/`uname -r`/build" \
314 "/lib/modules/`uname -r`/source" \
315 "/usr/src/linux-2.4" \
317 LINUX_KERNEL_PATH="$utsdir"
318 for utsfile in "include/generated/utsrelease.h" \
319 "include/linux/utsrelease.h" \
320 "include/linux/version.h" \
321 "include/linux/version-up.h"; do
322 if grep "UTS_RELEASE" "$utsdir/$utsfile" >/dev/null 2>&1; then
328 if test "x$with_linux_kernel_build" != "x"; then
329 LINUX_KERNEL_BUILD="$with_linux_kernel_build"
331 LINUX_KERNEL_BUILD=$LINUX_KERNEL_PATH
333 if test -f "$LINUX_KERNEL_BUILD/include/generated/utsrelease.h"; then
334 linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/generated/utsrelease.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
335 LINUX_VERSION="$linux_kvers"
337 if test -f "$LINUX_KERNEL_BUILD/include/linux/utsrelease.h"; then
338 linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/linux/utsrelease.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
339 LINUX_VERSION="$linux_kvers"
341 if test -f "$LINUX_KERNEL_BUILD/include/linux/version.h"; then
342 linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/linux/version.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
343 if test "x$linux_kvers" = "x"; then
344 if test -f "$LINUX_KERNEL_BUILD/include/linux/version-up.h"; then
345 linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/linux/version-up.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
346 if test "x$linux_kvers" = "x"; then
347 AC_MSG_ERROR(Linux headers lack version definition [2])
350 LINUX_VERSION="$linux_kvers"
353 AC_MSG_ERROR(Linux headers lack version definition)
357 LINUX_VERSION="$linux_kvers"
360 enable_kernel_module="no"
364 if test ! -f "$LINUX_KERNEL_BUILD/include/generated/autoconf.h" &&
365 test ! -f "$LINUX_KERNEL_BUILD/include/linux/autoconf.h"; then
366 enable_kernel_module="no"
368 if test "x$enable_kernel_module" = "xno"; then
369 if test "x$with_linux_kernel_headers" != "x"; then
370 AC_MSG_ERROR(No usable linux headers found at $LINUX_KERNEL_PATH)
373 AC_MSG_WARN(No usable linux headers found at $LINUX_KERNEL_PATH so disabling kernel module)
376 dnl do we need to determine SUBARCH from autoconf.h
380 if test "x$enable_kernel_module" = "xyes"; then
381 case "$LINUX_VERSION" in
382 2.2.*) AFS_SYSKVERS=22 ;;
383 2.4.*) AFS_SYSKVERS=24 ;;
384 2.6.* | 3.*) AFS_SYSKVERS=26 ;;
385 *) AC_MSG_ERROR(Couldn't guess your Linux version [2]) ;;
392 AC_PATH_PROG(SOLARISCC, [cc], ,
393 [/opt/SUNWspro/bin:/opt/SunStudioExpress/bin:/opt/solarisstudio12.3/bin:/opt/solstudio12.2/bin:/opt/sunstudio12.1/bin])
394 if test "x$SOLARISCC" = "x" ; then
395 AC_MSG_FAILURE(Could not find the solaris cc program. Please define the environment variable SOLARISCC to specify the path.)
397 SOLARIS_UFSVFS_HAS_DQRWLOCK
398 SOLARIS_FS_HAS_FS_ROLLED
399 SOLARIS_SOLOOKUP_TAKES_SOCKPARAMS
403 enable_kernel_module=no
409 if test -f "/usr/old/usr/include/ndir.h"; then
410 AC_DEFINE(HAVE_USR_OLD_USR_INCLUDE_NDIR_H, 1, [define if you have old ndir.h])
414 if test -d /usr/include/sys/SN/SN1; then
415 IRIX_BUILD_IP35="IP35"
422 AC_MSG_RESULT(rs_aix)
426 AC_MSG_RESULT(arm_darwin)
430 AC_MSG_RESULT(ppc_darwin)
434 AC_MSG_RESULT(x86_darwin)
438 AC_MSG_RESULT(x86_darwin)
442 AC_MSG_RESULT(i386_fbsd)
446 AC_MSG_RESULT(amd64_fbsd)
454 AC_MSG_RESULT(amd64_obsd)
458 AC_MSG_RESULT(i386_obsd)
462 AC_MSG_RESULT(i386_dfbsd)
465 AC_MSG_RESULT($system)
469 if test "x$with_afs_sysname" != "x"; then
470 AFS_SYSNAME="$with_afs_sysname"
472 AC_MSG_CHECKING(your AFS sysname)
478 AFS_SYSNAME="i386_obsd${vM}${vm}"
480 sparc64-*-openbsd?.?)
484 AFS_SYSNAME="sparc64_obsd${vM}${vm}"
490 AFS_SYSNAME="amd64_obsd${vM}${vm}"
496 AFS_SYSNAME="i386_fbsd_${vM}${vm}"
502 AFS_SYSNAME="amd64_fbsd_${vM}${vm}"
508 AFS_SYSNAME="i386_dfbsd_${vM}${vm}"
510 i?86-*-netbsd*1.6[[M-Z]]*)
511 AFS_SYSNAME="i386_nbsd20"
513 powerpc-*-netbsd*1.6[[M-Z]]*)
514 AFS_SYSNAME="ppc_nbsd20"
517 arch=${host%%-unknown*}
518 arch=$(echo $arch |sed -e 's/x86_64/amd64/g' \
519 -e 's/powerpc/ppc/g')
530 if test $vm -eq 99 ; then
533 if test $vM -gt 1 ; then
536 AFS_SYSNAME="${arch}_nbsd${vM}${vm}"
539 AFS_SYSNAME="hp_ux110"
542 AFS_SYSNAME="hp_ux11i"
545 AFS_SYSNAME="hp_ux1123"
548 AFS_SYSNAME="ia64_hpux1122"
551 AFS_SYSNAME="ia64_hpux1123"
554 AFS_SYSNAME="hp_ux102"
556 powerpc-apple-darwin7*)
557 AFS_SYSNAME="ppc_darwin_70"
560 powerpc-apple-darwin8.*)
561 AFS_SYSNAME="ppc_darwin_80"
564 i386-apple-darwin8.*)
565 AFS_SYSNAME="x86_darwin_80"
568 powerpc-apple-darwin9.*)
569 AFS_SYSNAME="ppc_darwin_90"
572 i386-apple-darwin9.*)
573 AFS_SYSNAME="x86_darwin_90"
576 i?86-apple-darwin10.*)
577 AFS_SYSNAME="x86_darwin_100"
580 x86_64-apple-darwin10.*)
581 AFS_SYSNAME="x86_darwin_100"
584 arm-apple-darwin10.*)
585 AFS_SYSNAME="arm_darwin_100"
588 x86_64-apple-darwin11.*)
589 AFS_SYSNAME="x86_darwin_110"
592 i?86-apple-darwin11.*)
593 AFS_SYSNAME="x86_darwin_110"
596 x86_64-apple-darwin12.*)
597 AFS_SYSNAME="x86_darwin_120"
600 i?86-apple-darwin12.*)
601 AFS_SYSNAME="x86_darwin_120"
604 sparc-sun-solaris2.8)
605 AFS_SYSNAME="sun4x_58"
607 sparc-sun-solaris2.9)
608 AFS_SYSNAME="sun4x_59"
610 sparc-sun-solaris2.10)
611 AFS_SYSNAME="sun4x_510"
613 sparc-sun-solaris2.11)
614 AFS_SYSNAME="sun4x_511"
617 AFS_SYSNAME="sunx86_58"
620 AFS_SYSNAME="sunx86_59"
623 AFS_SYSNAME="sunx86_510"
626 AFS_SYSNAME="sunx86_511"
629 AFS_SYSNAME="alpha_dux40"
632 AFS_SYSNAME="alpha_dux50"
635 AFS_SYSNAME="alpha_dux51"
641 AFS_SYSNAME="ia64_linuxXX"
644 AFS_SYSNAME="`/bin/arch`_linuxXX"
647 AFS_SYSNAME="ppc64_linuxXX"
650 AFS_SYSNAME="alpha_linux_XX"
653 AFS_SYSNAME="s390_linuxXX"
656 AFS_SYSNAME="s390x_linuxXX"
659 AFS_SYSNAME="`/bin/arch`_linuxXX"
662 AFS_SYSNAME="sparc64_linuxXX"
665 AFS_SYSNAME="i386_linuxXX"
668 AFS_SYSNAME="arm_linuxXX"
670 parisc-*-linux-gnu|hppa-*-linux-gnu)
671 AFS_SYSNAME="parisc_linuxXX"
675 AFS_SYSNAME="rs_aix42"
679 AFS_SYSNAME="rs_aix42"
683 AFS_SYSNAME="rs_aix51"
687 AFS_SYSNAME="rs_aix52"
691 AFS_SYSNAME="rs_aix53"
695 AFS_SYSNAME="rs_aix61"
699 AFS_SYSNAME="amd64_linuxXX"
703 AC_MSG_ERROR(An AFS sysname is required)
708 *_linux* | *_umlinux*)
709 if test "x${AFS_SYSKVERS}" = "x"; then
710 AC_MSG_ERROR(Couldn't guess your Linux version. Please use the --with-afs-sysname option to configure an AFS sysname.)
712 _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/XX\$/$AFS_SYSKVERS/`
713 AFS_SYSNAME="$_AFS_SYSNAME"
716 [#ifndef CONFIG_USERMODE
719 ac_cv_linux_is_uml=yes,)
720 if test "${ac_cv_linux_is_uml}" = yes; then
721 _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/linux/umlinux/`
723 AFS_SYSNAME="$_AFS_SYSNAME"
726 AC_MSG_RESULT($AFS_SYSNAME)
731 AC_CHECK_HEADERS(crt_externs.h)
732 DARWIN_PLIST=src/libafs/afs.${AFS_SYSNAME}.plist
733 DARWIN_INFOFILE=afs.${AFS_SYSNAME}.plist
738 dnl Some hosts have a separate common param file they should include. Figure
739 dnl out if we're on one of them now that we know the sysname.
741 *_nbsd15) AFS_PARAM_COMMON=param.nbsd15.h ;;
742 *_nbsd16) AFS_PARAM_COMMON=param.nbsd16.h ;;
743 *_nbsd20) AFS_PARAM_COMMON=param.nbsd20.h ;;
744 *_nbsd21) AFS_PARAM_COMMON=param.nbsd21.h ;;
745 *_nbsd30) AFS_PARAM_COMMON=param.nbsd30.h ;;
746 *_nbsd40) AFS_PARAM_COMMON=param.nbsd40.h ;;
747 *_nbsd50) AFS_PARAM_COMMON=param.nbsd50.h ;;
748 *_nbsd60) AFS_PARAM_COMMON=param.nbsd60.h ;;
749 *_obsd31) AFS_PARAM_COMMON=param.obsd31.h ;;
750 *_obsd32) AFS_PARAM_COMMON=param.obsd32.h ;;
751 *_obsd33) AFS_PARAM_COMMON=param.obsd33.h ;;
752 *_obsd34) AFS_PARAM_COMMON=param.obsd34.h ;;
753 *_obsd35) AFS_PARAM_COMMON=param.obsd35.h ;;
754 *_obsd36) AFS_PARAM_COMMON=param.obsd36.h ;;
755 *_obsd37) AFS_PARAM_COMMON=param.obsd37.h ;;
756 *_obsd38) AFS_PARAM_COMMON=param.obsd38.h ;;
757 *_obsd39) AFS_PARAM_COMMON=param.obsd39.h ;;
758 *_obsd40) AFS_PARAM_COMMON=param.obsd40.h ;;
759 *_obsd41) AFS_PARAM_COMMON=param.obsd41.h ;;
760 *_obsd42) AFS_PARAM_COMMON=param.obsd42.h ;;
761 *_obsd43) AFS_PARAM_COMMON=param.obsd43.h ;;
762 *_obsd44) AFS_PARAM_COMMON=param.obsd44.h ;;
763 *_obsd45) AFS_PARAM_COMMON=param.obsd45.h ;;
764 *_obsd46) AFS_PARAM_COMMON=param.obsd46.h ;;
765 *_obsd47) AFS_PARAM_COMMON=param.obsd47.h ;;
766 *_obsd48) AFS_PARAM_COMMON=param.obsd48.h ;;
767 *_linux22) AFS_PARAM_COMMON=param.linux22.h ;;
768 *_linux24) AFS_PARAM_COMMON=param.linux24.h ;;
769 *_linux26) AFS_PARAM_COMMON=param.linux26.h ;;
770 # Linux alpha adds an extra underscore for no good reason.
771 *_linux_22) AFS_PARAM_COMMON=param.linux22.h ;;
772 *_linux_24) AFS_PARAM_COMMON=param.linux24.h ;;
773 *_linux_26) AFS_PARAM_COMMON=param.linux26.h ;;
778 case $AFS_SYSNAME in *_linux* | *_umlinux*)
780 # Add (sub-) architecture-specific paths needed by conftests
783 UMLINUX26_FLAGS="-I$LINUX_KERNEL_PATH/arch/um/include"
784 UMLINUX26_FLAGS="$UMLINUX26_FLAGS -I$LINUX_KERNEL_PATH/arch/um/kernel/tt/include"
785 UMLINUX26_FLAGS="$UMLINUX26_FLAGS -I$LINUX_KERNEL_PATH/arch/um/kernel/skas/include"
786 CPPFLAGS="$CPPFLAGS $UMLINUX26_FLAGS"
789 if test "x$enable_kernel_module" = "xyes"; then
790 if test "x$enable_debug_kernel" = "xno"; then
791 LINUX_GCC_KOPTS="$LINUX_GCC_KOPTS -fomit-frame-pointer"
793 OPENAFS_GCC_SUPPORTS_MARCH
794 AC_SUBST(P5PLUS_KOPTS)
795 OPENAFS_GCC_NEEDS_NO_STRENGTH_REDUCE
796 OPENAFS_GCC_NEEDS_NO_STRICT_ALIASING
797 OPENAFS_GCC_SUPPORTS_NO_COMMON
798 OPENAFS_GCC_SUPPORTS_PIPE
799 AC_SUBST(LINUX_GCC_KOPTS)
801 dnl Setup the kernel build environment
802 LINUX_KBUILD_USES_EXTRA_CFLAGS
803 LINUX_KERNEL_COMPILE_WORKS
805 dnl Check for header files
806 AC_CHECK_LINUX_HEADER([config.h])
807 AC_CHECK_LINUX_HEADER([completion.h])
808 AC_CHECK_LINUX_HEADER([exportfs.h])
809 AC_CHECK_LINUX_HEADER([freezer.h])
810 AC_CHECK_LINUX_HEADER([key-type.h])
811 AC_CHECK_LINUX_HEADER([semaphore.h])
812 AC_CHECK_LINUX_HEADER([seq_file.h])
814 dnl Type existence checks
815 AC_CHECK_LINUX_TYPE([struct vfs_path], [dcache.h])
817 dnl Check for structure elements
818 AC_CHECK_LINUX_STRUCT([address_space_operations],
819 [write_begin], [fs.h])
820 AC_CHECK_LINUX_STRUCT([backing_dev_info], [name],
822 AC_CHECK_LINUX_STRUCT([ctl_table], [ctl_name], [sysctl.h])
823 AC_CHECK_LINUX_STRUCT([dentry_operations], [d_automount], [dcache.h])
824 AC_CHECK_LINUX_STRUCT([inode], [i_alloc_sem], [fs.h])
825 AC_CHECK_LINUX_STRUCT([inode], [i_blkbits], [fs.h])
826 AC_CHECK_LINUX_STRUCT([inode], [i_blksize], [fs.h])
827 AC_CHECK_LINUX_STRUCT([inode], [i_mutex], [fs.h])
828 AC_CHECK_LINUX_STRUCT([inode], [i_security], [fs.h])
829 AC_CHECK_LINUX_STRUCT([file_operations], [flock], [fs.h])
830 AC_CHECK_LINUX_STRUCT([file_operations], [sendfile], [fs.h])
831 AC_CHECK_LINUX_STRUCT([file_system_type], [mount], [fs.h])
832 AC_CHECK_LINUX_STRUCT([filename], [name], [fs.h])
833 AC_CHECK_LINUX_STRUCT([key_type], [preparse], [key-type.h])
834 AC_CHECK_LINUX_STRUCT([nameidata], [path], [namei.h])
835 AC_CHECK_LINUX_STRUCT([proc_dir_entry], [owner], [proc_fs.h])
836 AC_CHECK_LINUX_STRUCT([super_block], [s_bdi], [fs.h])
837 AC_CHECK_LINUX_STRUCT([super_block], [s_d_op], [fs.h])
838 AC_CHECK_LINUX_STRUCT([super_operations], [alloc_inode],
840 AC_CHECK_LINUX_STRUCT([super_operations], [evict_inode],
842 AC_CHECK_LINUX_STRUCT([task_struct], [cred], [sched.h])
843 AC_CHECK_LINUX_STRUCT([task_struct], [exit_state], [sched.h])
844 AC_CHECK_LINUX_STRUCT([task_struct], [parent], [sched.h])
845 AC_CHECK_LINUX_STRUCT([task_struct], [real_parent], [sched.h])
846 AC_CHECK_LINUX_STRUCT([task_struct], [rlim], [sched.h])
847 AC_CHECK_LINUX_STRUCT([task_struct], [sig], [sched.h])
848 AC_CHECK_LINUX_STRUCT([task_struct], [sighand], [sched.h])
849 AC_CHECK_LINUX_STRUCT([task_struct], [sigmask_lock], [sched.h])
850 AC_CHECK_LINUX_STRUCT([task_struct], [tgid], [sched.h])
851 AC_CHECK_LINUX_STRUCT([task_struct], [thread_info], [sched.h])
852 LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM
854 dnl Check for typed structure elements
855 AC_CHECK_LINUX_TYPED_STRUCT([read_descriptor_t],
858 dnl Function existence checks
860 AC_CHECK_LINUX_FUNC([bdi_init],
861 [#include <linux/backing-dev.h>],
863 AC_CHECK_LINUX_FUNC([PageChecked],
864 [#include <linux/mm.h>
865 #include <linux/page-flags.h>],
867 int bchecked = PageChecked(_page);])
868 AC_CHECK_LINUX_FUNC([PageFsMisc],
869 [#include <linux/mm.h>
870 #include <linux/page-flags.h>],
872 int bchecked = PageFsMisc(_page);])
873 AC_CHECK_LINUX_FUNC([clear_inode],
874 [#include <linux/fs.h>],
875 [clear_inode(NULL);])
876 AC_CHECK_LINUX_FUNC([current_kernel_time],
877 [#include <linux/time.h>],
879 s = current_kernel_time();])
880 AC_CHECK_LINUX_FUNC([d_alloc_anon],
881 [#include <linux/fs.h>],
882 [d_alloc_anon(NULL);])
883 AC_CHECK_LINUX_FUNC([d_make_root],
884 [#include <linux/fs.h>],
885 [d_make_root(NULL);])
886 AC_CHECK_LINUX_FUNC([do_sync_read],
887 [#include <linux/fs.h>],
888 [do_sync_read(NULL, NULL, 0, NULL);])
889 AC_CHECK_LINUX_FUNC([find_task_by_pid],
890 [#include <linux/sched.h>],
891 [pid_t p; find_task_by_pid(p);])
892 AC_CHECK_LINUX_FUNC([generic_file_aio_read],
893 [#include <linux/fs.h>],
894 [generic_file_aio_read(NULL,NULL,0,0);])
895 AC_CHECK_LINUX_FUNC([grab_cache_page_write_begin],
896 [#include <linux/pagemap.h>],
897 [grab_cache_page_write_begin(NULL, 0, 0);])
898 AC_CHECK_LINUX_FUNC([hlist_unhashed],
899 [#include <linux/list.h>],
900 [hlist_unhashed(0);])
901 AC_CHECK_LINUX_FUNC([i_size_read],
902 [#include <linux/fs.h>],
903 [i_size_read(NULL);])
904 AC_CHECK_LINUX_FUNC([inode_setattr],
905 [#include <linux/fs.h>],
906 [inode_setattr(NULL, NULL);])
907 AC_CHECK_LINUX_FUNC([kernel_setsockopt],
908 [#include <linux/net.h>],
909 [kernel_setsockopt(NULL, 0, 0, NULL, 0);])
910 AC_CHECK_LINUX_FUNC([page_follow_link],
911 [#include <linux/fs.h>],
912 [page_follow_link(0,0);])
913 AC_CHECK_LINUX_FUNC([page_offset],
914 [#include <linux/pagemap.h>],
915 [page_offset(NULL);])
916 AC_CHECK_LINUX_FUNC([pagevec_lru_add_file],
917 [#include <linux/pagevec.h>],
918 [__pagevec_lru_add_file(NULL);])
919 AC_CHECK_LINUX_FUNC([path_lookup],
920 [#include <linux/fs.h>
921 #include <linux/namei.h>],
922 [path_lookup(NULL, 0, NULL);])
923 AC_CHECK_LINUX_FUNC([rcu_read_lock],
924 [#include <linux/rcupdate.h>],
926 AC_CHECK_LINUX_FUNC([set_nlink],
927 [#include <linux/fs.h>],
928 [set_nlink(NULL, 1);])
929 AC_CHECK_LINUX_FUNC([splice_direct_to_actor],
930 [#include <linux/splice.h>],
931 [splice_direct_to_actor(NULL,NULL,NULL);])
932 AC_CHECK_LINUX_FUNC([svc_addr_in],
933 [#include <linux/sunrpc/svc.h>],
934 [svc_addr_in(NULL);])
935 AC_CHECK_LINUX_FUNC([zero_user_segments],
936 [#include <linux/highmem.h>],
937 [zero_user_segments(NULL, 0, 0, 0, 0);])
938 AC_CHECK_LINUX_FUNC([noop_fsync],
939 [#include <linux/fs.h>],
940 [void *address = &noop_fsync; printk("%p\n", address)];)
941 AC_CHECK_LINUX_FUNC([kthread_run],
942 [#include <linux/kernel.h>
943 #include <linux/kthread.h>],
944 [kthread_run(NULL, NULL, "test");])
946 dnl Consequences - things which get set as a result of the
948 AS_IF([test "x$ac_cv_linux_func_d_alloc_anon" = "xno"],
949 [AC_DEFINE([AFS_NONFSTRANS], 1,
950 [define to disable the nfs translator])])
952 dnl Assorted more complex tests
954 LINUX_EXPORTS_PROC_ROOT_FS
955 LINUX_KMEM_CACHE_INIT
956 LINUX_HAVE_KMEM_CACHE_T
957 LINUX_KMEM_CACHE_CREATE_TAKES_DTOR
958 LINUX_KMEM_CACHE_CREATE_CTOR_TAKES_VOID
959 LINUX_D_PATH_TAKES_STRUCT_PATH
961 LINUX_INODE_SETATTR_RETURN_TYPE
962 LINUX_IOP_I_CREATE_TAKES_NAMEIDATA
963 LINUX_IOP_I_LOOKUP_TAKES_NAMEIDATA
964 LINUX_IOP_I_PERMISSION_TAKES_FLAGS
965 LINUX_IOP_I_PERMISSION_TAKES_NAMEIDATA
966 LINUX_IOP_I_PUT_LINK_TAKES_COOKIE
967 LINUX_DOP_D_DELETE_TAKES_CONST
968 LINUX_DOP_D_REVALIDATE_TAKES_NAMEIDATA
969 LINUX_FOP_F_FLUSH_TAKES_FL_OWNER_T
970 LINUX_FOP_F_FSYNC_TAKES_DENTRY
971 LINUX_FOP_F_FSYNC_TAKES_RANGE
972 LINUX_AOP_WRITEBACK_CONTROL
973 LINUX_FS_STRUCT_FOP_HAS_SPLICE
974 LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG
975 LINUX_POSIX_TEST_LOCK_RETURNS_CONFLICT
976 LINUX_POSIX_TEST_LOCK_CONFLICT_ARG
977 LINUX_KERNEL_SOCK_CREATE
978 LINUX_EXPORTS_KEY_TYPE_KEYRING
980 LINUX_RECALC_SIGPENDING_ARG_TYPE
981 LINUX_EXPORTS_TASKLIST_LOCK
982 LINUX_GET_SB_HAS_STRUCT_VFSMOUNT
983 LINUX_STATFS_TAKES_DENTRY
985 LINUX_HAVE_TRY_TO_FREEZE
986 LINUX_LINUX_KEYRING_SUPPORT
987 LINUX_KEY_ALLOC_NEEDS_STRUCT_TASK
988 LINUX_KEY_ALLOC_NEEDS_CRED
989 LINUX_INIT_WORK_HAS_DATA
990 LINUX_REGISTER_SYSCTL_TABLE_NOFLAG
991 LINUX_HAVE_DCACHE_LOCK
993 LINUX_IOP_MKDIR_TAKES_UMODE_T
994 LINUX_IOP_CREATE_TAKES_UMODE_T
995 LINUX_EXPORT_OP_ENCODE_FH_TAKES_INODES
996 LINUX_KMAP_ATOMIC_TAKES_NO_KM_TYPE
997 LINUX_DENTRY_OPEN_TAKES_PATH
998 LINUX_D_ALIAS_IS_HLIST
999 LINUX_IOP_I_CREATE_TAKES_BOOL
1000 LINUX_DOP_D_REVALIDATE_TAKES_UNSIGNED
1001 LINUX_IOP_LOOKUP_TAKES_UNSIGNED
1003 dnl If we are guaranteed that keyrings will work - that is
1004 dnl a) The kernel has keyrings enabled
1005 dnl b) The code is new enough to give us a key_type_keyring
1006 dnl then we just disable syscall probing unless we've been
1009 AS_IF([test "$enable_linux_syscall_probing" = "maybe"],
1010 [AS_IF([test "$ac_cv_linux_keyring_support" = "yes" -a "$ac_cv_linux_exports_key_type_keyring" = "yes"],
1011 [enable_linux_syscall_probing="no"],
1012 [enable_linux_syscall_probing="yes"])
1015 dnl Syscall probing needs a few tests of its own, and just
1016 dnl won't work if the kernel doesn't export init_mm
1017 AS_IF([test "$enable_linux_syscall_probing" = "yes"], [
1018 LINUX_EXPORTS_INIT_MM
1019 AS_IF([test "$ac_cv_linux_exports_init_mm" = "no"], [
1021 [Can't do syscall probing without exported init_mm])
1023 LINUX_EXPORTS_SYS_CHDIR
1024 LINUX_EXPORTS_SYS_OPEN
1025 AC_DEFINE(ENABLE_LINUX_SYSCALL_PROBING, 1,
1026 [define to enable syscall table probes])
1029 dnl Packaging and SMP build
1030 if test "x$with_linux_kernel_packaging" != "xyes" ; then
1037 if test "x$ac_cv_linux_config_modversions" = "xno" -o $AFS_SYSKVERS -ge 26; then
1038 AS_IF([test "$enable_linux_syscall_probing" = "yes"], [
1039 AC_MSG_WARN([Cannot determine sys_call_table status. assuming it isn't exported])
1041 ac_cv_linux_exports_sys_call_table=no
1042 if test -f "$LINUX_KERNEL_PATH/include/asm/ia32_unistd.h"; then
1043 ac_cv_linux_exports_ia32_sys_call_table=yes
1046 LINUX_EXPORTS_KALLSYMS_ADDRESS
1047 LINUX_EXPORTS_KALLSYMS_SYMBOL
1048 LINUX_EXPORTS_SYS_CALL_TABLE
1049 LINUX_EXPORTS_IA32_SYS_CALL_TABLE
1050 if test "x$ac_cv_linux_exports_sys_call_table" = "xno"; then
1051 linux_syscall_method=none
1052 if test "x$ac_cv_linux_exports_init_mm" = "xyes"; then
1053 linux_syscall_method=scan
1054 if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
1055 linux_syscall_method=scan_with_kallsyms_address
1058 if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
1059 linux_syscall_method=kallsyms_symbol
1061 if test "x$linux_syscall_method" = "xnone"; then
1062 AC_MSG_WARN([no available sys_call_table access method -- guessing scan])
1063 linux_syscall_method=scan
1067 if test -f "$LINUX_KERNEL_PATH/include/linux/in_systm.h"; then
1068 AC_DEFINE(HAVE_IN_SYSTM_H, 1, [define if you have in_systm.h header file])
1070 if test -f "$LINUX_KERNEL_PATH/include/linux/mm_inline.h"; then
1071 AC_DEFINE(HAVE_MM_INLINE_H, 1, [define if you have mm_inline.h header file])
1073 if test "x$ac_cv_linux_kernel_page_follow_link" = "xyes" -o "x$ac_cv_linux_func_i_put_link_takes_cookie" = "xyes"; then
1074 AC_DEFINE(USABLE_KERNEL_PAGE_SYMLINK_CACHE, 1, [define if your kernel has a usable symlink cache API])
1076 AC_MSG_WARN([your kernel does not have a usable symlink cache API])
1080 dnl Linux-only, but just enable always.
1081 AC_DEFINE(AFS_CACHE_BYPASS, 1, [define to activate cache bypassing Unix client])
1084 AC_CACHE_CHECK([if compiler has __sync_add_and_fetch],
1085 [ac_cv_sync_fetch_and_add],
1086 [AC_TRY_LINK(, [int var; return __sync_add_and_fetch(&var, 1);],
1087 [ac_cv_sync_fetch_and_add=yes],
1088 [ac_cv_sync_fetch_and_add=no])
1090 AS_IF([test "$ac_cv_sync_fetch_and_add" = "yes"],
1091 [AC_DEFINE(HAVE_SYNC_FETCH_AND_ADD, 1,
1092 [define if your C compiler has __sync_add_and_fetch])])
1094 AC_CACHE_CHECK([if struct sockaddr has sa_len field],
1095 [ac_cv_sockaddr_len],
1096 [AC_TRY_COMPILE( [#include <sys/types.h>
1097 #include <sys/socket.h>],
1098 [struct sockaddr *a; a->sa_len=0;],
1099 [ac_cv_sockaddr_len=yes],
1100 [ac_cv_sockaddr_len=no])
1102 AS_IF([test "$ac_cv_sockaddr_len" = "yes"],
1103 [AC_DEFINE(STRUCT_SOCKADDR_HAS_SA_LEN, 1,
1104 [define if you struct sockaddr sa_len])])
1106 if test "x${MKAFS_OSTYPE}" = "xIRIX"; then
1107 echo Skipping library tests because they confuse Irix.
1109 AC_SEARCH_LIBS([socket], [socket inet])
1110 AC_SEARCH_LIBS([connect], [nsl])
1111 AC_SEARCH_LIBS([gethostbyname], [dns nsl resolv])
1113 dnl darwin wants it, aix hates it
1114 AC_MSG_CHECKING(for the useability of arpa/nameser_compat.h)
1118 #include <sys/types.h>
1119 #include <sys/socket.h>
1120 #include <netinet/in.h>
1121 #include <arpa/inet.h>
1122 #include <arpa/nameser.h>
1123 #include <arpa/nameser_compat.h>
1125 ], [static int i; i = 0;],
1127 AC_DEFINE(HAVE_ARPA_NAMESER_COMPAT_H, 1, [define if arpa/nameser_compat.h exists])],
1131 openafs_save_libs="$LIBS"
1132 AC_MSG_CHECKING([for res_search])
1135 if test "$ac_cv_func_res_search" = no; then
1136 for lib in dns nsl resolv; do
1137 if test "$ac_cv_func_res_search" != yes; then
1140 LIBS="$openafs_save_libs"
1143 if test "$ac_cv_func_res_search" = yes; then
1145 AC_DEFINE(HAVE_RES_SEARCH, 1, [])
1146 AC_MSG_RESULT([yes, in lib$lib])
1151 AC_DEFINE(HAVE_RES_SEARCH, 1, [])
1156 XLIBS="$LIB_AFSDB $XLIBS"
1158 AC_CHECK_RESOLV_RETRANS
1160 AC_CACHE_CHECK([for setsockopt(, SOL_IP, IP_RECVERR)],
1161 [ac_cv_setsockopt_iprecverr],
1163 #include <sys/types.h>
1164 #include <sys/socket.h>
1165 #include <netinet/in.h>],
1167 setsockopt(0, SOL_IP, IP_RECVERR, &on, sizeof(on));],
1168 [ac_cv_setsockopt_iprecverr=yes],
1169 [ac_cv_setsockopt_iprecverr=no])])
1171 AS_IF([test "$ac_cv_setsockopt_iprecverr" = "yes"],
1172 [AC_DEFINE([HAVE_SETSOCKOPT_IP_RECVERR], [1],
1173 [define if we can receive socket errors via IP_RECVERR])])
1176 if test "x$MKAFS_OSTYPE" = OBSD; then
1177 PTHREAD_LIBS="-pthread"
1179 if test "x$MKAFS_OSTYPE" = xDFBSD; then
1180 PTHREAD_LIBS="-pthread"
1182 if test "x$PTHREAD_LIBS" = xerror; then
1183 AC_CHECK_LIB(pthread, pthread_attr_init,
1184 PTHREAD_LIBS="-lpthread")
1186 if test "x$PTHREAD_LIBS" = xerror; then
1187 AC_CHECK_LIB(pthreads, pthread_attr_init,
1188 PTHREAD_LIBS="-lpthreads")
1190 if test "x$PTHREAD_LIBS" = xerror; then
1191 AC_CHECK_LIB(c_r, pthread_attr_init,
1192 PTHREAD_LIBS="-lc_r")
1194 if test "x$PTHREAD_LIBS" = xerror; then
1195 AC_CHECK_FUNC(pthread_attr_init, PTHREAD_LIBS="")
1197 if test "x$PTHREAD_LIBS" = xerror; then
1198 # pthread_attr_init is a macro under HPUX 11.0 and 11.11
1199 AC_CHECK_LIB(pthread, pthread_attr_destroy,
1200 PTHREAD_LIBS="-lpthread")
1202 if test "x$PTHREAD_LIBS" = xerror; then
1203 AC_MSG_WARN(*** Unable to locate working posix thread library ***)
1205 AC_SUBST(PTHREAD_LIBS)
1207 HOST_CPU="$host_cpu"
1209 if test "x$with_bsd_kernel_headers" != "x"; then
1210 BSD_KERNEL_PATH="$with_bsd_kernel_headers"
1212 BSD_KERNEL_PATH="/usr/src/sys"
1215 if test "x$with_bsd_kernel_build" != "x"; then
1216 BSD_KERNEL_BUILD="$with_bsd_kernel_build"
1218 case $AFS_SYSNAME in
1220 BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/${HOST_CPU}/compile/GENERIC"
1223 BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/arch/${HOST_CPU}/compile/GENERIC"
1228 if test "$enable_supergroups" = "yes"; then
1229 AC_DEFINE(SUPERGROUPS, 1, [define if you want to have support for nested pts groups])
1232 if test "$enable_bitmap_later" = "yes"; then
1233 AC_DEFINE(BITMAP_LATER, 1, [define if you want to salvager to check bitmasks later])
1236 if test "$enable_unix_sockets" = "yes"; then
1237 AC_DEFINE(USE_UNIX_SOCKETS, 1, [define if you want to use UNIX sockets for fssync.])
1238 USE_UNIX_SOCKETS="yes"
1240 USE_UNIX_SOCKETS="no"
1242 AC_SUBST(USE_UNIX_SOCKETS)
1244 if test "$enable_namei_fileserver" = "yes"; then
1245 AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1248 if test "$enable_namei_fileserver" = "default"; then
1251 AC_MSG_WARN(Some Solaris 10 versions are not safe with the inode fileserver. Forcing namei. Override with --disable-namei-fileserver)
1252 AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1256 AC_MSG_WARN(Solaris 11 versions are not safe with the inode fileserver. Forcing namei. Override with --disable-namei-fileserver)
1257 AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
1269 dnl check for tivoli
1270 AC_MSG_CHECKING(for tivoli tsm butc support)
1272 if test "$enable_tivoli_tsm" = "yes"; then
1273 XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen
1274 XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen
1275 XBSADIR3=/usr/tivoli/tsm/client/api/bin/sample
1276 XBSADIR4=/opt/tivoli/tsm/client/api/bin/sample
1278 if test -r "$XBSADIR3/dsmapifp.h"; then
1279 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR3"
1281 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1282 elif test -r "$XBSADIR4/dsmapifp.h"; then
1283 XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR4"
1285 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1286 elif test -r "$XBSADIR1/xbsa.h"; then
1287 XBSA_CFLAGS="-Dxbsa -I$XBSADIR1"
1289 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1290 elif test -r "$XBSADIR2/xbsa.h"; then
1291 XBSA_CFLAGS="-Dxbsa -I$XBSADIR2"
1293 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
1295 AC_MSG_RESULT([no, missing xbsa.h and dsmapifp.h header files])
1300 AC_SUBST(XBSA_CFLAGS)
1301 AC_SUBST(XBSA_XLIBS)
1303 dnl checks for header files.
1307 AC_CHECK_HEADERS([ \
1324 security/pam_appl.h \
1366 AC_CHECK_HEADERS([resolv.h], [], [], [AC_INCLUDES_DEFAULT
1367 #ifdef HAVE_NETINET_IN_H
1368 # include <netinet/in.h>
1371 AC_CHECK_HEADERS([net/if.h],[],[],[AC_INCLUDES_DEFAULT
1372 #ifdef HAVE_SYS_SOCKET_H
1373 # include <sys/socket.h>
1376 AC_CHECK_HEADERS([netinet/if_ether.h],[],[],[AC_INCLUDES_DEFAULT
1377 #ifdef HAVE_SYS_SOCKET_H
1378 # include <sys/socket.h>
1380 #ifdef HAVE_NETINET_IN_H
1381 # include <netinet/in.h>
1383 #ifdef HAVE_NET_IF_H
1384 # include <net/if.h>
1387 AC_CHECK_HEADERS([security/pam_modules.h],[],[],[AC_INCLUDES_DEFAULT
1388 #ifdef HAVE_SECURITY_PAM_APPL_H
1389 # include <security/pam_appl.h>
1392 AC_CHECK_HEADERS(linux/errqueue.h,,,[#include <linux/types.h>])
1394 AC_CHECK_TYPES([fsblkcnt_t],,,[
1395 #include <sys/types.h>
1396 #ifdef HAVE_SYS_BITYPES_H
1397 #include <sys/bitypes.h>
1399 #ifdef HAVE_SYS_STATFS_H
1400 #include <sys/statfs.h>
1402 #ifdef HAVE_SYS_STATVFS_H
1403 #include <sys/statvfs.h>
1407 dnl see what struct stat has for timestamps
1408 AC_CHECK_MEMBERS([struct stat.st_ctimespec, struct stat.st_ctimensec])
1410 dnl check for curses-lib
1411 AS_IF([test "x$enable_gtx" != "xno"],
1413 AC_CHECK_LIB( [ncurses], [setupterm],
1414 [LIB_curses=-lncurses],
1415 [AC_CHECK_LIB([Hcurses], [setupterm], [LIB_curses=-lHcurses],
1416 [AC_CHECK_LIB([curses], [setupterm], [LIB_curses=-lcurses])])
1419 AC_SUBST(LIB_curses)])
1421 OPENAFS_TEST_PACKAGE(libintl,[#include <libintl.h>],[-lintl],,,INTL)
1423 if test "$enable_debug_locks" = yes; then
1424 AC_DEFINE(OPR_DEBUG_LOCKS, 1, [turn on lock debugging in opr])
1427 dnl Don't build PAM on IRIX; the interface doesn't work for us.
1428 if test "$ac_cv_header_security_pam_modules_h" = yes -a "$enable_pam" = yes; then
1429 case $AFS_SYSNAME in
1442 if test "$enable_login" = yes; then
1447 AC_SUBST(BUILD_LOGIN)
1449 if test "$enable_uss" = yes; then
1491 OPENAFS_C_ATTRIBUTE()
1493 dnl Functions that Heimdal's libroken provides, but that we
1494 dnl haven't found a need for yet, and so haven't imported
1513 dnl Functions that are in objects that we always build from libroken
1523 dnl Functions that we're going to try and get from libroken
1524 AC_REPLACE_FUNCS([ \
1559 dnl Headers that we're going to try and get from libroken
1560 AC_CHECK_HEADERS([ \
1565 AC_CHECK_DECLS([h_errno], [], [], [
1566 #include <sys/types.h>
1575 AS_IF([test "$ac_cv_header_err_h" != "yes" ],
1576 [ROKEN_HEADERS="$ROKEN_HEADERS \$(TOP_INCDIR)/err.h"],
1578 AC_SUBST(ROKEN_HEADERS)
1580 dnl Stuff that's harder ...
1581 AC_MSG_CHECKING([for bswap16])
1582 AC_LINK_IFELSE([AC_LANG_PROGRAM([
1583 #ifdef HAVE_SYS_TYPES_H
1584 #include <sys/types.h>
1586 #ifdef HAVE_SYS_BSWAP_H
1587 #include <sys/bswap.h>
1590 [short a, b; b = bswap16(a); ])],
1592 AC_DEFINE(HAVE_BSWAP16, 1, [Define to 1 if you have the bswap16 function])
1594 [AC_MSG_RESULT(no)])
1596 AC_MSG_CHECKING([for bswap32])
1597 AC_LINK_IFELSE([AC_LANG_PROGRAM([#ifdef HAVE_SYS_TYPES_H
1598 #include <sys/types.h>
1600 #ifdef HAVE_SYS_BSWAP_H
1601 #include <sys/bswap.h>
1604 [int a, b; b = bswap32(a); ])],
1606 AC_DEFINE(HAVE_BSWAP32, 1, [Define to 1 if you have the bswap32 function])
1608 [AC_MSG_RESULT(no)])
1610 case $AFS_SYSNAME in
1612 AC_MSG_WARN([Some versions of HP-UX have a buggy positional I/O implementation. Forcing no positional I/O.])
1615 AC_MSG_CHECKING([for positional I/O])
1616 if test "$ac_cv_func_pread" = "yes" && \
1617 test "$ac_cv_func_pwrite" = "yes"; then
1618 AC_DEFINE(HAVE_PIO, 1, [define if you have pread() and pwrite()])
1623 AC_MSG_CHECKING([for vectored positional I/O])
1624 AS_IF([test "$ac_cv_func_preadv" = "yes" -a \
1625 "$ac_cv_func_pwritev" = "yes" -a \
1626 "$ac_cv_func_preadv64" = "yes" -a \
1627 "$ac_cv_func_pwritev64" = "yes"],
1628 [AC_DEFINE(HAVE_PIOV, 1, [define if you have preadv() and pwritev()])
1629 AC_MSG_RESULT(yes)],
1630 [AC_MSG_RESULT(no)])
1634 AC_MSG_CHECKING([for POSIX regex library])
1635 if test "$ac_cv_header_regex_h" = "yes" && \
1636 test "$ac_cv_func_regcomp" = "yes" && \
1637 test "$ac_cv_func_regexec" = "yes" && \
1638 test "$ac_cv_func_regerror" = "yes"; then
1639 AC_DEFINE(HAVE_POSIX_REGEX, 1, [define if you have POSIX regex library])
1645 dnl Look for "non-portable" pthreads functions.
1647 LIBS="$LIBS $PTHREAD_LIBS"
1649 pthread_set_name_np \
1650 pthread_setname_np \
1653 dnl Sadly, there are three different versions of pthread_setname_np.
1654 dnl Try to cater for all of them.
1655 if test "$ac_cv_func_pthread_setname_np" = "yes" ; then
1656 AC_MSG_CHECKING([for signature of pthread_setname_np])
1658 #include <pthread.h>
1659 #ifdef HAVE_PTHREAD_NP_H
1660 #include <pthread_np.h>
1662 ], [pthread_setname_np(pthread_self(), "test", (void *)0)], [
1663 AC_MSG_RESULT([three arguments])
1664 pthread_setname_np_args=3], [
1666 #include <pthread.h>
1667 #ifdef HAVE_PTHREAD_NP_H
1668 #include <pthread_np.h>
1670 ], [pthread_setname_np(pthread_self(), "test")], [
1671 AC_MSG_RESULT([two arguments])
1672 pthread_setname_np_args=2], [
1674 #include <pthread.h>
1675 #ifdef HAVE_PTHREAD_NP_H
1676 #include <pthread_np.h>
1678 ], [pthread_setname_np("test")], [
1679 AC_MSG_RESULT([one argument])
1680 pthread_setname_np_args=1], [pthread_setname_np_args=0])
1683 AC_DEFINE_UNQUOTED([PTHREAD_SETNAME_NP_ARGS], $pthread_setname_np_args, [Number of arguments required by pthread_setname_np() function])
1687 openafs_cv_saved_CFLAGS="$CFLAGS"
1688 CFLAGS="$CFLAGS $XCFLAGS_NOCHECKING"
1692 AC_CHECK_SIZEOF(void *)
1693 AC_CHECK_SIZEOF(unsigned long long)
1694 AC_CHECK_SIZEOF(unsigned long)
1695 AC_CHECK_SIZEOF(unsigned int)
1699 AC_CHECK_TYPE([sig_atomic_t],[],
1700 [AC_DEFINE([sig_atomic_t], [int],
1701 [Define to int if <signal.h> does not define.])],
1702 [#include <sys/types.h>
1703 #include <signal.h>])
1704 AC_CHECK_TYPE([socklen_t],[],
1705 [AC_DEFINE([socklen_t], [int],
1706 [Define to int if <sys/socket.h> does not define.])],
1707 [#include <sys/types.h>
1708 #include <sys/socket.h>])
1709 AC_CHECK_TYPES(off64_t)
1710 AC_CHECK_TYPES([ssize_t], [], [], [#include <unistd.h>])
1711 AC_CHECK_TYPES([struct winsize], [], [], [
1712 #ifdef HAVE_TERMIOS_H
1713 # include <termios.h>
1715 # include <sys/termios.h>
1717 #include <sys/ioctl.h>])
1718 AC_CHECK_TYPES([sa_family_t, socklen_t, struct sockaddr,
1719 struct sockaddr_storage],
1721 #include <sys/types.h>
1722 #include <sys/socket.h>
1724 AC_CHECK_TYPES([sa_family_t], [], [], [
1725 #include <sys/types.h>
1726 #include <sys/socket.h>
1728 AC_CHECK_TYPES([struct addrinfo], [], [], [
1729 #include <sys/types.h>
1734 AC_CHECK_TYPES([long long], [], [], [])
1736 AC_SIZEOF_TYPE(long)
1738 CFLAGS="$openafs_cv_saved_CFLAGS"
1740 RRA_HEADER_PAM_CONST
1743 dnl Directory PATH handling
1744 if test "x$enable_transarc_paths" = "xyes" ; then
1745 afsconfdir=${afsconfdir=/usr/afs/etc}
1746 viceetcdir=${viceetcdir=/usr/vice/etc}
1747 afskerneldir=${afskerneldir=${viceetcdir}}
1748 afssrvbindir=${afssrvbindir=/usr/afs/bin}
1749 afssrvsbindir=${afssrvsbindir=/usr/afs/bin}
1750 afssrvlibexecdir=${afssrvlibexecdir=/usr/afs/bin}
1751 afsdbdir=${afsdbdir=/usr/afs/db}
1752 afslogsdir=${afslogsdir=/usr/afs/logs}
1753 afslocaldir=${afslocaldir=/usr/afs/local}
1754 afsbackupdir=${afsbackupdir=/usr/afs/backup}
1755 afsbosconfigdir=${afsbosconfigdir=/usr/afs/local}
1756 afsdatadir=${afsdatadir=/usr/vice/etc}
1758 afsconfdir=${afsconfdir='${sysconfdir}/openafs/server'}
1759 viceetcdir=${viceetcdir='${sysconfdir}/openafs'}
1760 afskerneldir=${afskerneldir='${libdir}/openafs'}
1761 afssrvbindir=${afssrvbindir='${bindir}'}
1762 afssrvsbindir=${afssrvsbindir='${sbindir}'}
1763 afssrvlibexecdir=${afssrvlibexecdir='${libexecdir}/openafs'}
1764 afsdbdir=${afsdbdir='${localstatedir}/openafs/db'}
1765 afslogsdir=${afslogsdir='${localstatedir}/openafs/logs'}
1766 afslocaldir=${afslocaldir='${localstatedir}/openafs'}
1767 afsbackupdir=${afsbackupdir='${localstatedir}/openafs/backup'}
1768 afsbosconfigdir=${afsbosconfigdir='${sysconfdir}/openafs'}
1769 afsdatadir=${afsdatadir='${datadir}/openafs'}
1771 AC_SUBST(afsconfdir)
1772 AC_SUBST(viceetcdir)
1773 AC_SUBST(afskerneldir)
1774 AC_SUBST(afssrvbindir)
1775 AC_SUBST(afssrvsbindir)
1776 AC_SUBST(afssrvlibexecdir)
1778 AC_SUBST(afslogsdir)
1779 AC_SUBST(afslocaldir)
1780 AC_SUBST(afsbackupdir)
1781 AC_SUBST(afsbosconfigdir)
1782 AC_SUBST(afsdatadir)
1784 if test "x$enable_kernel_module" = "xyes"; then
1785 ENABLE_KERNEL_MODULE=libafs
1788 if test "x$enable_pthreaded_ubik" = "xyes"; then
1789 ENABLE_PTHREADED_UBIK=yes
1793 AC_SUBST(AFS_SYSNAME)
1794 AC_SUBST(AFS_PARAM_COMMON)
1795 AC_SUBST(ENABLE_KERNEL_MODULE)
1796 AC_SUBST(ENABLE_PTHREADED_UBIK)
1798 AC_SUBST(LINUX_KERNEL_PATH)
1799 AC_SUBST(LINUX_KERNEL_BUILD)
1801 AC_SUBST(BSD_KERNEL_PATH)
1802 AC_SUBST(BSD_KERNEL_BUILD)
1803 AC_SUBST(LINUX_VERSION)
1804 AC_SUBST(MKAFS_OSTYPE)
1805 AC_SUBST(TOP_OBJDIR)
1806 AC_SUBST(TOP_SRCDIR)
1807 AC_SUBST(TOP_INCDIR)
1808 AC_SUBST(TOP_LIBDIR)
1810 AC_SUBST(DARWIN_INFOFILE)
1811 AC_SUBST(IRIX_BUILD_IP35)
1814 AC_SUBST(DOCBOOK2PDF)
1815 AC_SUBST(DOCBOOK_STYLESHEETS)
1820 TOP_SRCDIR="${srcdir}/src"
1822 dnl If we're using ./configure, need a more reasonable TOP_SRCDIR, since relative links don't work everywhere
1828 TOP_SRCDIR=`cd $TOP_SRCDIR; pwd`
1832 TOP_OBJDIR="${SRCDIR_PARENT}"
1833 TOP_INCDIR="${SRCDIR_PARENT}/include"
1834 TOP_LIBDIR="${SRCDIR_PARENT}/lib"
1835 if test "${DEST}x" = "x"; then
1836 DEST="${SRCDIR_PARENT}/${AFS_SYSNAME}/dest"
1839 if test "x$with_crosstools_dir" != "x"; then
1840 if test -f "$with_crosstools_dir/rxgen" -a -f "$with_crosstools_dir/compile_et" -a -f "$with_crosstools_dir/config"; then
1841 COMPILE_ET_PATH=$with_crosstools_dir/compile_et
1842 CONFIGTOOL_PATH=$with_crosstools_dir/config
1843 RXGEN_PATH=$with_crosstools_dir/rxgen
1845 AC_MSG_ERROR(Tools not found in $with_crosstools_dir)
1849 COMPILE_ET_PATH="${SRCDIR_PARENT}/src/comerr/compile_et"
1850 CONFIGTOOL_PATH="${SRCDIR_PARENT}/src/config/config"
1851 RXGEN_PATH="${SRCDIR_PARENT}/src/rxgen/rxgen"
1853 AC_SUBST(COMPILE_ET_PATH)
1854 AC_SUBST(CONFIGTOOL_PATH)
1855 AC_SUBST(RXGEN_PATH)
1857 HELPER_SPLINT="${TOP_SRCDIR}/helper-splint.sh"
1858 HELPER_SPLINTCFG="${TOP_SRCDIR}/splint.cfg"
1859 AC_SUBST(HELPER_SPLINT)
1860 AC_SUBST(HELPER_SPLINTCFG)
1862 mkdir -p ${TOP_OBJDIR}/src/JAVA/libjafs
1864 dnl Check to see if crypt lives in a different library
1865 AC_CHECK_LIB(crypt, crypt, LIB_crypt="-lcrypt")
1868 dnl Check to see if the compiler support labels in structs
1869 AC_MSG_CHECKING(for label support in structs)
1870 AC_TRY_COMPILE([], [
1871 extern void osi_UFSOpen(void);
1873 void (*open) (void);
1875 struct labeltest struct_labeltest = {
1876 .open = osi_UFSOpen,
1880 AC_DEFINE(HAVE_STRUCT_LABEL_SUPPORT, 1, [Define to 1 if your compiler supports labels in structs.])
1885 AC_MSG_CHECKING([checking for dirfd])
1886 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
1887 #ifdef HAVE_DIRENT_H
1891 [[DIR *d = 0; dirfd(d);]])],
1892 [ac_rk_have_dirfd=yes], [ac_rk_have_dirfd=no])
1893 if test "$ac_rk_have_dirfd" = "yes" ; then
1894 AC_DEFINE_UNQUOTED(HAVE_DIRFD, 1, [have a dirfd function/macro])
1896 AC_MSG_RESULT($ac_rk_have_dirfd)
1898 OPENAFS_HAVE_STRUCT_FIELD(DIR, dd_fd, [#include <sys/types.h>
1899 #ifdef HAVE_DIRENT_H
1903 dnl Eventually, this will look for the system one, or for OpenSSL
1904 LIB_hcrypto="-lafshcrypto"
1905 LDFLAGS_hcrypto="-L\$(TOP_LIBDIR)"
1906 AC_SUBST(LIB_hcrypto)
1907 AC_SUBST(LDFLAGS_hcrypto)
1909 dnl Check for UUID library
1910 AC_CHECK_HEADERS([uuid/uuid.h])
1911 AC_CHECK_LIB(uuid, uuid_generate, LIBS_uuid="-luuid")
1912 AC_CHECK_FUNCS([uuid_generate])
1916 AC_DEFUN([SUMMARY], [
1917 # Print a configuration summary
1919 echo "**************************************"
1920 echo configure summary
1922 AS_IF([test $LIB_curses],[
1923 echo "LIB_curses : $LIB_curses" ],[
1924 echo "XXX LIB_curses not found! not building scout and afsmonitor!"
1927 echo "**************************************"