vshost-util-vserver

Build script and sources for util-vserver.
git clone https://ccx.te2000.cz/git/vshost-util-vserver
Log | Files | Refs

ensc_syscallnr.m4 (2359B)


      1 dnl $Id$
      2 
      3 dnl Copyright (C) 2004, 2005, 2009
      4 dnl     Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
      5 dnl
      6 dnl This program is free software; you can redistribute it and/or modify
      7 dnl it under the terms of the GNU General Public License as published by
      8 dnl the Free Software Foundation; version 2 and/or 3 of the License.
      9 dnl
     10 dnl This program is distributed in the hope that it will be useful,
     11 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 dnl GNU General Public License for more details.
     14 dnl
     15 dnl You should have received a copy of the GNU General Public License
     16 dnl along with this program; if not, write to the Free Software
     17 dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
     18 
     19 dnl Usage: ENSC_SYSCALLNR(<syscall>,<default>[,<fallback>])
     20 
     21 AC_DEFUN([ENSC_SYSCALLNR],
     22 [
     23 	AC_REQUIRE([AC_PROG_CPP])
     24 	AC_REQUIRE([AC_PROG_EGREP])
     25 
     26 	AC_CACHE_CHECK([for number of syscall '$1'], [ensc_cv_value_syscall_$1],
     27 	[
     28 		AC_LANG_PUSH(C)
     29 		AC_LANG_CONFTEST([AC_LANG_SOURCE([
     30 #ifdef ENSC_SYSCALL_FALLBACK
     31 #  include ENSC_SYSCALL_FALLBACK
     32 #else
     33 #  include <asm/unistd.h>
     34 #endif
     35 #ifdef __NR_$1
     36 ensc_syscall_tmp_nr=__NR_$1;
     37 ensc_syscall_tmp_src=ENSC_MARK
     38 #endif
     39 ])])
     40 		ensc_syscall_tmp_nr=
     41 		ensc_syscall_tmp_src=
     42 		test x"$ensc_syscall_tmp_nr" != x || \
     43 			eval $($CPP $CPPFLAGS -D ENSC_MARK='glibc'				      conftest.c | $EGREP '^ensc_syscall_tmp_(nr=[[1-9]][[0-9]]*;|src=.*)$')
     44 		test x"$ensc_syscall_tmp_nr" != x -o x'$3' = x || \
     45 			eval $($CPP $CPPFLAGS -D ENSC_MARK='fallback' -D ENSC_SYSCALL_FALLBACK='"$3"' conftest.c | $EGREP '^ensc_syscall_tmp_(nr=[[1-9]][[0-9]]*;|src=.*)$')
     46 		test "$ensc_syscall_tmp_nr" || {
     47 			ensc_syscall_tmp_nr=$2
     48 			ensc_syscall_tmp_src=default
     49 		}
     50 
     51 		if test x"$ensc_syscall_tmp_nr" = x; then
     52 			AC_MSG_ERROR(
     53 [Can not determine value of __NR_$1; please verify your glibc/kernelheaders, and/or set CPPFLAGS='-D__NR_$1=<value>' environment when calling configure.])
     54 		fi
     55 		AC_LANG_POP
     56 
     57 		ensc_cv_value_syscall_$1="$ensc_syscall_tmp_nr/$ensc_syscall_tmp_src"
     58 	])
     59 
     60 	ensc_syscall_tmp_nr=${ensc_cv_value_syscall_$1%/*}
     61 	ensc_syscall_tmp_src=${ensc_cv_value_syscall_$1#*/}
     62 
     63 	if test x"$ensc_syscall_tmp_src" != x'glibc'; then
     64 		AC_DEFINE_UNQUOTED(ENSC_SYSCALL__NR_$1, $ensc_syscall_tmp_nr, [The number of the $1 syscall])
     65 	fi
     66 ])