WEBDIR = /usr2/makino/WWW/softwares/pC++tree
PGPLOT_DIR = /usr/local/pgplot5.2
#PGPLOT_DIR = /data6/makino/PDS/pgplot_linux/pgplot
PGINCLUDE =  -I$(PGPLOT_DIR)
CFLAGS = $(FLOAT_OPTIONS) -DREAL=double -O4 -ffast-math -funroll-loops 

#
# Add -DNOGRAPHICS for installation without PGPLOT
#CPPFLAGS =   -DTREE $(PGINCLUDE) -p $(FLOAT_OPTIONS) -O4   -ffast-math -funroll-loops
CPPFLAGS = -DNOGRAPHICS -DTREE $(PGINCLUDE)  $(FLOAT_OPTIONS) -O4   -ffast-math -funroll-loops
#PGLIB     =  -L$(PGPLOT_DIR) -g3 -O4 -lcpgplot -lpgplot -lX11 -lUfor -lfor -lFutil -lm -lprof1 -lpdf
PGLIB      = 
#G4LIB =  -L/usr2/makino/src/pci-harp3/export/library -lg4a -lrt -lm
#G4LIB =  -L/usr6/kawai/pub/lib -lg4a -lrt -lm
G4LIB =  -L/usr2/makino/disk3src/harplibs -lg4a -lrt -lm
G6LIB =  -L../g6hib-x86/ -lg6lx  -L../grape6-x86 -lg6lxsim2  -lm
G6DIR = ../g6hib-x86
G5LIB =  -L/usr2/makino/disk3src/harplibs -lg5a -lphibdma -lm
H3LIB = -L/usr2/makino/src/harp3board -lharp3  -lrt -lm 
G5INCLUDE = -I/usr2/makino/src/real_g5_for_lafite

BASELIBOBJS = pgetopt.o distribute.o  second.o time.o 
LIBOBJS = $(BASELIBOBJS)  gravity.o nbody_MP.o BHtree.o
PLIBOBJS = $(BASELIBOBJS)  gravity.o  nbody_MP_MPI.o BHtree.o tcplib.o
LIBOBJSG4 = pgetopt.o  gravity_g4.o BHtree_g4.o second.o
LIBOBJSG6 = $(BASELIBOBJS) gravity_g6.o BHtree_g6.o nbody_MP.o 
PLIBOBJSG6 = $(BASELIBOBJS) gravity_g6.o BHtree_g6.o   nbody_MP_MPI.o  tcplib.o
LIBOBJSG5 = $(BASELIBOBJS) gravity_g5.o BHtree_g5.o nbody_MP.o 
PLIBOBJSG5 = $(BASELIBOBJS) gravity_g5.o BHtree_g5.o   nbody_MP_MPI.o  tcplib.o

EXPORT_FILES = BHtree.h nbody_particle.h vector.h \
               BHtree.C	gravity.C nbody.C pgetopt.C \
	       second.c \
	       Makefile nbody_guide.tex\
               README COPYRIGHT \
               samplein sampleparm samplelog  samplelog_g4 

export: export.tar.gz
	ls -al export.tar.gz
	tar cvf export.tar `cat exportfileslist`
	gzip export.tar 
gravity.o : gravity.C  nbody_particle.h
	g++  $(CPPFLAGS)  -c gravity.C
gravity_g4.o : gravity.C  nbody_particle.h
	g++  -DHARP3 $(CPPFLAGS)  -c gravity.C
	mv gravity.o gravity_g4.o
gravity_g6.o : gravity.C  nbody_particle.h
	g++  -DGRAPE6 $(CPPFLAGS)  -c gravity.C
	mv gravity.o gravity_g6.o
gravity_g5.o : gravity.C  nbody_particle.h
	g++  -DGRAPE5 $(CPPFLAGS)  -c gravity.C
	mv gravity.o gravity_g5.o



nbody.o : nbody.C  nbody_particle.h
	g++  -c -DEVOLVE   $(CPPFLAGS)  nbody.C 
nbody : nbody.o   $(LIBOBJS)
	g++      $(CPPFLAGS) -o nbody nbody.o $(LIBOBJS) $(PGLIB)
nbody_MPI : nbody.o   $(PLIBOBJS)
	mpiCC    $(CPPFLAGS) -o nbody_MPI nbody.o $(PLIBOBJS) $(PGLIB)
nbody_g4 : nbody.C  nbody_particle.h $(LIBOBJSG4)
	g++  -DEVOLVE    $(CPPFLAGS) -o nbody_g4 nbody.C $(LIBOBJSG4) $(PGLIB) $(G4LIB)
nbody_g6_MPI : nbody.o   $(PLIBOBJSG6)
	mpiCC    $(CPPFLAGS) -o nbody_g6_MPI nbody.o $(PLIBOBJSG6) $(PGLIB) $(G6LIB)
nbody_g6 : nbody.C  nbody_particle.h $(LIBOBJSG6)
	g++  -DEVOLVE    $(CPPFLAGS) -o nbody_g6 nbody.C $(LIBOBJSG6) $(PGLIB) $(G6LIB)
nbody_g5_MPI : nbody.o   $(PLIBOBJSG5)
	mpiCC    $(CPPFLAGS) -o nbody_g5_MPI nbody.o $(PLIBOBJSG5) $(PGLIB) $(G5LIB)
nbody_g5 : nbody.C  nbody_particle.h $(LIBOBJSG5)
	g++  -DEVOLVE    $(CPPFLAGS) -o nbody_g5 nbody.C $(LIBOBJSG5) $(PGLIB) $(G5LIB)
nbody_h3 : nbody.C  nbody_particle.h $(LIBOBJSG4)
	g++  -DEVOLVE    $(CPPFLAGS) -o nbody_h3 nbody.C $(LIBOBJSG4) $(H3LIB)

BHtree.o : BHtree.C  nbody_particle.h BHtree.h 
	g++    $(CPPFLAGS) -c BHtree.C 
BHtree_g4.o : BHtree.C  nbody_particle.h BHtree.h 
	g++ -DHARP3   $(CPPFLAGS) -c BHtree.C
	mv BHtree.o  BHtree_g4.o 
BHtree_g6.o : BHtree.C  nbody_particle.h BHtree.h 
	g++ -I$(G6DIR) -DGRAPE6   $(CPPFLAGS) -c BHtree.C
	mv BHtree.o  BHtree_g6.o 
BHtree_g5.o : BHtree.C  nbody_particle.h BHtree.h 
	g++ $(G5INCLUDE) -DGRAPE5   $(CPPFLAGS) -c BHtree.C
	mv BHtree.o  BHtree_g5.o 
pgetopt.o : pgetopt.C  
	g++  $(CPPFLAGS)  -c pgetopt.C
nbody_MP.o : nbody_MP.C  
	g++  $(CPPFLAGS)  -c nbody_MP.C
nbody_MP_MPI.o : nbody_MP_MPI.C  
	mpiCC  $(CPPFLAGS)  -c nbody_MP_MPI.C
time.o : time.C  
	g++  $(CPPFLAGS)  -c time.C
tcplib.o : ../tcplib/tcplib.c
	mpicc  $(CFLAGS) -DMPIMODE  -c ../tcplib/tcplib.c
distribute.o: distribute.C 
	g++  $(CPPFLAGS)  -c distribute.C
distribute_test: distribute.C nbody_MP.o
	g++  $(CPPFLAGS)  -o distribute_test -DTESTMAIN distribute.C  nbody_MP.o
splitsnap: splitsnap.C pgetopt.o
	g++  $(CPPFLAGS)  -o splitsnap -DTESTMAIN splitsnap.C  pgetopt.o

samplelog:  nbody
	nbody -i samplein > samplelog
samplelog_g4:  nbody_g4
	nbody_g4 -i samplein > samplelog_g4

document: .document
	ls -al .document
.document: nbody_guide.tex
	latex nbody_guide
	latex2web.csh nbody_guide $(WEBDIR) 
	touch .document
.web: export.tar.gz README COPYRIGHT
	/bin/cp -p export.tar.gz  $(WEBDIR)
	/bin/cp -p README  $(WEBDIR)
	/bin/cp -p COPYRIGHT  $(WEBDIR)
	touch .web
web: .web	
	ls -al $(WEBDIR)

