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