1360936ea64d66c21477f55335090e3aec651c64
[openafs.git] / acinclude.m4
1 dnl This file contains the common configuration code which would
2 dnl otherwise be duplicated between configure and configure-libafs.
3 dnl
4 dnl NB: Because this code is a macro, references to positional shell
5 dnl parameters must be done like $[]1 instead of $1
6
7 AC_DEFUN(OPENAFS_CONFIGURE_COMMON,[
8
9 AC_CANONICAL_HOST
10 SRCDIR_PARENT=`pwd`
11
12 #BOZO_SAVE_CORES pam sia
13 AC_ARG_WITH(afs-sysname,
14 [  --with-afs-sysname=sys    use sys for the afs sysname]
15 )
16 AC_ARG_ENABLE( obsolete,
17 [  --enable-obsolete                    enable obsolete portions of AFS (mpp, ntp and package)],, enable_obsolete="no")
18 AC_ARG_ENABLE( insecure,
19 [  --enable-insecure                    enable insecure portions of AFS (ftpd, inetd, rcp, rlogind and rsh)],, enable_insecure="no")
20 AC_ARG_ENABLE( afsdb,
21 [  --disable-afsdb                      disable AFSDB RR support],, enable_afsdb="yes")
22 AC_ARG_ENABLE( bos-restricted-mode,
23 [  --enable-bos-restricted-mode         enable bosserver restricted mode which disables certain bosserver functionality],, enable_bos_restricted_mode="no")
24 AC_ARG_ENABLE( bos-new-config,
25 [  --enable-bos-new-config              enable bosserver pickup of BosConfig.new on restarts],, enable_bos_new_config="no")
26 AC_ARG_ENABLE( namei-fileserver,
27 [  --enable-namei-fileserver            force compilation of namei fileserver in preference to inode fileserver],, enable_namei_fileserver="no")
28 AC_ARG_ENABLE( fast-restart,
29 [  --enable-fast-restart                enable fast startup of file server without salvaging],, enable_fast_restart="no")
30 AC_ARG_ENABLE( bitmap-later,
31 [  --enable-bitmap-later                enable fast startup of file server by not reading bitmap till needed],, enable_bitmap_later="no")
32 AC_ARG_ENABLE( full-vos-listvol-switch,
33 [  --enable-full-vos-listvol-switch     enable vos full listvol switch for formatted output],, enable_full_vos_listvol_switch="no")
34 AC_ARG_WITH(dux-kernel-headers,
35 [  --with-dux-kernel-headers=path       use the kernel headers found at path(optional, defaults to first match in /usr/sys)]
36 )
37 AC_ARG_WITH(linux-kernel-headers,
38 [  --with-linux-kernel-headers=path     use the kernel headers found at path(optional, defaults to /usr/src/linux)]
39 )
40 AC_ARG_ENABLE(kernel-module,
41 [  --disable-kernel-module              disable compilation of the kernel module (defaults to enabled)],, enable_kernel_module="yes"
42 )
43 AC_ARG_ENABLE(redhat-buildsys,
44 [  --enable-redhat-buildsys             enable compilation of the redhat build system kernel (defaults to disabled)],, enable_redhat_buildsys="no"
45 )
46 AC_ARG_ENABLE(transarc-paths,
47 [  --enable-transarc-paths                      Use Transarc style paths like /usr/afs and /usr/vice],, enable_transarc_paths="no"
48 )
49 AC_ARG_ENABLE(tivoli-tsm,
50 [  --enable-tivoli-tsm                  Enable use of the Tivoli TSM API libraries for butc support],, enable_tivoli_tsm="no"
51 )
52 AC_ARG_ENABLE(debug-kernel,
53 [  --enable-debug-kernel                enable compilation of the kernel module with debugging information (defaults to disabled)],, enable_debug_kernel="no"
54 )
55
56 dnl weird ass systems
57 AC_AIX
58 AC_ISC_POSIX
59 AC_MINIX
60
61 dnl Various compiler setup.
62 AC_TYPE_PID_T
63 AC_TYPE_SIZE_T
64 AC_TYPE_SIGNAL
65
66 dnl Checks for programs.
67 AC_PROG_INSTALL
68 AC_PROG_LN_S
69 AC_PROG_RANLIB
70 AC_PROG_YACC
71 AM_PROG_LEX
72
73 OPENAFS_CHECK_BIGENDIAN
74
75 KERN_DEBUG_OPT=
76 if test "x$enable_debug_kernel" = "xyes"; then
77   KERN_DEBUG_OPT=-g
78 fi
79
80 AC_MSG_CHECKING(your OS)
81 system=$host
82 case $system in
83         *-linux*)
84                 MKAFS_OSTYPE=LINUX
85                 if test "x$enable_redhat_buildsys" = "xyes"; then
86                  AC_DEFINE(ENABLE_REDHAT_BUILDSYS, 1, [define if you have redhat buildsystem])
87                 fi
88                 if test "x$enable_kernel_module" = "xyes"; then
89                  if test "x$with_linux_kernel_headers" != "x"; then
90                    LINUX_KERNEL_PATH="$with_linux_kernel_headers"
91                  else
92                    LINUX_KERNEL_PATH="/usr/src/linux"
93                  fi
94                  if test -f "$LINUX_KERNEL_PATH/include/linux/version.h"; then
95                   linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_PATH/include/linux/version.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -1`
96                   if test "x$linux_kvers" = "x"; then
97                     if test -f "$LINUX_KERNEL_PATH/include/linux/version-up.h"; then
98                       linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_PATH/include/linux/version-up.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -1`
99                       if test "x$linux_kvers" = "x"; then
100
101                         AC_MSG_ERROR(Linux headers lack version definition [2])
102                         exit 1
103                       else
104                         LINUX_VERSION="$linux_kvers"
105                       fi
106                     else
107                       AC_MSG_ERROR(Linux headers lack version definition)
108                       exit 1
109                     fi
110                   else
111                     LINUX_VERSION="$linux_kvers"
112                   fi
113                  else
114                     enable_kernel_module="no"
115                  fi
116                  if test ! -f "$LINUX_KERNEL_PATH/include/linux/autoconf.h"; then
117                      enable_kernel_module="no"
118                  fi
119                  if test "x$enable_kernel_module" = "xno"; then
120                   if test "x$with_linux_kernel_headers" != "x"; then
121                    AC_MSG_ERROR(No usable linux headers found at $LINUX_KERNEL_PATH)
122                    exit 1
123                   else
124                    AC_MSG_WARN(No usable linux headers found at $LINUX_KERNEL_PATH so disabling kernel module)
125                   fi
126                  fi
127                 fi
128                 AC_MSG_RESULT(linux)
129                 if test "x$enable_kernel_module" = "xyes"; then
130                  OMIT_FRAME_POINTER=
131                  if test "x$enable_debug_kernel" = "xno"; then
132                         OMIT_FRAME_POINTER=-fomit-frame-pointer
133                  fi
134                  AC_SUBST(OMIT_FRAME_POINTER)
135                  OPENAFS_GCC_SUPPORTS_MARCH
136                  AC_SUBST(P5PLUS_KOPTS)
137                  OPENAFS_GCC_NEEDS_NO_STRENGTH_REDUCE
138                  OPENAFS_GCC_NEEDS_NO_STRICT_ALIASING
139                  OPENAFS_GCC_SUPPORTS_NO_COMMON
140                  AC_SUBST(LINUX_GCC_KOPTS)
141                  ifdef([OPENAFS_CONFIGURE_LIBAFS],
142                    [LINUX_BUILD_VNODE_FROM_INODE(src/config,afs)],
143                    [LINUX_BUILD_VNODE_FROM_INODE(${srcdir}/src/config,src/afs/LINUX,${srcdir}/src/afs/LINUX)]
144                  )
145                  LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK
146                  LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_GFP_MASK
147                  LINUX_FS_STRUCT_INODE_HAS_I_TRUNCATE_SEM
148                  LINUX_FS_STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS
149                  LINUX_FS_STRUCT_INODE_HAS_I_DEVICES
150                  LINUX_INODE_SETATTR_RETURN_TYPE
151                  LINUX_COMPLETION_H_EXISTS
152                  LINUX_EXPORTS_TASKLIST_LOCK
153                  LINUX_NEED_RHCONFIG
154                  LINUX_WHICH_MODULES
155                  if test "x$ac_cv_linux_config_modversions" = "xno"; then
156                    AC_MSG_WARN([Cannot determine sys_call_table status. assuming it's exported])
157                    ac_cv_linux_exports_sys_call_table=yes
158                  else
159                    LINUX_EXPORTS_SYS_CALL_TABLE
160                    LINUX_EXPORTS_KALLSYMS_SYMBOL
161                    LINUX_EXPORTS_KALLSYMS_ADDRESS
162                    LINUX_EXPORTS_INIT_MM
163                    if test "x$ac_cv_linux_exports_sys_call_table" = "xno"; then
164                          linux_syscall_method=none
165                          if test "x$ac_cv_linux_exports_init_mm" = "xyes"; then
166                             linux_syscall_method=scan
167                             if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
168                                linux_syscall_method=scan_with_kallsyms_address
169                             fi
170                          fi
171                          if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
172                             linux_syscall_method=kallsyms_symbol
173                          fi
174                          if test "x$linux_syscall_method" = "xnone"; then
175                         AC_MSG_ERROR([no available sys_call_table access method])
176                          fi
177                    fi
178                  fi
179                  if test "x$ac_cv_linux_exports_tasklist_lock" = "xyes" ; then
180                   AC_DEFINE(EXPORTED_TASKLIST_LOCK, 1, [define if your linux kernel exports tasklist_lock])
181                  fi
182                  if test "x$ac_cv_linux_exports_sys_call_table" = "xyes"; then
183                   AC_DEFINE(EXPORTED_SYS_CALL_TABLE)
184                  fi
185                  if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
186                   AC_DEFINE(EXPORTED_KALLSYMS_SYMBOL)
187                  fi
188                  if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
189                   AC_DEFINE(EXPORTED_KALLSYMS_ADDRESS)
190                  fi
191                  if test "x$ac_cv_linux_completion_h_exists" = "xyes" ; then
192                   AC_DEFINE(COMPLETION_H_EXISTS, 1, [define if your h_exists exists])
193                  fi
194                  if test "x$ac_cv_linux_func_inode_setattr_returns_int" = "xyes" ; then
195                   AC_DEFINE(INODE_SETATTR_NOT_VOID, 1, [define if your setattr return return non-void])
196                  fi
197                  if test "x$ac_cv_linux_fs_struct_address_space_has_page_lock" = "xyes"; then 
198                   AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK, 1, [define if your struct address_space has page_lock])
199                  fi
200                  if test "x$ac_cv_linux_fs_struct_address_space_has_gfp_mask" = "xyes"; then 
201                   AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_GFP_MASK, 1, [define if your struct address_space has gfp_mask])
202                  fi
203                  if test "x$ac_cv_linux_fs_struct_inode_has_i_truncate_sem" = "xyes"; then 
204                   AC_DEFINE(STRUCT_INODE_HAS_I_TRUNCATE_SEM, 1, [define if your struct inode has truncate_sem])
205                  fi
206                  if test "x$ac_cv_linux_fs_struct_inode_has_i_devices" = "xyes"; then 
207                   AC_DEFINE(STRUCT_INODE_HAS_I_DEVICES, 1, [define if you struct inode has i_devices])
208                  fi
209                  if test "x$ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers" = "xyes"; then 
210                   AC_DEFINE(STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS, 1, [define if you struct inode has data_buffers])
211                  fi
212                 :
213                 fi
214                 ;;
215         *-solaris*)
216                 MKAFS_OSTYPE=SOLARIS
217                 AC_MSG_RESULT(sun4)
218                 SOLARIS_UFSVFS_HAS_DQRWLOCK
219                 SOLARIS_PROC_HAS_P_COREFILE
220                 ;;
221         *-sunos*)
222                 MKAFS_OSTYPE=SUNOS
223                 enable_kernel_module=no
224                 AC_MSG_RESULT(sun4)
225                 ;;
226         *-hpux*)
227                 MKAFS_OSTYPE=HPUX
228                 AC_MSG_RESULT(hp_ux)
229                 ;;
230         *-irix*)
231                 if test -d /usr/include/sys/SN/SN1; then
232                  IRIX_BUILD_IP35="IP35"
233                 fi
234                 MKAFS_OSTYPE=IRIX
235                 AC_MSG_RESULT(sgi)
236                 ;;
237         *-aix*)
238                 MKAFS_OSTYPE=AIX
239                 AC_MSG_RESULT(rs_aix)
240                 ;;
241         *-osf*)
242                 MKAFS_OSTYPE=DUX
243                 AC_MSG_RESULT(alpha_dux)
244                 if test "x$enable_kernel_module" = "xyes"; then
245                  if test "x$with_dux_kernel_headers" != "x"; then
246                    HEADER_RT=`ls ${with_dux_kernel_headers}/rt_preempt.h | head -1 | sed 's,/rt_preempt.h,,;s,/usr/sys/,,'`
247                  else
248                    HEADER_RT=`ls /usr/sys/*/rt_preempt.h | head -1 | sed 's,/rt_preempt.h,,;s,/usr/sys/,,'`
249                  fi
250                 fi
251                 if test "$HEADER_RT" = "*" ; then
252                         AC_MSG_ERROR([Need a configured kernel directory])
253                 fi
254                 AC_SUBST([HEADER_RT])
255                 ;;
256         *-darwin*)
257                 MKAFS_OSTYPE=DARWIN
258                 AC_MSG_RESULT(ppc_darwin)
259                 ;;
260         *-freebsd*)
261                 MKAFS_OSTYPE=FBSD
262                 AC_MSG_RESULT(i386_fbsd)
263                 ;;
264         *-netbsd*)
265                 MKAFS_OSTYPE=NBSD
266                 AC_MSG_RESULT(nbsd)
267                 ;;
268         *-openbsd*)
269                 MKAFS_OSTYPE=OBSD
270                 AC_MSG_RESULT(i386_obsd)
271                 ;;
272         *)
273                 AC_MSG_RESULT($system)
274                 ;;
275 esac
276 AC_SUBST(KERN_DEBUG_OPT)
277
278 if test "x$with_afs_sysname" != "x"; then
279         AFS_SYSNAME="$with_afs_sysname"
280 else
281         AC_MSG_CHECKING(your AFS sysname)
282         case $host in
283                 i386-unknown-openbsd3.1)
284                         AFS_SYSNAME="i386_obsd31"
285                         ;;
286                 i?86-*-freebsd4.2*)
287                         AFS_SYSNAME="i386_fbsd_42"
288                         ;;
289                 i?86-*-freebsd4.3*)
290                         AFS_SYSNAME="i386_fbsd_43"
291                         ;;
292                 i?86-*-freebsd4.4*)
293                         AFS_SYSNAME="i386_fbsd_44"
294                         ;;
295                 i?86-*-freebsd4.5*)
296                         AFS_SYSNAME="i386_fbsd_45"
297                         ;;
298                 i?86-*-freebsd4.6*)
299                         AFS_SYSNAME="i386_fbsd_46"
300                         ;;
301                 i?86-*-freebsd4.7*)
302                         AFS_SYSNAME="i386_fbsd_47"
303                         ;;
304                 i?86-*-netbsd*1.5*)
305                         AFS_PARAM_COMMON=param.nbsd15.h
306                         AFS_SYSNAME="i386_nbsd15"
307                         ;;
308                 alpha-*-netbsd*1.5*)
309                         AFS_PARAM_COMMON=param.nbsd15.h
310                         AFS_SYSNAME="alpha_nbsd15"
311                         ;;
312                 i?86-*-netbsd*1.6*)
313                         AFS_PARAM_COMMON=param.nbsd16.h
314                         AFS_SYSNAME="i386_nbsd16"
315                         ;;
316                 alpha-*-netbsd*1.6*)
317                         AFS_PARAM_COMMON=param.nbsd16.h
318                         AFS_SYSNAME="alpha_nbsd16"
319                         ;;
320                 hppa*-hp-hpux11*)
321                         AFS_SYSNAME="hp_ux110"
322                         ;;
323                 hppa*-hp-hpux10*)
324                         AFS_SYSNAME="hp_ux102"
325                         ;;
326                 powerpc-apple-darwin1.2*)
327                         AFS_SYSNAME="ppc_darwin_12"
328                         ;;
329                 powerpc-apple-darwin1.3*)
330                         AFS_SYSNAME="ppc_darwin_13"
331                         ;;
332                 powerpc-apple-darwin1.4*)
333                         AFS_SYSNAME="ppc_darwin_14"
334                         ;;
335                 powerpc-apple-darwin5.1*)
336                         AFS_SYSNAME="ppc_darwin_14"
337                         ;;
338                 powerpc-apple-darwin5.2*)
339                         AFS_SYSNAME="ppc_darwin_14"
340                         ;;
341                 powerpc-apple-darwin5.3*)
342                         AFS_SYSNAME="ppc_darwin_14"
343                         ;;
344                 powerpc-apple-darwin5.4*)
345                         AFS_SYSNAME="ppc_darwin_14"
346                         ;;
347                 powerpc-apple-darwin5.5*)
348                         AFS_SYSNAME="ppc_darwin_14"
349                         ;;
350                 powerpc-apple-darwin6.0*)
351                         AFS_SYSNAME="ppc_darwin_60"
352                         ;;
353                 powerpc-apple-darwin6.1*)
354                         AFS_SYSNAME="ppc_darwin_60"
355                         ;;
356                 powerpc-apple-darwin6.2*)
357                         AFS_SYSNAME="ppc_darwin_60"
358                         ;;
359                 sparc-sun-solaris2.5*)
360                         AFS_SYSNAME="sun4x_55"
361                         ;;
362                 sparc-sun-solaris2.6)
363                         AFS_SYSNAME="sun4x_56"
364                         ;;
365                 sparc-sun-solaris2.7)
366                         AFS_SYSNAME="sun4x_57"
367                         ;;
368                 sparc-sun-solaris2.8)
369                         AFS_SYSNAME="sun4x_58"
370                         ;;
371                 sparc-sun-solaris2.9)
372                         AFS_SYSNAME="sun4x_59"
373                         ;;
374                 sparc-sun-sunos4*)
375                         AFS_SYSNAME="sun4_413"
376                         ;;
377                 i386-pc-solaris2.7)
378                         AFS_SYSNAME="sunx86_57"
379                         ;;
380                 i386-pc-solaris2.8)
381                         AFS_SYSNAME="sunx86_58"
382                         ;;
383                 i386-pc-solaris2.9)
384                         AFS_SYSNAME="sunx86_59"
385                         ;;
386                 alpha*-dec-osf4.0*)
387                         AFS_SYSNAME="alpha_dux40"
388                         ;;
389                 alpha*-dec-osf5.0*)
390                         AFS_SYSNAME="alpha_dux50"
391                         ;;
392                 alpha*-dec-osf5.1*)
393                         AFS_SYSNAME="alpha_dux51"
394                         ;;
395                 mips-sgi-irix6.5)
396                         AFS_SYSNAME="sgi_65"
397                         ;;
398                 ia64-*-linux*)
399                         AFS_SYSNAME="ia64_linuxXX"
400                         ;;
401                 powerpc-*-linux*)
402                         AFS_SYSNAME="ppc_linuxXX"
403                         ;;
404                 alpha*-linux*)
405                         AFS_SYSNAME="alpha_linux_XX"
406                         ;;
407                 s390-*-linux*)
408                         AFS_SYSNAME="s390_linuxXX"
409                         ;;
410                 sparc-*-linux*)
411                         AFS_SYSNAME="sparc_linuxXX"
412                         ;;
413                 sparc64-*-linux*)
414                         AFS_SYSNAME="sparc64_linuxXX"
415                         ;;
416                 i?86-*-linux*)
417                         AFS_SYSNAME="i386_linuxXX"
418                         ;;
419                 parisc-*-linux-gnu)
420                         AFS_SYSNAME="parisc_linuxXX"
421                         ;;
422                 power*-ibm-aix4.2*)
423                         AFS_SYSNAME="rs_aix42"
424                         ;;
425                 power*-ibm-aix4.3*)
426                         AFS_SYSNAME="rs_aix42"
427                         ;;
428                 *)
429                         AC_MSG_ERROR(An AFS sysname is required)
430                         exit 1
431                         ;;
432         esac
433         case $AFS_SYSNAME in
434                 *_linux*)
435                         AFS_SYSKVERS=`echo $LINUX_VERSION | awk -F\. '{print $[]1 $[]2}'`
436                         if test "x${AFS_SYSKVERS}" = "x"; then
437                          AC_MSG_ERROR(Couldn't guess your Linux version. Please use the --with-afs-sysname option to configure an AFS sysname.)
438                         fi
439                         _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/XX\$/$AFS_SYSKVERS/`
440                         AFS_SYSNAME="$_AFS_SYSNAME"
441                         ;;
442         esac
443         AC_MSG_RESULT($AFS_SYSNAME)
444 fi
445
446 case $AFS_SYSNAME in
447         *_darwin*)
448                 DARWIN_PLIST=src/libafs/afs.${AFS_SYSNAME}.plist
449                 DARWIN_INFOFILE=afs.${AFS_SYSNAME}.plist
450                 dnl the test below fails on darwin, even if the CPPFLAGS below
451                 dnl are added. the headers from Kernel.Framework must be used
452                 dnl when KERNEL is defined.
453
454                 dnl really, such a thing isn't guaranteed to work on any 
455                 dnl platform until the kernel cflags from MakefileProto are
456                 dnl known to configure
457                 AC_DEFINE(HAVE_STRUCT_BUF, 1, [define if you have a struct buf])
458                 ;;
459         *)
460 AC_MSG_CHECKING(for definition of struct buf)
461 dnl save_CPPFLAGS="$CPPFLAGS"
462 dnl CPPFLAGS="$CPPFLAGS -DKERNEL -D_KERNEL -D__KERNEL -D__KERNEL__"
463 AC_CACHE_VAL(ac_cv_have_struct_buf, [
464         ac_cv_have_struct_buf=no
465         AC_TRY_COMPILE(
466                 [#include <sys/buf.h>],
467                 [struct buf x;
468                 printf("%d\n", sizeof(x));],
469                 ac_cv_have_struct_buf=yes,)
470         ]
471 )
472 dnl CPPFLAGS="$save_CPPFLAGS"
473 AC_MSG_RESULT($ac_cv_have_struct_buf)
474 if test "$ac_cv_have_struct_buf" = yes; then
475         AC_DEFINE(HAVE_STRUCT_BUF, 1, [define if you have a struct buf])
476 fi
477 ;;
478 esac
479
480
481 AC_CACHE_VAL(ac_cv_sockaddr_len,
482 [
483 AC_MSG_CHECKING([if struct sockaddr has sa_len field])
484 AC_TRY_COMPILE( [#include <sys/types.h>
485 #include <sys/socket.h>],
486 [struct sockaddr *a;
487 a->sa_len=0;], ac_cv_sockaddr_len=yes, ac_cv_sockaddr_len=no)
488 AC_MSG_RESULT($ac_cv_sockaddr_len)])
489 if test "$ac_cv_sockaddr_len" = "yes"; then
490    AC_DEFINE(STRUCT_SOCKADDR_HAS_SA_LEN, 1, [define if you struct sockaddr sa_len])
491 fi
492 if test "x${MKAFS_OSTYPE}" = "xIRIX"; then
493         echo Skipping library tests because they confuse Irix.
494 else
495   AC_CHECK_FUNCS(socket)
496
497   if test "$ac_cv_func_socket" = no; then
498     for lib in socket inet; do
499         if test "$HAVE_SOCKET" != 1; then
500                 AC_CHECK_LIB(${lib}, socket,LIBS="$LIBS -l$lib";HAVE_SOCKET=1;AC_DEFINE(HAVE_SOCKET, 1, [define if you have socket]))
501         fi
502     done
503   fi
504   
505   AC_CHECK_FUNCS(connect)       
506
507   if test "$ac_cv_func_connect" = no; then
508     for lib in nsl; do
509         if test "$HAVE_CONNECT" != 1; then
510                 AC_CHECK_LIB(${lib}, connect,LIBS="$LIBS -l$lib";HAVE_CONNECT=1;AC_DEFINE(HAVE_CONNECT, 1, [define if you have connect]))
511         fi
512     done
513   fi
514
515   AC_CHECK_FUNCS(gethostbyname)
516   if test "$ac_cv_func_gethostbyname" = no; then
517         for lib in dns nsl resolv; do
518           if test "$HAVE_GETHOSTBYNAME" != 1; then
519             AC_CHECK_LIB(${lib}, gethostbyname, LIBS="$LIBS -l$lib";HAVE_GETHOSTBYNAME=1;AC_DEFINE(HAVE_GETHOSTBYNAME, 1, [define if you have gethostbyname]))
520           fi
521         done    
522   fi    
523
524   AC_CHECK_FUNCS(res_search)
525   if test "$ac_cv_func_res_search" = no; then
526         for lib in dns nsl resolv; do
527           if test "$HAVE_RES_SEARCH" != 1; then
528             AC_CHECK_LIB(${lib}, res_search, LIBS="$LIBS -l$lib";HAVE_RES_SEARCH=1;AC_DEFINE(HAVE_RES_SEARCH, 1, [define if you have res_search]))
529           fi
530         done    
531         if test "$HAVE_RES_SEARCH" = 1; then
532           LIB_res_search="-l$lib"       
533         fi
534   fi    
535 fi
536
537 PTHREAD_LIBS=error
538 AC_CHECK_LIB(pthread, pthread_attr_init,
539              PTHREAD_LIBS="-lpthread")
540 if test "x$PTHREAD_LIBS" = xerror; then
541         AC_CHECK_LIB(pthreads, pthread_attr_init,
542                 PTHREAD_LIBS="-lpthreads")
543 fi
544 if test "x$PTHREAD_LIBS" = xerror; then
545         AC_CHECK_LIB(c_r, pthread_attr_init,
546                 PTHREAD_LIBS="-lc_r")
547 fi
548 if test "x$PTHREAD_LIBS" = xerror; then
549         AC_CHECK_FUNC(pthread_attr_init, PTHREAD_LIBS="")
550 fi
551 if test "x$PTHREAD_LIBS" = xerror; then
552         AC_MSG_WARN(*** Unable to locate working posix thread library ***)
553 fi
554 AC_SUBST(PTHREAD_LIBS)
555
556 WITH_OBSOLETE=NO
557 if test "$enable_obsolete" = "yes"; then
558         WITH_OBSOLETE=YES
559 fi
560
561 WITH_INSECURE=NO
562 if test "$enable_insecure" = "yes"; then
563         WITH_INSECURE=YES
564 fi
565
566 # Fast restart
567 if test "$enable_fast_restart" = "yes"; then
568         AC_DEFINE(FAST_RESTART, 1, [define if you want to have fast restart])
569 fi
570
571 if test "$enable_bitmap_later" = "yes"; then
572         AC_DEFINE(BITMAP_LATER, 1, [define if you want to salvager to check bitmasks later])
573 fi
574
575 if test "$enable_full_vos_listvol_switch" = "yes"; then
576         AC_DEFINE(FULL_LISTVOL_SWITCH, 1, [define if you want to want listvol switch])
577 fi
578
579 if test "$enable_bos_restricted_mode" = "yes"; then
580         AC_DEFINE(BOS_RESTRICTED_MODE, 1, [define if you want to want bos restricted mode])
581 fi
582
583 if test "$enable_bos_new_config" = "yes"; then
584         AC_DEFINE(BOS_NEW_CONFIG, 1, [define if you want to enable automatic renaming of BosConfig.new to BosConfig at startup])
585 fi
586
587 if test "$enable_namei_fileserver" = "yes"; then
588         AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
589 fi
590
591 if test "$enable_afsdb" = "yes"; then
592         LIB_AFSDB="$LIB_res_search"
593         AC_DEFINE(AFS_AFSDB_ENV, 1, [define if you want to want search afsdb rr])
594 fi
595
596 dnl check for tivoli
597 AC_MSG_CHECKING(for tivoli tsm butc support)
598 XBSA_CFLAGS=""
599 if test "$enable_tivoli_tsm" = "yes"; then
600         XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen
601         XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen
602
603         if test -e "$XBSADIR1/xbsa.h"; then
604                 XBSA_CFLAGS="-Dxbsa -I$XBSADIR1"
605                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
606         elif test -e "$XBSADIR2/xbsa.h"; then
607                 XBSA_CFLAGS="-Dxbsa -I$XBSADIR2"
608                 AC_MSG_RESULT([yes, $XBSA_CFLAGS])
609         else
610                 AC_MSG_RESULT([no, missing xbsa.h header file])
611         fi
612 else
613         AC_MSG_RESULT([no])
614 fi
615 AC_SUBST(XBSA_CFLAGS)
616
617 dnl checks for header files.
618 AC_HEADER_STDC
619 AC_HEADER_SYS_WAIT
620 AC_HEADER_DIRENT
621 AC_CHECK_HEADERS(stdlib.h string.h unistd.h fcntl.h sys/time.h sys/file.h)
622 AC_CHECK_HEADERS(netinet/in.h netdb.h sys/fcntl.h sys/mnttab.h sys/mntent.h)
623 AC_CHECK_HEADERS(mntent.h sys/vfs.h sys/param.h sys/fs_types.h)
624 AC_CHECK_HEADERS(sys/mount.h strings.h termios.h signal.h)
625 AC_CHECK_HEADERS(windows.h malloc.h winsock2.h direct.h io.h)
626 AC_CHECK_HEADERS(security/pam_modules.h siad.h usersec.h ucontext.h)
627
628 AC_CHECK_FUNCS(utimes random srandom getdtablesize snprintf re_comp re_exec)
629 AC_CHECK_FUNCS(setprogname getprogname sigaction)
630 AC_CHECK_TYPE(ssize_t, int)
631 AC_SIZEOF_TYPE(long)
632
633 AC_CHECK_FUNCS(timegm)
634
635 dnl Directory PATH handling
636 if test "x$enable_transarc_paths" = "xyes"  ; then 
637     afsconfdir=${afsconfdir=/usr/afs/etc}
638     viceetcdir=${viceetcdir=/usr/vice/etc}
639     afskerneldir=${afskerneldir=${viceetcdir}}
640     afssrvbindir=${afssrvbindir=/usr/afs/bin}
641     afssrvsbindir=${afssrvsbindir=/usr/afs/bin}
642     afssrvlibexecdir=${afssrvlibexecdir=/usr/afs/bin}
643     afsdbdir=${afsdbdir=/usr/afs/db}
644     afslogsdir=${afslogsdir=/usr/afs/logs}
645     afslocaldir=${afslocaldir=/usr/afs/local}
646     afsbackupdir=${afsbackupdir=/usr/afs/backup}
647     afsbosconfigdir=${afsbosconfigdir=/usr/afs/local}
648 else 
649     afsconfdir=${afsconfdir='${sysconfdir}/openafs/server'}
650     viceetcdir=${viceetcdir='${sysconfdir}/openafs'}
651     afskerneldir=${afskerneldir='${libdir}/openafs'}
652     afssrvbindir=${afssrvbindir='${bindir}'}
653     afssrvsbindir=${afssrvsbindir='${sbindir}'}
654     afssrvlibexecdir=${afssrvlibexecdir='${libexecdir}/openafs'}
655     afsdbdir=${afsdbdir='${localstatedir}/openafs/db'}
656     afslogsdir=${afslogsdir='${localstatedir}/openafs/logs'}
657     afslocaldir=${afslocaldir='${localstatedir}/openafs'}
658     afsbackupdir=${afsbackupdir='${localstatedir}/openafs/backup'}
659     afsbosconfigdir=${afsbosconfigdir='${sysconfdir}/openafs'}
660 fi
661 AC_SUBST(afsconfdir)
662 AC_SUBST(viceetcdir)
663 AC_SUBST(afskerneldir)
664 AC_SUBST(afssrvbindir)
665 AC_SUBST(afssrvsbindir)
666 AC_SUBST(afssrvlibexecdir)
667 AC_SUBST(afsdbdir)
668 AC_SUBST(afslogsdir)
669 AC_SUBST(afslocaldir)
670 AC_SUBST(afsbackupdir)
671 AC_SUBST(afsbosconfigdir)
672
673 if test "x$enable_kernel_module" = "xyes"; then
674 ENABLE_KERNEL_MODULE=libafs
675 fi
676
677 AC_SUBST(AFS_SYSNAME)
678 AC_SUBST(AFS_PARAM_COMMON)
679 AC_SUBST(ENABLE_KERNEL_MODULE)
680 AC_SUBST(LIB_AFSDB)
681 AC_SUBST(LINUX_KERNEL_PATH)
682 AC_SUBST(LINUX_VERSION)
683 AC_SUBST(MKAFS_OSTYPE)
684 AC_SUBST(TOP_OBJDIR)
685 AC_SUBST(TOP_SRCDIR)
686 AC_SUBST(TOP_INCDIR)
687 AC_SUBST(TOP_LIBDIR)
688 AC_SUBST(DEST)
689 AC_SUBST(WITH_OBSOLETE)
690 AC_SUBST(WITH_INSECURE)
691 AC_SUBST(DARWIN_INFOFILE)
692 AC_SUBST(IRIX_BUILD_IP35)
693
694 OPENAFS_OSCONF
695
696 TOP_SRCDIR="${srcdir}/src"
697 dnl
698 dnl If we're using ./configure, need a more reasonable TOP_SRCDIR, since relative links don't work everywhere
699 dnl
700 case $TOP_SRCDIR in
701         /*)
702                 ;;
703         *)
704                 TOP_SRCDIR=${SRCDIR_PARENT}/src
705 esac
706
707 TOP_OBJDIR="${SRCDIR_PARENT}"
708 TOP_INCDIR="${SRCDIR_PARENT}/include"
709 TOP_LIBDIR="${SRCDIR_PARENT}/lib"
710 if test "${DEST}x" = "x"; then
711         DEST="${SRCDIR_PARENT}/${AFS_SYSNAME}/dest"
712 fi
713
714
715 ])