X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=m4%2Fensc_syscall.m4;h=66d99124cdf28f7b8d25a377c53e3a91a75f2c67;hb=ec4370f7ebd7fb0ce7f002f5bf2c74f03acd3ec1;hp=c346f9279e232a837306fa01dcb86a1ddb31d202;hpb=06e1018272502e1d15d6d8f32b80fa96420785b8;p=util-vserver.git diff --git a/m4/ensc_syscall.m4 b/m4/ensc_syscall.m4 index c346f92..66d9912 100644 --- a/m4/ensc_syscall.m4 +++ b/m4/ensc_syscall.m4 @@ -1,4 +1,4 @@ -dnl $Id: ensc_syscall.m4,v 1.2.2.1 2004/02/05 03:52:45 ensc Exp $ +dnl $Id: ensc_syscall.m4 2194 2005-10-28 17:51:48Z ensc $ dnl Copyright (C) 2004 Enrico Scholz dnl @@ -17,9 +17,30 @@ dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. dnl Usage: ENSC_SYSCALL +AC_DEFUN([ENSC_SYSCALL_ALTERNATIVE], +[ + AC_MSG_CHECKING([whether to use alternative _syscallX macros]) + AC_ARG_ENABLE([alternative-syscalls], + [AC_HELP_STRING([--disable-alternative-syscalls], + [do not use the alternative _syscallX macros + provided by Herbert Poetzl (default: use them)])], + [case $enableval in + (yes|no) ensc_use_alternative_syscall_macros=$enableval;; + (*) AC_MSG_ERROR(['$enableval' is not a valid value for '--disable-alternative-syscalls']);; + esac], + [ensc_use_alternative_syscall_macros=yes]) + + case $ensc_use_alternative_syscall_macros in + (yes) AC_DEFINE(ENSC_USE_ALTERNATIVE_SYSCALL_MACROS, 1, [Use alternative _syscallX macros]);; + esac + + AC_MSG_RESULT([$ensc_use_alternative_syscall_macros]) +]) + AC_DEFUN([ENSC_SYSCALL], [ - AC_REQUIRE([ENSC_KERNEL_HEADERS]) + AC_REQUIRE([ENSC_SYSCALL_ALTERNATIVE]) + AC_MSG_CHECKING([for syscall(2) invocation method]) AC_ARG_WITH([syscall], [AC_HELP_STRING([--with-syscall=METHOD], @@ -29,16 +50,14 @@ AC_DEFUN([ENSC_SYSCALL], AC_MSG_RESULT([$with_syscall]) case x"$with_syscall" in - xauto) + (xauto) AC_CACHE_CHECK([which syscall(2) invocation works], [ensc_cv_test_syscall], [ - old_CPPFLAGS=$CPPFLAGS - CPPFLAGS="-I$ensc_cv_path_kernelheaders" AC_LANG_PUSH(C) - AC_COMPILE_IFELSE([ -#include -#include + AC_COMPILE_IFELSE(AC_LANG_SOURCE([ +#include "$srcdir/lib/syscall-wrap.h" #include + #define __NR_foo0 300 #define __NR_foo1 301 #define __NR_foo2 302 @@ -60,28 +79,31 @@ int main() { foo4(1,2,3,4) || \ foo5(1,2,3,4,5); } - ], + ]), [ensc_cv_test_syscall=fast], [ensc_cv_test_syscall=traditional]) AC_LANG_POP - CPPFLAGS=$old_CPPFLAGS ]) with_syscall=$ensc_cv_test_syscall ;; - xfast|xtraditional) + (xfast|xtraditional) ;; *) AC_MSG_ERROR(['$with_syscall' is not a valid value for '--with-syscall']) ;; esac + if test x"$with_syscall $ensc_use_alternative_syscall_macros" = 'xfast yes'; then + with_syscall='alternative' + fi + if test x"$with_syscall" = xtraditional; then AC_DEFINE(ENSC_SYSCALL_TRADITIONAL, 1, [Define to 1 when the fast syscall(2) invocation does not work]) fi AH_BOTTOM([ -#if defined(__pic__) && defined(__i386) && !defined(ENSC_SYSCALL_TRADITIONAL) +#if defined(__pic__) && defined(__i386) && !defined(ENSC_SYSCALL_TRADITIONAL) && !defined(ENSC_USE_ALTERNATIVE_SYSCALL_MACROS) # define ENSC_SYSCALL_TRADITIONAL 1 #endif]) ])