2001-10-09 16:48:25 +01:00
|
|
|
dnl This file contains the common configuration code which would
|
|
|
|
dnl otherwise be duplicated between configure and configure-libafs.
|
|
|
|
dnl
|
|
|
|
dnl NB: Because this code is a macro, references to positional shell
|
|
|
|
dnl parameters must be done like $[]1 instead of $1
|
|
|
|
|
2004-06-03 07:13:27 +01:00
|
|
|
AC_DEFUN([OPENAFS_CONFIGURE_COMMON],[
|
2010-03-15 17:41:11 +00:00
|
|
|
AH_BOTTOM([
|
|
|
|
#undef HAVE_RES_SEARCH
|
2008-09-25 16:41:02 +01:00
|
|
|
#undef STRUCT_SOCKADDR_HAS_SA_LEN
|
|
|
|
#if !defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
|
|
|
|
# if ENDIANESS_IN_SYS_PARAM_H
|
|
|
|
# ifndef KERNEL
|
|
|
|
# include <sys/types.h>
|
|
|
|
# include <sys/param.h>
|
|
|
|
# if BYTE_ORDER == BIG_ENDIAN
|
2013-06-22 19:52:51 +01:00
|
|
|
# define WORDS_BIGENDIAN 1
|
2008-09-25 16:41:02 +01:00
|
|
|
# endif
|
|
|
|
# else
|
|
|
|
# if defined(AUTOCONF_FOUND_BIGENDIAN)
|
|
|
|
# define WORDS_BIGENDIAN 1
|
|
|
|
# else
|
|
|
|
# undef WORDS_BIGENDIAN
|
|
|
|
# endif
|
|
|
|
# endif
|
|
|
|
# else
|
|
|
|
# if defined(AUTOCONF_FOUND_BIGENDIAN)
|
|
|
|
# define WORDS_BIGENDIAN 1
|
|
|
|
# else
|
|
|
|
# undef WORDS_BIGENDIAN
|
|
|
|
# endif
|
|
|
|
# endif
|
|
|
|
#else
|
|
|
|
# if defined(__BIG_ENDIAN__)
|
|
|
|
# define WORDS_BIGENDIAN 1
|
|
|
|
# else
|
|
|
|
# undef WORDS_BIGENDIAN
|
|
|
|
# endif
|
2009-01-09 14:50:48 +00:00
|
|
|
#endif
|
2009-01-12 14:11:36 +00:00
|
|
|
#ifdef UKERNEL
|
|
|
|
/*
|
|
|
|
* Always use 64-bit file offsets for UKERNEL code. Needed for UKERNEL stuff to
|
|
|
|
* play nice with some other interfaces like FUSE. We technically only would
|
|
|
|
* need to define this when building for such interfaces, but set it always to
|
|
|
|
* try and reduce potential confusion.
|
|
|
|
*/
|
2013-06-22 19:52:51 +01:00
|
|
|
# define _FILE_OFFSET_BITS 64
|
|
|
|
# define AFS_CACHE_VNODE_PATH
|
2009-01-12 14:11:36 +00:00
|
|
|
#endif
|
2008-09-25 16:41:02 +01:00
|
|
|
|
|
|
|
#undef AFS_NAMEI_ENV
|
|
|
|
#undef BITMAP_LATER
|
|
|
|
#undef FAST_RESTART
|
|
|
|
#undef DEFINED_FOR_EACH_PROCESS
|
|
|
|
#undef DEFINED_PREV_TASK
|
|
|
|
#undef EXPORTED_SYS_CALL_TABLE
|
|
|
|
#undef EXPORTED_IA32_SYS_CALL_TABLE
|
|
|
|
#undef IRIX_HAS_MEM_FUNCS
|
|
|
|
#undef RECALC_SIGPENDING_TAKES_VOID
|
|
|
|
#undef STRUCT_FS_HAS_FS_ROLLED
|
|
|
|
#undef ssize_t
|
|
|
|
/* glue for RedHat kernel bug */
|
|
|
|
#undef ENABLE_REDHAT_BUILDSYS
|
|
|
|
#if defined(ENABLE_REDHAT_BUILDSYS) && defined(KERNEL) && defined(REDHAT_FIX)
|
2013-06-22 19:52:51 +01:00
|
|
|
# include "redhat-fix.h"
|
2009-01-09 14:50:48 +00:00
|
|
|
#endif])
|
2001-10-09 16:48:25 +01:00
|
|
|
|
|
|
|
AC_CANONICAL_HOST
|
|
|
|
SRCDIR_PARENT=`pwd`
|
|
|
|
|
2006-08-01 23:49:36 +01:00
|
|
|
#BOZO_SAVE_CORES pam
|
2008-07-02 00:44:14 +01:00
|
|
|
|
2008-07-14 06:05:46 +01:00
|
|
|
dnl System identity.
|
|
|
|
AC_ARG_WITH([afs-sysname],
|
2013-06-22 20:06:34 +01:00
|
|
|
[AS_HELP_STRING([--with-afs-sysname=sys], [use sys for the afs sysname])
|
|
|
|
])
|
2008-07-14 06:05:46 +01:00
|
|
|
|
|
|
|
dnl General feature options.
|
|
|
|
AC_ARG_ENABLE([namei-fileserver],
|
|
|
|
[AS_HELP_STRING([--enable-namei-fileserver],
|
2013-06-22 20:06:34 +01:00
|
|
|
[force compilation of namei fileserver in preference to inode
|
|
|
|
fileserver])],
|
|
|
|
[],
|
2008-08-16 23:37:29 +01:00
|
|
|
[enable_namei_fileserver="default"])
|
2008-07-14 06:05:46 +01:00
|
|
|
AC_ARG_ENABLE([supergroups],
|
|
|
|
[AS_HELP_STRING([--enable-supergroups],
|
2013-06-22 20:06:34 +01:00
|
|
|
[enable support for nested pts groups])],
|
|
|
|
[],
|
2008-07-14 06:05:46 +01:00
|
|
|
[enable_supergroups="no"])
|
|
|
|
AC_ARG_ENABLE([bitmap-later],
|
|
|
|
[AS_HELP_STRING([--enable-bitmap-later],
|
|
|
|
[enable fast startup of file server by not reading bitmap till
|
|
|
|
needed])],
|
2014-10-06 22:06:53 +01:00
|
|
|
[AS_IF([test x"$withval" = xyes],
|
|
|
|
[AC_MSG_WARN([bitmap-later is only used by non-demand-attach
|
|
|
|
fileservers. Please migrate to demand-attach instead.])])],
|
2008-07-14 06:05:46 +01:00
|
|
|
[enable_bitmap_later="no"])
|
|
|
|
AC_ARG_ENABLE([unix-sockets],
|
2010-06-23 23:47:43 +01:00
|
|
|
[AS_HELP_STRING([--disable-unix-sockets],
|
2013-06-22 20:06:34 +01:00
|
|
|
[disable use of unix domain sockets for fssync (defaults to enabled)])],
|
|
|
|
[],
|
2008-07-14 06:05:46 +01:00
|
|
|
[enable_unix_sockets="yes"])
|
|
|
|
AC_ARG_ENABLE([tivoli-tsm],
|
|
|
|
[AS_HELP_STRING([--enable-tivoli-tsm],
|
2013-06-22 20:06:34 +01:00
|
|
|
[enable use of the Tivoli TSM API libraries for butc support])],
|
|
|
|
[],
|
2008-07-14 06:05:46 +01:00
|
|
|
[enable_tivoli_tsm="no"])
|
|
|
|
AC_ARG_ENABLE([pthreaded-ubik],
|
2014-09-24 04:42:50 +01:00
|
|
|
[AS_HELP_STRING([--disable-pthreaded-ubik],
|
|
|
|
[disable installation of pthreaded ubik applications (defaults to
|
|
|
|
enabled)])],
|
2013-06-22 20:06:34 +01:00
|
|
|
[],
|
2014-09-24 04:42:50 +01:00
|
|
|
[enable_pthreaded_ubik="yes"])
|
2016-04-04 17:35:11 +01:00
|
|
|
AC_ARG_ENABLE([ubik-read-while-write],
|
|
|
|
[AS_HELP_STRING([--enable-ubik-read-while-write],
|
|
|
|
[enable vlserver read from db cache during write locks (EXPERIMENTAL)])],
|
|
|
|
[],
|
|
|
|
[enable_ubik_read_while_write="no"])
|
2008-07-14 06:05:46 +01:00
|
|
|
|
|
|
|
dnl Kernel module build options.
|
|
|
|
AC_ARG_WITH([linux-kernel-headers],
|
|
|
|
[AS_HELP_STRING([--with-linux-kernel-headers=path],
|
2013-06-22 20:06:34 +01:00
|
|
|
[use the kernel headers found at path (optional, defaults to
|
|
|
|
/lib/modules/`uname -r`/build, then /lib/modules/`uname -r`/source,
|
|
|
|
then /usr/src/linux-2.4, and lastly /usr/src/linux)])
|
|
|
|
])
|
2008-10-12 20:01:58 +01:00
|
|
|
AC_ARG_WITH([linux-kernel-build],
|
|
|
|
[AS_HELP_STRING([--with-linux-kernel-build=path],
|
2013-06-22 20:06:34 +01:00
|
|
|
[use the kernel build found at path(optional, defaults to
|
|
|
|
kernel headers path)]
|
|
|
|
)])
|
2008-07-14 06:05:46 +01:00
|
|
|
AC_ARG_WITH([bsd-kernel-headers],
|
|
|
|
[AS_HELP_STRING([--with-bsd-kernel-headers=path],
|
2013-06-22 20:06:34 +01:00
|
|
|
[use the kernel headers found at path (optional, defaults to
|
|
|
|
/usr/src/sys)])
|
|
|
|
])
|
2008-07-14 06:05:46 +01:00
|
|
|
AC_ARG_WITH([bsd-kernel-build],
|
2013-06-22 20:06:34 +01:00
|
|
|
[AS_HELP_STRING([--with-bsd-kernel-build=path],
|
|
|
|
[use the kernel build found at path (optional, defaults to
|
|
|
|
KSRC/i386/compile/GENERIC)])
|
|
|
|
])
|
2008-07-02 00:44:14 +01:00
|
|
|
AC_ARG_WITH([linux-kernel-packaging],
|
2008-07-14 06:05:46 +01:00
|
|
|
[AS_HELP_STRING([--with-linux-kernel-packaging],
|
2013-06-22 20:06:34 +01:00
|
|
|
[use standard naming conventions to aid Linux kernel build packaging
|
|
|
|
(disables MPS, sets the kernel module name to openafs.ko, and
|
|
|
|
installs kernel modules into the standard Linux location)])],
|
|
|
|
[AC_SUBST([LINUX_KERNEL_PACKAGING], [yes])
|
|
|
|
AC_SUBST([LINUX_LIBAFS_NAME], [openafs])],
|
|
|
|
[AC_SUBST([LINUX_LIBAFS_NAME], [libafs])
|
|
|
|
])
|
2008-07-14 06:05:46 +01:00
|
|
|
AC_ARG_ENABLE([kernel-module],
|
|
|
|
[AS_HELP_STRING([--disable-kernel-module],
|
2013-06-22 20:06:34 +01:00
|
|
|
[disable compilation of the kernel module (defaults to enabled)])],
|
|
|
|
[],
|
2008-07-14 06:05:46 +01:00
|
|
|
[enable_kernel_module="yes"])
|
|
|
|
AC_ARG_ENABLE([redhat-buildsys],
|
|
|
|
[AS_HELP_STRING([--enable-redhat-buildsys],
|
2013-06-22 20:06:34 +01:00
|
|
|
[enable compilation of the redhat build system kernel (defaults to
|
|
|
|
disabled)])],
|
|
|
|
[],
|
2008-07-14 06:05:46 +01:00
|
|
|
[enable_redhat_buildsys="no"])
|
|
|
|
|
|
|
|
dnl Installation locations.
|
|
|
|
AC_ARG_ENABLE([transarc-paths],
|
|
|
|
[AS_HELP_STRING([--enable-transarc-paths],
|
2013-06-22 20:06:34 +01:00
|
|
|
[use Transarc style paths like /usr/afs and /usr/vice])],
|
|
|
|
[],
|
2008-07-14 06:05:46 +01:00
|
|
|
[enable_transarc_paths="no"])
|
|
|
|
|
2012-11-08 23:40:57 +00:00
|
|
|
dnl Deprecated crypto
|
|
|
|
AC_ARG_ENABLE([kauth],
|
2014-03-28 13:19:30 +00:00
|
|
|
[AS_HELP_STRING([--enable-kauth],
|
2014-10-06 18:31:23 +01:00
|
|
|
[install the deprecated kauth server, pam modules, and utilities
|
|
|
|
(defaults to disabled)])],
|
|
|
|
[enable_pam="yes"],
|
|
|
|
[enable_kauth="no"
|
|
|
|
enable_pam="no"])
|
2012-11-08 23:40:57 +00:00
|
|
|
|
2008-07-14 06:05:46 +01:00
|
|
|
dnl Optimization and debugging flags.
|
|
|
|
AC_ARG_ENABLE([strip-binaries],
|
|
|
|
[AS_HELP_STRING([--disable-strip-binaries],
|
2013-06-22 20:06:34 +01:00
|
|
|
[disable stripping of symbol information from binaries (defaults to
|
|
|
|
enabled)])],
|
|
|
|
[],
|
2008-07-14 06:05:46 +01:00
|
|
|
[enable_strip_binaries="maybe"])
|
|
|
|
AC_ARG_ENABLE([debug],
|
|
|
|
[AS_HELP_STRING([--enable-debug],
|
2013-06-22 20:06:34 +01:00
|
|
|
[enable compilation of the user space code with debugging information
|
|
|
|
(defaults to disabled)])],
|
|
|
|
[],
|
2008-07-14 06:05:46 +01:00
|
|
|
[enable_debug="no"])
|
|
|
|
AC_ARG_ENABLE([optimize],
|
|
|
|
[AS_HELP_STRING([--disable-optimize],
|
2013-06-22 20:06:34 +01:00
|
|
|
[disable optimization for compilation of the user space code (defaults
|
|
|
|
to enabled)])],
|
|
|
|
[],
|
2008-07-14 06:05:46 +01:00
|
|
|
[enable_optimize="yes"])
|
|
|
|
AC_ARG_ENABLE([warnings],
|
|
|
|
[AS_HELP_STRING([--enable-warnings],
|
2013-06-22 20:06:34 +01:00
|
|
|
[enable compilation warnings when building with gcc (defaults to
|
|
|
|
disabled)])],
|
|
|
|
[],
|
2008-07-14 06:05:46 +01:00
|
|
|
[enable_warnings="no"])
|
2009-09-28 11:07:58 +01:00
|
|
|
AC_ARG_ENABLE([checking],
|
|
|
|
[AS_HELP_STRING([--enable-checking],
|
|
|
|
[turn compilation warnings into errors when building with gcc (defaults
|
|
|
|
to disabled)])],
|
|
|
|
[enable_checking="$enableval"],
|
|
|
|
[enable_checking="no"])
|
Fix mutex assertion
RX mutexes have two mechanisms for asserting ownership of a mutex:
MUTEX_ISMINE, which returns true if the caller is the owner of the
mutex in question, and osirx_AssertMutex which fires an assertion if
the calling thread doesn't own a specified mutex.
Neither of these work with pthread mutexes on all platforms, and the
kernel support for MUTEX_ISMINE is dubious in places. Because in some
implementations, MUTEX_ISMINE tries to lock the mutex in question, a
failing call to MUTEX_ISMINE can lead to the process holding an
additional, unexpected, lock.
This patch reworks all of this, and uses the new opr mutex framework
so that we can do mutex assertions in userspace, too. We remove the
unsafe MUTEX_ISMINE macro, and replace it with MUTEX_ASSERT which
simply asserts if the specified mutex is not held by the current
thread. osirx_AssertMutex is removed as it is now redundant.
MUTEX_ASSERT will always work in kernel code.
For userspace, we provide opr_mutex_assert, which is implemented using
POSIX error checking mutexes. As error checking mutexes have a runtime
overhead, this is only available when configured with
--enable-debug-locks, the rest of the time calls to opr_mutex_assert are
no-ops.
Change-Id: I285ee2b558389fa3d63b786e4bc4420fa2126c80
Reviewed-on: http://gerrit.openafs.org/8282
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
2012-10-21 20:07:44 +01:00
|
|
|
AC_ARG_ENABLE([debug-locks],
|
|
|
|
[AS_HELP_STRING([--enable-debug-locks],
|
|
|
|
[turn on lock debugging assertions (defaults to disabled)])],
|
|
|
|
[enable_debug_locks="$enableval"],
|
|
|
|
[enable_debug_locks="no"])
|
2008-07-14 06:05:46 +01:00
|
|
|
AC_ARG_ENABLE([debug-kernel],
|
|
|
|
[AS_HELP_STRING([--enable-debug-kernel],
|
2013-06-22 20:06:34 +01:00
|
|
|
[enable compilation of the kernel module with debugging information
|
|
|
|
(defaults to disabled)])],
|
|
|
|
[],
|
2008-07-14 06:05:46 +01:00
|
|
|
[enable_debug_kernel="no"])
|
|
|
|
AC_ARG_ENABLE([optimize-kernel],
|
|
|
|
[AS_HELP_STRING([--disable-optimize-kernel],
|
2013-06-22 20:06:34 +01:00
|
|
|
[disable compilation of the kernel module with optimization (defaults
|
|
|
|
based on platform)])],
|
|
|
|
[],
|
2012-02-06 19:23:41 +00:00
|
|
|
[enable_optimize_kernel=""])
|
2008-07-14 06:05:46 +01:00
|
|
|
AC_ARG_ENABLE([debug-lwp],
|
|
|
|
[AS_HELP_STRING([--enable-debug-lwp],
|
2013-06-22 20:06:34 +01:00
|
|
|
[enable compilation of the LWP code with debugging information
|
|
|
|
(defaults to disabled)])],
|
|
|
|
[],
|
2008-07-14 06:05:46 +01:00
|
|
|
[enable_debug_lwp="no"])
|
|
|
|
AC_ARG_ENABLE([optimize-lwp],
|
|
|
|
[AS_HELP_STRING([--disable-optimize-lwp],
|
2013-06-22 20:06:34 +01:00
|
|
|
[disable optimization for compilation of the LWP code (defaults to
|
|
|
|
enabled)])],
|
|
|
|
[],
|
2008-07-14 06:05:46 +01:00
|
|
|
[enable_optimize_lwp="yes"])
|
|
|
|
AC_ARG_ENABLE([debug-pam],
|
|
|
|
[AS_HELP_STRING([--enable-debug-pam],
|
2013-06-22 20:06:34 +01:00
|
|
|
[enable compilation of the PAM code with debugging information
|
|
|
|
(defaults to disabled)])],
|
|
|
|
[],
|
2008-07-14 06:05:46 +01:00
|
|
|
[enable_debug_pam="no"])
|
|
|
|
AC_ARG_ENABLE([optimize-pam],
|
|
|
|
[AS_HELP_STRING([--disable-optimize-pam],
|
2013-06-22 20:06:34 +01:00
|
|
|
[disable optimization for compilation of the PAM code (defaults to
|
|
|
|
enabled)])],
|
|
|
|
[],
|
2008-07-14 06:05:46 +01:00
|
|
|
[enable_optimize_pam="yes"])
|
2009-06-02 20:31:45 +01:00
|
|
|
AC_ARG_ENABLE([linux-syscall-probing],
|
Linux: Disable syscall probes if we have keyrings
If we are building for are kernel with keyrings, and we can
guarantee that we can make use of those keyrings, then we no longer
need to probe for the syscall table at all. Change our default
behaviour so that when these two conditions are true, syscall probing
is disabled. Both --enable-linux-syscall-probing and
--disable-linux-syscall-probing can be used to override the
autodetection and force things one way or the other.
We have to check that we can use the keyrings because there was a
window in the 2.6 kernel series where keryings were available, but
the key_type_keyring definiton (which we use to create the session
keyring) wasn't exported. In that situation, we attempt to traverse
the process table and use the type of init's session keyring. This
traversal is fragile, and if it fails, keyring PAGs will be disabled.
So, we still want to be able to fall back to patching the syscall
table, if we can, in this case.
FIXES 125215
Change-Id: I11ba5c68fe37609bbd6b9c9f7e7c699334f42ebc
Reviewed-on: http://gerrit.openafs.org/2002
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Russ Allbery <rra@stanford.edu>
Tested-by: Russ Allbery <rra@stanford.edu>
2010-05-20 11:57:20 +01:00
|
|
|
[AS_HELP_STRING([--enable-linux-syscall-probing],
|
|
|
|
[enable Linux syscall probing (defaults to autodetect)])],
|
2013-06-22 20:06:34 +01:00
|
|
|
[],
|
Linux: Disable syscall probes if we have keyrings
If we are building for are kernel with keyrings, and we can
guarantee that we can make use of those keyrings, then we no longer
need to probe for the syscall table at all. Change our default
behaviour so that when these two conditions are true, syscall probing
is disabled. Both --enable-linux-syscall-probing and
--disable-linux-syscall-probing can be used to override the
autodetection and force things one way or the other.
We have to check that we can use the keyrings because there was a
window in the 2.6 kernel series where keryings were available, but
the key_type_keyring definiton (which we use to create the session
keyring) wasn't exported. In that situation, we attempt to traverse
the process table and use the type of init's session keyring. This
traversal is fragile, and if it fails, keyring PAGs will be disabled.
So, we still want to be able to fall back to patching the syscall
table, if we can, in this case.
FIXES 125215
Change-Id: I11ba5c68fe37609bbd6b9c9f7e7c699334f42ebc
Reviewed-on: http://gerrit.openafs.org/2002
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Russ Allbery <rra@stanford.edu>
Tested-by: Russ Allbery <rra@stanford.edu>
2010-05-20 11:57:20 +01:00
|
|
|
[enable_linux_syscall_probing="maybe"])
|
2014-12-18 13:43:22 +00:00
|
|
|
AC_ARG_ENABLE([linux-d_splice_alias-extra-iput],
|
|
|
|
[AS_HELP_STRING([--enable-linux-d_splice_alias-extra-iput],
|
2015-02-04 15:11:29 +00:00
|
|
|
[Linux kernels in the 3.17 series prior to 3.17.3 had a bug
|
|
|
|
wherein error returns from the d_splice_alias() function were
|
|
|
|
leaking a reference on the inode. The bug was fixed for the
|
|
|
|
3.17.3 kernel, and the possibility of an error return was only
|
|
|
|
introduced in kernel 3.17, so only the narrow range of kernels
|
|
|
|
is affected. Enable this option for builds on systems with
|
|
|
|
kernels affected by this bug, to manually release the reference
|
|
|
|
on error returns and correct the reference counting.
|
|
|
|
Linux commit 51486b900ee92856b977eacfc5bfbe6565028070 (or
|
|
|
|
equivalent) is the fix for the upstream bug, so if such a commit
|
|
|
|
is present, leave this option disabled. We apologize
|
|
|
|
that you are required to know this about your running kernel,
|
|
|
|
but luckily only a narrow range of versions is affected.])],
|
2014-12-18 13:43:22 +00:00
|
|
|
[],
|
2015-02-04 15:11:29 +00:00
|
|
|
[enable_linux_d_splice_alias_extra_iput="no"])
|
2012-10-03 12:47:06 +01:00
|
|
|
AC_ARG_WITH([crosstools-dir],
|
2013-06-22 20:06:34 +01:00
|
|
|
[AS_HELP_STRING([--with-crosstools-dir=path],
|
|
|
|
[use path for native versions of rxgen, compile_et and config])
|
|
|
|
])
|
|
|
|
|
2009-05-27 21:44:24 +01:00
|
|
|
AC_ARG_WITH([xslt-processor],
|
|
|
|
AS_HELP_STRING([--with-xslt-processor=ARG],
|
|
|
|
[which XSLT processor to use (possible choices are: libxslt, saxon, xalan-j, xsltproc)]),
|
2013-06-22 20:06:34 +01:00
|
|
|
[XSLTPROC="$withval"],
|
2013-06-19 21:15:19 +01:00
|
|
|
[AC_CHECK_PROGS([XSLTPROC], [libxslt saxon xalan-j xsltproc], [echo])])
|
2009-05-27 21:44:24 +01:00
|
|
|
|
2013-06-22 20:06:34 +01:00
|
|
|
AC_ARG_WITH([html-xsl],
|
|
|
|
AS_HELP_STRING([--with-html-xsl],
|
2011-06-08 14:40:17 +01:00
|
|
|
[build HTML documentation using this stylesheet (default is html/chunk.dsl; specify either html/chunk.xsl or html/docbook.xsl)]),
|
|
|
|
[HTML_XSL="$withval"],
|
|
|
|
[HTML_XSL="html/chunk.xsl"])
|
2001-10-09 16:48:25 +01:00
|
|
|
|
2011-06-03 00:00:47 +01:00
|
|
|
AC_ARG_WITH([docbook2pdf],
|
|
|
|
AS_HELP_STRING([--with-docbook2pdf=ARG],
|
2011-07-25 00:22:35 +01:00
|
|
|
[which Docbook to PDF utility to use (possible choices are: fop, dblatex, docbook2pdf)]),
|
2013-06-22 20:06:34 +01:00
|
|
|
[DOCBOOK2PDF="$withval"],
|
2013-06-19 21:15:19 +01:00
|
|
|
[AC_CHECK_PROGS([DOCBOOK2PDF], [fop dblatex docbook2pdf], [echo])])
|
2011-06-08 14:40:17 +01:00
|
|
|
|
|
|
|
AC_ARG_WITH([docbook-stylesheets],
|
|
|
|
AS_HELP_STRING([--with-docbook-stylesheets=ARG],
|
|
|
|
[location of DocBook stylesheets (default is to search a set of likely paths)]),
|
2013-06-22 20:06:34 +01:00
|
|
|
[DOCBOOK_STYLESHEETS="$withval"],
|
2013-06-22 20:20:52 +01:00
|
|
|
[OPENAFS_SEARCH_DIRLIST([DOCBOOK_STYLESHEETS],
|
|
|
|
[/usr/share/xml/docbook/stylesheet/nwalsh/current \
|
|
|
|
/usr/share/xml/docbook/stylesheet/nwalsh \
|
|
|
|
/usr/share/xml/docbook/xsl-stylesheets \
|
|
|
|
/usr/share/sgml/docbook/docbook-xsl-stylesheets \
|
|
|
|
/usr/share/sgml/docbook/xsl-stylesheets \
|
|
|
|
/usr/share/docbook-xsl \
|
|
|
|
/usr/share/sgml/docbkxsl \
|
|
|
|
/usr/local/share/xsl/docbook \
|
|
|
|
/sw/share/xml/xsl/docbook-xsl \
|
|
|
|
/opt/local/share/xsl/docbook-xsl],
|
|
|
|
[$HTML_XSL])
|
|
|
|
AS_IF([test "x$DOCBOOK_STYLESHEETS" = "x"],
|
|
|
|
[AC_WARN([Docbook stylesheets not found; some documentation can't be built])
|
|
|
|
])
|
|
|
|
])
|
2011-06-03 00:00:47 +01:00
|
|
|
|
2014-03-30 10:53:16 +01:00
|
|
|
AC_ARG_WITH([dot],
|
|
|
|
AS_HELP_STRING([--with-dot@<:@=PATH@:>@],
|
|
|
|
[use graphviz dot to generate dependency graphs with doxygen (defaults to autodetect)]),
|
|
|
|
[], [with_dot="maybe"])
|
|
|
|
|
2004-03-25 23:25:50 +00:00
|
|
|
enable_login="no"
|
|
|
|
|
2011-07-25 00:20:05 +01:00
|
|
|
dnl Check whether kindlegen exists. If not, we'll suppress that part of the
|
|
|
|
dnl documentation build.
|
|
|
|
AC_CHECK_PROGS([KINDLEGEN], [kindlegen])
|
2014-03-30 10:53:16 +01:00
|
|
|
AC_CHECK_PROGS([DOXYGEN], [doxygen])
|
|
|
|
|
|
|
|
dnl Optionally generate graphs with doxygen.
|
|
|
|
case "$with_dot" in
|
|
|
|
maybe)
|
|
|
|
AC_CHECK_PROGS([DOT], [dot])
|
|
|
|
AS_IF([test "x$DOT" = "x"], [HAVE_DOT="no"], [HAVE_DOT="yes"])
|
|
|
|
;;
|
|
|
|
yes)
|
|
|
|
HAVE_DOT="yes"
|
|
|
|
;;
|
|
|
|
no)
|
|
|
|
HAVE_DOT="no"
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
HAVE_DOT="yes"
|
|
|
|
DOT_PATH=$with_dot
|
|
|
|
esac
|
|
|
|
AC_SUBST(HAVE_DOT)
|
|
|
|
AC_SUBST(DOT_PATH)
|
2011-07-25 00:20:05 +01:00
|
|
|
|
2014-03-30 13:02:17 +01:00
|
|
|
dnl Checks for UNIX variants.
|
2001-10-09 16:48:25 +01:00
|
|
|
AC_ISC_POSIX
|
|
|
|
|
|
|
|
dnl Various compiler setup.
|
|
|
|
AC_TYPE_PID_T
|
|
|
|
AC_TYPE_SIZE_T
|
|
|
|
|
|
|
|
dnl Checks for programs.
|
|
|
|
AC_PROG_INSTALL
|
|
|
|
AC_PROG_LN_S
|
|
|
|
AC_PROG_RANLIB
|
|
|
|
AC_PROG_YACC
|
|
|
|
AM_PROG_LEX
|
2010-07-13 19:31:41 +01:00
|
|
|
dnl if we are flex, be lex-compatible
|
|
|
|
OPENAFS_LEX_IS_FLEX([AC_SUBST([LEX], ["$LEX -l"])])
|
2001-10-09 16:48:25 +01:00
|
|
|
|
2010-07-22 18:21:14 +01:00
|
|
|
OPENAFS_FORCE_ABS_INSTALL
|
2001-10-09 16:48:25 +01:00
|
|
|
OPENAFS_CHECK_BIGENDIAN
|
2009-10-12 03:55:05 +01:00
|
|
|
OPENAFS_PRINTF_TAKES_Z_LEN
|
2001-10-09 16:48:25 +01:00
|
|
|
|
|
|
|
AC_MSG_CHECKING(your OS)
|
|
|
|
system=$host
|
|
|
|
case $system in
|
|
|
|
*-linux*)
|
2004-12-01 23:21:18 +00:00
|
|
|
|
2001-10-09 16:48:25 +01:00
|
|
|
MKAFS_OSTYPE=LINUX
|
|
|
|
if test "x$enable_redhat_buildsys" = "xyes"; then
|
2002-10-28 02:43:56 +00:00
|
|
|
AC_DEFINE(ENABLE_REDHAT_BUILDSYS, 1, [define if you have redhat buildsystem])
|
2001-10-09 16:48:25 +01:00
|
|
|
fi
|
|
|
|
if test "x$enable_kernel_module" = "xyes"; then
|
|
|
|
if test "x$with_linux_kernel_headers" != "x"; then
|
|
|
|
LINUX_KERNEL_PATH="$with_linux_kernel_headers"
|
|
|
|
else
|
2012-12-15 14:36:24 +00:00
|
|
|
for utsdir in "/lib/modules/`uname -r`/build" \
|
|
|
|
"/lib/modules/`uname -r`/source" \
|
|
|
|
"/usr/src/linux-2.4" \
|
|
|
|
"/usr/src/linux"; do
|
|
|
|
LINUX_KERNEL_PATH="$utsdir"
|
|
|
|
for utsfile in "include/generated/utsrelease.h" \
|
|
|
|
"include/linux/utsrelease.h" \
|
|
|
|
"include/linux/version.h" \
|
|
|
|
"include/linux/version-up.h"; do
|
|
|
|
if grep "UTS_RELEASE" "$utsdir/$utsfile" >/dev/null 2>&1; then
|
|
|
|
break 2
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
done
|
2001-10-09 16:48:25 +01:00
|
|
|
fi
|
2008-10-14 16:38:30 +01:00
|
|
|
if test "x$with_linux_kernel_build" != "x"; then
|
2008-10-12 20:01:58 +01:00
|
|
|
LINUX_KERNEL_BUILD="$with_linux_kernel_build"
|
|
|
|
else
|
|
|
|
LINUX_KERNEL_BUILD=$LINUX_KERNEL_PATH
|
|
|
|
fi
|
2009-12-20 03:22:05 +00:00
|
|
|
if test -f "$LINUX_KERNEL_BUILD/include/generated/utsrelease.h"; then
|
|
|
|
linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/generated/utsrelease.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
|
|
|
|
LINUX_VERSION="$linux_kvers"
|
2001-10-09 16:48:25 +01:00
|
|
|
else
|
2009-12-20 03:22:05 +00:00
|
|
|
if test -f "$LINUX_KERNEL_BUILD/include/linux/utsrelease.h"; then
|
|
|
|
linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/linux/utsrelease.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
|
|
|
|
LINUX_VERSION="$linux_kvers"
|
|
|
|
else
|
|
|
|
if test -f "$LINUX_KERNEL_BUILD/include/linux/version.h"; then
|
|
|
|
linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/linux/version.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
|
|
|
|
if test "x$linux_kvers" = "x"; then
|
|
|
|
if test -f "$LINUX_KERNEL_BUILD/include/linux/version-up.h"; then
|
|
|
|
linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_BUILD/include/linux/version-up.h |awk 'BEGIN { FS="\"" } { print $[]2 }'|tail -n 1`
|
|
|
|
if test "x$linux_kvers" = "x"; then
|
|
|
|
AC_MSG_ERROR(Linux headers lack version definition [2])
|
|
|
|
exit 1
|
|
|
|
else
|
|
|
|
LINUX_VERSION="$linux_kvers"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
AC_MSG_ERROR(Linux headers lack version definition)
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
LINUX_VERSION="$linux_kvers"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
enable_kernel_module="no"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
2010-02-20 18:36:22 +00:00
|
|
|
if test ! -f "$LINUX_KERNEL_BUILD/include/generated/autoconf.h" &&
|
|
|
|
test ! -f "$LINUX_KERNEL_BUILD/include/linux/autoconf.h"; then
|
2001-10-09 16:48:25 +01:00
|
|
|
enable_kernel_module="no"
|
|
|
|
fi
|
|
|
|
if test "x$enable_kernel_module" = "xno"; then
|
|
|
|
if test "x$with_linux_kernel_headers" != "x"; then
|
|
|
|
AC_MSG_ERROR(No usable linux headers found at $LINUX_KERNEL_PATH)
|
|
|
|
exit 1
|
|
|
|
else
|
|
|
|
AC_MSG_WARN(No usable linux headers found at $LINUX_KERNEL_PATH so disabling kernel module)
|
|
|
|
fi
|
|
|
|
fi
|
2004-04-12 21:42:19 +01:00
|
|
|
dnl do we need to determine SUBARCH from autoconf.h
|
|
|
|
SUBARCH=default
|
2001-10-09 16:48:25 +01:00
|
|
|
fi
|
|
|
|
AC_MSG_RESULT(linux)
|
2014-10-19 07:42:08 +01:00
|
|
|
GUESS_LINUX_VERSION=
|
2004-12-11 10:52:16 +00:00
|
|
|
if test "x$enable_kernel_module" = "xyes"; then
|
2014-10-19 07:42:08 +01:00
|
|
|
GUESS_LINUX_VERSION=${LINUX_VERSION}
|
|
|
|
else
|
|
|
|
GUESS_LINUX_VERSION=`uname -r`
|
|
|
|
fi
|
|
|
|
case "$GUESS_LINUX_VERSION" in
|
2011-06-14 20:24:42 +01:00
|
|
|
2.2.*) AFS_SYSKVERS=22 ;;
|
|
|
|
2.4.*) AFS_SYSKVERS=24 ;;
|
2015-02-23 04:43:49 +00:00
|
|
|
[2.6.* | [3-9]* | [1-2][0-9]*]) AFS_SYSKVERS=26 ;;
|
2011-06-14 20:24:42 +01:00
|
|
|
*) AC_MSG_ERROR(Couldn't guess your Linux version [2]) ;;
|
2014-10-19 07:42:08 +01:00
|
|
|
esac
|
2001-10-09 16:48:25 +01:00
|
|
|
;;
|
|
|
|
*-solaris*)
|
|
|
|
MKAFS_OSTYPE=SOLARIS
|
|
|
|
AC_MSG_RESULT(sun4)
|
2017-02-26 01:33:00 +00:00
|
|
|
SOLARIS_PATH_CC
|
2017-02-28 23:02:39 +00:00
|
|
|
SOLARIS_CC_TAKES_XVECTOR_NONE
|
|
|
|
AC_SUBST(SOLARIS_CC_KOPTS)
|
2001-10-09 16:48:25 +01:00
|
|
|
SOLARIS_UFSVFS_HAS_DQRWLOCK
|
2003-03-28 21:26:20 +00:00
|
|
|
SOLARIS_FS_HAS_FS_ROLLED
|
2009-06-24 23:38:15 +01:00
|
|
|
SOLARIS_SOLOOKUP_TAKES_SOCKPARAMS
|
2013-01-18 20:27:16 +00:00
|
|
|
SOLARIS_HAVE_VN_RENAMEPATH
|
2001-10-09 16:48:25 +01:00
|
|
|
;;
|
2002-08-21 21:19:28 +01:00
|
|
|
*-sunos*)
|
|
|
|
MKAFS_OSTYPE=SUNOS
|
|
|
|
enable_kernel_module=no
|
|
|
|
AC_MSG_RESULT(sun4)
|
|
|
|
;;
|
2001-10-09 16:48:25 +01:00
|
|
|
*-hpux*)
|
|
|
|
MKAFS_OSTYPE=HPUX
|
|
|
|
AC_MSG_RESULT(hp_ux)
|
2005-10-03 04:44:42 +01:00
|
|
|
if test -f "/usr/old/usr/include/ndir.h"; then
|
|
|
|
AC_DEFINE(HAVE_USR_OLD_USR_INCLUDE_NDIR_H, 1, [define if you have old ndir.h])
|
|
|
|
fi
|
2001-10-09 16:48:25 +01:00
|
|
|
;;
|
|
|
|
*-irix*)
|
2001-11-13 04:52:26 +00:00
|
|
|
if test -d /usr/include/sys/SN/SN1; then
|
2001-11-01 05:05:26 +00:00
|
|
|
IRIX_BUILD_IP35="IP35"
|
|
|
|
fi
|
2001-10-09 16:48:25 +01:00
|
|
|
MKAFS_OSTYPE=IRIX
|
|
|
|
AC_MSG_RESULT(sgi)
|
|
|
|
;;
|
|
|
|
*-aix*)
|
|
|
|
MKAFS_OSTYPE=AIX
|
|
|
|
AC_MSG_RESULT(rs_aix)
|
|
|
|
;;
|
2010-06-13 16:03:25 +01:00
|
|
|
arm-*-darwin*)
|
|
|
|
MKAFS_OSTYPE=DARWIN
|
|
|
|
AC_MSG_RESULT(arm_darwin)
|
|
|
|
;;
|
2005-10-15 16:42:17 +01:00
|
|
|
powerpc-*-darwin*)
|
2001-10-09 16:48:25 +01:00
|
|
|
MKAFS_OSTYPE=DARWIN
|
|
|
|
AC_MSG_RESULT(ppc_darwin)
|
|
|
|
;;
|
2005-10-15 16:42:17 +01:00
|
|
|
i386-*-darwin*)
|
|
|
|
MKAFS_OSTYPE=DARWIN
|
|
|
|
AC_MSG_RESULT(x86_darwin)
|
|
|
|
;;
|
2010-07-13 19:29:38 +01:00
|
|
|
x86_64-*-darwin*)
|
|
|
|
MKAFS_OSTYPE=DARWIN
|
|
|
|
AC_MSG_RESULT(x86_darwin)
|
|
|
|
;;
|
2008-12-15 20:37:51 +00:00
|
|
|
i386-*-freebsd*)
|
2001-10-09 16:48:25 +01:00
|
|
|
MKAFS_OSTYPE=FBSD
|
|
|
|
AC_MSG_RESULT(i386_fbsd)
|
|
|
|
;;
|
2008-12-15 20:37:51 +00:00
|
|
|
x86_64-*-freebsd*)
|
|
|
|
MKAFS_OSTYPE=FBSD
|
|
|
|
AC_MSG_RESULT(amd64_fbsd)
|
|
|
|
;;
|
2002-01-01 18:57:18 +00:00
|
|
|
*-netbsd*)
|
|
|
|
MKAFS_OSTYPE=NBSD
|
2002-01-18 18:45:27 +00:00
|
|
|
AC_MSG_RESULT(nbsd)
|
2002-01-01 18:57:18 +00:00
|
|
|
;;
|
2009-07-18 14:29:20 +01:00
|
|
|
x86_64-*-openbsd*)
|
|
|
|
MKAFS_OSTYPE=OBSD
|
|
|
|
AC_MSG_RESULT(amd64_obsd)
|
|
|
|
;;
|
2010-05-03 21:32:13 +01:00
|
|
|
i386-*-openbsd*)
|
2001-10-09 16:48:25 +01:00
|
|
|
MKAFS_OSTYPE=OBSD
|
|
|
|
AC_MSG_RESULT(i386_obsd)
|
|
|
|
;;
|
2009-04-27 20:29:09 +01:00
|
|
|
*-dragonfly*)
|
|
|
|
MKAFS_OSTYPE=DFBSD
|
|
|
|
AC_MSG_RESULT(i386_dfbsd)
|
|
|
|
;;
|
2001-10-09 16:48:25 +01:00
|
|
|
*)
|
|
|
|
AC_MSG_RESULT($system)
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
if test "x$with_afs_sysname" != "x"; then
|
|
|
|
AFS_SYSNAME="$with_afs_sysname"
|
|
|
|
else
|
|
|
|
AC_MSG_CHECKING(your AFS sysname)
|
|
|
|
case $host in
|
2005-08-13 22:49:00 +01:00
|
|
|
i?86-*-openbsd?.?)
|
|
|
|
v=${host#*openbsd}
|
|
|
|
vM=${v%.*}
|
|
|
|
vm=${v#*.}
|
|
|
|
AFS_SYSNAME="i386_obsd${vM}${vm}"
|
2005-08-12 23:26:09 +01:00
|
|
|
;;
|
2006-03-09 15:27:17 +00:00
|
|
|
sparc64-*-openbsd?.?)
|
|
|
|
v=${host#*openbsd}
|
|
|
|
vM=${v%.*}
|
|
|
|
vm=${v#*.}
|
|
|
|
AFS_SYSNAME="sparc64_obsd${vM}${vm}"
|
|
|
|
;;
|
2009-07-18 14:29:20 +01:00
|
|
|
x86_64-*-openbsd?.?)
|
|
|
|
v=${host#*openbsd}
|
|
|
|
vM=${v%.*}
|
|
|
|
vm=${v#*.}
|
|
|
|
AFS_SYSNAME="amd64_obsd${vM}${vm}"
|
|
|
|
;;
|
2012-09-13 22:28:17 +01:00
|
|
|
i?86-*-freebsd*.*)
|
2005-08-15 22:36:53 +01:00
|
|
|
v=${host#*freebsd}
|
|
|
|
vM=${v%.*}
|
|
|
|
vm=${v#*.}
|
|
|
|
AFS_SYSNAME="i386_fbsd_${vM}${vm}"
|
2005-05-20 21:26:53 +01:00
|
|
|
;;
|
2012-09-13 22:28:17 +01:00
|
|
|
x86_64-*-freebsd*.*)
|
2008-12-15 20:37:51 +00:00
|
|
|
v=${host#*freebsd}
|
|
|
|
vM=${v%.*}
|
|
|
|
vm=${v#*.}
|
|
|
|
AFS_SYSNAME="amd64_fbsd_${vM}${vm}"
|
|
|
|
;;
|
2010-08-28 00:11:32 +01:00
|
|
|
i386-*-dragonfly?.*)
|
|
|
|
v=${host#*dragonfly}
|
|
|
|
vM=${v%.*}
|
|
|
|
vm=${v#*.}
|
|
|
|
AFS_SYSNAME="i386_dfbsd_${vM}${vm}"
|
2009-04-27 20:29:09 +01:00
|
|
|
;;
|
2003-02-03 23:10:38 +00:00
|
|
|
i?86-*-netbsd*1.6[[M-Z]]*)
|
|
|
|
AFS_SYSNAME="i386_nbsd20"
|
|
|
|
;;
|
2003-03-16 14:30:15 +00:00
|
|
|
powerpc-*-netbsd*1.6[[M-Z]]*)
|
|
|
|
AFS_SYSNAME="ppc_nbsd20"
|
|
|
|
;;
|
2010-04-10 16:55:17 +01:00
|
|
|
*-*-netbsd*)
|
|
|
|
arch=${host%%-unknown*}
|
|
|
|
arch=$(echo $arch |sed -e 's/x86_64/amd64/g' \
|
|
|
|
-e 's/powerpc/ppc/g')
|
|
|
|
v=${host#*netbsd}
|
|
|
|
v=${v#*aout}
|
|
|
|
v=${v#*ecoff}
|
|
|
|
v=${v#*elf}
|
|
|
|
vM=${v%%.*}
|
|
|
|
vM=${vM%.*}
|
|
|
|
v=${v#*.}
|
|
|
|
vm=${v%%.*}
|
|
|
|
vm=${vm%.*}
|
|
|
|
vm=${vm%%[[_A-Z]]*}
|
|
|
|
if test $vm -eq 99 ; then
|
|
|
|
vM=$((vM+1))
|
|
|
|
fi
|
|
|
|
if test $vM -gt 1 ; then
|
|
|
|
vm=0
|
|
|
|
fi
|
|
|
|
AFS_SYSNAME="${arch}_nbsd${vM}${vm}"
|
2006-10-06 16:55:35 +01:00
|
|
|
;;
|
2003-03-10 20:02:35 +00:00
|
|
|
hppa*-hp-hpux11.0*)
|
2001-10-09 16:48:25 +01:00
|
|
|
AFS_SYSNAME="hp_ux110"
|
|
|
|
;;
|
2003-03-10 20:02:35 +00:00
|
|
|
hppa*-hp-hpux11.11)
|
|
|
|
AFS_SYSNAME="hp_ux11i"
|
|
|
|
;;
|
2008-03-17 18:07:36 +00:00
|
|
|
hppa*-hp-hpux11.23)
|
|
|
|
AFS_SYSNAME="hp_ux1123"
|
|
|
|
;;
|
2003-11-27 01:17:34 +00:00
|
|
|
ia64-hp-hpux11.22)
|
2003-02-27 17:27:25 +00:00
|
|
|
AFS_SYSNAME="ia64_hpux1122"
|
2003-02-14 00:02:16 +00:00
|
|
|
;;
|
2003-11-27 01:17:34 +00:00
|
|
|
ia64-hp-hpux*)
|
|
|
|
AFS_SYSNAME="ia64_hpux1123"
|
|
|
|
;;
|
2001-10-09 16:48:25 +01:00
|
|
|
hppa*-hp-hpux10*)
|
|
|
|
AFS_SYSNAME="hp_ux102"
|
|
|
|
;;
|
2010-02-17 18:26:43 +00:00
|
|
|
powerpc-apple-darwin7*)
|
2004-03-17 08:24:13 +00:00
|
|
|
AFS_SYSNAME="ppc_darwin_70"
|
2011-04-26 15:46:41 +01:00
|
|
|
OSXSDK="macosx10.3"
|
2004-03-17 08:24:13 +00:00
|
|
|
;;
|
2005-10-15 16:42:17 +01:00
|
|
|
powerpc-apple-darwin8.*)
|
|
|
|
AFS_SYSNAME="ppc_darwin_80"
|
2011-04-26 15:46:41 +01:00
|
|
|
OSXSDK="macosx10.4"
|
2005-10-15 16:42:17 +01:00
|
|
|
;;
|
|
|
|
i386-apple-darwin8.*)
|
|
|
|
AFS_SYSNAME="x86_darwin_80"
|
2011-04-26 15:46:41 +01:00
|
|
|
OSXSDK="macosx10.4"
|
2005-10-15 16:42:17 +01:00
|
|
|
;;
|
2006-03-09 06:35:14 +00:00
|
|
|
powerpc-apple-darwin9.*)
|
|
|
|
AFS_SYSNAME="ppc_darwin_90"
|
2011-04-26 15:46:41 +01:00
|
|
|
OSXSDK="macosx10.5"
|
2006-03-09 06:35:14 +00:00
|
|
|
;;
|
|
|
|
i386-apple-darwin9.*)
|
|
|
|
AFS_SYSNAME="x86_darwin_90"
|
2011-04-26 15:46:41 +01:00
|
|
|
OSXSDK="macosx10.5"
|
2006-03-09 06:35:14 +00:00
|
|
|
;;
|
2009-07-15 19:57:56 +01:00
|
|
|
i?86-apple-darwin10.*)
|
|
|
|
AFS_SYSNAME="x86_darwin_100"
|
2011-04-26 15:46:41 +01:00
|
|
|
OSXSDK="macosx10.6"
|
2009-07-15 19:57:56 +01:00
|
|
|
;;
|
2010-07-13 19:29:38 +01:00
|
|
|
x86_64-apple-darwin10.*)
|
|
|
|
AFS_SYSNAME="x86_darwin_100"
|
2011-04-26 15:46:41 +01:00
|
|
|
OSXSDK="macosx10.6"
|
|
|
|
;;
|
|
|
|
arm-apple-darwin10.*)
|
|
|
|
AFS_SYSNAME="arm_darwin_100"
|
|
|
|
OSXSDK="iphoneos4.0"
|
|
|
|
;;
|
|
|
|
x86_64-apple-darwin11.*)
|
|
|
|
AFS_SYSNAME="x86_darwin_110"
|
|
|
|
OSXSDK="macosx10.7"
|
|
|
|
;;
|
|
|
|
i?86-apple-darwin11.*)
|
|
|
|
AFS_SYSNAME="x86_darwin_110"
|
|
|
|
OSXSDK="macosx10.7"
|
2010-07-13 19:29:38 +01:00
|
|
|
;;
|
2012-07-15 08:03:00 +01:00
|
|
|
x86_64-apple-darwin12.*)
|
|
|
|
AFS_SYSNAME="x86_darwin_120"
|
|
|
|
OSXSDK="macosx10.8"
|
|
|
|
;;
|
|
|
|
i?86-apple-darwin12.*)
|
|
|
|
AFS_SYSNAME="x86_darwin_120"
|
|
|
|
OSXSDK="macosx10.8"
|
|
|
|
;;
|
2014-11-01 03:45:13 +00:00
|
|
|
x86_64-apple-darwin13.*)
|
|
|
|
AFS_SYSNAME="x86_darwin_130"
|
|
|
|
OSXSDK="macosx10.9"
|
|
|
|
;;
|
|
|
|
i?86-apple-darwin13.*)
|
|
|
|
AFS_SYSNAME="x86_darwin_130"
|
|
|
|
OSXSDK="macosx10.9"
|
|
|
|
;;
|
|
|
|
x86_64-apple-darwin14.*)
|
|
|
|
AFS_SYSNAME="x86_darwin_140"
|
|
|
|
OSXSDK="macosx10.10"
|
|
|
|
;;
|
|
|
|
i?86-apple-darwin14.*)
|
|
|
|
AFS_SYSNAME="x86_darwin_140"
|
|
|
|
OSXSDK="macosx10.10"
|
|
|
|
;;
|
2015-10-28 15:28:01 +00:00
|
|
|
x86_64-apple-darwin15.*)
|
|
|
|
AFS_SYSNAME="x86_darwin_150"
|
|
|
|
OSXSDK="macosx10.11"
|
|
|
|
;;
|
|
|
|
i?86-apple-darwin15.*)
|
|
|
|
AFS_SYSNAME="x86_darwin_150"
|
|
|
|
OSXSDK="macosx10.11"
|
|
|
|
;;
|
2016-10-26 03:33:38 +01:00
|
|
|
x86_64-apple-darwin16.*)
|
|
|
|
AFS_SYSNAME="x86_darwin_160"
|
|
|
|
OSXSDK="macosx10.12"
|
|
|
|
;;
|
|
|
|
i?86-apple-darwin16.*)
|
|
|
|
AFS_SYSNAME="x86_darwin_160"
|
|
|
|
OSXSDK="macosx10.12"
|
|
|
|
;;
|
2017-10-03 21:01:56 +01:00
|
|
|
x86_64-apple-darwin17.*)
|
|
|
|
AFS_SYSNAME="x86_darwin_170"
|
|
|
|
OSXSDK="macosx10.13"
|
|
|
|
;;
|
|
|
|
i?86-apple-darwin17.*)
|
|
|
|
AFS_SYSNAME="x86_darwin_170"
|
|
|
|
OSXSDK="macosx10.13"
|
|
|
|
;;
|
2001-10-09 16:48:25 +01:00
|
|
|
sparc-sun-solaris2.8)
|
|
|
|
AFS_SYSNAME="sun4x_58"
|
|
|
|
;;
|
2001-10-11 09:43:17 +01:00
|
|
|
sparc-sun-solaris2.9)
|
|
|
|
AFS_SYSNAME="sun4x_59"
|
|
|
|
;;
|
2004-06-24 19:38:19 +01:00
|
|
|
sparc-sun-solaris2.10)
|
|
|
|
AFS_SYSNAME="sun4x_510"
|
|
|
|
;;
|
2006-12-28 21:57:24 +00:00
|
|
|
sparc-sun-solaris2.11)
|
|
|
|
AFS_SYSNAME="sun4x_511"
|
|
|
|
;;
|
2002-06-12 02:25:33 +01:00
|
|
|
i386-pc-solaris2.8)
|
|
|
|
AFS_SYSNAME="sunx86_58"
|
|
|
|
;;
|
|
|
|
i386-pc-solaris2.9)
|
|
|
|
AFS_SYSNAME="sunx86_59"
|
|
|
|
;;
|
2004-06-24 19:38:19 +01:00
|
|
|
i386-pc-solaris2.10)
|
|
|
|
AFS_SYSNAME="sunx86_510"
|
|
|
|
;;
|
2006-12-28 21:57:24 +00:00
|
|
|
i386-pc-solaris2.11)
|
|
|
|
AFS_SYSNAME="sunx86_511"
|
|
|
|
;;
|
2001-10-09 16:48:25 +01:00
|
|
|
alpha*-dec-osf4.0*)
|
|
|
|
AFS_SYSNAME="alpha_dux40"
|
|
|
|
;;
|
|
|
|
alpha*-dec-osf5.0*)
|
|
|
|
AFS_SYSNAME="alpha_dux50"
|
|
|
|
;;
|
2002-09-26 09:13:06 +01:00
|
|
|
alpha*-dec-osf5.1*)
|
|
|
|
AFS_SYSNAME="alpha_dux51"
|
|
|
|
;;
|
2001-10-09 16:48:25 +01:00
|
|
|
mips-sgi-irix6.5)
|
|
|
|
AFS_SYSNAME="sgi_65"
|
2014-10-06 18:31:23 +01:00
|
|
|
enable_pam="no"
|
2001-10-09 16:48:25 +01:00
|
|
|
;;
|
|
|
|
ia64-*-linux*)
|
|
|
|
AFS_SYSNAME="ia64_linuxXX"
|
|
|
|
;;
|
|
|
|
powerpc-*-linux*)
|
2005-04-03 21:02:28 +01:00
|
|
|
AFS_SYSNAME="`/bin/arch`_linuxXX"
|
2001-10-09 16:48:25 +01:00
|
|
|
;;
|
2004-02-03 06:23:30 +00:00
|
|
|
powerpc64-*-linux*)
|
|
|
|
AFS_SYSNAME="ppc64_linuxXX"
|
|
|
|
;;
|
2001-10-09 16:48:25 +01:00
|
|
|
alpha*-linux*)
|
|
|
|
AFS_SYSNAME="alpha_linux_XX"
|
|
|
|
;;
|
|
|
|
s390-*-linux*)
|
|
|
|
AFS_SYSNAME="s390_linuxXX"
|
|
|
|
;;
|
2004-08-11 17:45:35 +01:00
|
|
|
s390x-*-linux*)
|
|
|
|
AFS_SYSNAME="s390x_linuxXX"
|
|
|
|
;;
|
2001-10-09 16:48:25 +01:00
|
|
|
sparc-*-linux*)
|
2007-05-17 08:50:02 +01:00
|
|
|
AFS_SYSNAME="`/bin/arch`_linuxXX"
|
2001-10-09 16:48:25 +01:00
|
|
|
;;
|
|
|
|
sparc64-*-linux*)
|
|
|
|
AFS_SYSNAME="sparc64_linuxXX"
|
|
|
|
;;
|
|
|
|
i?86-*-linux*)
|
|
|
|
AFS_SYSNAME="i386_linuxXX"
|
|
|
|
;;
|
2009-08-22 02:37:41 +01:00
|
|
|
arm*-linux*)
|
|
|
|
AFS_SYSNAME="arm_linuxXX"
|
|
|
|
;;
|
2006-04-05 02:11:15 +01:00
|
|
|
parisc-*-linux-gnu|hppa-*-linux-gnu)
|
2001-10-09 16:48:25 +01:00
|
|
|
AFS_SYSNAME="parisc_linuxXX"
|
2004-03-25 23:25:50 +00:00
|
|
|
enable_pam="no"
|
2001-10-09 16:48:25 +01:00
|
|
|
;;
|
|
|
|
power*-ibm-aix4.2*)
|
|
|
|
AFS_SYSNAME="rs_aix42"
|
2004-12-07 16:48:57 +00:00
|
|
|
enable_pam="no"
|
2001-10-09 16:48:25 +01:00
|
|
|
;;
|
|
|
|
power*-ibm-aix4.3*)
|
|
|
|
AFS_SYSNAME="rs_aix42"
|
2004-12-07 16:48:57 +00:00
|
|
|
enable_pam="no"
|
2001-10-09 16:48:25 +01:00
|
|
|
;;
|
2004-03-10 17:12:08 +00:00
|
|
|
power*-ibm-aix5.1*)
|
|
|
|
AFS_SYSNAME="rs_aix51"
|
2004-12-07 16:48:57 +00:00
|
|
|
enable_pam="no"
|
2004-03-10 17:12:08 +00:00
|
|
|
;;
|
|
|
|
power*-ibm-aix5.2*)
|
|
|
|
AFS_SYSNAME="rs_aix52"
|
2004-12-07 16:48:57 +00:00
|
|
|
enable_pam="no"
|
2004-03-10 17:12:08 +00:00
|
|
|
;;
|
2005-04-19 17:50:25 +01:00
|
|
|
power*-ibm-aix5.3*)
|
|
|
|
AFS_SYSNAME="rs_aix53"
|
|
|
|
enable_pam="no"
|
|
|
|
;;
|
2008-09-03 20:26:29 +01:00
|
|
|
power*-ibm-aix6.1*)
|
|
|
|
AFS_SYSNAME="rs_aix61"
|
|
|
|
enable_pam="no"
|
|
|
|
;;
|
2003-04-28 23:38:20 +01:00
|
|
|
x86_64-*-linux-gnu)
|
|
|
|
AFS_SYSNAME="amd64_linuxXX"
|
2009-07-12 17:07:12 +01:00
|
|
|
enable_pam="yes"
|
2003-04-28 23:38:20 +01:00
|
|
|
;;
|
2001-10-09 16:48:25 +01:00
|
|
|
*)
|
|
|
|
AC_MSG_ERROR(An AFS sysname is required)
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
case $AFS_SYSNAME in
|
2004-12-01 23:21:18 +00:00
|
|
|
*_linux* | *_umlinux*)
|
2001-10-09 16:48:25 +01:00
|
|
|
if test "x${AFS_SYSKVERS}" = "x"; then
|
|
|
|
AC_MSG_ERROR(Couldn't guess your Linux version. Please use the --with-afs-sysname option to configure an AFS sysname.)
|
|
|
|
fi
|
2015-03-18 17:11:44 +00:00
|
|
|
if test "x${AFS_SYSKVERS}" = "x24" ||
|
|
|
|
test "x${AFS_SYSKVERS}" = "x22"; then
|
|
|
|
AC_MSG_ERROR([Linux 2.4.x and older are no longer supported by OpenAFS. Please use an OpenAFS 1.6.x release on those systems.])
|
|
|
|
fi
|
2001-10-09 16:48:25 +01:00
|
|
|
_AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/XX\$/$AFS_SYSKVERS/`
|
|
|
|
AFS_SYSNAME="$_AFS_SYSNAME"
|
2010-02-20 18:28:59 +00:00
|
|
|
AC_TRY_KBUILD(
|
|
|
|
[],
|
2003-08-11 21:29:21 +01:00
|
|
|
[#ifndef CONFIG_USERMODE
|
|
|
|
#error not UML
|
|
|
|
#endif],
|
|
|
|
ac_cv_linux_is_uml=yes,)
|
|
|
|
if test "${ac_cv_linux_is_uml}" = yes; then
|
|
|
|
_AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/linux/umlinux/`
|
2003-05-13 06:23:56 +01:00
|
|
|
fi
|
2003-08-11 21:29:21 +01:00
|
|
|
AFS_SYSNAME="$_AFS_SYSNAME"
|
2001-10-09 16:48:25 +01:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
AC_MSG_RESULT($AFS_SYSNAME)
|
|
|
|
fi
|
|
|
|
|
2009-12-24 18:19:01 +00:00
|
|
|
case $AFS_SYSNAME in
|
|
|
|
*_darwin*)
|
2010-06-13 16:03:25 +01:00
|
|
|
AC_CHECK_HEADERS(crt_externs.h)
|
2009-12-24 18:19:01 +00:00
|
|
|
DARWIN_PLIST=src/libafs/afs.${AFS_SYSNAME}.plist
|
|
|
|
DARWIN_INFOFILE=afs.${AFS_SYSNAME}.plist
|
2011-04-26 15:46:41 +01:00
|
|
|
AC_SUBST(OSXSDK)
|
2009-12-24 18:19:01 +00:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2006-11-20 23:50:42 +00:00
|
|
|
dnl Some hosts have a separate common param file they should include. Figure
|
|
|
|
dnl out if we're on one of them now that we know the sysname.
|
|
|
|
case $AFS_SYSNAME in
|
|
|
|
*_nbsd15) AFS_PARAM_COMMON=param.nbsd15.h ;;
|
|
|
|
*_nbsd16) AFS_PARAM_COMMON=param.nbsd16.h ;;
|
|
|
|
*_nbsd20) AFS_PARAM_COMMON=param.nbsd20.h ;;
|
|
|
|
*_nbsd21) AFS_PARAM_COMMON=param.nbsd21.h ;;
|
|
|
|
*_nbsd30) AFS_PARAM_COMMON=param.nbsd30.h ;;
|
|
|
|
*_nbsd40) AFS_PARAM_COMMON=param.nbsd40.h ;;
|
2010-04-10 16:55:17 +01:00
|
|
|
*_nbsd50) AFS_PARAM_COMMON=param.nbsd50.h ;;
|
2011-04-21 09:24:15 +01:00
|
|
|
*_nbsd60) AFS_PARAM_COMMON=param.nbsd60.h ;;
|
2013-09-19 01:37:32 +01:00
|
|
|
*_nbsd70) AFS_PARAM_COMMON=param.nbsd70.h ;;
|
2009-07-21 22:07:36 +01:00
|
|
|
*_obsd31) AFS_PARAM_COMMON=param.obsd31.h ;;
|
|
|
|
*_obsd32) AFS_PARAM_COMMON=param.obsd32.h ;;
|
|
|
|
*_obsd33) AFS_PARAM_COMMON=param.obsd33.h ;;
|
|
|
|
*_obsd34) AFS_PARAM_COMMON=param.obsd34.h ;;
|
|
|
|
*_obsd35) AFS_PARAM_COMMON=param.obsd35.h ;;
|
|
|
|
*_obsd36) AFS_PARAM_COMMON=param.obsd36.h ;;
|
|
|
|
*_obsd37) AFS_PARAM_COMMON=param.obsd37.h ;;
|
|
|
|
*_obsd38) AFS_PARAM_COMMON=param.obsd38.h ;;
|
|
|
|
*_obsd39) AFS_PARAM_COMMON=param.obsd39.h ;;
|
|
|
|
*_obsd40) AFS_PARAM_COMMON=param.obsd40.h ;;
|
|
|
|
*_obsd41) AFS_PARAM_COMMON=param.obsd41.h ;;
|
|
|
|
*_obsd42) AFS_PARAM_COMMON=param.obsd42.h ;;
|
|
|
|
*_obsd43) AFS_PARAM_COMMON=param.obsd43.h ;;
|
|
|
|
*_obsd44) AFS_PARAM_COMMON=param.obsd44.h ;;
|
|
|
|
*_obsd45) AFS_PARAM_COMMON=param.obsd45.h ;;
|
2010-02-17 18:05:53 +00:00
|
|
|
*_obsd46) AFS_PARAM_COMMON=param.obsd46.h ;;
|
2011-01-21 16:25:22 +00:00
|
|
|
*_obsd47) AFS_PARAM_COMMON=param.obsd47.h ;;
|
2011-01-24 07:16:02 +00:00
|
|
|
*_obsd48) AFS_PARAM_COMMON=param.obsd48.h ;;
|
2013-01-23 02:24:25 +00:00
|
|
|
*_obsd49) AFS_PARAM_COMMON=param.obsd49.h ;;
|
|
|
|
*_obsd50) AFS_PARAM_COMMON=param.obsd50.h ;;
|
|
|
|
*_obsd51) AFS_PARAM_COMMON=param.obsd51.h ;;
|
|
|
|
*_obsd52) AFS_PARAM_COMMON=param.obsd52.h ;;
|
|
|
|
*_obsd53) AFS_PARAM_COMMON=param.obsd53.h ;;
|
2014-05-07 21:57:26 +01:00
|
|
|
*_obsd54) AFS_PARAM_COMMON=param.obsd54.h ;;
|
2006-11-20 23:50:42 +00:00
|
|
|
*_linux26) AFS_PARAM_COMMON=param.linux26.h ;;
|
2010-05-06 20:30:23 +01:00
|
|
|
# Linux alpha adds an extra underscore for no good reason.
|
|
|
|
*_linux_26) AFS_PARAM_COMMON=param.linux26.h ;;
|
2014-07-31 16:45:14 +01:00
|
|
|
*_fbsd_*) AFS_PARAM_COMMON=param.generic_fbsd.h ;;
|
2006-11-20 23:50:42 +00:00
|
|
|
esac
|
|
|
|
|
2011-11-02 16:32:56 +00:00
|
|
|
OPENAFS_OSCONF
|
|
|
|
|
2004-12-01 23:21:18 +00:00
|
|
|
case $AFS_SYSNAME in *_linux* | *_umlinux*)
|
|
|
|
|
|
|
|
# Add (sub-) architecture-specific paths needed by conftests
|
|
|
|
case $AFS_SYSNAME in
|
|
|
|
*_umlinux26)
|
|
|
|
UMLINUX26_FLAGS="-I$LINUX_KERNEL_PATH/arch/um/include"
|
|
|
|
UMLINUX26_FLAGS="$UMLINUX26_FLAGS -I$LINUX_KERNEL_PATH/arch/um/kernel/tt/include"
|
|
|
|
UMLINUX26_FLAGS="$UMLINUX26_FLAGS -I$LINUX_KERNEL_PATH/arch/um/kernel/skas/include"
|
|
|
|
CPPFLAGS="$CPPFLAGS $UMLINUX26_FLAGS"
|
|
|
|
esac
|
|
|
|
|
|
|
|
if test "x$enable_kernel_module" = "xyes"; then
|
|
|
|
if test "x$enable_debug_kernel" = "xno"; then
|
|
|
|
LINUX_GCC_KOPTS="$LINUX_GCC_KOPTS -fomit-frame-pointer"
|
|
|
|
fi
|
|
|
|
OPENAFS_GCC_SUPPORTS_MARCH
|
|
|
|
AC_SUBST(P5PLUS_KOPTS)
|
|
|
|
OPENAFS_GCC_NEEDS_NO_STRENGTH_REDUCE
|
|
|
|
OPENAFS_GCC_NEEDS_NO_STRICT_ALIASING
|
|
|
|
OPENAFS_GCC_SUPPORTS_NO_COMMON
|
|
|
|
OPENAFS_GCC_SUPPORTS_PIPE
|
|
|
|
AC_SUBST(LINUX_GCC_KOPTS)
|
2006-08-04 17:42:55 +01:00
|
|
|
|
2010-04-27 19:31:55 +01:00
|
|
|
dnl Setup the kernel build environment
|
|
|
|
LINUX_KBUILD_USES_EXTRA_CFLAGS
|
2008-01-30 17:30:23 +00:00
|
|
|
LINUX_KERNEL_COMPILE_WORKS
|
2010-04-27 19:31:55 +01:00
|
|
|
|
2015-07-06 17:01:38 +01:00
|
|
|
dnl Operation signature checks
|
|
|
|
AC_CHECK_LINUX_OPERATION([inode_operations], [follow_link], [no_nameidata],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[const char *],
|
|
|
|
[struct dentry *dentry, void **link_data])
|
|
|
|
AC_CHECK_LINUX_OPERATION([inode_operations], [put_link], [no_nameidata],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[void],
|
|
|
|
[struct inode *inode, void *link_data])
|
2016-09-17 00:01:19 +01:00
|
|
|
AC_CHECK_LINUX_OPERATION([inode_operations], [rename], [takes_flags],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[int],
|
|
|
|
[struct inode *oinode, struct dentry *odentry,
|
|
|
|
struct inode *ninode, struct dentry *ndentry,
|
|
|
|
unsigned int flags])
|
2015-07-06 17:01:38 +01:00
|
|
|
|
2010-04-27 19:31:55 +01:00
|
|
|
dnl Check for header files
|
2017-04-11 10:58:55 +01:00
|
|
|
AC_CHECK_LINUX_HEADER([cred.h])
|
2010-04-27 19:31:55 +01:00
|
|
|
AC_CHECK_LINUX_HEADER([config.h])
|
|
|
|
AC_CHECK_LINUX_HEADER([exportfs.h])
|
|
|
|
AC_CHECK_LINUX_HEADER([freezer.h])
|
|
|
|
AC_CHECK_LINUX_HEADER([key-type.h])
|
|
|
|
AC_CHECK_LINUX_HEADER([semaphore.h])
|
|
|
|
AC_CHECK_LINUX_HEADER([seq_file.h])
|
2017-03-23 22:10:03 +00:00
|
|
|
AC_CHECK_LINUX_HEADER([sched/signal.h])
|
2017-08-22 13:59:11 +01:00
|
|
|
AC_CHECK_LINUX_HEADER([uaccess.h])
|
2010-04-27 19:31:55 +01:00
|
|
|
|
2012-08-29 17:39:01 +01:00
|
|
|
dnl Type existence checks
|
|
|
|
AC_CHECK_LINUX_TYPE([struct vfs_path], [dcache.h])
|
2013-10-31 13:11:59 +00:00
|
|
|
AC_CHECK_LINUX_TYPE([kuid_t], [uidgid.h])
|
2012-08-29 17:39:01 +01:00
|
|
|
|
2010-04-27 19:31:55 +01:00
|
|
|
dnl Check for structure elements
|
2015-02-23 05:13:05 +00:00
|
|
|
AC_CHECK_LINUX_STRUCT([address_space], [backing_dev_info], [fs.h])
|
2010-04-27 13:02:20 +01:00
|
|
|
AC_CHECK_LINUX_STRUCT([address_space_operations],
|
|
|
|
[write_begin], [fs.h])
|
2010-04-27 19:31:55 +01:00
|
|
|
AC_CHECK_LINUX_STRUCT([backing_dev_info], [name],
|
|
|
|
[backing-dev.h])
|
2013-01-10 00:26:54 +00:00
|
|
|
AC_CHECK_LINUX_STRUCT([cred], [session_keyring], [cred.h])
|
2010-05-28 12:41:41 +01:00
|
|
|
AC_CHECK_LINUX_STRUCT([ctl_table], [ctl_name], [sysctl.h])
|
2014-12-18 12:13:46 +00:00
|
|
|
AC_CHECK_LINUX_STRUCT([dentry], [d_u.d_alias], [dcache.h])
|
Linux: Make dir dentry aliases act like symlinks
Currently, we try to invalidate other dentries that exist for a
particular dir inode when we look up a dentry. This is so we try to
avoid duplicate dentries for a directory, which Linux does not like
(you cannot have hardlinks to a dir).
If we cannot invalidate the other aliases (because they are being
used), right now we just return the alias. This can make it very easy
to panic the client, due to the sanity checks Linux performs when dong
things like 'rmdir'. If we do something like this:
mkdir dir1
fs mkm dir1/mtpt vol
mkdir dir1/mtpt/dir2
fs mkm dir1/mtpt/dir2/mtpt2 vol
cd dir1/mtpt
rmdir dir2/mtpt2
For the 'rmdir', we will lookup 'mtpt2'. Since 'mtpt' and 'mtpt2'
are mountpoints for the same volume, their dentries point to the same
directory inode. So when we lookup 'mtpt2', we will try to invalidate
the other dentry, but we cannot do that since it is the cwd. So we
return the alias dentry (for 'mtpt'). The Linux VFS layer then does a
sanity check for the rmdir operation, checking that the child dentry's
parent inode is the same as the inode we're performing the rmdir for.
Since the dentry we returned was for 'mtpt', whose parent is 'dir1',
and the actual dir we're performing the rmdir for is 'dir2', this
sanity check fails and we BUG.
To avoid this, make the dentry alias act like a symlink when we
encounter an uninvalidateable dentry alias. That is, we allow multiple
dentry aliases for a directory, however, when the dentry aliases are
actually used, we redirect to a common dentry (via d_automount where
possible, and follow_link elsewhere).
This means that such mountpoints will behave similarly to symlinks, in
that we 'point' to a specific mountpoint dentry. This means that if we
have multiple different ways to get to the same volume, and all are
accessed at the same time, all but one of those mountpoints will
behave like symlinks, pointing to the same mountpoint. So, the '..'
entries for each path will all point to the parent dir of one
mountpoint, meaning that the '..' entry will be "wrong", but for most
cases it will still be correct.
In order to try to make the 'target', pointed-to directory consistent,
we add a new field to struct vcache: target_link. This points to the
dentry we should redirect to, whenever that vcache is referenced. To
avoid (possibly not-feasibly-solvable) problems with refcounting, this
pointer is not actually a reference to the target dentry, but just
serves as a pointer to compare to.
FIXES 130273
Change-Id: I990131ce95cefe8336e83c7ebfb48aed1d685109
Reviewed-on: http://gerrit.openafs.org/7741
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Tested-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
2012-07-06 22:37:39 +01:00
|
|
|
AC_CHECK_LINUX_STRUCT([dentry_operations], [d_automount], [dcache.h])
|
2016-09-14 23:01:22 +01:00
|
|
|
AC_CHECK_LINUX_STRUCT([group_info], [gid], [cred.h])
|
2010-04-27 19:31:55 +01:00
|
|
|
AC_CHECK_LINUX_STRUCT([inode], [i_alloc_sem], [fs.h])
|
|
|
|
AC_CHECK_LINUX_STRUCT([inode], [i_blkbits], [fs.h])
|
|
|
|
AC_CHECK_LINUX_STRUCT([inode], [i_blksize], [fs.h])
|
|
|
|
AC_CHECK_LINUX_STRUCT([inode], [i_mutex], [fs.h])
|
|
|
|
AC_CHECK_LINUX_STRUCT([inode], [i_security], [fs.h])
|
2015-01-05 12:03:16 +00:00
|
|
|
AC_CHECK_LINUX_STRUCT([file], [f_path], [fs.h])
|
2010-04-27 19:31:55 +01:00
|
|
|
AC_CHECK_LINUX_STRUCT([file_operations], [flock], [fs.h])
|
2013-07-08 15:53:00 +01:00
|
|
|
AC_CHECK_LINUX_STRUCT([file_operations], [iterate], [fs.h])
|
2014-06-18 14:06:39 +01:00
|
|
|
AC_CHECK_LINUX_STRUCT([file_operations], [read_iter], [fs.h])
|
2010-04-27 19:31:55 +01:00
|
|
|
AC_CHECK_LINUX_STRUCT([file_operations], [sendfile], [fs.h])
|
2010-11-03 00:54:20 +00:00
|
|
|
AC_CHECK_LINUX_STRUCT([file_system_type], [mount], [fs.h])
|
2013-01-10 02:22:27 +00:00
|
|
|
AC_CHECK_LINUX_STRUCT([inode_operations], [truncate], [fs.h])
|
2016-05-05 17:35:08 +01:00
|
|
|
AC_CHECK_LINUX_STRUCT([inode_operations], [get_link], [fs.h])
|
2016-01-18 17:29:00 +00:00
|
|
|
AC_CHECK_LINUX_STRUCT([key], [payload.value], [key.h])
|
2013-09-12 08:25:31 +01:00
|
|
|
AC_CHECK_LINUX_STRUCT([key_type], [instantiate_prep], [key-type.h])
|
LINUX: Avoid check for key_type.match existence
Commit b5de4a9f removed our key_type 'match' function for kernels that
do not have such a 'match' function pointer. However, this added a
configure test where we are supposed to fail for the "new" behavior,
which is discouraged.
This causes an actual problem, because this test will fail on at least
RHEL5, due to arguably unrelated reasons (the header file for the
relevant struct is in key.h instead of key-type.h). And so, in that
situation we avoid defining a 'match' function callback, meaning our
'match' function callback is NULL, which causes a panic when we try to
actually look up keys for a PAG.
To fix this, transform the 'match' config test into one where we
succeed for the "new" behavior. We do this by testing for the
existence of the new functionality that replaced the old 'match'
function, which is the match_preparse function (specifically, the
'cmp' field in the structure accepted by match_preparse). This should
cause unrelated compilation errors to cause us to revert to the "old"
behavior instead of the "new" behavior. At worst, this should cause
build issues if we get the config test wrong (since we will try to use
the 'match' function definition that does not exist), instead of
panicing at runtime.
Note that while we test for key_type.match_preparse, we don't actually
use that function, since our 'match' functionality is the same as the
default behavior (according to b5de4a9f). So, we can avoid defining
any such function for newer kernels.
Thanks to Stephan Wiesand for bisecting this issue.
Change-Id: If6f93d6b5340fa738a55adeb7778d26ff5dbacc1
Reviewed-on: http://gerrit.openafs.org/11589
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
2014-11-05 16:22:00 +00:00
|
|
|
AC_CHECK_LINUX_STRUCT([key_type], [match_preparse], [key-type.h])
|
2014-10-23 16:27:55 +01:00
|
|
|
AC_CHECK_LINUX_STRUCT([key_type], [preparse], [key-type.h])
|
2015-01-05 12:13:37 +00:00
|
|
|
AC_CHECK_LINUX_STRUCT([msghdr], [msg_iter], [socket.h])
|
2010-04-27 19:31:55 +01:00
|
|
|
AC_CHECK_LINUX_STRUCT([nameidata], [path], [namei.h])
|
|
|
|
AC_CHECK_LINUX_STRUCT([proc_dir_entry], [owner], [proc_fs.h])
|
|
|
|
AC_CHECK_LINUX_STRUCT([super_block], [s_bdi], [fs.h])
|
2011-01-25 22:17:21 +00:00
|
|
|
AC_CHECK_LINUX_STRUCT([super_block], [s_d_op], [fs.h])
|
2010-04-27 19:31:55 +01:00
|
|
|
AC_CHECK_LINUX_STRUCT([super_operations], [alloc_inode],
|
|
|
|
[fs.h])
|
2010-08-11 23:55:29 +01:00
|
|
|
AC_CHECK_LINUX_STRUCT([super_operations], [evict_inode],
|
|
|
|
[fs.h])
|
2010-04-27 19:31:55 +01:00
|
|
|
AC_CHECK_LINUX_STRUCT([task_struct], [cred], [sched.h])
|
|
|
|
AC_CHECK_LINUX_STRUCT([task_struct], [exit_state], [sched.h])
|
|
|
|
AC_CHECK_LINUX_STRUCT([task_struct], [parent], [sched.h])
|
|
|
|
AC_CHECK_LINUX_STRUCT([task_struct], [real_parent], [sched.h])
|
|
|
|
AC_CHECK_LINUX_STRUCT([task_struct], [rlim], [sched.h])
|
|
|
|
AC_CHECK_LINUX_STRUCT([task_struct], [sig], [sched.h])
|
|
|
|
AC_CHECK_LINUX_STRUCT([task_struct], [sighand], [sched.h])
|
|
|
|
AC_CHECK_LINUX_STRUCT([task_struct], [sigmask_lock], [sched.h])
|
|
|
|
AC_CHECK_LINUX_STRUCT([task_struct], [tgid], [sched.h])
|
|
|
|
AC_CHECK_LINUX_STRUCT([task_struct], [thread_info], [sched.h])
|
2015-07-06 15:00:13 +01:00
|
|
|
AC_CHECK_LINUX_STRUCT([task_struct], [total_link_count], [sched.h])
|
2010-04-27 19:31:55 +01:00
|
|
|
LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM
|
|
|
|
|
2011-05-26 06:46:32 +01:00
|
|
|
dnl Check for typed structure elements
|
|
|
|
AC_CHECK_LINUX_TYPED_STRUCT([read_descriptor_t],
|
|
|
|
[buf], [fs.h])
|
|
|
|
|
2010-04-27 19:31:55 +01:00
|
|
|
dnl Function existence checks
|
|
|
|
|
2017-09-18 10:59:40 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([__vfs_write],
|
2015-04-20 14:41:53 +01:00
|
|
|
[#include <linux/fs.h>],
|
2017-09-18 10:59:40 +01:00
|
|
|
[__vfs_write(NULL, NULL, 0, NULL);])
|
2017-09-18 11:18:39 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([kernel_write],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[kernel_write(NULL, NULL, 0, NULL);])
|
2010-04-26 23:54:05 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([bdi_init],
|
|
|
|
[#include <linux/backing-dev.h>],
|
|
|
|
[bdi_init(NULL);])
|
2017-05-16 08:29:30 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([super_setup_bdi],
|
|
|
|
[#include <linux/backing-dev.h>],
|
|
|
|
[struct super_block *sb;
|
|
|
|
super_setup_bdi(sb);])
|
2010-05-18 02:28:56 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([PageChecked],
|
|
|
|
[#include <linux/mm.h>
|
|
|
|
#include <linux/page-flags.h>],
|
|
|
|
[struct page *_page;
|
|
|
|
int bchecked = PageChecked(_page);])
|
|
|
|
AC_CHECK_LINUX_FUNC([PageFsMisc],
|
|
|
|
[#include <linux/mm.h>
|
|
|
|
#include <linux/page-flags.h>],
|
|
|
|
[struct page *_page;
|
|
|
|
int bchecked = PageFsMisc(_page);])
|
2012-05-29 02:43:12 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([clear_inode],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[clear_inode(NULL);])
|
2010-04-27 19:31:55 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([current_kernel_time],
|
|
|
|
[#include <linux/time.h>],
|
|
|
|
[struct timespec s;
|
|
|
|
s = current_kernel_time();])
|
|
|
|
AC_CHECK_LINUX_FUNC([d_alloc_anon],
|
2011-02-18 21:49:03 +00:00
|
|
|
[#include <linux/fs.h>],
|
2010-04-27 19:31:55 +01:00
|
|
|
[d_alloc_anon(NULL);])
|
2013-09-03 12:55:14 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([d_count],
|
|
|
|
[#include <linux/dcache.h>],
|
|
|
|
[d_count(NULL);])
|
2012-03-22 02:19:04 +00:00
|
|
|
AC_CHECK_LINUX_FUNC([d_make_root],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[d_make_root(NULL);])
|
2010-04-27 19:31:55 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([do_sync_read],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[do_sync_read(NULL, NULL, 0, NULL);])
|
2017-02-22 21:55:33 +00:00
|
|
|
AC_CHECK_LINUX_FUNC([file_dentry],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[struct file *f; file_dentry(f);])
|
2010-04-27 19:31:55 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([find_task_by_pid],
|
|
|
|
[#include <linux/sched.h>],
|
|
|
|
[pid_t p; find_task_by_pid(p);])
|
|
|
|
AC_CHECK_LINUX_FUNC([generic_file_aio_read],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[generic_file_aio_read(NULL,NULL,0,0);])
|
2010-04-27 22:16:24 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([grab_cache_page_write_begin],
|
2010-04-26 23:54:05 +01:00
|
|
|
[#include <linux/pagemap.h>],
|
2010-04-27 19:31:55 +01:00
|
|
|
[grab_cache_page_write_begin(NULL, 0, 0);])
|
|
|
|
AC_CHECK_LINUX_FUNC([hlist_unhashed],
|
|
|
|
[#include <linux/list.h>],
|
|
|
|
[hlist_unhashed(0);])
|
2014-12-18 13:43:22 +00:00
|
|
|
AC_CHECK_LINUX_FUNC([ihold],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[ihold(NULL);])
|
2010-04-27 19:31:55 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([i_size_read],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[i_size_read(NULL);])
|
2010-08-11 23:20:59 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([inode_setattr],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[inode_setattr(NULL, NULL);])
|
2014-06-18 13:53:48 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([iter_file_splice_write],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[iter_file_splice_write(NULL,NULL,NULL,0,0);])
|
2010-04-27 19:31:55 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([kernel_setsockopt],
|
|
|
|
[#include <linux/net.h>],
|
|
|
|
[kernel_setsockopt(NULL, 0, 0, NULL, 0);])
|
2016-01-18 18:58:00 +00:00
|
|
|
AC_CHECK_LINUX_FUNC([locks_lock_file_wait],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[locks_lock_file_wait(NULL, NULL);])
|
2010-04-27 19:31:55 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([page_follow_link],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[page_follow_link(0,0);])
|
2016-05-05 17:35:08 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([page_get_link],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[page_get_link(0,0,0);])
|
2010-04-27 19:31:55 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([page_offset],
|
|
|
|
[#include <linux/pagemap.h>],
|
|
|
|
[page_offset(NULL);])
|
2010-04-26 23:54:05 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([pagevec_lru_add_file],
|
|
|
|
[#include <linux/pagevec.h>],
|
|
|
|
[__pagevec_lru_add_file(NULL);])
|
2011-03-27 15:59:55 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([path_lookup],
|
2011-03-30 23:32:04 +01:00
|
|
|
[#include <linux/fs.h>
|
|
|
|
#include <linux/namei.h>],
|
2011-03-27 15:59:55 +01:00
|
|
|
[path_lookup(NULL, 0, NULL);])
|
2013-05-07 01:20:07 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([proc_create],
|
|
|
|
[#include <linux/proc_fs.h>],
|
|
|
|
[proc_create(NULL, 0, NULL, NULL);])
|
2010-04-27 19:31:55 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([rcu_read_lock],
|
|
|
|
[#include <linux/rcupdate.h>],
|
|
|
|
[rcu_read_lock();])
|
2012-01-18 15:25:03 +00:00
|
|
|
AC_CHECK_LINUX_FUNC([set_nlink],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[set_nlink(NULL, 1);])
|
2016-10-20 05:49:37 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([setattr_prepare],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[setattr_prepare(NULL, NULL);])
|
LINUX: Use sock_create_kern where available
Currently, we use sock_create to create our Rx socket. This means that
accesses to that socket (sendmsg, recvmsg) are subject to SELinux
restrictions. For all recvmsg accesses and some sendmsg accesses, this
doesn't matter, since the access will be performed by one of our
kernel threads (running as kernel_t or something similar, which is
unrestricted). Such as: the rx listener, a background daemon, the rx
event thread, etc.
However, sometimes we do run in the context of a normal user process.
For some RPCs like FetchStatus, we tend to run the RPC in the
accessing user thread, which can result in us sendmsg()ing the data
packets with the initial arguments in the user thread. We can also
send delayed ACKs via rx_EndCall, and possibly a variety of other
scenarios.
In any of these situations when we are sendmsg()ing from a user
thread, SELinux can prevent us from sending to the socket, if the
calling user thread context is not able to write to an afs_t
udp_socket. This will result in packets not being sent immediately,
but the packets will be resent later, so access will work, but appear
very slow. This can easily happen for processes that are specifically
constrained by SELinux; for example, webservers are often constrained,
even if most of the rest of the system is not. This can be noticed by
seeing the 'resends' and 'sendFailed' counters rising in 'rxdebug
-rxstat', as well as noticing SELinux access failures if 'dontaudit'
rules are ignored.
To avoid this, use sock_create_kern to create the Rx socket, to
indicate that this is a socket for use by kernel code, and not
accessible by a user. This should cause us to bypass any LSM
restrictions (SELinux, AppArmor, etc). Add a configure check for this,
since this function has not always existed, according to
<https://lists.openafs.org/pipermail/openafs-devel/2004-June/010651.html>
Change-Id: I77e7f87e93be4d750d398e01dc1634efd80657bc
Reviewed-on: http://gerrit.openafs.org/10594
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
2013-12-17 23:30:26 +00:00
|
|
|
AC_CHECK_LINUX_FUNC([sock_create_kern],
|
|
|
|
[#include <linux/net.h>],
|
|
|
|
[sock_create_kern(0, 0, 0, NULL);])
|
2015-07-08 18:32:31 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([sock_create_kern_ns],
|
|
|
|
[#include <linux/net.h>],
|
|
|
|
[sock_create_kern(NULL, 0, 0, 0, NULL);])
|
2010-04-26 23:54:05 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([splice_direct_to_actor],
|
|
|
|
[#include <linux/splice.h>],
|
2010-04-27 19:31:55 +01:00
|
|
|
[splice_direct_to_actor(NULL,NULL,NULL);])
|
2016-03-08 13:15:17 +00:00
|
|
|
AC_CHECK_LINUX_FUNC([default_file_splice_read],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[default_file_splice_read(NULL,NULL,NULL, 0, 0);])
|
2010-04-27 19:31:55 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([svc_addr_in],
|
|
|
|
[#include <linux/sunrpc/svc.h>],
|
|
|
|
[svc_addr_in(NULL);])
|
|
|
|
AC_CHECK_LINUX_FUNC([zero_user_segments],
|
|
|
|
[#include <linux/highmem.h>],
|
|
|
|
[zero_user_segments(NULL, 0, 0, 0, 0);])
|
2012-01-01 00:51:29 +00:00
|
|
|
AC_CHECK_LINUX_FUNC([noop_fsync],
|
|
|
|
[#include <linux/fs.h>],
|
2012-01-29 17:08:57 +00:00
|
|
|
[void *address = &noop_fsync; printk("%p\n", address)];)
|
2012-04-10 21:26:42 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([kthread_run],
|
|
|
|
[#include <linux/kernel.h>
|
|
|
|
#include <linux/kthread.h>],
|
|
|
|
[kthread_run(NULL, NULL, "test");])
|
2016-05-02 00:04:45 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([inode_nohighmem],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[inode_nohighmem(NULL);])
|
2016-05-02 00:48:40 +01:00
|
|
|
AC_CHECK_LINUX_FUNC([inode_lock],
|
|
|
|
[#include <linux/fs.h>],
|
|
|
|
[inode_lock(NULL);])
|
2010-04-27 19:31:55 +01:00
|
|
|
|
|
|
|
dnl Consequences - things which get set as a result of the
|
|
|
|
dnl above tests
|
|
|
|
AS_IF([test "x$ac_cv_linux_func_d_alloc_anon" = "xno"],
|
|
|
|
[AC_DEFINE([AFS_NONFSTRANS], 1,
|
|
|
|
[define to disable the nfs translator])])
|
|
|
|
|
|
|
|
dnl Assorted more complex tests
|
2012-08-29 20:14:39 +01:00
|
|
|
LINUX_AIO_NONVECTOR
|
2010-04-27 19:31:55 +01:00
|
|
|
LINUX_EXPORTS_PROC_ROOT_FS
|
|
|
|
LINUX_KMEM_CACHE_INIT
|
2007-10-05 05:07:27 +01:00
|
|
|
LINUX_HAVE_KMEM_CACHE_T
|
2010-05-11 20:54:53 +01:00
|
|
|
LINUX_KMEM_CACHE_CREATE_TAKES_DTOR
|
2009-10-09 02:53:03 +01:00
|
|
|
LINUX_KMEM_CACHE_CREATE_CTOR_TAKES_VOID
|
2008-07-01 05:33:38 +01:00
|
|
|
LINUX_D_PATH_TAKES_STRUCT_PATH
|
|
|
|
LINUX_NEW_EXPORT_OPS
|
2010-04-27 19:31:55 +01:00
|
|
|
LINUX_INODE_SETATTR_RETURN_TYPE
|
|
|
|
LINUX_IOP_I_CREATE_TAKES_NAMEIDATA
|
|
|
|
LINUX_IOP_I_LOOKUP_TAKES_NAMEIDATA
|
2011-01-29 00:41:32 +00:00
|
|
|
LINUX_IOP_I_PERMISSION_TAKES_FLAGS
|
2006-08-04 17:42:55 +01:00
|
|
|
LINUX_IOP_I_PERMISSION_TAKES_NAMEIDATA
|
2007-04-18 20:18:35 +01:00
|
|
|
LINUX_IOP_I_PUT_LINK_TAKES_COOKIE
|
2011-09-03 19:10:50 +01:00
|
|
|
LINUX_DOP_D_DELETE_TAKES_CONST
|
2006-08-04 17:42:55 +01:00
|
|
|
LINUX_DOP_D_REVALIDATE_TAKES_NAMEIDATA
|
2007-06-12 20:32:19 +01:00
|
|
|
LINUX_FOP_F_FLUSH_TAKES_FL_OWNER_T
|
2010-05-28 22:48:12 +01:00
|
|
|
LINUX_FOP_F_FSYNC_TAKES_DENTRY
|
2011-09-02 22:56:58 +01:00
|
|
|
LINUX_FOP_F_FSYNC_TAKES_RANGE
|
2004-12-01 23:38:53 +00:00
|
|
|
LINUX_AOP_WRITEBACK_CONTROL
|
2007-11-06 18:30:19 +00:00
|
|
|
LINUX_FS_STRUCT_FOP_HAS_SPLICE
|
2007-05-17 08:34:15 +01:00
|
|
|
LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG
|
2017-12-22 13:40:32 +00:00
|
|
|
LINUX_KERNEL_PAGEVEC_INIT_COLD_ARG
|
2009-05-27 02:47:40 +01:00
|
|
|
LINUX_POSIX_TEST_LOCK_RETURNS_CONFLICT
|
|
|
|
LINUX_POSIX_TEST_LOCK_CONFLICT_ARG
|
2004-12-01 23:21:18 +00:00
|
|
|
LINUX_KERNEL_SOCK_CREATE
|
2009-07-01 22:56:48 +01:00
|
|
|
LINUX_EXPORTS_KEY_TYPE_KEYRING
|
2004-12-01 23:21:18 +00:00
|
|
|
LINUX_NEED_RHCONFIG
|
|
|
|
LINUX_RECALC_SIGPENDING_ARG_TYPE
|
2007-02-09 01:30:00 +00:00
|
|
|
LINUX_EXPORTS_TASKLIST_LOCK
|
2006-08-28 21:11:31 +01:00
|
|
|
LINUX_GET_SB_HAS_STRUCT_VFSMOUNT
|
2006-11-09 23:40:20 +00:00
|
|
|
LINUX_STATFS_TAKES_DENTRY
|
2005-08-10 21:21:27 +01:00
|
|
|
LINUX_REFRIGERATOR
|
2010-04-26 22:13:39 +01:00
|
|
|
LINUX_HAVE_TRY_TO_FREEZE
|
2006-08-04 17:55:21 +01:00
|
|
|
LINUX_LINUX_KEYRING_SUPPORT
|
|
|
|
LINUX_KEY_ALLOC_NEEDS_STRUCT_TASK
|
2009-03-19 04:02:18 +00:00
|
|
|
LINUX_KEY_ALLOC_NEEDS_CRED
|
2006-12-28 21:28:31 +00:00
|
|
|
LINUX_INIT_WORK_HAS_DATA
|
2007-02-22 21:46:13 +00:00
|
|
|
LINUX_REGISTER_SYSCTL_TABLE_NOFLAG
|
2011-01-29 01:59:17 +00:00
|
|
|
LINUX_HAVE_DCACHE_LOCK
|
2011-02-03 02:55:27 +00:00
|
|
|
LINUX_D_COUNT_IS_INT
|
2017-03-20 14:30:46 +00:00
|
|
|
LINUX_IOP_GETATTR_TAKES_PATH_STRUCT
|
2012-01-18 16:22:35 +00:00
|
|
|
LINUX_IOP_MKDIR_TAKES_UMODE_T
|
|
|
|
LINUX_IOP_CREATE_TAKES_UMODE_T
|
2012-06-03 02:35:53 +01:00
|
|
|
LINUX_EXPORT_OP_ENCODE_FH_TAKES_INODES
|
2012-08-14 21:34:42 +01:00
|
|
|
LINUX_KMAP_ATOMIC_TAKES_NO_KM_TYPE
|
2012-08-14 02:36:15 +01:00
|
|
|
LINUX_DENTRY_OPEN_TAKES_PATH
|
2012-08-14 02:55:25 +01:00
|
|
|
LINUX_D_ALIAS_IS_HLIST
|
2013-03-06 01:54:50 +00:00
|
|
|
LINUX_HLIST_ITERATOR_NO_NODE
|
2012-08-14 22:28:50 +01:00
|
|
|
LINUX_IOP_I_CREATE_TAKES_BOOL
|
2012-08-14 23:08:51 +01:00
|
|
|
LINUX_DOP_D_REVALIDATE_TAKES_UNSIGNED
|
2012-08-14 23:26:24 +01:00
|
|
|
LINUX_IOP_LOOKUP_TAKES_UNSIGNED
|
2014-10-23 16:12:57 +01:00
|
|
|
LINUX_D_INVALIDATE_IS_VOID
|
2017-11-16 22:24:03 +00:00
|
|
|
LINUX_KERNEL_READ_OFFSET_IS_LAST
|
Linux: Disable syscall probes if we have keyrings
If we are building for are kernel with keyrings, and we can
guarantee that we can make use of those keyrings, then we no longer
need to probe for the syscall table at all. Change our default
behaviour so that when these two conditions are true, syscall probing
is disabled. Both --enable-linux-syscall-probing and
--disable-linux-syscall-probing can be used to override the
autodetection and force things one way or the other.
We have to check that we can use the keyrings because there was a
window in the 2.6 kernel series where keryings were available, but
the key_type_keyring definiton (which we use to create the session
keyring) wasn't exported. In that situation, we attempt to traverse
the process table and use the type of init's session keyring. This
traversal is fragile, and if it fails, keyring PAGs will be disabled.
So, we still want to be able to fall back to patching the syscall
table, if we can, in this case.
FIXES 125215
Change-Id: I11ba5c68fe37609bbd6b9c9f7e7c699334f42ebc
Reviewed-on: http://gerrit.openafs.org/2002
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Russ Allbery <rra@stanford.edu>
Tested-by: Russ Allbery <rra@stanford.edu>
2010-05-20 11:57:20 +01:00
|
|
|
|
|
|
|
dnl If we are guaranteed that keyrings will work - that is
|
|
|
|
dnl a) The kernel has keyrings enabled
|
|
|
|
dnl b) The code is new enough to give us a key_type_keyring
|
|
|
|
dnl then we just disable syscall probing unless we've been
|
|
|
|
dnl told otherwise
|
|
|
|
|
|
|
|
AS_IF([test "$enable_linux_syscall_probing" = "maybe"],
|
|
|
|
[AS_IF([test "$ac_cv_linux_keyring_support" = "yes" -a "$ac_cv_linux_exports_key_type_keyring" = "yes"],
|
|
|
|
[enable_linux_syscall_probing="no"],
|
|
|
|
[enable_linux_syscall_probing="yes"])
|
|
|
|
])
|
|
|
|
|
|
|
|
dnl Syscall probing needs a few tests of its own, and just
|
|
|
|
dnl won't work if the kernel doesn't export init_mm
|
|
|
|
AS_IF([test "$enable_linux_syscall_probing" = "yes"], [
|
|
|
|
LINUX_EXPORTS_INIT_MM
|
|
|
|
AS_IF([test "$ac_cv_linux_exports_init_mm" = "no"], [
|
|
|
|
AC_MSG_ERROR(
|
|
|
|
[Can't do syscall probing without exported init_mm])
|
|
|
|
])
|
|
|
|
LINUX_EXPORTS_SYS_CHDIR
|
|
|
|
LINUX_EXPORTS_SYS_OPEN
|
|
|
|
AC_DEFINE(ENABLE_LINUX_SYSCALL_PROBING, 1,
|
|
|
|
[define to enable syscall table probes])
|
|
|
|
])
|
2010-04-27 19:31:55 +01:00
|
|
|
|
|
|
|
dnl Packaging and SMP build
|
2010-09-29 23:21:25 +01:00
|
|
|
if test "x$with_linux_kernel_packaging" != "xyes" ; then
|
2008-07-02 00:44:14 +01:00
|
|
|
LINUX_WHICH_MODULES
|
|
|
|
else
|
|
|
|
AC_SUBST(MPS,'SP')
|
|
|
|
fi
|
2010-04-27 19:31:55 +01:00
|
|
|
|
|
|
|
dnl Syscall probing
|
2004-12-01 23:21:18 +00:00
|
|
|
if test "x$ac_cv_linux_config_modversions" = "xno" -o $AFS_SYSKVERS -ge 26; then
|
Linux: Disable syscall probes if we have keyrings
If we are building for are kernel with keyrings, and we can
guarantee that we can make use of those keyrings, then we no longer
need to probe for the syscall table at all. Change our default
behaviour so that when these two conditions are true, syscall probing
is disabled. Both --enable-linux-syscall-probing and
--disable-linux-syscall-probing can be used to override the
autodetection and force things one way or the other.
We have to check that we can use the keyrings because there was a
window in the 2.6 kernel series where keryings were available, but
the key_type_keyring definiton (which we use to create the session
keyring) wasn't exported. In that situation, we attempt to traverse
the process table and use the type of init's session keyring. This
traversal is fragile, and if it fails, keyring PAGs will be disabled.
So, we still want to be able to fall back to patching the syscall
table, if we can, in this case.
FIXES 125215
Change-Id: I11ba5c68fe37609bbd6b9c9f7e7c699334f42ebc
Reviewed-on: http://gerrit.openafs.org/2002
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Russ Allbery <rra@stanford.edu>
Tested-by: Russ Allbery <rra@stanford.edu>
2010-05-20 11:57:20 +01:00
|
|
|
AS_IF([test "$enable_linux_syscall_probing" = "yes"], [
|
|
|
|
AC_MSG_WARN([Cannot determine sys_call_table status. assuming it isn't exported])
|
|
|
|
])
|
2004-12-01 23:21:18 +00:00
|
|
|
ac_cv_linux_exports_sys_call_table=no
|
|
|
|
if test -f "$LINUX_KERNEL_PATH/include/asm/ia32_unistd.h"; then
|
|
|
|
ac_cv_linux_exports_ia32_sys_call_table=yes
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
LINUX_EXPORTS_KALLSYMS_ADDRESS
|
|
|
|
LINUX_EXPORTS_KALLSYMS_SYMBOL
|
|
|
|
LINUX_EXPORTS_SYS_CALL_TABLE
|
|
|
|
LINUX_EXPORTS_IA32_SYS_CALL_TABLE
|
|
|
|
if test "x$ac_cv_linux_exports_sys_call_table" = "xno"; then
|
|
|
|
linux_syscall_method=none
|
|
|
|
if test "x$ac_cv_linux_exports_init_mm" = "xyes"; then
|
|
|
|
linux_syscall_method=scan
|
|
|
|
if test "x$ac_cv_linux_exports_kallsyms_address" = "xyes"; then
|
|
|
|
linux_syscall_method=scan_with_kallsyms_address
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
if test "x$ac_cv_linux_exports_kallsyms_symbol" = "xyes"; then
|
|
|
|
linux_syscall_method=kallsyms_symbol
|
|
|
|
fi
|
|
|
|
if test "x$linux_syscall_method" = "xnone"; then
|
2005-07-11 20:45:47 +01:00
|
|
|
AC_MSG_WARN([no available sys_call_table access method -- guessing scan])
|
|
|
|
linux_syscall_method=scan
|
2004-12-01 23:21:18 +00:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
if test -f "$LINUX_KERNEL_PATH/include/linux/in_systm.h"; then
|
|
|
|
AC_DEFINE(HAVE_IN_SYSTM_H, 1, [define if you have in_systm.h header file])
|
|
|
|
fi
|
|
|
|
if test -f "$LINUX_KERNEL_PATH/include/linux/mm_inline.h"; then
|
|
|
|
AC_DEFINE(HAVE_MM_INLINE_H, 1, [define if you have mm_inline.h header file])
|
|
|
|
fi
|
2016-05-05 17:35:08 +01:00
|
|
|
if test "x$ac_cv_linux_func_page_get_link" = "xyes" -o "x$ac_cv_linux_func_i_put_link_takes_cookie" = "xyes"; then
|
2007-04-18 20:18:35 +01:00
|
|
|
AC_DEFINE(USABLE_KERNEL_PAGE_SYMLINK_CACHE, 1, [define if your kernel has a usable symlink cache API])
|
|
|
|
else
|
|
|
|
AC_MSG_WARN([your kernel does not have a usable symlink cache API])
|
|
|
|
fi
|
2016-05-05 17:35:08 +01:00
|
|
|
if test "x$ac_cv_linux_func_page_get_link" != "xyes" -a "x$ac_cv_linux_struct_inode_operations_has_get_link" = "xyes"; then
|
|
|
|
AC_MSG_ERROR([Your kernel does not use follow_link - not supported without symlink cache API])
|
|
|
|
exit 1
|
|
|
|
fi
|
2004-12-01 23:21:18 +00:00
|
|
|
:
|
|
|
|
fi
|
2014-12-18 13:43:22 +00:00
|
|
|
if test "x$enable_linux_d_splice_alias_extra_iput" = xyes; then
|
|
|
|
AC_DEFINE(D_SPLICE_ALIAS_LEAK_ON_ERROR, 1, [for internal use])
|
|
|
|
fi
|
2010-07-13 17:41:15 +01:00
|
|
|
dnl Linux-only, but just enable always.
|
|
|
|
AC_DEFINE(AFS_CACHE_BYPASS, 1, [define to activate cache bypassing Unix client])
|
2004-12-01 23:21:18 +00:00
|
|
|
esac
|
|
|
|
|
2010-09-28 23:37:54 +01:00
|
|
|
AC_CACHE_CHECK([if compiler has __sync_add_and_fetch],
|
|
|
|
[ac_cv_sync_fetch_and_add],
|
|
|
|
[AC_TRY_LINK(, [int var; return __sync_add_and_fetch(&var, 1);],
|
|
|
|
[ac_cv_sync_fetch_and_add=yes],
|
|
|
|
[ac_cv_sync_fetch_and_add=no])
|
|
|
|
])
|
|
|
|
AS_IF([test "$ac_cv_sync_fetch_and_add" = "yes"],
|
|
|
|
[AC_DEFINE(HAVE_SYNC_FETCH_AND_ADD, 1,
|
|
|
|
[define if your C compiler has __sync_add_and_fetch])])
|
|
|
|
|
2010-05-17 08:40:49 +01:00
|
|
|
AC_CACHE_CHECK([if struct sockaddr has sa_len field],
|
|
|
|
[ac_cv_sockaddr_len],
|
|
|
|
[AC_TRY_COMPILE( [#include <sys/types.h>
|
2002-02-16 18:23:44 +00:00
|
|
|
#include <sys/socket.h>],
|
2010-05-17 08:40:49 +01:00
|
|
|
[struct sockaddr *a; a->sa_len=0;],
|
|
|
|
[ac_cv_sockaddr_len=yes],
|
|
|
|
[ac_cv_sockaddr_len=no])
|
|
|
|
])
|
|
|
|
AS_IF([test "$ac_cv_sockaddr_len" = "yes"],
|
|
|
|
[AC_DEFINE(STRUCT_SOCKADDR_HAS_SA_LEN, 1,
|
|
|
|
[define if you struct sockaddr sa_len])])
|
|
|
|
|
2001-10-09 16:48:25 +01:00
|
|
|
if test "x${MKAFS_OSTYPE}" = "xIRIX"; then
|
|
|
|
echo Skipping library tests because they confuse Irix.
|
|
|
|
else
|
2009-07-18 19:38:22 +01:00
|
|
|
AC_SEARCH_LIBS([socket], [socket inet])
|
|
|
|
AC_SEARCH_LIBS([connect], [nsl])
|
|
|
|
AC_SEARCH_LIBS([gethostbyname], [dns nsl resolv])
|
2001-10-09 16:48:25 +01:00
|
|
|
|
2004-03-10 08:35:38 +00:00
|
|
|
dnl darwin wants it, aix hates it
|
|
|
|
AC_MSG_CHECKING(for the useability of arpa/nameser_compat.h)
|
|
|
|
AC_TRY_COMPILE([
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/socket.h>
|
|
|
|
#include <netinet/in.h>
|
|
|
|
#include <arpa/inet.h>
|
|
|
|
#include <arpa/nameser.h>
|
|
|
|
#include <arpa/nameser_compat.h>
|
|
|
|
#include <resolv.h>
|
|
|
|
], [static int i; i = 0;],
|
|
|
|
[AC_MSG_RESULT(yes)
|
2008-09-25 16:41:02 +01:00
|
|
|
AC_DEFINE(HAVE_ARPA_NAMESER_COMPAT_H, 1, [define if arpa/nameser_compat.h exists])],
|
2004-03-10 08:35:38 +00:00
|
|
|
[AC_MSG_RESULT(no)
|
|
|
|
])
|
|
|
|
|
2003-04-29 01:05:57 +01:00
|
|
|
openafs_save_libs="$LIBS"
|
|
|
|
AC_MSG_CHECKING([for res_search])
|
|
|
|
AC_FUNC_RES_SEARCH
|
|
|
|
|
2001-10-09 16:48:25 +01:00
|
|
|
if test "$ac_cv_func_res_search" = no; then
|
2003-04-29 01:05:57 +01:00
|
|
|
for lib in dns nsl resolv; do
|
|
|
|
if test "$ac_cv_func_res_search" != yes; then
|
|
|
|
LIBS="-l$lib $LIBS"
|
|
|
|
AC_FUNC_RES_SEARCH
|
|
|
|
LIBS="$openafs_save_libs"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
if test "$ac_cv_func_res_search" = yes; then
|
2009-12-24 15:14:46 +00:00
|
|
|
LIB_AFSDB="-l$lib"
|
2003-04-29 01:05:57 +01:00
|
|
|
AC_DEFINE(HAVE_RES_SEARCH, 1, [])
|
|
|
|
AC_MSG_RESULT([yes, in lib$lib])
|
|
|
|
else
|
|
|
|
AC_MSG_RESULT(no)
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
AC_DEFINE(HAVE_RES_SEARCH, 1, [])
|
|
|
|
AC_MSG_RESULT(yes)
|
|
|
|
fi
|
|
|
|
|
2001-10-09 16:48:25 +01:00
|
|
|
fi
|
2011-11-02 16:32:56 +00:00
|
|
|
XLIBS="$LIB_AFSDB $XLIBS"
|
2001-10-09 16:48:25 +01:00
|
|
|
|
2010-02-27 16:52:03 +00:00
|
|
|
AC_CHECK_RESOLV_RETRANS
|
|
|
|
|
2010-05-17 08:40:49 +01:00
|
|
|
AC_CACHE_CHECK([for setsockopt(, SOL_IP, IP_RECVERR)],
|
|
|
|
[ac_cv_setsockopt_iprecverr],
|
|
|
|
[AC_TRY_COMPILE( [
|
|
|
|
#include <sys/types.h>
|
2008-05-21 06:22:13 +01:00
|
|
|
#include <sys/socket.h>
|
|
|
|
#include <netinet/in.h>],
|
|
|
|
[int on=1;
|
2010-05-17 08:40:49 +01:00
|
|
|
setsockopt(0, SOL_IP, IP_RECVERR, &on, sizeof(on));],
|
|
|
|
[ac_cv_setsockopt_iprecverr=yes],
|
|
|
|
[ac_cv_setsockopt_iprecverr=no])])
|
|
|
|
|
|
|
|
AS_IF([test "$ac_cv_setsockopt_iprecverr" = "yes"],
|
2012-08-01 20:19:02 +01:00
|
|
|
[AC_DEFINE([HAVE_SETSOCKOPT_IP_RECVERR], [1],
|
|
|
|
[define if we can receive socket errors via IP_RECVERR])])
|
2008-05-21 06:22:13 +01:00
|
|
|
|
2001-10-09 16:48:25 +01:00
|
|
|
PTHREAD_LIBS=error
|
2006-03-09 15:27:17 +00:00
|
|
|
if test "x$MKAFS_OSTYPE" = OBSD; then
|
|
|
|
PTHREAD_LIBS="-pthread"
|
|
|
|
fi
|
2009-04-27 20:29:09 +01:00
|
|
|
if test "x$MKAFS_OSTYPE" = xDFBSD; then
|
|
|
|
PTHREAD_LIBS="-pthread"
|
|
|
|
fi
|
2006-03-09 15:27:17 +00:00
|
|
|
if test "x$PTHREAD_LIBS" = xerror; then
|
|
|
|
AC_CHECK_LIB(pthread, pthread_attr_init,
|
|
|
|
PTHREAD_LIBS="-lpthread")
|
|
|
|
fi
|
2001-10-09 16:48:25 +01:00
|
|
|
if test "x$PTHREAD_LIBS" = xerror; then
|
|
|
|
AC_CHECK_LIB(pthreads, pthread_attr_init,
|
|
|
|
PTHREAD_LIBS="-lpthreads")
|
|
|
|
fi
|
|
|
|
if test "x$PTHREAD_LIBS" = xerror; then
|
|
|
|
AC_CHECK_LIB(c_r, pthread_attr_init,
|
|
|
|
PTHREAD_LIBS="-lc_r")
|
|
|
|
fi
|
|
|
|
if test "x$PTHREAD_LIBS" = xerror; then
|
|
|
|
AC_CHECK_FUNC(pthread_attr_init, PTHREAD_LIBS="")
|
|
|
|
fi
|
2005-10-03 04:44:42 +01:00
|
|
|
if test "x$PTHREAD_LIBS" = xerror; then
|
|
|
|
# pthread_attr_init is a macro under HPUX 11.0 and 11.11
|
|
|
|
AC_CHECK_LIB(pthread, pthread_attr_destroy,
|
|
|
|
PTHREAD_LIBS="-lpthread")
|
|
|
|
fi
|
2001-10-09 16:48:25 +01:00
|
|
|
if test "x$PTHREAD_LIBS" = xerror; then
|
|
|
|
AC_MSG_WARN(*** Unable to locate working posix thread library ***)
|
|
|
|
fi
|
|
|
|
AC_SUBST(PTHREAD_LIBS)
|
|
|
|
|
2006-01-20 16:40:24 +00:00
|
|
|
HOST_CPU="$host_cpu"
|
|
|
|
|
2003-06-30 21:44:50 +01:00
|
|
|
if test "x$with_bsd_kernel_headers" != "x"; then
|
|
|
|
BSD_KERNEL_PATH="$with_bsd_kernel_headers"
|
|
|
|
else
|
|
|
|
BSD_KERNEL_PATH="/usr/src/sys"
|
|
|
|
fi
|
|
|
|
|
2004-03-10 23:01:50 +00:00
|
|
|
if test "x$with_bsd_kernel_build" != "x"; then
|
|
|
|
BSD_KERNEL_BUILD="$with_bsd_kernel_build"
|
|
|
|
else
|
|
|
|
case $AFS_SYSNAME in
|
2006-01-20 16:40:24 +00:00
|
|
|
*_fbsd_*)
|
|
|
|
BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/${HOST_CPU}/compile/GENERIC"
|
2004-03-10 23:01:50 +00:00
|
|
|
;;
|
2010-04-28 11:19:16 +01:00
|
|
|
*_nbsd*)
|
|
|
|
BSD_KERNEL_BUILD="${BSD_KERNEL_PATH}/arch/${HOST_CPU}/compile/GENERIC"
|
2004-03-10 23:01:50 +00:00
|
|
|
esac
|
|
|
|
fi
|
|
|
|
|
2001-10-09 16:48:25 +01:00
|
|
|
# Fast restart
|
2003-01-15 17:36:07 +00:00
|
|
|
if test "$enable_supergroups" = "yes"; then
|
|
|
|
AC_DEFINE(SUPERGROUPS, 1, [define if you want to have support for nested pts groups])
|
|
|
|
fi
|
|
|
|
|
2001-10-09 16:48:25 +01:00
|
|
|
if test "$enable_bitmap_later" = "yes"; then
|
2002-10-28 02:43:56 +00:00
|
|
|
AC_DEFINE(BITMAP_LATER, 1, [define if you want to salvager to check bitmasks later])
|
2001-10-09 16:48:25 +01:00
|
|
|
fi
|
|
|
|
|
2007-02-08 23:59:16 +00:00
|
|
|
if test "$enable_unix_sockets" = "yes"; then
|
|
|
|
AC_DEFINE(USE_UNIX_SOCKETS, 1, [define if you want to use UNIX sockets for fssync.])
|
|
|
|
USE_UNIX_SOCKETS="yes"
|
|
|
|
else
|
|
|
|
USE_UNIX_SOCKETS="no"
|
|
|
|
fi
|
|
|
|
AC_SUBST(USE_UNIX_SOCKETS)
|
|
|
|
|
2016-04-04 17:35:11 +01:00
|
|
|
if test "$enable_ubik_read_while_write" = "yes"; then
|
|
|
|
AC_DEFINE(UBIK_READ_WHILE_WRITE, 1, [define if you want to enable ubik read while write])
|
|
|
|
fi
|
|
|
|
|
2001-10-09 16:48:25 +01:00
|
|
|
if test "$enable_namei_fileserver" = "yes"; then
|
2002-10-28 02:43:56 +00:00
|
|
|
AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
|
2009-06-02 19:39:28 +01:00
|
|
|
VFSCK=""
|
2008-08-16 23:37:29 +01:00
|
|
|
else
|
|
|
|
if test "$enable_namei_fileserver" = "default"; then
|
|
|
|
case $host in
|
|
|
|
*-solaris2.10*)
|
|
|
|
AC_MSG_WARN(Some Solaris 10 versions are not safe with the inode fileserver. Forcing namei. Override with --disable-namei-fileserver)
|
|
|
|
AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
|
2009-06-02 19:39:28 +01:00
|
|
|
VFSCK=""
|
2008-08-16 23:37:29 +01:00
|
|
|
;;
|
|
|
|
*-solaris2.11*)
|
|
|
|
AC_MSG_WARN(Solaris 11 versions are not safe with the inode fileserver. Forcing namei. Override with --disable-namei-fileserver)
|
|
|
|
AC_DEFINE(AFS_NAMEI_ENV, 1, [define if you want to want namei fileserver])
|
2009-06-02 19:39:28 +01:00
|
|
|
VFSCK=""
|
2008-08-16 23:37:29 +01:00
|
|
|
;;
|
|
|
|
*)
|
2009-06-02 19:39:28 +01:00
|
|
|
VFSCK="vfsck"
|
2008-08-16 23:37:29 +01:00
|
|
|
;;
|
|
|
|
esac
|
2009-06-02 19:39:28 +01:00
|
|
|
else
|
|
|
|
VFSCK="vfsck"
|
2008-08-16 23:37:29 +01:00
|
|
|
fi
|
2001-10-09 16:48:25 +01:00
|
|
|
fi
|
|
|
|
|
2001-10-10 01:57:05 +01:00
|
|
|
dnl check for tivoli
|
|
|
|
AC_MSG_CHECKING(for tivoli tsm butc support)
|
|
|
|
XBSA_CFLAGS=""
|
|
|
|
if test "$enable_tivoli_tsm" = "yes"; then
|
|
|
|
XBSADIR1=/usr/tivoli/tsm/client/api/bin/xopen
|
|
|
|
XBSADIR2=/opt/tivoli/tsm/client/api/bin/xopen
|
2008-07-11 11:49:33 +01:00
|
|
|
XBSADIR3=/usr/tivoli/tsm/client/api/bin/sample
|
|
|
|
XBSADIR4=/opt/tivoli/tsm/client/api/bin/sample
|
2016-04-16 00:29:58 +01:00
|
|
|
XBSADIR5=/usr/tivoli/tsm/client/api/bin64/sample
|
|
|
|
XBSADIR6=/opt/tivoli/tsm/client/api/bin64/sample
|
2001-10-10 01:57:05 +01:00
|
|
|
|
2008-10-07 20:51:25 +01:00
|
|
|
if test -r "$XBSADIR3/dsmapifp.h"; then
|
2008-07-11 11:49:33 +01:00
|
|
|
XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR3"
|
|
|
|
XBSA_XLIBS="-ldl"
|
|
|
|
AC_MSG_RESULT([yes, $XBSA_CFLAGS])
|
|
|
|
elif test -r "$XBSADIR4/dsmapifp.h"; then
|
|
|
|
XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR4"
|
|
|
|
XBSA_XLIBS="-ldl"
|
2001-10-10 01:57:05 +01:00
|
|
|
AC_MSG_RESULT([yes, $XBSA_CFLAGS])
|
2016-04-16 00:29:58 +01:00
|
|
|
elif test -r "$XBSADIR5/dsmapifp.h"; then
|
|
|
|
XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR5"
|
|
|
|
XBSA_XLIBS="-ldl"
|
|
|
|
AC_MSG_RESULT([yes, $XBSA_CFLAGS])
|
|
|
|
elif test -r "$XBSADIR6/dsmapifp.h"; then
|
|
|
|
XBSA_CFLAGS="-Dxbsa -DNEW_XBSA -I$XBSADIR6"
|
|
|
|
XBSA_XLIBS="-ldl"
|
|
|
|
AC_MSG_RESULT([yes, $XBSA_CFLAGS])
|
2008-10-07 20:51:25 +01:00
|
|
|
elif test -r "$XBSADIR1/xbsa.h"; then
|
|
|
|
XBSA_CFLAGS="-Dxbsa -I$XBSADIR1"
|
|
|
|
XBSA_XLIBS=""
|
|
|
|
AC_MSG_RESULT([yes, $XBSA_CFLAGS])
|
|
|
|
elif test -r "$XBSADIR2/xbsa.h"; then
|
|
|
|
XBSA_CFLAGS="-Dxbsa -I$XBSADIR2"
|
|
|
|
XBSA_XLIBS=""
|
|
|
|
AC_MSG_RESULT([yes, $XBSA_CFLAGS])
|
2001-10-10 01:57:05 +01:00
|
|
|
else
|
2008-07-11 11:49:33 +01:00
|
|
|
AC_MSG_RESULT([no, missing xbsa.h and dsmapifp.h header files])
|
2001-10-10 01:57:05 +01:00
|
|
|
fi
|
|
|
|
else
|
|
|
|
AC_MSG_RESULT([no])
|
|
|
|
fi
|
|
|
|
AC_SUBST(XBSA_CFLAGS)
|
2008-07-11 11:49:33 +01:00
|
|
|
AC_SUBST(XBSA_XLIBS)
|
2015-08-01 08:58:19 +01:00
|
|
|
XLIBS="$XBSA_XLIBS $XLIBS"
|
2001-10-10 01:57:05 +01:00
|
|
|
|
2001-10-09 16:48:25 +01:00
|
|
|
dnl checks for header files.
|
|
|
|
AC_HEADER_STDC
|
|
|
|
AC_HEADER_SYS_WAIT
|
|
|
|
AC_HEADER_DIRENT
|
2011-01-03 10:40:56 +00:00
|
|
|
AC_CHECK_HEADERS([ \
|
2011-03-24 21:58:29 +00:00
|
|
|
arpa/inet.h \
|
2011-03-28 10:24:14 +01:00
|
|
|
arpa/nameser.h \
|
2011-01-03 10:40:56 +00:00
|
|
|
curses.h\
|
|
|
|
direct.h \
|
|
|
|
errno.h \
|
|
|
|
fcntl.h \
|
|
|
|
grp.h \
|
2011-03-25 10:12:08 +00:00
|
|
|
math.h \
|
2011-01-03 10:40:56 +00:00
|
|
|
mntent.h \
|
|
|
|
ncurses.h \
|
2013-01-04 19:18:40 +00:00
|
|
|
ncurses/ncurses.h \
|
2011-01-03 10:40:56 +00:00
|
|
|
netdb.h \
|
|
|
|
netinet/in.h \
|
2011-07-08 05:09:43 +01:00
|
|
|
pthread_np.h \
|
2011-03-24 15:58:19 +00:00
|
|
|
pwd.h \
|
2011-01-03 10:40:56 +00:00
|
|
|
regex.h \
|
2011-04-13 16:34:37 +01:00
|
|
|
security/pam_appl.h \
|
2011-01-03 10:40:56 +00:00
|
|
|
signal.h \
|
|
|
|
stdint.h \
|
|
|
|
stdio_ext.h \
|
|
|
|
stdlib.h \
|
|
|
|
string.h \
|
|
|
|
strings.h \
|
|
|
|
sys/bitypes.h \
|
2011-01-03 10:47:30 +00:00
|
|
|
sys/bswap.h \
|
2011-04-02 14:17:41 +01:00
|
|
|
sys/dk.h \
|
2011-01-03 10:40:56 +00:00
|
|
|
sys/fcntl.h \
|
|
|
|
sys/file.h \
|
|
|
|
sys/fs_types.h \
|
|
|
|
sys/fstyp.h \
|
|
|
|
sys/ioctl.h \
|
|
|
|
sys/ipc.h \
|
2011-04-02 14:17:41 +01:00
|
|
|
sys/lockf.h \
|
|
|
|
sys/map.h \
|
2011-01-03 10:40:56 +00:00
|
|
|
sys/mount.h \
|
|
|
|
sys/mntent.h \
|
|
|
|
sys/mnttab.h \
|
|
|
|
sys/pag.h \
|
|
|
|
sys/param.h \
|
|
|
|
sys/resource.h \
|
2011-03-25 19:36:35 +00:00
|
|
|
sys/select.h \
|
2011-01-03 10:40:56 +00:00
|
|
|
sys/statfs.h \
|
|
|
|
sys/statvfs.h \
|
|
|
|
sys/socket.h \
|
2011-03-25 17:14:26 +00:00
|
|
|
sys/sysctl.h \
|
2011-01-03 10:40:56 +00:00
|
|
|
sys/time.h \
|
2011-01-03 10:47:30 +00:00
|
|
|
sys/types.h \
|
2011-03-24 19:11:15 +00:00
|
|
|
sys/uio.h \
|
2011-01-03 10:40:56 +00:00
|
|
|
sys/un.h \
|
|
|
|
sys/vfs.h \
|
|
|
|
syslog.h \
|
|
|
|
termios.h \
|
|
|
|
time.h \
|
|
|
|
ucontext.h \
|
|
|
|
unistd.h \
|
|
|
|
windows.h \
|
|
|
|
])
|
2011-07-28 06:44:25 +01:00
|
|
|
|
|
|
|
AC_CHECK_HEADERS([resolv.h], [], [], [AC_INCLUDES_DEFAULT
|
|
|
|
#ifdef HAVE_NETINET_IN_H
|
|
|
|
# include <netinet/in.h>
|
|
|
|
#endif])
|
|
|
|
|
2011-04-23 16:28:49 +01:00
|
|
|
AC_CHECK_HEADERS([net/if.h],[],[],[AC_INCLUDES_DEFAULT
|
|
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
|
|
# include <sys/socket.h>
|
|
|
|
#endif])
|
|
|
|
|
2011-04-13 16:34:37 +01:00
|
|
|
AC_CHECK_HEADERS([netinet/if_ether.h],[],[],[AC_INCLUDES_DEFAULT
|
2011-07-28 06:44:25 +01:00
|
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
|
|
# include <sys/socket.h>
|
|
|
|
#endif
|
|
|
|
#ifdef HAVE_NETINET_IN_H
|
|
|
|
# include <netinet/in.h>
|
|
|
|
#endif
|
2011-04-13 16:34:37 +01:00
|
|
|
#ifdef HAVE_NET_IF_H
|
|
|
|
# include <net/if.h>
|
|
|
|
#endif])
|
2011-04-23 16:28:49 +01:00
|
|
|
|
2011-04-13 16:34:37 +01:00
|
|
|
AC_CHECK_HEADERS([security/pam_modules.h],[],[],[AC_INCLUDES_DEFAULT
|
|
|
|
#ifdef HAVE_SECURITY_PAM_APPL_H
|
|
|
|
# include <security/pam_appl.h>
|
|
|
|
#endif])
|
2011-01-03 10:40:56 +00:00
|
|
|
|
2008-05-21 06:22:13 +01:00
|
|
|
AC_CHECK_HEADERS(linux/errqueue.h,,,[#include <linux/types.h>])
|
2001-10-09 16:48:25 +01:00
|
|
|
|
2009-05-13 23:34:56 +01:00
|
|
|
AC_CHECK_TYPES([fsblkcnt_t],,,[
|
|
|
|
#include <sys/types.h>
|
|
|
|
#ifdef HAVE_SYS_BITYPES_H
|
|
|
|
#include <sys/bitypes.h>
|
|
|
|
#endif
|
|
|
|
#ifdef HAVE_SYS_STATFS_H
|
|
|
|
#include <sys/statfs.h>
|
|
|
|
#endif
|
|
|
|
#ifdef HAVE_SYS_STATVFS_H
|
|
|
|
#include <sys/statvfs.h>
|
|
|
|
#endif
|
|
|
|
])
|
|
|
|
|
2011-09-28 15:23:19 +01:00
|
|
|
dnl see what struct stat has for timestamps
|
|
|
|
AC_CHECK_MEMBERS([struct stat.st_ctimespec, struct stat.st_ctimensec])
|
|
|
|
|
2010-02-03 15:16:53 +00:00
|
|
|
OPENAFS_TEST_PACKAGE(libintl,[#include <libintl.h>],[-lintl],,,INTL)
|
|
|
|
|
Fix mutex assertion
RX mutexes have two mechanisms for asserting ownership of a mutex:
MUTEX_ISMINE, which returns true if the caller is the owner of the
mutex in question, and osirx_AssertMutex which fires an assertion if
the calling thread doesn't own a specified mutex.
Neither of these work with pthread mutexes on all platforms, and the
kernel support for MUTEX_ISMINE is dubious in places. Because in some
implementations, MUTEX_ISMINE tries to lock the mutex in question, a
failing call to MUTEX_ISMINE can lead to the process holding an
additional, unexpected, lock.
This patch reworks all of this, and uses the new opr mutex framework
so that we can do mutex assertions in userspace, too. We remove the
unsafe MUTEX_ISMINE macro, and replace it with MUTEX_ASSERT which
simply asserts if the specified mutex is not held by the current
thread. osirx_AssertMutex is removed as it is now redundant.
MUTEX_ASSERT will always work in kernel code.
For userspace, we provide opr_mutex_assert, which is implemented using
POSIX error checking mutexes. As error checking mutexes have a runtime
overhead, this is only available when configured with
--enable-debug-locks, the rest of the time calls to opr_mutex_assert are
no-ops.
Change-Id: I285ee2b558389fa3d63b786e4bc4420fa2126c80
Reviewed-on: http://gerrit.openafs.org/8282
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
2012-10-21 20:07:44 +01:00
|
|
|
if test "$enable_debug_locks" = yes; then
|
|
|
|
AC_DEFINE(OPR_DEBUG_LOCKS, 1, [turn on lock debugging in opr])
|
|
|
|
fi
|
|
|
|
|
2004-03-25 23:25:50 +00:00
|
|
|
if test "$ac_cv_header_security_pam_modules_h" = yes -a "$enable_pam" = yes; then
|
2016-06-09 19:04:18 +01:00
|
|
|
HAVE_PAM="yes"
|
2003-07-01 21:27:54 +01:00
|
|
|
else
|
|
|
|
HAVE_PAM="no"
|
|
|
|
fi
|
|
|
|
AC_SUBST(HAVE_PAM)
|
|
|
|
|
2004-03-25 23:25:50 +00:00
|
|
|
if test "$enable_login" = yes; then
|
|
|
|
BUILD_LOGIN="yes"
|
|
|
|
else
|
|
|
|
BUILD_LOGIN="no"
|
|
|
|
fi
|
|
|
|
AC_SUBST(BUILD_LOGIN)
|
|
|
|
|
2012-11-08 23:40:57 +00:00
|
|
|
if test "$enable_kauth" = yes; then
|
|
|
|
INSTALL_KAUTH="yes"
|
|
|
|
else
|
|
|
|
INSTALL_KAUTH="no"
|
|
|
|
fi
|
|
|
|
AC_SUBST(INSTALL_KAUTH)
|
|
|
|
|
2010-08-20 13:17:53 +01:00
|
|
|
AC_CHECK_FUNCS([ \
|
|
|
|
arc4random \
|
2016-01-06 22:06:54 +00:00
|
|
|
closelog \
|
2011-03-28 14:52:33 +01:00
|
|
|
fcntl \
|
2010-08-20 13:17:53 +01:00
|
|
|
fseeko64 \
|
|
|
|
ftello64 \
|
|
|
|
getcwd \
|
|
|
|
getegid \
|
|
|
|
geteuid \
|
|
|
|
getgid \
|
|
|
|
getuid \
|
|
|
|
getrlimit \
|
|
|
|
issetugid \
|
|
|
|
mkstemp \
|
2016-01-06 22:06:54 +00:00
|
|
|
openlog \
|
2012-11-01 18:15:27 +00:00
|
|
|
poll \
|
2010-03-15 17:42:23 +00:00
|
|
|
pread \
|
|
|
|
preadv \
|
2011-03-06 16:06:36 +00:00
|
|
|
preadv64 \
|
2010-03-15 17:42:23 +00:00
|
|
|
pwrite \
|
|
|
|
pwritev \
|
2011-03-06 16:06:36 +00:00
|
|
|
pwritev64 \
|
2010-08-20 13:17:53 +01:00
|
|
|
regcomp \
|
|
|
|
regerror \
|
|
|
|
regexec \
|
|
|
|
setitimer \
|
|
|
|
setvbuf \
|
|
|
|
sigaction \
|
|
|
|
strcasestr \
|
|
|
|
strerror \
|
2011-03-25 17:14:26 +00:00
|
|
|
sysconf \
|
|
|
|
sysctl \
|
2016-01-06 22:06:54 +00:00
|
|
|
syslog \
|
2012-02-28 13:50:33 +00:00
|
|
|
tdestroy \
|
2010-08-20 13:17:53 +01:00
|
|
|
timegm \
|
|
|
|
])
|
|
|
|
|
Add libroken as its own library
Include libroken as a library in its own right, so that the whole
of the code can benefit from it. This change purely adds libroken
for the Unix build system. It doesn't replace those pieces of
libroken in hcrypto or util, or enable it for Windows.
There is also the option of using a system-install libroken, if one is
found at configure time.
*) If --with-libroken=yes, or is not supplied than a system library
will be used if suitable. Otherwise, we'll use the internal
libroken
*) If --with-libroken=/path/to/installation then the libroken at
that path will be used. If there is no libroken there, or it
is not suitable, an error will be returned
*) If --with-libroken=internal then the internal libroken is used,
regardless of what is present on the system.
We deliberately do not provide installed headers for the internal
libroken. If other applications wish to make use of libroken, then
they should use the Heimdal one, rather than piggybacking on ours.
Change-Id: Iff01e1e17090404cc8e4783108ae8a8784170918
Reviewed-on: http://gerrit.openafs.org/3191
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
2010-10-29 12:10:16 +01:00
|
|
|
OPENAFS_ROKEN()
|
2014-09-23 23:19:09 +01:00
|
|
|
OPENAFS_HCRYPTO()
|
2015-11-24 21:39:02 +00:00
|
|
|
OPENAFS_CURSES()
|
Add libroken as its own library
Include libroken as a library in its own right, so that the whole
of the code can benefit from it. This change purely adds libroken
for the Unix build system. It doesn't replace those pieces of
libroken in hcrypto or util, or enable it for Windows.
There is also the option of using a system-install libroken, if one is
found at configure time.
*) If --with-libroken=yes, or is not supplied than a system library
will be used if suitable. Otherwise, we'll use the internal
libroken
*) If --with-libroken=/path/to/installation then the libroken at
that path will be used. If there is no libroken there, or it
is not suitable, an error will be returned
*) If --with-libroken=internal then the internal libroken is used,
regardless of what is present on the system.
We deliberately do not provide installed headers for the internal
libroken. If other applications wish to make use of libroken, then
they should use the Heimdal one, rather than piggybacking on ours.
Change-Id: Iff01e1e17090404cc8e4783108ae8a8784170918
Reviewed-on: http://gerrit.openafs.org/3191
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
2010-10-29 12:10:16 +01:00
|
|
|
OPENAFS_C_ATTRIBUTE()
|
2015-04-25 21:38:12 +01:00
|
|
|
OPENAFS_C_PRAGMA()
|
Add libroken as its own library
Include libroken as a library in its own right, so that the whole
of the code can benefit from it. This change purely adds libroken
for the Unix build system. It doesn't replace those pieces of
libroken in hcrypto or util, or enable it for Windows.
There is also the option of using a system-install libroken, if one is
found at configure time.
*) If --with-libroken=yes, or is not supplied than a system library
will be used if suitable. Otherwise, we'll use the internal
libroken
*) If --with-libroken=/path/to/installation then the libroken at
that path will be used. If there is no libroken there, or it
is not suitable, an error will be returned
*) If --with-libroken=internal then the internal libroken is used,
regardless of what is present on the system.
We deliberately do not provide installed headers for the internal
libroken. If other applications wish to make use of libroken, then
they should use the Heimdal one, rather than piggybacking on ours.
Change-Id: Iff01e1e17090404cc8e4783108ae8a8784170918
Reviewed-on: http://gerrit.openafs.org/3191
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
2010-10-29 12:10:16 +01:00
|
|
|
|
|
|
|
dnl Functions that Heimdal's libroken provides, but that we
|
|
|
|
dnl haven't found a need for yet, and so haven't imported
|
|
|
|
AC_CHECK_FUNCS([ \
|
|
|
|
chown \
|
|
|
|
fchown \
|
|
|
|
gethostname \
|
|
|
|
lstat \
|
|
|
|
inet_aton \
|
2011-04-03 10:23:56 +01:00
|
|
|
putenv \
|
Add libroken as its own library
Include libroken as a library in its own right, so that the whole
of the code can benefit from it. This change purely adds libroken
for the Unix build system. It doesn't replace those pieces of
libroken in hcrypto or util, or enable it for Windows.
There is also the option of using a system-install libroken, if one is
found at configure time.
*) If --with-libroken=yes, or is not supplied than a system library
will be used if suitable. Otherwise, we'll use the internal
libroken
*) If --with-libroken=/path/to/installation then the libroken at
that path will be used. If there is no libroken there, or it
is not suitable, an error will be returned
*) If --with-libroken=internal then the internal libroken is used,
regardless of what is present on the system.
We deliberately do not provide installed headers for the internal
libroken. If other applications wish to make use of libroken, then
they should use the Heimdal one, rather than piggybacking on ours.
Change-Id: Iff01e1e17090404cc8e4783108ae8a8784170918
Reviewed-on: http://gerrit.openafs.org/3191
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
2010-10-29 12:10:16 +01:00
|
|
|
readv \
|
2011-04-03 10:23:56 +01:00
|
|
|
setenv \
|
Add libroken as its own library
Include libroken as a library in its own right, so that the whole
of the code can benefit from it. This change purely adds libroken
for the Unix build system. It doesn't replace those pieces of
libroken in hcrypto or util, or enable it for Windows.
There is also the option of using a system-install libroken, if one is
found at configure time.
*) If --with-libroken=yes, or is not supplied than a system library
will be used if suitable. Otherwise, we'll use the internal
libroken
*) If --with-libroken=/path/to/installation then the libroken at
that path will be used. If there is no libroken there, or it
is not suitable, an error will be returned
*) If --with-libroken=internal then the internal libroken is used,
regardless of what is present on the system.
We deliberately do not provide installed headers for the internal
libroken. If other applications wish to make use of libroken, then
they should use the Heimdal one, rather than piggybacking on ours.
Change-Id: Iff01e1e17090404cc8e4783108ae8a8784170918
Reviewed-on: http://gerrit.openafs.org/3191
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
2010-10-29 12:10:16 +01:00
|
|
|
strdup \
|
|
|
|
strftime \
|
|
|
|
strndup \
|
|
|
|
strsep \
|
2011-04-03 10:23:56 +01:00
|
|
|
unsetenv \
|
Add libroken as its own library
Include libroken as a library in its own right, so that the whole
of the code can benefit from it. This change purely adds libroken
for the Unix build system. It doesn't replace those pieces of
libroken in hcrypto or util, or enable it for Windows.
There is also the option of using a system-install libroken, if one is
found at configure time.
*) If --with-libroken=yes, or is not supplied than a system library
will be used if suitable. Otherwise, we'll use the internal
libroken
*) If --with-libroken=/path/to/installation then the libroken at
that path will be used. If there is no libroken there, or it
is not suitable, an error will be returned
*) If --with-libroken=internal then the internal libroken is used,
regardless of what is present on the system.
We deliberately do not provide installed headers for the internal
libroken. If other applications wish to make use of libroken, then
they should use the Heimdal one, rather than piggybacking on ours.
Change-Id: Iff01e1e17090404cc8e4783108ae8a8784170918
Reviewed-on: http://gerrit.openafs.org/3191
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
2010-10-29 12:10:16 +01:00
|
|
|
])
|
|
|
|
|
2010-11-17 12:43:07 +00:00
|
|
|
dnl Functions that are in objects that we always build from libroken
|
|
|
|
AC_CHECK_FUNCS([ \
|
|
|
|
asprintf \
|
|
|
|
asnprintf \
|
|
|
|
vasprintf \
|
|
|
|
vasnprintf \
|
|
|
|
vsnprintf \
|
|
|
|
snprintf \
|
|
|
|
])
|
2010-10-05 01:20:32 +01:00
|
|
|
|
2010-11-17 12:43:07 +00:00
|
|
|
dnl Functions that we're going to try and get from libroken
|
2010-10-05 01:20:32 +01:00
|
|
|
AC_REPLACE_FUNCS([ \
|
Add libroken as its own library
Include libroken as a library in its own right, so that the whole
of the code can benefit from it. This change purely adds libroken
for the Unix build system. It doesn't replace those pieces of
libroken in hcrypto or util, or enable it for Windows.
There is also the option of using a system-install libroken, if one is
found at configure time.
*) If --with-libroken=yes, or is not supplied than a system library
will be used if suitable. Otherwise, we'll use the internal
libroken
*) If --with-libroken=/path/to/installation then the libroken at
that path will be used. If there is no libroken there, or it
is not suitable, an error will be returned
*) If --with-libroken=internal then the internal libroken is used,
regardless of what is present on the system.
We deliberately do not provide installed headers for the internal
libroken. If other applications wish to make use of libroken, then
they should use the Heimdal one, rather than piggybacking on ours.
Change-Id: Iff01e1e17090404cc8e4783108ae8a8784170918
Reviewed-on: http://gerrit.openafs.org/3191
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
2010-10-29 12:10:16 +01:00
|
|
|
daemon \
|
|
|
|
ecalloc \
|
|
|
|
emalloc \
|
|
|
|
erealloc \
|
2010-10-05 01:20:32 +01:00
|
|
|
err \
|
|
|
|
errx \
|
2011-03-28 14:52:33 +01:00
|
|
|
flock \
|
2014-01-11 03:17:57 +00:00
|
|
|
freeaddrinfo \
|
|
|
|
gai_strerror \
|
|
|
|
getaddrinfo \
|
2011-03-25 17:14:26 +00:00
|
|
|
getdtablesize \
|
2014-01-11 03:17:57 +00:00
|
|
|
getnameinfo \
|
Add libroken as its own library
Include libroken as a library in its own right, so that the whole
of the code can benefit from it. This change purely adds libroken
for the Unix build system. It doesn't replace those pieces of
libroken in hcrypto or util, or enable it for Windows.
There is also the option of using a system-install libroken, if one is
found at configure time.
*) If --with-libroken=yes, or is not supplied than a system library
will be used if suitable. Otherwise, we'll use the internal
libroken
*) If --with-libroken=/path/to/installation then the libroken at
that path will be used. If there is no libroken there, or it
is not suitable, an error will be returned
*) If --with-libroken=internal then the internal libroken is used,
regardless of what is present on the system.
We deliberately do not provide installed headers for the internal
libroken. If other applications wish to make use of libroken, then
they should use the Heimdal one, rather than piggybacking on ours.
Change-Id: Iff01e1e17090404cc8e4783108ae8a8784170918
Reviewed-on: http://gerrit.openafs.org/3191
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
2010-10-29 12:10:16 +01:00
|
|
|
getopt \
|
2010-10-05 01:20:32 +01:00
|
|
|
getprogname \
|
2011-04-03 16:31:56 +01:00
|
|
|
gettimeofday \
|
2014-08-01 14:13:43 +01:00
|
|
|
inet_ntop \
|
|
|
|
inet_pton \
|
2011-04-03 16:23:13 +01:00
|
|
|
localtime_r \
|
2010-12-01 17:42:23 +00:00
|
|
|
mkstemp \
|
2011-11-03 18:40:37 +00:00
|
|
|
setenv \
|
2012-04-18 23:25:33 +01:00
|
|
|
setprogname \
|
Add libroken as its own library
Include libroken as a library in its own right, so that the whole
of the code can benefit from it. This change purely adds libroken
for the Unix build system. It doesn't replace those pieces of
libroken in hcrypto or util, or enable it for Windows.
There is also the option of using a system-install libroken, if one is
found at configure time.
*) If --with-libroken=yes, or is not supplied than a system library
will be used if suitable. Otherwise, we'll use the internal
libroken
*) If --with-libroken=/path/to/installation then the libroken at
that path will be used. If there is no libroken there, or it
is not suitable, an error will be returned
*) If --with-libroken=internal then the internal libroken is used,
regardless of what is present on the system.
We deliberately do not provide installed headers for the internal
libroken. If other applications wish to make use of libroken, then
they should use the Heimdal one, rather than piggybacking on ours.
Change-Id: Iff01e1e17090404cc8e4783108ae8a8784170918
Reviewed-on: http://gerrit.openafs.org/3191
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
2010-10-29 12:10:16 +01:00
|
|
|
strcasecmp \
|
|
|
|
strlcat \
|
|
|
|
strnlen \
|
2010-10-05 01:20:32 +01:00
|
|
|
strlcpy \
|
2010-11-23 11:31:27 +00:00
|
|
|
strsep \
|
2011-04-08 16:12:34 +01:00
|
|
|
tdelete \
|
|
|
|
tfind \
|
|
|
|
tsearch \
|
|
|
|
twalk \
|
2011-11-03 18:40:37 +00:00
|
|
|
unsetenv \
|
2010-10-05 01:20:32 +01:00
|
|
|
verr \
|
|
|
|
verrx \
|
2010-11-16 19:04:30 +00:00
|
|
|
vsyslog \
|
2010-10-05 01:20:32 +01:00
|
|
|
vwarn \
|
|
|
|
vwarnx \
|
|
|
|
warn \
|
|
|
|
warnx \
|
|
|
|
])
|
|
|
|
|
|
|
|
dnl Headers that we're going to try and get from libroken
|
|
|
|
AC_CHECK_HEADERS([ \
|
|
|
|
err.h \
|
2011-04-08 16:12:34 +01:00
|
|
|
search.h \
|
2010-10-05 01:20:32 +01:00
|
|
|
])
|
|
|
|
|
Add libroken as its own library
Include libroken as a library in its own right, so that the whole
of the code can benefit from it. This change purely adds libroken
for the Unix build system. It doesn't replace those pieces of
libroken in hcrypto or util, or enable it for Windows.
There is also the option of using a system-install libroken, if one is
found at configure time.
*) If --with-libroken=yes, or is not supplied than a system library
will be used if suitable. Otherwise, we'll use the internal
libroken
*) If --with-libroken=/path/to/installation then the libroken at
that path will be used. If there is no libroken there, or it
is not suitable, an error will be returned
*) If --with-libroken=internal then the internal libroken is used,
regardless of what is present on the system.
We deliberately do not provide installed headers for the internal
libroken. If other applications wish to make use of libroken, then
they should use the Heimdal one, rather than piggybacking on ours.
Change-Id: Iff01e1e17090404cc8e4783108ae8a8784170918
Reviewed-on: http://gerrit.openafs.org/3191
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
2010-10-29 12:10:16 +01:00
|
|
|
AC_CHECK_DECLS([h_errno], [], [], [
|
|
|
|
#include <sys/types.h>
|
|
|
|
#ifdef HAVE_NETDB_H
|
|
|
|
#include <netdb.h>
|
|
|
|
#endif
|
|
|
|
])
|
|
|
|
|
|
|
|
AC_HEADER_TIME
|
|
|
|
|
2010-10-05 01:20:32 +01:00
|
|
|
ROKEN_HEADERS=
|
|
|
|
AS_IF([test "$ac_cv_header_err_h" != "yes" ],
|
Add libroken as its own library
Include libroken as a library in its own right, so that the whole
of the code can benefit from it. This change purely adds libroken
for the Unix build system. It doesn't replace those pieces of
libroken in hcrypto or util, or enable it for Windows.
There is also the option of using a system-install libroken, if one is
found at configure time.
*) If --with-libroken=yes, or is not supplied than a system library
will be used if suitable. Otherwise, we'll use the internal
libroken
*) If --with-libroken=/path/to/installation then the libroken at
that path will be used. If there is no libroken there, or it
is not suitable, an error will be returned
*) If --with-libroken=internal then the internal libroken is used,
regardless of what is present on the system.
We deliberately do not provide installed headers for the internal
libroken. If other applications wish to make use of libroken, then
they should use the Heimdal one, rather than piggybacking on ours.
Change-Id: Iff01e1e17090404cc8e4783108ae8a8784170918
Reviewed-on: http://gerrit.openafs.org/3191
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
2010-10-29 12:10:16 +01:00
|
|
|
[ROKEN_HEADERS="$ROKEN_HEADERS \$(TOP_INCDIR)/err.h"],
|
2010-10-05 01:20:32 +01:00
|
|
|
[])
|
|
|
|
AC_SUBST(ROKEN_HEADERS)
|
|
|
|
|
2011-01-03 10:47:30 +00:00
|
|
|
dnl Stuff that's harder ...
|
|
|
|
AC_MSG_CHECKING([for bswap16])
|
|
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([
|
|
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
|
|
#include <sys/types.h>
|
|
|
|
#endif
|
|
|
|
#ifdef HAVE_SYS_BSWAP_H
|
|
|
|
#include <sys/bswap.h>
|
|
|
|
#endif
|
|
|
|
],
|
|
|
|
[short a, b; b = bswap16(a); ])],
|
|
|
|
[AC_MSG_RESULT(yes)
|
|
|
|
AC_DEFINE(HAVE_BSWAP16, 1, [Define to 1 if you have the bswap16 function])
|
|
|
|
],
|
|
|
|
[AC_MSG_RESULT(no)])
|
|
|
|
|
|
|
|
AC_MSG_CHECKING([for bswap32])
|
|
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([#ifdef HAVE_SYS_TYPES_H
|
|
|
|
#include <sys/types.h>
|
|
|
|
#endif
|
|
|
|
#ifdef HAVE_SYS_BSWAP_H
|
|
|
|
#include <sys/bswap.h>
|
|
|
|
#endif
|
|
|
|
],
|
|
|
|
[int a, b; b = bswap32(a); ])],
|
|
|
|
[AC_MSG_RESULT(yes)
|
|
|
|
AC_DEFINE(HAVE_BSWAP32, 1, [Define to 1 if you have the bswap32 function])
|
|
|
|
],
|
|
|
|
[AC_MSG_RESULT(no)])
|
|
|
|
|
2011-02-14 19:53:11 +00:00
|
|
|
case $AFS_SYSNAME in
|
|
|
|
*hp_ux* | *hpux*)
|
|
|
|
AC_MSG_WARN([Some versions of HP-UX have a buggy positional I/O implementation. Forcing no positional I/O.])
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
AC_MSG_CHECKING([for positional I/O])
|
|
|
|
if test "$ac_cv_func_pread" = "yes" && \
|
|
|
|
test "$ac_cv_func_pwrite" = "yes"; then
|
|
|
|
AC_DEFINE(HAVE_PIO, 1, [define if you have pread() and pwrite()])
|
|
|
|
AC_MSG_RESULT(yes)
|
|
|
|
else
|
|
|
|
AC_MSG_RESULT(no)
|
|
|
|
fi
|
|
|
|
AC_MSG_CHECKING([for vectored positional I/O])
|
2011-03-06 16:06:36 +00:00
|
|
|
AS_IF([test "$ac_cv_func_preadv" = "yes" -a \
|
|
|
|
"$ac_cv_func_pwritev" = "yes" -a \
|
|
|
|
"$ac_cv_func_preadv64" = "yes" -a \
|
|
|
|
"$ac_cv_func_pwritev64" = "yes"],
|
|
|
|
[AC_DEFINE(HAVE_PIOV, 1, [define if you have preadv() and pwritev()])
|
|
|
|
AC_MSG_RESULT(yes)],
|
|
|
|
[AC_MSG_RESULT(no)])
|
2011-02-14 19:53:11 +00:00
|
|
|
;;
|
|
|
|
esac
|
2010-03-15 17:42:23 +00:00
|
|
|
|
2003-10-10 16:08:31 +01:00
|
|
|
AC_MSG_CHECKING([for POSIX regex library])
|
|
|
|
if test "$ac_cv_header_regex_h" = "yes" && \
|
|
|
|
test "$ac_cv_func_regcomp" = "yes" && \
|
|
|
|
test "$ac_cv_func_regexec" = "yes" && \
|
|
|
|
test "$ac_cv_func_regerror" = "yes"; then
|
|
|
|
AC_DEFINE(HAVE_POSIX_REGEX, 1, [define if you have POSIX regex library])
|
|
|
|
AC_MSG_RESULT(yes)
|
|
|
|
else
|
|
|
|
AC_MSG_RESULT(no)
|
|
|
|
fi
|
2006-08-02 18:47:29 +01:00
|
|
|
|
2011-07-08 05:09:43 +01:00
|
|
|
dnl Look for "non-portable" pthreads functions.
|
|
|
|
save_LIBS="$LIBS"
|
|
|
|
LIBS="$LIBS $PTHREAD_LIBS"
|
|
|
|
AC_CHECK_FUNCS([ \
|
|
|
|
pthread_set_name_np \
|
|
|
|
pthread_setname_np \
|
|
|
|
])
|
2011-07-11 11:31:41 +01:00
|
|
|
|
|
|
|
dnl Sadly, there are three different versions of pthread_setname_np.
|
|
|
|
dnl Try to cater for all of them.
|
|
|
|
if test "$ac_cv_func_pthread_setname_np" = "yes" ; then
|
|
|
|
AC_MSG_CHECKING([for signature of pthread_setname_np])
|
|
|
|
AC_TRY_COMPILE([
|
|
|
|
#include <pthread.h>
|
|
|
|
#ifdef HAVE_PTHREAD_NP_H
|
|
|
|
#include <pthread_np.h>
|
|
|
|
#endif
|
|
|
|
], [pthread_setname_np(pthread_self(), "test", (void *)0)], [
|
|
|
|
AC_MSG_RESULT([three arguments])
|
|
|
|
pthread_setname_np_args=3], [
|
|
|
|
AC_TRY_COMPILE([
|
|
|
|
#include <pthread.h>
|
|
|
|
#ifdef HAVE_PTHREAD_NP_H
|
|
|
|
#include <pthread_np.h>
|
|
|
|
#endif
|
|
|
|
], [pthread_setname_np(pthread_self(), "test")], [
|
|
|
|
AC_MSG_RESULT([two arguments])
|
|
|
|
pthread_setname_np_args=2], [
|
|
|
|
AC_TRY_COMPILE([
|
|
|
|
#include <pthread.h>
|
|
|
|
#ifdef HAVE_PTHREAD_NP_H
|
|
|
|
#include <pthread_np.h>
|
|
|
|
#endif
|
|
|
|
], [pthread_setname_np("test")], [
|
|
|
|
AC_MSG_RESULT([one argument])
|
|
|
|
pthread_setname_np_args=1], [pthread_setname_np_args=0])
|
|
|
|
])
|
|
|
|
])
|
|
|
|
AC_DEFINE_UNQUOTED([PTHREAD_SETNAME_NP_ARGS], $pthread_setname_np_args, [Number of arguments required by pthread_setname_np() function])
|
|
|
|
fi
|
2011-07-08 05:09:43 +01:00
|
|
|
LIBS="$save_LIBS"
|
|
|
|
|
2011-09-07 14:55:47 +01:00
|
|
|
openafs_cv_saved_CFLAGS="$CFLAGS"
|
|
|
|
CFLAGS="$CFLAGS $XCFLAGS_NOCHECKING"
|
|
|
|
|
2006-08-02 18:47:29 +01:00
|
|
|
AC_TYPE_SIGNAL
|
2010-04-07 21:45:39 +01:00
|
|
|
OPENAFS_RETSIGTYPE
|
2009-09-29 15:26:23 +01:00
|
|
|
AC_CHECK_SIZEOF(void *)
|
2010-01-04 22:57:30 +00:00
|
|
|
AC_CHECK_SIZEOF(unsigned long long)
|
|
|
|
AC_CHECK_SIZEOF(unsigned long)
|
|
|
|
AC_CHECK_SIZEOF(unsigned int)
|
2009-08-28 22:03:44 +01:00
|
|
|
AC_TYPE_INTPTR_T
|
|
|
|
AC_TYPE_UINTPTR_T
|
2010-05-25 03:34:53 +01:00
|
|
|
AC_TYPE_SSIZE_T
|
|
|
|
AC_CHECK_TYPE([sig_atomic_t],[],
|
|
|
|
[AC_DEFINE([sig_atomic_t], [int],
|
|
|
|
[Define to int if <signal.h> does not define.])],
|
2006-08-02 18:47:29 +01:00
|
|
|
[#include <sys/types.h>
|
|
|
|
#include <signal.h>])
|
2010-05-25 03:34:53 +01:00
|
|
|
AC_CHECK_TYPE([socklen_t],[],
|
|
|
|
[AC_DEFINE([socklen_t], [int],
|
|
|
|
[Define to int if <sys/socket.h> does not define.])],
|
2010-05-16 22:56:13 +01:00
|
|
|
[#include <sys/types.h>
|
|
|
|
#include <sys/socket.h>])
|
2010-05-04 19:04:59 +01:00
|
|
|
AC_CHECK_TYPES(off64_t)
|
Add libroken as its own library
Include libroken as a library in its own right, so that the whole
of the code can benefit from it. This change purely adds libroken
for the Unix build system. It doesn't replace those pieces of
libroken in hcrypto or util, or enable it for Windows.
There is also the option of using a system-install libroken, if one is
found at configure time.
*) If --with-libroken=yes, or is not supplied than a system library
will be used if suitable. Otherwise, we'll use the internal
libroken
*) If --with-libroken=/path/to/installation then the libroken at
that path will be used. If there is no libroken there, or it
is not suitable, an error will be returned
*) If --with-libroken=internal then the internal libroken is used,
regardless of what is present on the system.
We deliberately do not provide installed headers for the internal
libroken. If other applications wish to make use of libroken, then
they should use the Heimdal one, rather than piggybacking on ours.
Change-Id: Iff01e1e17090404cc8e4783108ae8a8784170918
Reviewed-on: http://gerrit.openafs.org/3191
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
2010-10-29 12:10:16 +01:00
|
|
|
AC_CHECK_TYPES([ssize_t], [], [], [#include <unistd.h>])
|
|
|
|
AC_CHECK_TYPES([struct winsize], [], [], [
|
2010-11-04 15:30:31 +00:00
|
|
|
#ifdef HAVE_TERMIOS_H
|
|
|
|
# include <termios.h>
|
|
|
|
#else
|
|
|
|
# include <sys/termios.h>
|
|
|
|
#endif
|
Add libroken as its own library
Include libroken as a library in its own right, so that the whole
of the code can benefit from it. This change purely adds libroken
for the Unix build system. It doesn't replace those pieces of
libroken in hcrypto or util, or enable it for Windows.
There is also the option of using a system-install libroken, if one is
found at configure time.
*) If --with-libroken=yes, or is not supplied than a system library
will be used if suitable. Otherwise, we'll use the internal
libroken
*) If --with-libroken=/path/to/installation then the libroken at
that path will be used. If there is no libroken there, or it
is not suitable, an error will be returned
*) If --with-libroken=internal then the internal libroken is used,
regardless of what is present on the system.
We deliberately do not provide installed headers for the internal
libroken. If other applications wish to make use of libroken, then
they should use the Heimdal one, rather than piggybacking on ours.
Change-Id: Iff01e1e17090404cc8e4783108ae8a8784170918
Reviewed-on: http://gerrit.openafs.org/3191
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
2010-10-29 12:10:16 +01:00
|
|
|
#include <sys/ioctl.h>])
|
|
|
|
AC_CHECK_TYPES([sa_family_t, socklen_t, struct sockaddr,
|
|
|
|
struct sockaddr_storage],
|
|
|
|
[], [], [
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/socket.h>
|
|
|
|
])
|
|
|
|
AC_CHECK_TYPES([sa_family_t], [], [], [
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/socket.h>
|
|
|
|
])
|
|
|
|
AC_CHECK_TYPES([struct addrinfo], [], [], [
|
|
|
|
#include <sys/types.h>
|
|
|
|
#ifdef HAVE_NETDB_H
|
|
|
|
#include <netdb.h>
|
|
|
|
#endif
|
|
|
|
])
|
2010-11-17 12:43:07 +00:00
|
|
|
AC_CHECK_TYPES([long long], [], [], [])
|
Add libroken as its own library
Include libroken as a library in its own right, so that the whole
of the code can benefit from it. This change purely adds libroken
for the Unix build system. It doesn't replace those pieces of
libroken in hcrypto or util, or enable it for Windows.
There is also the option of using a system-install libroken, if one is
found at configure time.
*) If --with-libroken=yes, or is not supplied than a system library
will be used if suitable. Otherwise, we'll use the internal
libroken
*) If --with-libroken=/path/to/installation then the libroken at
that path will be used. If there is no libroken there, or it
is not suitable, an error will be returned
*) If --with-libroken=internal then the internal libroken is used,
regardless of what is present on the system.
We deliberately do not provide installed headers for the internal
libroken. If other applications wish to make use of libroken, then
they should use the Heimdal one, rather than piggybacking on ours.
Change-Id: Iff01e1e17090404cc8e4783108ae8a8784170918
Reviewed-on: http://gerrit.openafs.org/3191
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
2010-10-29 12:10:16 +01:00
|
|
|
|
2002-11-16 03:12:30 +00:00
|
|
|
AC_SIZEOF_TYPE(long)
|
2001-10-09 16:48:25 +01:00
|
|
|
|
2011-09-07 14:55:47 +01:00
|
|
|
CFLAGS="$openafs_cv_saved_CFLAGS"
|
|
|
|
|
2011-04-28 20:56:11 +01:00
|
|
|
RRA_HEADER_PAM_CONST
|
2010-01-14 23:56:49 +00:00
|
|
|
|
2002-10-01 11:50:26 +01:00
|
|
|
|
2001-10-09 16:48:25 +01:00
|
|
|
dnl Directory PATH handling
|
|
|
|
if test "x$enable_transarc_paths" = "xyes" ; then
|
|
|
|
afsconfdir=${afsconfdir=/usr/afs/etc}
|
|
|
|
viceetcdir=${viceetcdir=/usr/vice/etc}
|
|
|
|
afskerneldir=${afskerneldir=${viceetcdir}}
|
|
|
|
afssrvbindir=${afssrvbindir=/usr/afs/bin}
|
|
|
|
afssrvsbindir=${afssrvsbindir=/usr/afs/bin}
|
|
|
|
afssrvlibexecdir=${afssrvlibexecdir=/usr/afs/bin}
|
|
|
|
afsdbdir=${afsdbdir=/usr/afs/db}
|
|
|
|
afslogsdir=${afslogsdir=/usr/afs/logs}
|
|
|
|
afslocaldir=${afslocaldir=/usr/afs/local}
|
|
|
|
afsbackupdir=${afsbackupdir=/usr/afs/backup}
|
|
|
|
afsbosconfigdir=${afsbosconfigdir=/usr/afs/local}
|
2009-07-15 07:22:00 +01:00
|
|
|
afsdatadir=${afsdatadir=/usr/vice/etc}
|
2001-10-11 22:34:50 +01:00
|
|
|
else
|
|
|
|
afsconfdir=${afsconfdir='${sysconfdir}/openafs/server'}
|
|
|
|
viceetcdir=${viceetcdir='${sysconfdir}/openafs'}
|
|
|
|
afskerneldir=${afskerneldir='${libdir}/openafs'}
|
|
|
|
afssrvbindir=${afssrvbindir='${bindir}'}
|
|
|
|
afssrvsbindir=${afssrvsbindir='${sbindir}'}
|
|
|
|
afssrvlibexecdir=${afssrvlibexecdir='${libexecdir}/openafs'}
|
|
|
|
afsdbdir=${afsdbdir='${localstatedir}/openafs/db'}
|
|
|
|
afslogsdir=${afslogsdir='${localstatedir}/openafs/logs'}
|
|
|
|
afslocaldir=${afslocaldir='${localstatedir}/openafs'}
|
|
|
|
afsbackupdir=${afsbackupdir='${localstatedir}/openafs/backup'}
|
|
|
|
afsbosconfigdir=${afsbosconfigdir='${sysconfdir}/openafs'}
|
2009-07-15 07:22:00 +01:00
|
|
|
afsdatadir=${afsdatadir='${datadir}/openafs'}
|
2001-10-09 16:48:25 +01:00
|
|
|
fi
|
|
|
|
AC_SUBST(afsconfdir)
|
|
|
|
AC_SUBST(viceetcdir)
|
|
|
|
AC_SUBST(afskerneldir)
|
|
|
|
AC_SUBST(afssrvbindir)
|
|
|
|
AC_SUBST(afssrvsbindir)
|
|
|
|
AC_SUBST(afssrvlibexecdir)
|
|
|
|
AC_SUBST(afsdbdir)
|
|
|
|
AC_SUBST(afslogsdir)
|
|
|
|
AC_SUBST(afslocaldir)
|
|
|
|
AC_SUBST(afsbackupdir)
|
|
|
|
AC_SUBST(afsbosconfigdir)
|
2009-07-15 07:22:00 +01:00
|
|
|
AC_SUBST(afsdatadir)
|
2001-10-09 16:48:25 +01:00
|
|
|
|
|
|
|
if test "x$enable_kernel_module" = "xyes"; then
|
|
|
|
ENABLE_KERNEL_MODULE=libafs
|
|
|
|
fi
|
|
|
|
|
2008-04-02 21:47:27 +01:00
|
|
|
if test "x$enable_pthreaded_ubik" = "xyes"; then
|
|
|
|
ENABLE_PTHREADED_UBIK=yes
|
|
|
|
fi
|
|
|
|
|
2009-06-02 19:39:28 +01:00
|
|
|
AC_SUBST(VFSCK)
|
2001-10-09 16:48:25 +01:00
|
|
|
AC_SUBST(AFS_SYSNAME)
|
2002-01-18 18:45:27 +00:00
|
|
|
AC_SUBST(AFS_PARAM_COMMON)
|
2001-10-09 16:48:25 +01:00
|
|
|
AC_SUBST(ENABLE_KERNEL_MODULE)
|
2008-04-02 21:47:27 +01:00
|
|
|
AC_SUBST(ENABLE_PTHREADED_UBIK)
|
2001-10-09 16:48:25 +01:00
|
|
|
AC_SUBST(LIB_AFSDB)
|
|
|
|
AC_SUBST(LINUX_KERNEL_PATH)
|
2008-10-12 20:01:58 +01:00
|
|
|
AC_SUBST(LINUX_KERNEL_BUILD)
|
2006-01-20 16:40:24 +00:00
|
|
|
AC_SUBST(HOST_CPU)
|
2003-06-30 21:44:50 +01:00
|
|
|
AC_SUBST(BSD_KERNEL_PATH)
|
2004-03-10 23:01:50 +00:00
|
|
|
AC_SUBST(BSD_KERNEL_BUILD)
|
2001-10-09 16:48:25 +01:00
|
|
|
AC_SUBST(LINUX_VERSION)
|
|
|
|
AC_SUBST(MKAFS_OSTYPE)
|
2001-10-18 01:06:58 +01:00
|
|
|
AC_SUBST(TOP_OBJDIR)
|
2001-10-09 16:48:25 +01:00
|
|
|
AC_SUBST(TOP_SRCDIR)
|
|
|
|
AC_SUBST(TOP_INCDIR)
|
|
|
|
AC_SUBST(TOP_LIBDIR)
|
|
|
|
AC_SUBST(DEST)
|
|
|
|
AC_SUBST(DARWIN_INFOFILE)
|
2001-11-01 05:05:26 +00:00
|
|
|
AC_SUBST(IRIX_BUILD_IP35)
|
2009-05-27 21:44:24 +01:00
|
|
|
AC_SUBST(HTML_XSL)
|
|
|
|
AC_SUBST(XSLTPROC)
|
2011-06-03 00:00:47 +01:00
|
|
|
AC_SUBST(DOCBOOK2PDF)
|
2011-06-08 14:40:17 +01:00
|
|
|
AC_SUBST(DOCBOOK_STYLESHEETS)
|
2001-10-09 16:48:25 +01:00
|
|
|
|
2010-04-08 20:50:18 +01:00
|
|
|
OPENAFS_FUSE
|
2009-08-14 22:32:54 +01:00
|
|
|
OPENAFS_SWIG
|
2001-11-01 04:59:26 +00:00
|
|
|
|
2002-10-16 05:58:13 +01:00
|
|
|
TOP_SRCDIR="${srcdir}/src"
|
|
|
|
dnl
|
|
|
|
dnl If we're using ./configure, need a more reasonable TOP_SRCDIR, since relative links don't work everywhere
|
|
|
|
dnl
|
|
|
|
case $TOP_SRCDIR in
|
|
|
|
/*)
|
|
|
|
;;
|
|
|
|
*)
|
2003-02-13 06:51:14 +00:00
|
|
|
TOP_SRCDIR=`cd $TOP_SRCDIR; pwd`
|
|
|
|
;;
|
2002-10-16 05:58:13 +01:00
|
|
|
esac
|
|
|
|
|
|
|
|
TOP_OBJDIR="${SRCDIR_PARENT}"
|
|
|
|
TOP_INCDIR="${SRCDIR_PARENT}/include"
|
|
|
|
TOP_LIBDIR="${SRCDIR_PARENT}/lib"
|
|
|
|
if test "${DEST}x" = "x"; then
|
|
|
|
DEST="${SRCDIR_PARENT}/${AFS_SYSNAME}/dest"
|
|
|
|
fi
|
|
|
|
|
2012-10-03 12:47:06 +01:00
|
|
|
if test "x$with_crosstools_dir" != "x"; then
|
|
|
|
if test -f "$with_crosstools_dir/rxgen" -a -f "$with_crosstools_dir/compile_et" -a -f "$with_crosstools_dir/config"; then
|
|
|
|
COMPILE_ET_PATH=$with_crosstools_dir/compile_et
|
|
|
|
CONFIGTOOL_PATH=$with_crosstools_dir/config
|
|
|
|
RXGEN_PATH=$with_crosstools_dir/rxgen
|
|
|
|
else
|
|
|
|
AC_MSG_ERROR(Tools not found in $with_crosstools_dir)
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
COMPILE_ET_PATH="${SRCDIR_PARENT}/src/comerr/compile_et"
|
|
|
|
CONFIGTOOL_PATH="${SRCDIR_PARENT}/src/config/config"
|
|
|
|
RXGEN_PATH="${SRCDIR_PARENT}/src/rxgen/rxgen"
|
|
|
|
fi
|
|
|
|
AC_SUBST(COMPILE_ET_PATH)
|
|
|
|
AC_SUBST(CONFIGTOOL_PATH)
|
|
|
|
AC_SUBST(RXGEN_PATH)
|
|
|
|
|
2003-07-02 03:03:17 +01:00
|
|
|
HELPER_SPLINT="${TOP_SRCDIR}/helper-splint.sh"
|
|
|
|
HELPER_SPLINTCFG="${TOP_SRCDIR}/splint.cfg"
|
|
|
|
AC_SUBST(HELPER_SPLINT)
|
|
|
|
AC_SUBST(HELPER_SPLINTCFG)
|
|
|
|
|
2005-06-22 19:35:20 +01:00
|
|
|
mkdir -p ${TOP_OBJDIR}/src/JAVA/libjafs
|
2002-10-16 05:58:13 +01:00
|
|
|
|
2010-07-13 21:53:22 +01:00
|
|
|
dnl Check to see if crypt lives in a different library
|
|
|
|
AC_CHECK_LIB(crypt, crypt, LIB_crypt="-lcrypt")
|
|
|
|
AC_SUBST(LIB_crypt)
|
2010-08-04 19:17:03 +01:00
|
|
|
|
|
|
|
dnl Check to see if the compiler support labels in structs
|
|
|
|
AC_MSG_CHECKING(for label support in structs)
|
|
|
|
AC_TRY_COMPILE([], [
|
|
|
|
extern void osi_UFSOpen(void);
|
|
|
|
struct labeltest {
|
|
|
|
void (*open) (void);
|
|
|
|
};
|
|
|
|
struct labeltest struct_labeltest = {
|
|
|
|
.open = osi_UFSOpen,
|
|
|
|
}
|
|
|
|
],
|
|
|
|
[AC_MSG_RESULT(yes)
|
|
|
|
AC_DEFINE(HAVE_STRUCT_LABEL_SUPPORT, 1, [Define to 1 if your compiler supports labels in structs.])
|
|
|
|
],
|
|
|
|
[AC_MSG_RESULT(no)
|
|
|
|
])
|
|
|
|
|
2010-08-20 00:14:49 +01:00
|
|
|
AC_MSG_CHECKING([checking for dirfd])
|
|
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
|
|
|
|
#ifdef HAVE_DIRENT_H
|
|
|
|
#include <dirent.h>
|
|
|
|
#endif
|
|
|
|
]],
|
|
|
|
[[DIR *d = 0; dirfd(d);]])],
|
|
|
|
[ac_rk_have_dirfd=yes], [ac_rk_have_dirfd=no])
|
|
|
|
if test "$ac_rk_have_dirfd" = "yes" ; then
|
|
|
|
AC_DEFINE_UNQUOTED(HAVE_DIRFD, 1, [have a dirfd function/macro])
|
|
|
|
fi
|
|
|
|
AC_MSG_RESULT($ac_rk_have_dirfd)
|
|
|
|
|
|
|
|
OPENAFS_HAVE_STRUCT_FIELD(DIR, dd_fd, [#include <sys/types.h>
|
|
|
|
#ifdef HAVE_DIRENT_H
|
|
|
|
#include <dirent.h>
|
|
|
|
#endif])
|
|
|
|
|
2014-01-10 17:33:18 +00:00
|
|
|
OPENAFS_HAVE_STRUCT_FIELD(struct rusage, ru_idrss,
|
|
|
|
[#ifdef HAVE_SYS_RESOURCE_H
|
|
|
|
#include <sys/resource.h>
|
|
|
|
#endif])
|
|
|
|
|
opr: Add UUID handling functions
Add a set of functions to the opr library to handle creating and
manipulating UUIDs.
The opr_uuid_t type is held as a 16 octet character string, which
comprises the UUID encoded into network byte order. This is the
primary form for manipulating UUIDs with this library, as it avoids
any nbo/hbo problems.
For applications which require raw access to the UUID components,
the opr_uuid_unpacked structure is provided, and
opr_uuid_pack/opr_uuid_unpack can be used to convert to and from
this format.
Finally, functions to print the UUID as a string, and parse a UUID
from a string, are provided. When printing, we use the standard UUID
format of 000000-0000-0000-0000-00000000. However, the afsUUID library
used to print UUIDs as 000000-0000-0000-00-00-00000000, so we also
accept this format.
Change-Id: I78ef79b7ab8ae15fb955c6495118722875c94f8d
Reviewed-on: http://gerrit.openafs.org/7977
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
2012-07-17 16:50:59 +01:00
|
|
|
dnl Check for UUID library
|
|
|
|
AC_CHECK_HEADERS([uuid/uuid.h])
|
|
|
|
AC_CHECK_LIB(uuid, uuid_generate, LIBS_uuid="-luuid")
|
|
|
|
AC_CHECK_FUNCS([uuid_generate])
|
2001-10-09 16:48:25 +01:00
|
|
|
])
|
2010-11-21 22:01:53 +00:00
|
|
|
|
opr: Add UUID handling functions
Add a set of functions to the opr library to handle creating and
manipulating UUIDs.
The opr_uuid_t type is held as a 16 octet character string, which
comprises the UUID encoded into network byte order. This is the
primary form for manipulating UUIDs with this library, as it avoids
any nbo/hbo problems.
For applications which require raw access to the UUID components,
the opr_uuid_unpacked structure is provided, and
opr_uuid_pack/opr_uuid_unpack can be used to convert to and from
this format.
Finally, functions to print the UUID as a string, and parse a UUID
from a string, are provided. When printing, we use the standard UUID
format of 000000-0000-0000-0000-00000000. However, the afsUUID library
used to print UUIDs as 000000-0000-0000-00-00-00000000, so we also
accept this format.
Change-Id: I78ef79b7ab8ae15fb955c6495118722875c94f8d
Reviewed-on: http://gerrit.openafs.org/7977
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
2012-07-17 16:50:59 +01:00
|
|
|
|