#!/bin/sh
#
# This script builds a Nelsis/3 distribution. It must be run with ~cacd/src as
# the current directory. The file ~cacd/CONFIG/M.$ARCHITECTURE must exist and
# can contain architecture-specific Makefile parameters.
#
#

# Set to 1 if you want the GNU compiler:
if [ "$GNU" = "" ] ; then GNU=0; fi
if [ "$CCMODE" = "" ] ; then CCMODE="-O"; fi
if [ "$ICDPATH" = "" ] ; then
   echo ERROR: set your ICDPATH environment first ...
   exit 1
fi

if [ ! -d "$ICDPATH" ] ; then
   echo ERROR: directory ICDPATH = $ICDPATH does not exist ...
   exit 1
fi

TARGET=install
if [ $# -ge 1 ] ; then
   TARGET="$1"
fi

if [ ! -d $ICDPATH/DEVWSPC ] ; then
   mkdir $ICDPATH/DEVWSPC 
fi
if [ ! -d $ICDPATH/lib ] ; then mkdir $ICDPATH/lib ; fi
if [ ! -d $ICDPATH/lib/include ] ; then mkdir $ICDPATH/lib/include ; fi

case "$MACHINE" in
   PA-RISC*) CC="cc $CCMOD -Wl,-a,archive" ; ARCHITECTURE=hp800HPUX90 ; 
	     ANSICC="$CC -Aa -D_HPUX_SOURCE"
             OLIBS="-ll -lm -lbsdipc -lBSD" ;;
   HP-PA_9)  CC="cc $CCMODE -Wl,-a,archive" ; ARCHITECTURE=hp800HPUX90 ;
	     ANSICC="$CC -Aa -D_HPUX_SOURCE"
             OLIBS="-ll -lm -lbsdipc -lBSD" ;;
   HP-PA_8)  CC="cc $CCMODE -Wl,-a,archive" ; ARCHITECTURE=hp800HPUX80 ;
	     ANSICC="$CC -Aa -D_HPUX_SOURCE"
             OLIBS="-ll -lm -lbsdipc -lBSD" ;;
   HP-PA_7)  CC="cc $CCMODE" ; ARCHITECTURE=hp800HPUX70 ;
	     ANSICC="$CC -Aa -D_HPUX_SOURCE"
             OLIBS="-ll -lm -lbsdipc -lBSD" ;;
   *sun*)    CC="cc $CCMODE -Bstatic" ; ARCHITECTURE=sun ; OLIBS="-ll -lm"
	     ANSICC="$CC -ansi" ;;
   *Linux*)  CC="cc -traditional -fno-builtin $CCMODE -static" ; ARCHITECTURE=gnu ; OLIBS="-lm"
	     ANSICC="cc -ansi -fno-builtin $CCMODE -static" ;;
   *)        echo WARNING: unknown MACHINE environment ...
             CC="cc $CCMODE" ; ARCHITECTURE=default ; OLIBS="-ll -lm"
	     ANSICC="$CC" ;;
esac
YACC=yacc
if [ "$GNU" = 1 ] ; then
   CC="gcc -traditional -fno-builtin $CCMODE -static"
   ANSICC="gcc -ansi -fno-builtin $CCMODE -static"
   YACC="bison -y"
   ARCHITECTURE=gnu
fi
# add support for funny X11 homes:
CC="$CC -L/usr/lib/X11R5"
# add support for memory and string managers in libmnew.a:
OLIBS="$OLIBS -lmnew"
CC="$CC -L$ICDPATH/lib"
LD="$CC"
LEX="flex"
AR=ar
RANLIB=ranlib
OCFLAGS=""
SRCDIR=`pwd`
ICDPATH=`dirname $SRCDIR`
NELSISHOME=$ICDPATH
CACDSRCHOME=$ICDPATH

export NELSISHOME CACDSRCHOME ARCHITECTURE
export YACC ANSICC CC OLIBS RANLIB LEX LD AR

if [ -f /usr/include/ndir.h ] ; then
   OSTYPE=SYSV
else
   OSTYPE=BSD
fi

OLDSTUFF="\
	libddm \
	formats \
	cacdcmap \
	addproj \
	dbcat \
	dbclean \
	dblist \
	dimcheck \
	dubcheck \
	cpldm \
	getldm \
	impcell \
	nbool \
	sldm \
	mkpr \
	nspice \
	rmdb \
	rmpr \
	"

NEWSTUFF="\
	exp \
	cldm \
	func_mkdb \
	gds2 \
	getlld \
	layflat \
	libfunc \
	macro \
	makeboxh \
	makeboxl \
	makevln \
	putdevmod \
	simeye \
	sls \
	sls_exp \
	csls \
	space \
	xsls \
	"

BADSTUFF="\
	ncfs \
	"

if [ ! -d ../src ] ; then echo Is this really a SRC directory\? ; exit 1 ; fi
if [ ! -d libddm ] ; then echo Is this really a CACD SRC tree\? ; exit 1 ; fi

# make sure these things exist ...:
mkdir -p ../bin ../lib/include

for p in $OLDSTUFF; do
    echo "///////////////////////////////////////////////////////////////////"
    echo "(cd $p; make ICDPATH=$ICDPATH ANSICC=\"$ANSICC\" CC=\"$CC\" LD=\"$LD\" \
                       OCFLAGS=$OCFLAGS OLIBS=\"$OLIBS\" YACC=\"$YACC\" LEX=\"$LEX\" \
                       OSTYPE=$OSTYPE \
		       $TARGET)"
    echo "///////////////////////////////////////////////////////////////////"
    (cd $p; make ICDPATH=$ICDPATH ANSICC="$ANSICC" CC="$CC" LD="$LD" OCFLAGS=$OCFLAGS \
                 OLIBS="$OLIBS" YACC="$YACC" LEX="$LEX" OSTYPE=$OSTYPE $TARGET)
done

for p in $NEWSTUFF; do
    echo "///////////////////////////////////////////////////////////////////"
    echo "(cd $p; make ICDPATH=$ICDPATH ANSICC=\"$ANSICC\" CC=\"$CC\" LD=\"$LD\" \
                       OCFLAGS=$OCFLAGS OLIBS=\"$OLIBS\" YACC=\"$YACC\" LEX=\"$LEX\" \
                       OSTYPE=$OSTYPE \
		       $TARGET)"
    echo "///////////////////////////////////////////////////////////////////"
    (cd $p; make ICDPATH=$ICDPATH ANSICC="$ANSICC" CC="$CC" LD="$LD" OCFLAGS="$OCFLAGS" \
                 OLIBS="$OLIBS" YACC="$YACC" LEX="$LEX" OSTYPE=$OSTYPE $TARGET)
done
