blob: ec7a3a786114a4b7c2e3533ce957c772997d6e83 [file] [log] [blame]
#!/bin/sh
# This is a quick'n'dirty hack to make the program behave correctly
# under different systems.
# Example:
# when using libc5, (f)trucate's offset argument type is size_t with
# libc5, but it's off_t with libc6 (glibc2).
#
# Uhm... time to learn GNU autoconf :-)
#
# $Id: /var/cvsroot/gentoo-src/portage/src/sandbox-1.1/Attic/create-localdecls,v 1.11.2.1 2004/10/22 16:53:30 carpaski Exp $
OUTFILE='localdecls.h'
# if your arch needs to dlopen() glibc, add it here separated by space :]
BROKEN_RTLD_ARCHLIST="mips"
echo '/* This file is automatically generated *' > $OUTFILE
echo ' * Modify create-localdecls instead of this */' >> $OUTFILE
echo >> $OUTFILE
echo '#ifndef __LOCALDECLS_H_' >> $OUTFILE
echo '#define __LOCALDECLS_H_' >> $OUTFILE
echo >> $OUTFILE
###
###
###
echo -n 'Checking truncate argument type... '
if grep -q 'truncate.*size_t' /usr/include/unistd.h ; then
echo 'size_t'
echo '#define TRUNCATE_T size_t' >> $OUTFILE
else
echo 'off_t' # At least, I HOPE it's off_t :-)
echo '#define TRUNCATE_T off_t' >> $OUTFILE
fi
###
###
###
echo -n 'Checking libc version... '
gcc -Wall -o libctest libctest.c
VERSION=`ldd libctest | grep libc\\.so | grep -v 'ld-uClibc' | awk '{print $1}'`
echo $VERSION
echo "#define LIBC_VERSION \"$VERSION\"" >> $OUTFILE
if test "$VERSION" = 'libc.so.5' ; then
echo '#define BROKEN_RTLD_NEXT' >> $OUTFILE
echo '#define LIBC 5' >> $OUTFILE
else
# for the arch's that need to dlopen() libc to fetch real funcs!
# 16.12.02 -Torgeir Hansen <torgeir@trenger.ro>
MYARCH=`/bin/uname -m`
for x in $BROKEN_RTLD_ARCHLIST; do
if [ $x = $MYARCH ]; then
echo '#define BROKEN_RTLD_NEXT' >> $OUTFILE
fi
done
fi
if test "$VERSION" = 'libc.so.6' ; then
echo -n 'Checking glibc subversion...'
tmp="$(ldd libctest 2>/dev/null | grep libc.so 2>/dev/null | head -n 1)"
LibcPath=`expr "$tmp" : '[^/]*\(/[^ ]*\)'`
tmp="`strings $LibcPath | grep -i 'c library'`"
OsLibcMajor=`expr "$tmp" : '.* \([0-9][0-9]*\)'`
OsLibcMinor=`expr "$tmp" : '.* [0-9][0-9]*\.\([0-9][0-9]*\)'`
echo " ${OsLibcMajor}.${OsLibcMinor}"
case "$OsLibcMajor" in
2)
# 2 is the glibc version
case "$OsLibcMinor" in
0)
echo '#define GLIBC_MINOR 0' >> $OUTFILE
SUBVERSION='glibc-2.0' ;;
1)
echo '#define GLIBC_MINOR 1' >> $OUTFILE
SUBVERSION='glibc-2.1' ;;
2)
echo '#define GLIBC_MINOR 2' >> $OUTFILE
SUBVERSION='glibc-2.2' ;;
3)
echo '#define GLIBC_MINOR 3' >> $OUTFILE
SUBVERSION='glibc-2.3' ;;
*)
echo 'Treated as glibc >= 2.1 (finger crossed)'
echo '#define GLIBC_MINOR 1' >> $OUTFILE
SUBVERSION='glibc-2.1' ;;
esac
;;
esac
fi
rm libctest
echo '
#ifdef PATH_MAX
# define SB_PATH_MAX PATH_MAX * 2
# if (SB_PATH_MAX >= INT_MAX) || (SB_PATH_MAX < PATH_MAX)
# undef SB_PATH_MAX
# define SB_PATH_MAX PATH_MAX + 25
# if (SB_PATH_MAX >= INT_MAX) || (SB_PATH_MAX < PATH_MAX)
# error SB_PATH_MAX too big!
# endif
# endif
#else
# error PATH_MAX not defined!
#endif' >> $OUTFILE
echo >> $OUTFILE
echo '#endif' >> $OUTFILE
echo