# Makefile for parti
SHELL = /bin/sh

# TARGET
TARGET   = parti

# PATHWAYS
CAVE_DIR	= /usr/local/CAVE
## CAT_DIR	= /afs/ncsa/projects/virdir/vd
CAT_DIR		= ../vd
IEEEIO		= /afs/ncsa/packages/ieeeio/IRIXn32_6.4

KIRA_DEF = # -DUSE_KIRA
KIRA_INC = # -I/vr/data/virdir/src/starlab/inc
KIRA_LIB = # -L/vr/data/virdir/src/starlab/lib -ltdyn -ldyn -lnode -lsstar -lstd

# Include information
CAVE_INC	= -I$(CAVE_DIR)/include/
CAT_INC		= -I$(CAT_DIR)
IEEEIO_INC	= -I${IEEEIO}/include

# Library information
CAVE_LIB	= -L$(CAVE_DIR)/lib32/
CAT_LIB_DEP	= $(CAT_DIR)/n32/libcat_ogl.a
CAT_LIB		= -L$(CAT_DIR)/n32 -lcat_ogl -limage
IEEEIO_LIB	= -L${IEEEIO}/lib -lieeeio


# FLAGS and BINARIES
DEFS	    = -DWORDS_BIGENDIAN -DUSE_IEEEIO -DUSE_WARP -DUSE_MODEL -DNO_WHERE -DCAVEMENU -DTHIEBAUX_VIRDIR ${KIRA_DEF} # -DSC99DEMO 
CC          = cc
CFLAGS     = -c -fullwarn -woff 1174,1506,3201 -DOPENGL -DCAVE  \
		\
               ${OTYPE} ${OPT} ${DEFS} ${KIRA_INC} ${CAVE_INC} ${CAT_INC} ${IEEEIO_INC}
CXX	    = CC
CXXFLAGS    = ${CFLAGS} -woff 1169,3201
OTYPE	    = -n32 -mips4
## OPT         = -g3 -Ofast
OPT         = -g3 -O2
LDFLAGS     = -Wl,-woff,85 ${OTYPE}
LIBS        = ${CAVE_LIB} ${CAT_LIB} ${IEEEIO_LIB} ${KIRA_LIB} -lcave_ogl -lGL -lGLcore -lGLU -lX11 -lXi -lm ## -lmalloc_ss

APP_CSRCS   = partibrains.c shmem.c partimenu.c cavescrn.c cavemenu.c geometry.c vd_util.c \
		mgtexture.c textures.c futil.c findfile.c sfont.c \
		plugins.c version.c async.c sclock.c notify.c warp.c 

APP_CXXSRCS = partimain.cc partiutil.cc parti_ieee.cc  kira_parti.cc parti_model.cc

TRACKERPATCH  = vr_input.magellan.o vr_input.spacetec.o \
		cave.net.o cave.opengl.o cave.simtrack.o

APP_OBJS0    = partiutil.o partibrains.o partimenu.o \
		shmem.o cavescrn.o cavemenu.o \
		geometry.o vd_util.o \
		mgtexture.o textures.o futil.o findfile.o sfont.o \
		async.o sclock.o notify.o \
		plugins.o kira_parti.o warp.o parti_ieee.o parti_model.o \
		version.o \
		${TRACKERPATCH}

APP_OBJS     =	partimain.o ${APP_OBJS0}
TIMED_APP_OBJS = partimain.timed.o ${APP_OBJS0}

$(TARGET):  $(APP_OBJS) $(CAT_LIB_DEP)
	$(CXX) -o $@ $(OPT) ${LDFLAGS} $(APP_OBJS) $(LIBS) -no_transitive_link

$(TARGET).timed:  $(TIMED_APP_OBJS) $(CAT_LIB_DEP)
	$(CXX) -o $@ $(OPT) ${LDFLAGS} $(TIMED_APP_OBJS) $(LIBS) -no_transitive_link

TIMEBOMB = `perl -e '$$days = "${DAYS}"; $$expires = "${EXPIRES}"; print "-DEXPIRES=", $$expires || time + 86400*(1 + $$days);'`
partimain.timed.o: partimain.cc  _always
	${CXX} -c -o $@ ${TIMEBOMB} ${CXXFLAGS}  partimain.cc

dmlog:	dmlog.cc
	${CXX} -o $@ $@.cc ${OPT} -n32 ${IEEEIO_INC}  ${IEEEIOPATCH} ${IEEEIO_LIB} -lm
gaslog:	gaslog.cc
	${CXX} -o $@ $@.cc ${OPT} -n32 ${IEEEIO_INC}  ${IEEEIOPATCH} ${IEEEIO_LIB} -lm

CAVEOPTS = -DOPENGL -UCAPITALISTPIGS -UZUP_COORDS -UPFCAVE -ULINUX -D_OLD_TERMIOS -DNO_WAND_CLAMP

# To make a time-limited copy of "parti", use:
#    make DAYS=ndays-from-now parti.timed  e.g.  make DAYS=30 parti.timed
# or make EXPIRES=unixtime  parti.timed    e.g.  make EXPIRES=1085086249 parti.timed

cave.spaceorb.o: cave.spaceorb.c
	${CC} -c ${OTYPE} ${OPT} ${CAVEOPTS} -I/usr/local/CAVE/include cave.spaceorb.c

cave.spacepad.o: cave.spacepad.c
	${CC} -c -D_OLD_TERMIOS ${OTYPE} ${OPT} ${CAVEOPTS} -I/vr/apps/cave/src/cave2.6.0/src.v2.6 cave.spacepad.c

vr_input.magellan.o: vr_input.magellan.c
	${CC} -c -D_OLD_TERMIOS ${OTYPE} ${OPT} ${CAVEOPTS} -I/vr/apps/cave/src/cave2.6.0/src.v2.6 vr_input.magellan.c
vr_input.spacetec.o: vr_input.spacetec.c
	${CC} -c ${OTYPE} ${OPT} -O0 -g ${CAVEOPTS} -I/vr/apps/cave/src/cave2.6.0/src.v2.6 vr_input.spacetec.c
cave.opengl.o: cave.opengl.c
	${CC} -c ${OTYPE} ${OPT} ${CAVEOPTS} -I/vr/apps/cave/src/cave2.6.0/src.v2.6 cave.opengl.c
cave.simtrack.o: cave.simtrack.c
	${CC} -c ${OTYPE} ${OPT} ${CAVEOPTS} -I/vr/apps/cave/src/cave2.6.0/src.v2.6 cave.simtrack.c
cave.net.o: cave.net.c
	${CC} -c -D_OLD_TERMIOS ${OTYPE} ${OPT} ${CAVEOPTS} -I/vr/apps/cave/src/cave2.6.0/src.v2.6 cave.net.c

SRDIR = /vr/data/virdir/stars/StarRender
WARPCFLAGS = -DSTANDALONE -UCAVE -UCAVEMENU -I${SRDIR}
warpsdb: warp.o geometry.o
	${CC} -c -o warpsdb.o warp.c  ${CFLAGS} ${WARPCFLAGS}
	${CC} -o warpsdb  warpsdb.o geometry.o -lm  ${CFLAGS}

PACKAGE = AMR/parti.tar.Z
package:
	(echo "-C"; echo ..; sed -e 's:^:parti/:' FILES) | grep -v '#' | \
		gnutar cvhZTf - ${PACKAGE}

dep: depend
depend:	_always
	rm -f Makedepend
	${CC} -M ${CFLAGS} ${APP_CSRCS} > Makedepend
	${CXX} -M ${CXXFLAGS} ${APP_CXXSRCS} >> Makedepend

_always:

HDFIO = /afs/ncsa/packages/ieeeio/IRIXn32_6.2
rawhdf:  rawhdf.o
	${CXX} ${OTYPE} -o $@ $@.o -L${HDFIO}/lib -lhdfio  -lieeeio  -lmfhdf  -ldf -lz

rawhdf.o: rawhdf.c
	${CC} ${OTYPE} -c rawhdf.c ${CFLAGS} -DANSI -DSGI

asc2ieee: asc2ieee.o
	${CXX} ${CXXFLAGS} -o $@ $@.o  -L${IEEEIO}/lib -lieeeio -lm

rawsample: rawsample.o
	${CXX} ${CXXFLAGS} -o $@ $@.o  -L${IEEEIO}/lib -lieeeio -lm

.SUFFIXES: .cc

.cc.o:
	${CXX} -c ${CXXFLAGS} $<

partconv.tar.gz: _always
	gnutar cvfz $@ README.conv hier2parti hier2boxes \
		PartConv/Makefile \
		PartConv/EnzoToParticles.cc \
		PartConv/EnzoGridInfo.cc PartConv/EnzoGridInfo.hh \
		PartConv/EnzoGridHierarchy.cc PartConv/EnzoGridHierarchy.hh \
		PartConv/EnzoToParticles



sinclude Makedepend