#!/bin/csh

# -----------------------------------------------------------------------------
# Build distribution versions of Sparky on Unix, Linux, and Mac OS X.
# Debugging versions are made with the make-sparky script.
#
# Invokes make in Sparky code directory with paths and compiler flags
# appropriate for specific machines.  
#

set HOST		= `hostname`

# -----------------------------------------------------------------------------
# Default paths and compiler options
#
set SPARKY		= /usr/local/src/sparky/code
set PYTHON_PREFIX	= /usr/local
set PYTHON_VERSION	= python2.1
set TK_PREFIX		= /usr/local
set TK_VERSION		= tk8.3
set TCL_VERSION		= tcl8.3
set CXX			= g++
set CXXFLAGS		= "-Wall -O"
set CC			= gcc
set CFLAGS		= -O
set LDFLAGS		=
set LDSHARED		= -shared
set EXTRALIBS		=
set CXX_RULE_PREFIX	= $SPARKY/c++/
set EXTRA_DEFINES       =

# -----------------------------------------------------------------------------
# SGI IRIX 6.5, using SGI compilers
#
if ($HOST == spinoza.cgl.ucsf.edu || \
    $HOST == larson.cgl.ucsf.edu) then

    set PLATFORM	= /usr/local/src/sparky/platforms/sgi65
    set SPARKY_OBJ	= $PLATFORM/sparky-obj
    set SPARKY_INSTALL	= $PLATFORM/sparky-install
    set PYTHON_PREFIX	= $PLATFORM/python-2.1.1
    set TK_PREFIX	= $PLATFORM/tcltk-8.3.4
    set CXX		= CC
    set CXXFLAGS	= "-DEBUG:fullwarn=ON -DEBUG:suppress=1209 -O -n32 -LANG:ansi-for-init-scope=ON"
    set CC		= cc
    set LDFLAGS		= -n32

# -----------------------------------------------------------------------------
# SGI IRIX 5.3, using old SGI compilers
#
else if ($HOST == unavailable) then

    set PREFIX		= /usr/local/src/sparky/platforms/sgi53
    set SPARKY_OBJ	= $PREFIX/sparky-obj
    set SPARKY_INSTALL	= $PREFIX/sparky-install
    set PYTHON_PREFIX	= $PREFIX/python-2.1.1
    set TK_PREFIX	= $PREFIX/tcltk-8.3.4
    set CXX		= CC
    set CC		= cc
    set BOOL_FIX	= '-Dbool=int -Dtrue=1 -Dfalse=0'
    set SCOPE_FIX       = '-Dfor="if(0);else for"'
    set CXXFLAGS	= "+w $BOOL_FIX $SCOPE_FIX"
    set CFLAGS		= $CXXFLAGS
    set LDFLAGS		= 

# -----------------------------------------------------------------------------
# Linux, Redhat 5.2, 6.0, 6.1, 6.2, or 7.x using g++
#
else if ($HOST == tolkien.cgl.ucsf.edu || \
         $HOST == bilbo.cgl.ucsf.edu || $HOST == bilbo) then

#
# GNU make decides to check out source code from RCS instead of using the
# existing checked out file.  To avoid that behaviour I use a copy of the
# source code extracted into my home directory.  There should be a way to
# tell make not to use the RCS check out rule but I have not figured out
# how.
#
    set SPARKY		= /home/goddard/sparky
    set SPARKY_OBJ	= $SPARKY/obj
    set SPARKY_INSTALL	= $SPARKY/install
    set PYTHON_PREFIX	= /home/goddard/python-2.1.1
    set TK_PREFIX	= /home/goddard/tcltk-8.3.4
    set LDFLAGS		= -L/usr/X11R6/lib
    set EXTRALIBS	= -ldl
    set CXX_RULE_PREFIX	=

# -----------------------------------------------------------------------------
# Mac OS 10.1 with XFree86.
#
else if ($HOST == essex.cgl.ucsf.edu) then

    set SPARKY          = /Users/goddard/sparky
    set SPARKY_OBJ      = $SPARKY/obj
    set SPARKY_INSTALL  = $SPARKY/install
    set PYTHON_PREFIX   = /Users/goddard/python-2.1.1
    set TK_PREFIX       = /Users/goddard/tcltk-8.3.4
    set CXX             = c++
    set CC              = cc
    set LDSHARED        = "-bundle -flat_namespace -undefined warning"
    set CXX_RULE_PREFIX =
#
# Link directly against my Tcl/Tk so compiler doesn't find /usr/lib versions.
# Also give path to XFree86.
#
    set TCLTK_SHLIB_SUFFIX      = .dylib
    set TCLLIB          = $TK_PREFIX/lib/lib$TCL_VERSION$TCLTK_SHLIB_SUFFIX
    set TKLIB           = $TK_PREFIX/lib/lib$TK_VERSION$TCLTK_SHLIB_SUFFIX
    set TKLIBS          = "$TCLLIB $TKLIB -L/usr/X11R6/lib -lX11"
    set TKFLAGS         = "-I$TK_PREFIX/include -I/usr/X11R6/include"
    set EXTRA_DEFINES   = ("TKLIBS=$TKLIBS" \
                           "TKFLAGS=$TKFLAGS" \
                           "TCLTK_SHLIB_SUFFIX=$TCLTK_SHLIB_SUFFIX")

# -----------------------------------------------------------------------------
# Sun Sparc, Solaris 2.5 or 7, using g++
#
else if ($HOST == picasso.nmr.ucsf.edu || \
         $HOST == picasso || \
	 $HOST == ge500a.nmr.ucsf.edu) then

    set PREFIX		= /data/pablo/goddard
    set SPARKY		= $PREFIX/sparky
    set SPARKY_OBJ	= $SPARKY/obj
    set SPARKY_INSTALL	= $SPARKY/install
    set PYTHON_PREFIX	= $PREFIX/python-2.1.1
    set TK_PREFIX	= $PREFIX/tcltk-8.3.4
    # The -fPIC option makes symbols relocatable. Necessary for shared objects
    set CXXFLAGS	= "-O -fPIC -I/usr/openwin/include"
    set CFLAGS		= "$CXXFLAGS"
#
# The -nodefaultlibs option is to avoid linking against the libstdc++.so.
# It then requires explicitly putting -lgcc and -lc in the EXTRALIBS variable
# below.
#
    set LDFLAGS		= "-L/usr/openwin/lib -nodefaultlibs"
    set LDSHARED	= "-shared -fPIC"
#
# Standard g++ on Solaris has libstdc++.a with non-relocatable symbols.
# that cannot be linked into a shared library.  So I compiled by own
# libstdc++.a with -fPIC.
#
#    set EXTRALIBS	= $PREFIX/libstdc++/libstdc++-2.8.1.1-relocatable.a
    set EXTRALIBS	= "$PREFIX/libstdc++/libstdc++-relocatable.a.2.10.0 -lgcc -lc"
    set CXX_RULE_PREFIX	=

# -----------------------------------------------------------------------------
# Sun Sparc, Solaris 2.5, using old Sun compilers
#
else if ($HOST == duke.ucsf.edu) then

    set PREFIX		= /home/hurricane/goddard
    set SPARKY          = $PREFIX/sparky
    set SPARKY_OBJ	= $SPARKY/obj
    set SPARKY_INSTALL	= $SPARKY/install
    set PYTHON_PREFIX	= $PREFIX/python-2.1.1
    set TK_PREFIX	= $PREFIX/tcltk-8.3.4
    set CXX		= CC
    set BOOL_FIX	= '-Dbool=int -Dtrue=1 -Dfalse=0'
    set SCOPE_FIX	= '-Dfor="if(0);else for"'
    set CXXFLAGS	= "-w -KPIC -I/usr/openwin/include $BOOL_FIX $SCOPE_FIX"
    set CC              = cc
    set CFLAGS		= $CXXFLAGS
    set LDFLAGS		= -L/usr/openwin/lib
    set LDSHARED	= -G
    set EXTRALIBS	= -lC
    set CXX_RULE_PREFIX	=

# -----------------------------------------------------------------------------
# DEC Alpha, Digital Unix 5.0, using DEC compilers
#
else if ($HOST == plato.cgl.ucsf.edu || \
         $HOST == adenine.cgl.ucsf.edu) then

    set PLATFORM	= /usr/local/src/sparky/platforms/dec5
    set SPARKY_OBJ	= $PLATFORM/sparky-obj-cxx
    set SPARKY_INSTALL	= $PLATFORM/sparky-install-cxx
    set PYTHON_PREFIX	= $PLATFORM/python-2.1.1
    set TK_PREFIX	= $PLATFORM/tcltk-8.3.4
    set CXX		= cxx
    set CC		= cc

# -----------------------------------------------------------------------------
# DEC Alpha, Digital Unix 5.0, using g++ (2.95.2)
#
else if ($HOST == bonzo.cgl.ucsf.edu || \
         $HOST == heidegger.cgl.ucsf.edu) then

    set PLATFORM	= /usr/local/src/sparky/platforms/dec5
    set SPARKY_OBJ	= $PLATFORM/sparky-obj-gcc
    set SPARKY_INSTALL	= $PLATFORM/sparky-install-gcc
    set PYTHON_PREFIX	= $PLATFORM/python-2.1.1
    set TK_PREFIX	= $PLATFORM/tcltk-8.3.4
    set CXX		= /usr/local/src/sparky/platforms/dec4/gcc-2.95.2/bin/g++
    set CC		= /usr/local/src/sparky/platforms/dec4/gcc-2.95.2/bin/gcc

# -----------------------------------------------------------------------------
# DEC Alpha, Digital Unix 4.0d, using g++
#
else if ($HOST == engels.cgl.ucsf.edu) then

    set PLATFORM	= /usr/local/src/sparky/platforms/dec4
    set SPARKY_OBJ	= $PLATFORM/sparky-obj
    set SPARKY_INSTALL	= $PLATFORM/sparky-install
    set PYTHON_PREFIX	= $PLATFORM/python-2.1.1
    set TK_PREFIX	= $PLATFORM/tcltk-8.3.4

# -----------------------------------------------------------------------------
# DEC Alpha, Digital Unix 4.0d, using g++
#
else if ($HOST == orwell.cgl.ucsf.edu) then

    set PLATFORM	= /usr/local/src/sparky/platforms/dec4
    set SPARKY_OBJ	= $PLATFORM/sparky-obj
    set SPARKY_INSTALL	= $PLATFORM/sparky-install
    set PYTHON_PREFIX	= $PLATFORM/python-2.1.1
    set TK_PREFIX	= $PLATFORM/tcltk-8.3.4
#
# The following makes the linker not use /usr/local/lib which contains an
# old libstdc++.2.7.1 on orwell.
#
    set LDFLAGS		= -Wl,-L,-L/usr/shlib,-L/usr/ccs/lib,-L/usr/lib/cmplrs/cc,-L/usr/lib

else

    echo You need to set paths and compiler options for host $HOST
    echo in the make-sparky-www script.
    exit 1

endif

# -----------------------------------------------------------------------------
# Now invoke make.
#

# turn on command echo
set echo		= 1

make -f $SPARKY/Makefile -k \
	"SPARKY=$SPARKY" \
	"SPARKY_OBJ=$SPARKY_OBJ" \
	"SPARKY_INSTALL=$SPARKY_INSTALL" \
	"PYTHON_PREFIX=$PYTHON_PREFIX" \
        "PYTHON_VERSION=$PYTHON_VERSION" \
        "TK_PREFIX=$TK_PREFIX" \
	"TK_VERSION=$TK_VERSION" \
        "TCL_VERSION=$TCL_VERSION" \
	"CXX=$CXX" \
	"CXXFLAGS=$CXXFLAGS" \
	"CC=$CC" \
	"CFLAGS=$CFLAGS" \
	"LDFLAGS=$LDFLAGS" \
        "LDSHARED=$LDSHARED" \
	"EXTRALIBS=$EXTRALIBS" \
	"CXX_RULE_PREFIX=$CXX_RULE_PREFIX" \
        $EXTRA_DEFINES:q \
	$*
