Formerly unix/configure.~4~
[kopensolaris-gnu/glibc.git] / sysdeps / unix / configure.in
1 # configure fragment for Unix-based systems.
2 # This file is sourced by the top-level configure script.  Note that we use
3 # the prefix `unix_' on all shell variables here, to avoid conflicting with
4 # any variables the top-level script might be using.
5
6 sysincludedir=/usr/include # XXX
7
8 # Find the <syscall.h> file we will be using, or something like it.
9 unix_syscall_h=
10 for unix_dir in $sysnames; do
11   if [ -r $sysdep_dir/$unix_dir/syscall.h ]; then
12     unix_syscall_h=$sysdep_dir/$unix_dir/syscall.h
13     break
14   fi
15 done
16 # XXX This list of possibilities duplicates the list in Makefile.
17 test -z "$unix_syscall_h" && for try in syscall.h sys/syscall.h \
18                                         sys.s sys/sys.s sys.S sys/sys.S; do
19   if [ -r $sysincludedir/$try ]; then
20     unix_syscall_h=$sysincludedir/$try
21     break
22   fi
23 done
24
25 test -n "$unix_syscall_h" && {
26
27 # These several functions are system calls on Unix systems which have them.
28 # The details of these calls are universal enough that if a system's
29 # <syscall.h> defines the system call number, we know that the simple
30 # system call implementations in unix/common will be sufficient.
31
32 for unix_function in \
33   __dup2 __lstat __mkdir __rmdir __readlink __symlink rename swapon \
34   __getpgrp __setpgrp __access __select __getgroups/__getgrps setgroups
35 do
36
37   # $unix_function  =>  $unix_syscall           $unix_srcname
38   #     CALL                    CALL                    CALL
39   #     __CALL                  CALL                    __CALL
40   #     __CALL/NAME             CALL                    NAME
41   unix_srcname=
42   eval "unix_syscall=`echo $unix_function | \
43                        sed -e '/^__/s/^__//' \
44                            -e 's@/\(.*\)$@ unix_srcname=\1@'`"
45   test -z "$unix_srcname" && unix_srcname=$unix_function
46
47   unix_implementor=none
48   for unix_dir in $sysnames; do
49     if [ -r $sysdep_dir/$unix_dir/${unix_srcname}.c -o \
50          -r $sysdep_dir/$unix_dir/${unix_srcname}.S ]; then
51       unix_implementor=$unix_dir
52       break
53     fi
54   done
55
56   # mkdir and rmdir have implementations in unix/sysv, but
57   # the simple syscall versions are preferable if available.
58   test $unix_syscall = mkdir -o $unix_syscall = rmdir && \
59   test $unix_implementor = unix/sysv && \
60     unix_implementor=generic
61
62   case $unix_implementor in
63   none|stub|generic|posix)
64     # The chosen implementation of ${unix_syscall} is a boring one.
65     # We want to use the unix/common implementation instead iff
66     # ${unix_syscall} appears in <syscall.h>.
67     echo checking for ${unix_syscall} system call
68     if grep "[  _]${unix_syscall}[      ]" $unix_syscall_h >/dev/null; then
69       # It does seem to be present in <syscall.h>.
70       echo "#include <sysdeps/unix/common/${unix_srcname}.S>" \
71       > ${unix_srcname}.S
72       test -n "$verbose" && echo "      wrote ${unix_srcname}.S"
73     fi
74   ;;
75   *) ;;
76   esac
77
78 done
79
80 }