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