#-*-makefile-*-
export 

CXX = g++

TOP = ..
TWDIR = $(TOP)/src
TWOBJ = $(TWDIR)/obj
RNDDIR = $(TOP)/rnd
RNDOBJ = $(RNDDIR)/obj
RAIDOBJ = $(RNDDIR)/obj
#MPIDIR = /vast/dmartin/download/mpich.ch_p4
MPIDIR = /local/packages/parallel/mpi
CPPFLAGS = -I$(TWDIR) -I$(MPIDIR)/include -DMPI\
-DFINALSTATS -DCOMMITSTATS
#-DLPDEBUG
#-DOBJECTDEBUG
#-DUSENONBLOCKINGMPICALLS\
# -DCOMMDEBUG
CXXFLAGS = -g -Wall -O2 -pipe
#CXXFLAGS = -g -O2 -pto
LDFLAGS = -L$(MPIDIR)/lib/solaris/ch_p4
LOADLIBES = -lmpi -lsocket -lnsl -lm
DEPENDINC = -I/local/packages/gnu/lib/g++-include

SIMSRCS = main.cc\
	RAIDProcess.cc\
	RAIDFork.cc\
        RAIDDisk.cc

RAIDOBJS = $(RAIDOBJ)/main.o\
	$(RAIDOBJ)/RAIDProcess.o\
	$(RAIDOBJ)/RAIDFork.o\
        $(RAIDOBJ)/RAIDDisk.o

.PHONY: $(TWOBJ)/libTW.a $(RNDOBJ)/libRnd.a

all: $(RAIDOBJ) RAID $(RNDOBJ)/libRnd.a

$(RAIDOBJ):
	mkdir $(RAIDOBJ)

#Just build a normal executable
RAID: $(RAIDOBJS) $(TWOBJ)/libTW.a $(RNDOBJ)/libRnd.a
	$(CXX) -g $^\
	$(LDFLAGS) $(LOADLIBES)\
	-o $@

RAID.pure: $(RAIDOBJS) $(TWOBJ)/libTW.a $(RNDOBJ)/libRnd.a
	/home/common/pure/solaris/bin/purify -g++ $(CXX) $^\
	$(LDFLAGS) $(LOADLIBES)\
	-o $@

RAID.quantify: $(RAIDOBJS) $(TWOBJ)/libTW.a $(RNDOBJ)/libRnd.a
	/home/common/pure/solaris/quantify-2.0.1-solaris2/quantify \
	$(CXX) $^\
	$(LDFLAGS) $(LOADLIBES)\
	-o $@

$(TWOBJ)/libTW.a:
	$(MAKE) -j6 -l5 -C $(TWDIR)

$(RNDOBJ)/libRnd.a:
	$(MAKE) -C $(RNDDIR)

 # rule to make all the process .o files
$(RAIDOBJ)/%.o : %.cc
	$(CXX) -c $(CPPFLAGS) $(CXXFLAGS)\
		$< -o $@

depend:
	makedepend -p$(RAIDOBJ)/ -- $(CPPFLAGS) $(CXXFLAGS) -- $(DEPENDINC) $(SIMSRCS)
	$(MAKE) -C $(TWDIR) depend
	$(MAKE) -C $(RNDDIR) depend

cleandep:
	$(TOP)/bin/cleandepend ./Makefile > ./Makefile.clean
	mv ./Makefile.clean ./Makefile
	$(MAKE) -C $(TWDIR) cleandep
	$(MAKE) -C $(RNDDIR) cleandep
clean:	
	rm -f *~ \#*\#
	rm -f $(RAIDOBJ)/*.o $(RAIDOBJ)/RAID
	$(MAKE) -C $(TWDIR) clean
	$(MAKE) -C $(RNDDIR) clean

it: clean depend RAID

# DO NOT DELETE THIS LINE -- make depend depends on it.

