X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fm4%2Fensc_syscallnr.m4;h=aaa1959e5009587e98fbb2e9cf25c75e24a32bcb;hb=cce0d3d757dba4c849b7b7e907e3e2cf26f8b76b;hp=1ab1e7e97dee797ee76597011ab87ed33e080228;hpb=00cabd29e93f030755b3c3685a6f5967667fcec9;p=util-vserver.git diff --git a/util-vserver/m4/ensc_syscallnr.m4 b/util-vserver/m4/ensc_syscallnr.m4 index 1ab1e7e..aaa1959 100644 --- a/util-vserver/m4/ensc_syscallnr.m4 +++ b/util-vserver/m4/ensc_syscallnr.m4 @@ -19,37 +19,44 @@ dnl Usage: ENSC_SYSCALLNR(,) AC_DEFUN([ENSC_SYSCALLNR], [ - AC_REQUIRE([ENSC_KERNEL_HEADERS]) + AC_REQUIRE([AC_PROG_CPP]) AC_REQUIRE([AC_PROG_EGREP]) + AC_REQUIRE([ENSC_KERNEL_HEADERS]) - AC_CACHE_CHECK([for syscall '$1'], [ensc_cv_value_syscall_$1], + AC_CACHE_CHECK([for number of syscall '$1'], [ensc_cv_value_syscall_$1], [ AC_LANG_PUSH(C) - AC_EGREP_CPP(ensc_cv_value_syscall_$1=auto, [ -#include -#ifdef __NR_$1 -ensc_cv_value_syscall_$1=auto -#endif -], - [ensc_cv_value_syscall_$1=auto], [ - AC_LANG_CONFTEST([ + AC_LANG_CONFTEST([ #include #ifdef __NR_$1 -ensc_cv_value_syscall_$1=__NR_$1 -#else -ensc_cv_value_syscall_$1=$2 +ensc_syscall_tmp_nr=__NR_$1; +ensc_syscall_tmp_src=ENSC_MARK #endif ]) - eval $($CPP $CPPFLAGS -I$ensc_cv_path_kernelheaders conftest.c | $EGREP -x 'ensc_cv_value_syscall_$1=[[1-9]][[0-9]]*') - if test x"$ensc_cv_value_syscall_$1" = x; then - AC_MSG_ERROR( -[Can not determine value of __NR_$1; please verify your glibc/kernelheaders, and/or set CPPFLAGS='-D=__NR_$1=' environment when calling configure.]) - fi - ]) + ensc_syscall_tmp_nr= + ensc_syscall_tmp_src= + test "$ensc_syscall_tmp_nr" || \ + eval $($CPP $CPPFLAGS -D ENSC_MARK='glibc' conftest.c | $EGREP '^ensc_syscall_tmp_(nr=[[1-9]][[0-9]]*;|src=.*)$') + test "$ensc_syscall_tmp_nr" || \ + eval $($CPP $CPPFLAGS -D ENSC_MARK='kernel' -I $ensc_cv_path_kernelheaders conftest.c | $EGREP '^ensc_syscall_tmp_(nr=[[1-9]][[0-9]]*;|src=.*)$') + test "$ensc_syscall_tmp_nr" || { + ensc_syscall_tmp_nr=$2 + ensc_syscall_tmp_src=default + } + + if test x"$ensc_syscall_tmp_nr" = x; then + AC_MSG_ERROR( +[Can not determine value of __NR_$1; please verify your glibc/kernelheaders, and/or set CPPFLAGS='-D__NR_$1=' environment when calling configure.]) + fi AC_LANG_POP + + ensc_cv_value_syscall_$1="$ensc_syscall_tmp_nr/$ensc_syscall_tmp_src" ]) - if test "$ensc_cv_value_syscall_$1" != xauto; then - AC_DEFINE_UNQUOTED(ENSC_SYSCALL__NR_$1, $ensc_cv_value_syscall_$1, [The number of the $1 syscall]) + ensc_syscall_tmp_nr=${ensc_cv_value_syscall_$1%/*} + ensc_syscall_tmp_src=${ensc_cv_value_syscall_$1#*/} + + if test x"$ensc_syscall_tmp_src" != x'glibc'; then + AC_DEFINE_UNQUOTED(ENSC_SYSCALL__NR_$1, $ensc_syscall_tmp_nr, [The number of the $1 syscall]) fi ])