#-*-makefile-*-
export 

CXX = /usr/local/paragon/paragon/bin.sun4/iCC
AR = /usr/local/paragon/paragon/bin.sun4/ar860
ARCH        = paragon
COMM        = nx

TOP = ..
TWDIR = $(TOP)/src
TWOBJ = $(TWDIR)/obj
RNDDIR = $(TOP)/rnd
RAIDOBJ = $(RNDDIR)/obj
RNDOBJ = $(RNDDIR)/obj
MPIDIR = /usr/local/MPI/mpich

CPPFLAGS = -I$(TWDIR) -I$(MPIDIR)/include -DMPI_$(ARCH) -DFINALSTATS\
	-DCOMMITSTATS -DFORTRANUNDERSCORE   -DHAVE_STDLIB_H=1\
	-DMALLOC_RET_VOID=1 -DMPI\
	-DUSENONBLOCKINGMPICALLS
CXXFLAGS = -nx -tlocal -O4
#LDFLAGS = -L$(MPIDIR)/lib/paragon/nx
LOADLIBES = -lmpi -nx -lm 
DEPENDINC = -I/usr/local/paragon/paragon/include/CC

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

$(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
	/local/packages/pure/bin/purify -g++ $(CXX) $^\
	$(LDFLAGS) $(LOADLIBES)\
	-o $@

RAID.quantify: $(RAIDOBJS) $(TWOBJ)/libTW.a  $(RNDOBJ)/libRnd.a
	/local/packages/pure/bin/quantify $(CXX) $^\
	$(LDFLAGS) $(LOADLIBES)\
	-o $@

$(TWOBJ)/libTW.a:
	$(MAKE) -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 $(RNDDIR) depend
	$(MAKE) -C $(TWDIR) 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.

