#!/bin/sh

# This program will configure the makefile for various OSes.
#
# Config version 1.1
SYS=

# Heading

cat > Makefile <<EoF
# Makefile for HEYU, a program to control an X10 CM11A computer interface.
# This makefile is generated by the Configure program.
#
EoF

# paths:
cat >> Makefile <<EoF
BIN = /usr/local/bin
MAN = /usr/local/man/man1
MAN5 = /usr/local/man/man5

#       set DFLAGS equal to:
#          -DSYSV       if using SYSTEM V
#          -DVOID       if compiler doesn't understand 'void'

EoF

CM17AFLAG="-DHASCM17A"
EXT0FLAG="-DHASEXT0"

while [ $# -ge 1 ] ; do
    case "$1" in
	help|-h|-help)
	    echo "Usage: $0 <system type> [-nocm17a] [-noext0]"
	    echo " Valid system types are linux,sunos,solaris,freebsd,openbsd,netbsd,darwin,"
	    echo " sco,aix,sysv,attsvr4,nextstep,osf,generic"
	    echo " If no system type is specified, the output of uname(1) will be used."
            echo " Switch -nocm17a omits support for the optional CM17A Firecracker device." 
            echo " Switch -noext0 omits support for extended type 0 shutter controllers."
	    rm Makefile 
	    exit
	    ;;
        nocm17a|-nocm17a|NOCM17A|-NOCM17A)
            CM17AFLAG=
            ;;
        noext0|-noext0|NOEXT0|-NOEXT0)
            EXT0FLAG=
            ;;
	*)
	    SYS="$1"
	    ;;
    esac
    shift
done

cat <<EoF

This script will create a Makefile based by default on
the output of uname(1), or otherwise on the system type
parameter you enter.
 
EoF



if [ "$SYS" = "" ] ; then
    SYS=`uname -s | tr '[A-Z]' '[a-z]'`
fi

CC=gcc  #Set default for later

echo "#This makefile is built for $SYS" >> Makefile
case "$SYS" in
    linux)
        cat >> Makefile <<-EoF
	OWNER = root
	GROUP = root 
	CC = gcc
	CFLAGS = -g -O \$(DFLAGS) -Wall
	DFLAGS = -DSYSV -DPOSIX -DHAS_ITIMER -DLINUX -DHASSELECT -DHASTZ $CM17AFLAG $EXT0FLAG
	LIBS = -lm -lc
EoF
	;;
    sunos*|solaris)
    	type gcc > /dev/null
    	if [ $? = 0 ] ; then
    	    echo "CC = gcc" >> Makefile
	else
            CC=cc
	    echo "CC = cc" >> Makefile
	fi
	cat >> Makefile <<-EoF
	OWNER = root
	GROUP = sys
	DFLAGS = -DSYSV -DPOSIX -DSOLARIS -DLOCKDIR=\"/var/spool/locks\" -DHASSELECT -DHASTZ $CM17AFLAG $EXT0FLAG
	CFLAGS = -g -O \$(DFLAGS) -Wall
	LIBS = -lm -lc -lrt
EoF
	;;
    freebsd)
	cat >> Makefile <<-EoF
	OWNER = root
	GROUP = wheel
	CC = gcc
	CFLAGS = -g -O \$(DFLAGS) -Wall
	LIBS = -lm -lc
	DFLAGS= -DHASSELECT -DNEEDGTIME -DFREEBSD -DLOCKDIR=\"/var/spool/lock\" -DSYSBASEDIR=\"/usr/local/etc/heyu\" -DSPOOLDIR=\"/var/tmp/heyu\" $CM17AFLAG $EXT0FLAG
EoF
	;;
    openbsd)
        cat >> Makefile <<-EoF
	OWNER = root
	GROUP = wheel
	CC = gcc
	CFLAGS = -g -O \$(DFLAGS) -Wall
	LIBS = -lm -lc
	DFLAGS= -DHASSELECT -DNEEDGTIME -DOPENBSD -DLOCKDIR=\"/var/spool/lock\" -DSYSBASEDIR=\"/etc/heyu\" -DSPOOLDIR=\"/var/tmp/heyu\" $CM17AFLAG $EXT0FLAG
EoF
       ;;
    netbsd)
	cat >> Makefile <<-EoF
	OWNER= root
	GROUP = wheel
	DFLAGS = -DPOSIX -DLOCKDIR=\"/var/spool/lock\" $CM17AFLAG $EXT0FLAG
	CC = gcc
	CFLAGS = -g -O \$(DFLAGS) -Wall
	LIBS = -lm -lc
EoF
	;;
    darwin)
	cat >> Makefile <<-EoF
	OWNER = root
	GROUP = wheel
	DFLAGS = -DDARWIN -DHASSELECT $CM17AFLAG $EXT0FLAG
	CC = gcc
	CFLAGS = -g -O \$(DFLAGS) -Wall
	LIBS = -lm -lc
EoF
	;;
    sco*)
        CC=cc
	cat >> Makefile <<-EoF
	OWNER = root
	GROUP = sys
	CC = cc
	MAN = /usr/local/man/man.1
	MAN5 = /usr/local/man/man.5
	CFLAGS = -O \$(DFLAGS)
	LIBS = -lm -lc -lsocket
	DFLAGS= -DSYSV -DHASSELECT -DSCO -DLOCKDIR=\"/var/spool/locks\" -DSPOOLDIR=\"/usr/tmp/heyu\" $CM17AFLAG $EXT0FLAG
EoF
	;;
    aix|sysv)
	cat >> Makefile <<-EoF
	OWNER = root
	GROUP = sys
	CC = gcc
	CFLAGS = -g -O \$(DFLAGS) -Wall
	LIBS = -lm -lc
	DFLAGS = -DSYSV -DPOSIX -DNSLEEP $CM17AFLAG $EXT0FLAG
EoF
	;;
    attsvr4)
        CC=cc
	cat >> Makefile <<-EoF
	OWNER = root
	GROUP = sys
	CC = cc
	CFLAGS = -I/usr/local/include -g -O \$(DFLAGS)
	LIBS = -lc -L/usr/ucblib -lucb -lm -lgen -lcmd
	DFLAGS = -DATTSVR4 -DHASTZ -DSYSV -DPOSIX -DLOCKDIR=\"/var/spool/locks\" -DSPOOLDIR=\"/var/spool/heyu\" -DSYSBASEDIR=\"/usr/local/etc/heyu\" $CM17AFLAG $EXT0FLAG
EoF
	;;
    nextstep)
	cat >> Makefile <<-EoF
	OWNER = root
	GROUP = sys
	CC = gcc
	DFLAGS =  -DPOSIX $CM17AFLAG $EXT0FLAG
	CFLAGS = -g \$(DFLAGS) -posix
	LDFLAGS = -posix
	LIBS = -lm -lposix
EoF
	;;
    osf)
	cat >> Makefile <<-EoF
	OWNER = root
	GROUP = uucp
	CC = gcc
	CFLAGS = -g \$(DFLAGS)
	LIBS = -lm -lc
	DFLAGS = -DSYSV -DHAS_ITIMER -DOSF1 -DLOCKDIR=\"/var/spool/locks\" $CM17AFLAG $EXT0FLAG
EoF
      ;;
    generic)
    	cat >> Makefile <<-EoF
	OWNER = root
	GROUP = sys
	CC = gcc
	CFLAGS = -g -O \$(DFLAGS) -Wall
	LIBS = -lm -lc
	DFLAGS=  $CM17AFLAG $EXT0FLAG
EoF
	;;
    *)
    	echo "Your system type was not understood.  Please try one of "
    	echo "the following".
    	$0 -help
    	exit
    	;;
esac

# echo "checking for siginterrupt()"

rm -f testsigi.c testsigi
cat > testsigi.c <<EoF
#include <signal.h>
main()
{
   int x;
   x=siginterrupt(SIGALRM,1);
}
EoF
$CC -o testsigi testsigi.c  >/dev/null 2>&1
if [ $? = 0 ] ; then
    echo "#define USESIGINT 1" >local.h
#    echo "Using siginterrupt()"
# else
#    echo "Not using siginterrupt()"
fi
rm -f testsigi.c testsigi
if [ ! -f local.h ] ; then
    touch local.h
fi


cat >> Makefile <<EoF
# # The rest of the makefile should need no changes

EoF

cat Makefile.in >> Makefile

if [ "$SYS" = "sysv" ] ; then
echo "The Makefile has been created for sysv, however if"
echo "you are running under AT&T SysV r4, please re-run"
echo "Configure with the system type parameter attsvr4"
else
echo "The Makefile has been created for $SYS."
fi

echo ""
echo "Note: If you are upgrading from an earlier version,"
echo "run 'heyu stop' before proceeding further."
echo ""
echo "** Now run 'make' as a normal user **"
echo ""
