363 lines
9.0 KiB
Bash
Executable File
363 lines
9.0 KiB
Bash
Executable File
#!/bin/sh
|
|
# Configure script for util-linux - aeb, 990205
|
|
#
|
|
# We need to find out the following things:
|
|
#
|
|
# 1. For mount/nfsmount.c: is inet_aton() available?
|
|
# 2. For fdisk/fdisksunlabel.c: is there a <scsi/scsi.h>?
|
|
# For fdisk/fdisk.c: is there a <linux/blkpg.h>?
|
|
# 3. For sys-utils/ipcs.c: do we need __KERNEL__ and <linux/linkage.h>?
|
|
# 4. For sys-utils/cytune.c: do we need <linux/tqueue.h>?
|
|
# 5. For sys-utils/kbd_rate.c: does <linux/kd.h> exist?
|
|
# 6. For cfdisk, setterm, more, ul: do we have ncurses? How installed?
|
|
# For more: do we have libtermcap?
|
|
# 7. For chfn, chsh, login, newgrp, passwd: do we need -lcrypt?
|
|
# 8. For sln: does static compilation work?
|
|
# 9. For lib/nls.h: do we have <locale.h>?
|
|
# 10. For lib/nls.h: do we have <libintl.h> and gettext()?
|
|
# 11. For xgettext: does it take the option --foreign-user?
|
|
# 12. For cal.c: do we have <langinfo.h>?
|
|
# 13. For err.c: do we have __progname?
|
|
# 14. For script.c: do we have <pty.h> and openpty()?
|
|
|
|
if test "$RANDOM" = "$RANDOM"; then
|
|
# Plain old Bourne shell.
|
|
echo checking for gcc
|
|
test -z "$CC" -a -n "`gcc 2>&1`" && CC="gcc -O"
|
|
else
|
|
# ksh, bash or zsh. ksh and zsh write "command not found" to stderr.
|
|
echo checking for gcc
|
|
test -z "$CC" && type gcc && CC="gcc -O"
|
|
fi
|
|
|
|
CC=${CC-cc}
|
|
CFLAGS=${CFLAGS-"-O"}
|
|
DEFS=
|
|
LIBS=
|
|
compile='$CC $CFLAGS $DEFS conftest.c -o conftest $LIBS >/dev/null 2>&1'
|
|
static_compile='$CC -static $DEFS conftest.c -o conftest $LIBS >/dev/null 2>&1'
|
|
|
|
rm -f make_include defines.h conftest.c conftest
|
|
|
|
#
|
|
# 1. For mount/nfsmount.c: is inet_aton() available?
|
|
#
|
|
echo "
|
|
#include <sys/socket.h>
|
|
#include <netinet/in.h>
|
|
#include <arpa/inet.h>
|
|
main(int a, char **v){
|
|
if (a == -1) /* false */
|
|
inet_aton((const char *) 0, (struct in_addr *) 0);
|
|
exit(0);
|
|
}
|
|
" > conftest.c
|
|
eval $compile
|
|
if test -s conftest && ./conftest 2>/dev/null; then
|
|
echo "#define HAVE_inet_aton" >> defines.h
|
|
echo "You have inet_aton()"
|
|
else
|
|
echo "You don't have inet_aton()"
|
|
fi
|
|
rm -f conftest conftest.c
|
|
|
|
#
|
|
# 2. For fdisk/fdisksunlabel.c: is <scsi/scsi.h> available?
|
|
# Some kernels have <scsi/scsi.h> that uses u_char
|
|
# But maybe there is already a typedef. Let us use a #define
|
|
#
|
|
echo "
|
|
#define u_char unsigned char
|
|
#include <scsi/scsi.h>
|
|
#undef u_char
|
|
main(){ exit(0); }
|
|
" > conftest.c
|
|
eval $compile
|
|
if test -s conftest && ./conftest 2>/dev/null; then
|
|
echo "#define HAVE_scsi_h" >> defines.h
|
|
echo "You have <scsi/scsi.h>"
|
|
else
|
|
echo "You don't have <scsi/scsi.h>"
|
|
fi
|
|
rm -f conftest conftest.c
|
|
|
|
#
|
|
# 2A. For fdisk/fdisk.c: is <linux/blkpg.h> available?
|
|
#
|
|
echo "
|
|
#include <linux/blkpg.h>
|
|
main(){ exit(0); }
|
|
" > conftest.c
|
|
eval $compile
|
|
if test -s conftest && ./conftest 2>/dev/null; then
|
|
echo "#define HAVE_blkpg_h" >> defines.h
|
|
echo "You have <linux/blkpg.h>"
|
|
else
|
|
echo "You don't have <linux/blkpg.h>"
|
|
fi
|
|
rm -f conftest conftest.c
|
|
|
|
#
|
|
# 3. ipcs.c includes <sys/shm.h> and family
|
|
# Do we need __KERNEL__ and asmlinkage for SHM_DEST?
|
|
#
|
|
echo "
|
|
#include <sys/shm.h>
|
|
main(){ int i=SHM_DEST; exit(0); }
|
|
" > conftest.c
|
|
eval $compile
|
|
if test -s conftest && ./conftest 2>/dev/null; then
|
|
echo "You don't need <linux/linkage.h>"
|
|
else
|
|
echo "#define NEED_linkage_h" >> defines.h
|
|
echo "You need <linux/linkage.h>"
|
|
fi
|
|
rm -f conftest conftest.c
|
|
|
|
#
|
|
# 4. cytune.c may need struct tq_struct
|
|
#
|
|
echo "
|
|
#include <sys/types.h>
|
|
#include <linux/cyclades.h>
|
|
main(){ exit(0); }
|
|
" > conftest.c
|
|
eval $compile
|
|
if test -s conftest && ./conftest 2>/dev/null; then
|
|
echo "You don't need <linux/tqueue.h>"
|
|
else
|
|
echo "#define NEED_tqueue_h" >> defines.h
|
|
echo "You need <linux/tqueue.h>"
|
|
fi
|
|
rm -f conftest conftest.c
|
|
|
|
#
|
|
# 5. Does <linux/kd.h> exist?
|
|
#
|
|
echo "
|
|
#include <linux/kd.h>
|
|
main(){ exit(0); }
|
|
" > conftest.c
|
|
eval $compile
|
|
if test -s conftest && ./conftest 2>/dev/null; then
|
|
echo "#define HAVE_kd_h" >> defines.h
|
|
echo "You have <linux/kd.h>"
|
|
else
|
|
echo "You don't have <linux/kd.h>"
|
|
fi
|
|
rm -f conftest conftest.c
|
|
|
|
#
|
|
# 6. How is [n]curses installed?
|
|
#
|
|
test_curses_h=0
|
|
have_ncurses=1
|
|
if [ -f /usr/include/ncurses/curses.h ]; then
|
|
echo "HAVE_NCURSES=yes" >> make_include
|
|
echo "CURSESFLAGS=-I/usr/include/ncurses -DNCH=0" >> make_include
|
|
echo "You have ncurses. Using <ncurses/curses.h>."
|
|
elif [ -f /usr/include/ncurses.h ]; then
|
|
echo "HAVE_NCURSES=yes" >> make_include
|
|
echo "CURSESFLAGS=-DNCH=1" >> make_include
|
|
echo "You have ncurses. Using <ncurses.h>."
|
|
elif [ -f /usr/local/include/ncurses.h ]; then
|
|
echo "HAVE_NCURSES=yes" >> make_include
|
|
echo "CURSESFLAGS=-I/usr/local/include -DNCH=1" >> make_include
|
|
echo "You have ncurses. Using /usr/local/include/ncurses.h."
|
|
elif [ -f /usr/include/curses.h ]; then
|
|
test_curses_h=1
|
|
else
|
|
have_ncurses=0
|
|
fi
|
|
#
|
|
# If we found a curses.h, test whether it is ncurses
|
|
# (It should define __NCURSES_H and NCURSES_VERSION and NCURSES_CONST ...)
|
|
#
|
|
if [ $test_curses_h = 1 ]; then
|
|
echo "
|
|
#include <curses.h>
|
|
main(){ char *c = NCURSES_VERSION; exit(0); }
|
|
" > conftest.c
|
|
eval $compile
|
|
if test -s conftest && ./conftest 2>/dev/null; then
|
|
echo "HAVE_NCURSES=yes" >> make_include
|
|
echo "CURSESFLAGS=-DNCH=0" >> make_include
|
|
echo "You have ncurses. Using <curses.h>."
|
|
else
|
|
have_ncurses=0
|
|
fi
|
|
rm -f conftest conftest.c
|
|
fi
|
|
|
|
if [ $have_ncurses = 0 ]; then
|
|
echo "HAVE_NCURSES=no" >> make_include
|
|
echo "You don't have ncurses - I will not make ul and setterm."
|
|
else
|
|
echo "LIBCURSES=-lncurses" >> make_include
|
|
fi
|
|
|
|
#
|
|
# Some systems have /usr/lib/termcap.so -> /usr/lib/termcap.so.2
|
|
# where however the latter file does not exist. When termcap does
|
|
# not exist, we can try to compile more with curses instead.
|
|
#
|
|
echo '
|
|
#include <termcap.h>
|
|
main(){ exit(0); tgetnum("li"); }
|
|
' > conftest.c
|
|
LIBS=-ltermcap
|
|
eval $compile
|
|
LIBS=
|
|
if test -s conftest && ./conftest 2>/dev/null; then
|
|
echo "#define HAVE_termcap" >> defines.h
|
|
echo "LIBTERMCAP=-ltermcap" >> make_include
|
|
echo "You have termcap"
|
|
else
|
|
echo "HAVE_TERMCAP=no" >> make_include
|
|
echo "You don't have termcap"
|
|
fi
|
|
rm -f conftest conftest.c
|
|
|
|
#
|
|
# 7. Do we need -lcrypt?
|
|
#
|
|
echo '
|
|
#define _XOPEN_SOURCE
|
|
#include <unistd.h>
|
|
main(){ char *c = crypt("abc","pw"); exit(0); }
|
|
' > conftest.c
|
|
eval $compile
|
|
if test -s conftest && ./conftest 2>/dev/null; then
|
|
echo "NEED_LIBCRYPT=no" >> make_include
|
|
echo "You don't need -lcrypt"
|
|
else
|
|
echo "NEED_LIBCRYPT=yes" >> make_include
|
|
echo "You need -lcrypt"
|
|
fi
|
|
rm -f conftest conftest.c
|
|
|
|
#
|
|
# 8. Does static compilation work?
|
|
#
|
|
echo "
|
|
main(){ return 0; }
|
|
" > conftest.c
|
|
eval $static_compile
|
|
if test -s conftest && ./conftest 2>/dev/null; then
|
|
: OK, nothing special
|
|
else
|
|
echo "CAN_DO_STATIC=no" >> make_include
|
|
echo "Strange... Static compilation fails here."
|
|
fi
|
|
|
|
#
|
|
# 9. For lib/nls.h: do we have <locale.h>?
|
|
#
|
|
echo "
|
|
#include <locale.h>
|
|
main(){ exit(0); }
|
|
" > conftest.c
|
|
eval $compile
|
|
if test -s conftest && ./conftest 2>/dev/null; then
|
|
echo "#define HAVE_locale_h" >> defines.h
|
|
echo "You have <locale.h>"
|
|
else
|
|
echo "You don't have <locale.h>"
|
|
fi
|
|
rm -f conftest conftest.c
|
|
|
|
|
|
#
|
|
# 10. For lib/nls.h: do we have <libintl.h> and gettext() ?
|
|
#
|
|
echo '
|
|
#include <libintl.h>
|
|
main(int a, char **v){
|
|
if (a == -1) /* false */
|
|
gettext("There is no gettext man page\n");
|
|
exit(0);
|
|
}
|
|
' > conftest.c
|
|
eval $compile
|
|
if test -s conftest && ./conftest 2>/dev/null; then
|
|
echo '#define HAVE_libintl_h' >> defines.h
|
|
echo "You have <libintl.h> and gettext()"
|
|
echo '#define ENABLE_NLS' >> defines.h
|
|
echo "Assuming that you want to enable NLS support."
|
|
echo "(Otherwise, edit defines.h)"
|
|
ENABLE_NLS=yes
|
|
else
|
|
echo "You don't have <libintl.h>"
|
|
ENABLE_NLS=no
|
|
fi
|
|
rm -f conftest conftest.c
|
|
|
|
|
|
#
|
|
# 11. Does xgettext exist and take the option --foreign-user?
|
|
#
|
|
if (test $ENABLE_NLS = yes && type xgettext > /dev/null 2>&1); then
|
|
msg=`xgettext --foreign-user 2>&1 | grep unrecognized`
|
|
if test -n "$msg"; then
|
|
echo "FOREIGN = " >> make_include
|
|
else
|
|
echo "FOREIGN = --foreign-user" >> make_include
|
|
fi
|
|
echo "HAVE_XGETTEXT=yes" >> make_include
|
|
else
|
|
echo "HAVE_XGETTEXT=no" >> make_include
|
|
fi
|
|
|
|
#
|
|
# 12. For cal.c: do we have <langinfo.h>?
|
|
#
|
|
echo "
|
|
#include <langinfo.h>
|
|
main(){ exit(0); }
|
|
" > conftest.c
|
|
eval $compile
|
|
if test -s conftest && ./conftest 2>/dev/null; then
|
|
echo "#define HAVE_langinfo_h" >> defines.h
|
|
echo "You have <langinfo.h>"
|
|
else
|
|
echo "You don't have <langinfo.h>"
|
|
fi
|
|
rm -f conftest conftest.c
|
|
|
|
|
|
#
|
|
# 13. For err.c: do we have __progname?
|
|
# [make sure gcc -O does not optimize the access away]
|
|
#
|
|
echo "
|
|
#include <stdio.h>
|
|
extern char *__progname;
|
|
main(){ printf(__progname); exit(0); }
|
|
" > conftest.c
|
|
eval $compile
|
|
if test -s conftest && ./conftest > /dev/null 2>/dev/null; then
|
|
echo "#define HAVE_progname" >> defines.h
|
|
echo "You have __progname"
|
|
else
|
|
echo "You don't have __progname"
|
|
fi
|
|
rm -f conftest conftest.c
|
|
|
|
|
|
#
|
|
# 14. For script.c: do we have <pty.h> and openpty()?
|
|
#
|
|
echo "
|
|
#include <pty.h>
|
|
main(){ exit(0); openpty(0, 0, 0, 0, 0); }
|
|
" > conftest.c
|
|
eval $compile
|
|
if test -s conftest && ./conftest 2>/dev/null; then
|
|
echo "HAVE_OPENPTY=yes" >> make_include
|
|
echo "#define HAVE_openpty" >> defines.h
|
|
echo "You have <pty.h> and openpty()"
|
|
else
|
|
echo "You don't have <pty.h> and openpty()"
|
|
fi
|
|
rm -f conftest conftest.c
|