# Makefile for Charm++ Makemblock partitioner
# Orion Sky Lawlor, olawlor@acm.org, 6/30/2001
CHARMC=../../../../bin/charmc $(OPTS) 
CXX=$(CHARMC) -seq 
LD=$(CHARMC) -seq -language c++ -fortran 
F90C=$(CHARMC) -seq

##################################
# Program objects, headers, and executables:

READOBJ=read.o readgrd.o readreg.o readmsh.o
WRITEOBJ=write.o writemsh.o writegrda.o writegrdb.o

UTIL_OBJ=ckhashtable.o read.a write.a util.o
OBJ= adj.o face.o buildface.o split.o \
	readinp.o writeflo.o writetop.o writemblock.o \
	$(UTIL_OBJ)
HEADERS=adj.h face.h util.h ckhashtable.h vector3d.h gridutil.h
DEST=makemblock
RTST= $(UTIL_OBJ)
ATST=read.o $(UTIL_OBJ)

# C++ compiler flags:
CFLAGS= $(OPTS) $(EXTRA) -I.
CCFLAGS=$(CFLAGS)
LFLAGS= $(FLIBS) -lm

########################################

all:  $(DEST) simpleblock

makemblock: makemblock.o $(OBJ) $(HEADERS) 
	$(LD) $(OPTS) $< $(OBJ) -o $@ $(LFLAGS)

simpleblock: simpleblock.o $(OBJ)
	$(LD) $(OPTS) $< $(OBJ) -o $@ $(LFLAGS)

read.a: $(READOBJ)
	$(AR) cr $@ $(READOBJ)

write.a: $(WRITEOBJ)
	$(AR) cr $@ $(WRITEOBJ)

.SUFFIXES: .f90 .cpp

.cpp.o:
	$(CXX) $(OPTS) $(CCFLAGS) -c $< -o $@

.f90.o:
	$(F90C) $(OPTS) $(F90FLAGS) -c $< -o $@

# Unit test programs
read.tst: $(RTST) read.cpp
	$(CXX)  $(OPTS) $(CCFLAGS) -DSTANDALONE -c read.cpp 
	$(LD) $(OPTS) read.o $(RTST) -o $@ $(LFLAGS)

adj.tst: $(ATST) adj.cpp
	$(CXX)  $(OPTS) $(CCFLAGS) -DSTANDALONE -c adj.cpp 
	$(LD) $(OPTS) adj.o $(ATST) -o $@ $(LFLAGS)

clean:
	-/bin/rm -fr *.o *.a *~ *.tst makeflo makemblock simpleblock ii_files/ SunWS_cache/
