freebsd-skq/create.make
2009-05-26 18:59:03 +00:00

293 lines
5.0 KiB
Makefile
Executable File

#!/bin/sh
#
# This script will determine if the system is a System V or BSD based
# UNIX system and create a makefile for ee appropriate for the system.
#
# $Header: /home/hugh/sources/old_ae/RCS/create.make,v 1.13 2002/09/23 04:18:13 hugh Exp $
#
#set -x
name_string="`uname`"
# test for existence of termcap (exists on both BSD and SysV systems)
if [ -f /etc/termcap -o -f /usr/share/lib/termcap -o -f /usr/share/misc/termcap ]
then
if [ -f /usr/share/lib/termcap ]
then
termcap_exists="-DTERMCAP=\"\\\"/usr/share/lib/termcap\\\"\""
elif [ -f /usr/share/misc/termcap ]
then
termcap_exists="-DTERMCAP=\"\\\"/usr/share/misc/termcap\\\"\""
elif [ -f /etc/termcap ]
then
termcap_exists="-DTERMCAP=\"\\\"/etc/termcap\\\"\""
fi
else
termcap_exists=""
fi
# test for terminfo directory (exists on SysV systems)
if [ -d /usr/lib/terminfo -o -d /usr/share/lib/terminfo -o -d /usr/share/terminfo ]
then
terminfo_exists=""
else
terminfo_exists="-DCAP"
fi
# test for existence of termio header (on SysV systems)
if [ -f /usr/include/termio.h ]
then
termio="-DSYS5"
else
termio=""
fi
# test for sgtty header (on BSD systems)
if [ -f /usr/include/sgtty.h ]
then
sgtty="TRUE"
else
sgtty=""
fi
# look for select call in headers, make sure headers exist
HEADER_FILES=""
if [ -f /usr/include/sys/time.h ]
then
HEADER_FILES="/usr/include/sys/time.h "
fi
if [ -f /usr/include/sys/types.h ]
then
HEADER_FILES="$HEADER_FILES /usr/include/sys/types.h"
fi
# check for unistd.h
if [ -f /usr/include/unistd.h ]
then
HAS_UNISTD=-DHAS_UNISTD
HEADER_FILES="$HEADER_FILES /usr/include/unistd.h"
else
HAS_UNISTD=""
fi
if [ -n "$HEADER_FILES" ]
then
string="`grep select $HEADER_FILES`"
if [ -n "$string" ]
then
BSD_SELECT="-DBSD_SELECT"
else
BSD_SELECT=""
fi
fi
# check for existence of select.h (on AIX)
if [ -f /usr/include/sys/select.h ]
then
select_hdr="-DSLCT_HDR"
else
select_hdr=""
fi
# check for stdlib.h
if [ -f /usr/include/stdlib.h ]
then
HAS_STDLIB=-DHAS_STDLIB
else
HAS_STDLIB=""
fi
# check for stdarg.h
if [ -f /usr/include/stdarg.h ]
then
HAS_STDARG=-DHAS_STDARG
else
HAS_STDARG=""
fi
# check for ctype.h
if [ -f /usr/include/ctype.h ]
then
HAS_CTYPE=-DHAS_CTYPE
else
HAS_CTYPE=""
fi
# check for sys/ioctl.h
if [ -f /usr/include/sys/ioctl.h ]
then
HAS_SYS_IOCTL=-DHAS_SYS_IOCTL
else
HAS_SYS_IOCTL=""
fi
# check for sys/wait.h
if [ -f /usr/include/sys/wait.h ]
then
HAS_SYS_WAIT=-DHAS_SYS_WAIT
else
HAS_SYS_WAIT=""
fi
# check for localization headers
if [ -f /usr/include/locale.h -a -f /usr/include/nl_types.h ]
then
catgets=""
else
catgets="-DNO_CATGETS"
fi
# make decisions about use of new_curse.c (use of new_curse is recommended
# rather than local curses)
if [ -n "$terminfo_exists" -a -z "$termcap_exists" ]
then
echo "Neither terminfo or termcap are on this system! "
if [ -f /usr/include/curses.h ]
then
echo "Relying on local curses implementation."
else
cat <<-EOF
Don't know where to find curses, you'll need to modify
source code to be able to build!
Modify the file make.default and build ee by typing:
make -f make.default
EOF
exit 1
fi
TARGET="curses"
curses=""
else
curses="-DNCURSE"
TARGET="ee"
fi
if [ -z "$termio" -a -z "$sgtty" ]
then
echo "Neither termio.h or sgtty.h are on this system! "
if [ -f /usr/include/curses.h ]
then
echo "Relying on local curses implementation."
else
cat <<-EOF
Don't know where to find curses, you'll need to modify
source code to be able to build!
Modify the file make.default and build ee by typing:
make -f make.default
EOF
exit 1
fi
TARGET="curses"
curses=""
fi
# check if this is a SunOS system
if [ -d /usr/5include ]
then
five_include="-I/usr/5include"
else
five_include=""
fi
if [ -d /usr/5lib ]
then
five_lib="-L/usr/5lib"
else
five_lib=""
fi
if [ "$name_string" = "Darwin" ]
then
if [ -n "$CFLAGS" ]
then
other_cflags="${CFLAGS} -DNO_CATGETS"
else
other_cflags="-DNO_CATGETS"
fi
else
if [ -n "$CFLAGS" ]
then
if [ -z "`echo $CFLAGS | grep '[-]g'`" ]
then
other_cflags="${CFLAGS} -s"
else
other_cflags="${CFLAGS}"
fi
else
other_cflags="-s"
fi
fi
# time to write the makefile
echo "Generating make.local"
if [ -f make.local ]
then
mv make.local make.lcl.old
fi
echo "DEFINES = $termio $terminfo_exists $BSD_SELECT $catgets $select $curses " > make.local
echo "" >> make.local
echo "CFLAGS = $HAS_UNISTD $HAS_STDARG $HAS_STDLIB $HAS_CTYPE $HAS_SYS_IOCTL $HAS_SYS_WAIT $five_lib $five_include $select_hdr $other_cflags $termcap_exists" >> make.local
echo "" >> make.local
echo "" >> make.local
echo "all : $TARGET" >> make.local
cat >> make.local << EOF
curses : ee.c
cc ee.c -o ee \$(CFLAGS) -lcurses
ee : ee.o new_curse.o
cc -o ee ee.o new_curse.o \$(CFLAGS)
ee.o : ee.c new_curse.h
cc -c ee.c \$(DEFINES) \$(CFLAGS)
new_curse.o : new_curse.c new_curse.h
cc new_curse.c -c \$(DEFINES) \$(CFLAGS)
EOF
if [ -f make.lcl.old ]
then
diffs="`cmp make.lcl.old make.local`"
if [ -n "${diffs}" ]
then
rm -f ee.o new_curse.o ee
fi
rm -f make.lcl.old
fi