diff options
Diffstat (limited to 'sysdeps/unix/configure.in')
-rw-r--r-- | sysdeps/unix/configure.in | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/sysdeps/unix/configure.in b/sysdeps/unix/configure.in new file mode 100644 index 0000000000..85bc3d1c2c --- /dev/null +++ b/sysdeps/unix/configure.in @@ -0,0 +1,136 @@ +sinclude(./aclocal.m4)dnl Autoconf lossage. +GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. +# Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc. +# This file is part of the GNU C Library. + +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Library General Public License +# as published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. + +# The GNU C Library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. + +# You should have received a copy of the GNU Library General Public +# License along with the GNU C Library; see the file COPYING.LIB. If +# not, write to the Free Software Foundation, Inc., 675 Mass Ave, +# Cambridge, MA 02139, USA. + +dnl configure fragment for Unix-based systems. This is processed by Autoconf, +dnl but we just use the AC_MSG_* macros. This file is sourced by the +dnl top-level configure script. Note that we use the prefix `unix_' on all +dnl shell variables here, to avoid conflicting with any variables the +dnl top-level script might be using. + +sysincludedir=/usr/include # XXX + +# Find the <syscall.h> file we will be using, or something like it. +unix_found= +for unix_dir in $sysnames; do + if test -r $sysdep_dir/$unix_dir/syscall.h; then + unix_found=$unix_dir + break + fi +done +if test $unix_found = stub; then + # XXX This list of possibilities duplicates the list in Makefile. + for try in sys.s sys/sys.s sys.S sys/sys.S syscall.h sys/syscall.h; do + if test -r $sysincludedir/$try; then + unix_syscall_h=$sysincludedir/$try + break + fi + done +else + unix_syscall_h=$sysdep_dir/$unix_dir/syscall.h +fi + +test -n "$unix_syscall_h" && { + +# Where to put the .S files we write. +if test "`pwd`" = "`(cd $srcdir; pwd)`"; then + unix_generated_dirpfx=sysdeps/unix/ +else + # We are running in a separate build directory. + unix_generated_dirpfx= +fi + +# This variable will collect the names of the files we create. +unix_generated= +unix_srcs= +unix_dests= + +# These several functions are system calls on Unix systems which have them. +# The details of these calls are universal enough that if a system's +# <syscall.h> defines the system call number, we know that the simple +# system call implementations in unix/common will be sufficient. + +for unix_function in \ + dup2 lstat mkdir rmdir readlink symlink rename swapon \ + access select getgroups setgroups \ + getitimer setitimer \ + getdomainname/getdomain=bsd/bsd4.4 \ + setdomainname/setdomain=bsd/bsd4.4 +do + + # $unix_function => $unix_syscall $unix_srcname + # CALL CALL CALL + # CALL/NAME CALL NAME + unix_srcname= + unix_srcdir=common + eval "unix_syscall=`echo $unix_function | \ + sed -e 's@=\(.*\)$@ unix_srcdir=\1@' \ + -e 's@/\(.*\)$@ unix_srcname=\1@'`" + test -z "$unix_srcname" && unix_srcname=$unix_function + + unix_implementor=none + for unix_dir in $sysnames; do + if test -r $sysdep_dir/$unix_dir/${unix_srcname}.c || + test -r $sysdep_dir/$unix_dir/${unix_srcname}.S || + test -r $sysdep_dir/$unix_dir/${unix_srcname}.s; then + unix_implementor=$unix_dir + break + fi + done + + # mkdir and rmdir have implementations in unix/sysv, but + # the simple syscall versions are preferable if available. + test $unix_syscall = mkdir -o $unix_syscall = rmdir && \ + test $unix_implementor = unix/sysv && \ + unix_implementor=generic + + case $unix_implementor in + none|stub|generic|posix) + # The chosen implementation of ${unix_syscall} is a boring one. + # We want to use the unix/common implementation instead iff + # ${unix_syscall} appears in <syscall.h>. + AC_MSG_CHECKING(for ${unix_syscall} system call) +changequote(,)dnl We need to use [ and ] for real now. + if grep -i "[ _]${unix_syscall}[ ]" $unix_syscall_h >/dev/null +changequote([,])dnl Back to Autoconf land. + then + # It does seem to be present in <syscall.h>. + AC_MSG_RESULT(yes) + unix_dests="$unix_dests ${unix_generated_dirpfx}${unix_srcname}.S" + unix_srcs="$unix_srcs sysdeps/unix/${unix_srcdir}/${unix_srcname}.S" + unix_generated="$unix_generated $unix_generated_dirpfx${unix_srcname}.S" + else + AC_MSG_RESULT(no) + fi + ;; + *) ;; + esac + +done + +# Autoconf magic in the top-level configure.in causes config.status to +# actually make the links. +libc_link_dests="$libc_link_dests $unix_dests" +libc_link_sources="$libc_link_sources $unix_srcs" + +# Store the list of files we created in config.make; Makefile uses it. +test -n "$unix_generated" && config_vars="$config_vars +unix-generated := \$(addprefix \$(objpfx),${unix_generated})" + +} |