 
FFLAGS = -O3
FC = gfortran
LD = gfortran
CHAIN  = ../Chain
NCHAIN = ../Nchain

SOURCE = \
nbody3.f adjust.f bindat.f binout.f binpop.f block.f \
bodies.f check.f cmbody.f cmcorr.f cmf.f core.f cputim.f \
data.f define.f efac2.f efac3.f energy.f escape.f evolve \
fclose.f fpert.f fpoly1.f fpoly2.f freeze.f hopop.f hotsys.f \
imf.f imf2.f impact.f input.f intgrt.f intide.f kepler.f \
ksapo.f kscorr.f ksinit.f ksint.f kslist.f ksmod.f ksperi.f \
kspert.f kspoly.f kspred.f ksreg.f ksres.f ksterm.f kstide.f \
lagr.f matrix.f merge.f modify.f mydump.f nbint.f nbpot.f \
nbrem.f nbrest.f nbtide.f nlmod.f output.f peri.f permit.f \
qstab.f ran2.f reflct.f remove.f rename.f reset.f resolv.f \
scale.f search.f setup.f sort1.f start.f stepi.f steps.f \
tides.f tpert.f units.f unpert.f update.f verify.f \
xtrnl0.f xtrnld.f xtrnlf.f xtrnlp.f xtrnlv.f xvpred.f zare.f \
zero.f revers.f assess.f inject.f drag.f \
triple.f derqp3.f difsy3.f extend.f start3.f subsys.f \
tperi.f trans3.f \
quad.f derqp4.f difsy4.f endreg.f ichain.f newreg.f newsys.f \
rchain.f rsort.f start4.f status.f

OBJECTS = \
nbody3.o adjust.o bindat.o binout.o binpop.o block.o \
bodies.o check.o cmbody.o cmcorr.o cmf.o core.o cputim.o \
data.o define.o efac2.o efac3.o energy.o escape.o evolve.o \
fclose.o fpert.o fpoly1.o fpoly2.o freeze.o hipop.o hotsys.o \
imf.o imf2.o impact.o input.o intgrt.o intide.o kepler.o \
ksapo.o kscorr.o ksinit.o ksint.o kslist.o ksmod.o ksperi.o \
kspert.o kspoly.o kspred.o ksreg.o ksres.o ksterm.o kstide.o \
lagr.o matrix.o merge.o modify.o mydump.o nbint.o nbpot.o \
nbrem.o nbrest.o nbtide.o nlmod.o output.o peri.o permit.o \
qstab.o ran2.o reflct.o remove.o rename.o reset.o resolv.o \
scale.o search.o setup.o sort1.o start.o stepi.o steps.o \
tides.o tpert.o units.o unpert.o update.o verify.o \
xtrnl0.o xtrnld.o xtrnlf.o xtrnlp.o xtrnlv.o xvpred.o zare.o \
zero.o revers.o assess.o inject.o drag.o \
triple.o derqp3.o difsy3.o extend.o start3.o subsys.o \
tperi.o trans3.o \
quad.o derqp4.o difsy4.o endreg.o ichain.o newreg.o newsys.o \
rchain.o rsort.o start4.o status.o \
chain.o chstab.o const.o cstab3.o cstab4.o derqp.o difsy1.o erel.o \
hpsort.o inclin.o ksphys.o physks.o qforce.o qpmod.o r2sort.o recoil.o \
redraw.o select.o slow.o stablc.o swcond.o switch.o transk.o transq.o \
transx.o vector.o xtf.o xtrnlu.o ycopy.o ysave.o \
absorb.o chfind.o chf.o chinit.o chlist.o chmod.o chpot.o chterm.o \
fchain.o ghost.o kcpert.o reduce.o reinit.o renew.o setsys.o \
tchain.o xcpred.o xtpert.o

nbody3:	$(OBJECTS)
	$(LD) $(FFLAGS) $(OBJECTS) -o nbody3

#
# Chain stuff
#

chain.o:  $(CHAIN)/chain.f 
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
chstab.o: $(CHAIN)/chstab.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
cstab3.o: $(CHAIN)/cstab3.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
cstab4.o: $(CHAIN)/cstab4.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
const.o:  $(CHAIN)/const.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
derqp.o:  $(CHAIN)/derqp.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
difsy1.o: $(CHAIN)/difsy1.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
erel.o:   $(CHAIN)/erel.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
hpsort.o: $(CHAIN)/hpsort.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
inclin.o: $(CHAIN)/inclin.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
ksphys.o: $(CHAIN)/ksphys.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
physks.o: $(CHAIN)/physks.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
qforce.o: $(CHAIN)/qforce.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
qpmod.o:  $(CHAIN)/qpmod.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
r2sort.o: $(CHAIN)/r2sort.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
recoil.o: $(CHAIN)/recoil.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
redraw.o: $(CHAIN)/redraw.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
select.o: $(CHAIN)/select.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
slow.o: $(CHAIN)/slow.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
stablc.o: $(CHAIN)/stablc.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
swcond.o: $(CHAIN)/swcond.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
switch.o: $(CHAIN)/switch.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
transk.o: $(CHAIN)/transk.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
transq.o: $(CHAIN)/transq.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
transx.o: $(CHAIN)/transx.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
vector.o: $(CHAIN)/vector.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
xtf.o:    $(CHAIN)/xtf.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
xtrnlu.o: $(CHAIN)/xtrnlu.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
ycopy.o:  $(CHAIN)/ycopy.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?
ysave.o:  $(CHAIN)/ysave.f
	$(FC) -c $(FFLAGS) -I$(CHAIN) $?

#
# Nchain stuff
#

absorb.o :$(NCHAIN)/absorb.f
	$(FC) -c $(FFLAGS) -I$(NCHAIN) $?
chf.o :$(NCHAIN)/chf.f
	$(FC) -c $(FFLAGS) -I$(NCHAIN) $?
chfind.o :$(NCHAIN)/chfind.f
	$(FC) -c $(FFLAGS) -I$(NCHAIN) $?
chinit.o :$(NCHAIN)/chinit.f
	$(FC) -c $(FFLAGS) -I$(NCHAIN) $?
chlist.o :$(NCHAIN)/chlist.f
	$(FC) -c $(FFLAGS) -I$(NCHAIN) $?
chmod.o  :$(NCHAIN)/chmod.f
	$(FC) -c $(FFLAGS) -I$(NCHAIN) $?
chpot.o  :$(NCHAIN)/chpot.f
	$(FC) -c $(FFLAGS) -I$(NCHAIN) $?
chterm.o :$(NCHAIN)/chterm.f
	$(FC) -c $(FFLAGS) -I$(NCHAIN) $?
fchain.o :$(NCHAIN)/fchain.f
	$(FC) -c $(FFLAGS) -I$(NCHAIN) $?
ghost.o  :$(NCHAIN)/ghost.f
	$(FC) -c $(FFLAGS) -I$(NCHAIN) $?
kcpert.o :$(NCHAIN)/kcpert.f
	$(FC) -c $(FFLAGS) -I$(NCHAIN) $?
reduce.o :$(NCHAIN)/reduce.f
	$(FC) -c $(FFLAGS) -I$(NCHAIN) $?
reinit.o :$(NCHAIN)/reinit.f
	$(FC) -c $(FFLAGS) -I$(NCHAIN) $?
renew.o  :$(NCHAIN)/renew.f
	$(FC) -c $(FFLAGS) -I$(NCHAIN) $?
setsys.o :$(NCHAIN)/setsys.f
	$(FC) -c $(FFLAGS) -I$(NCHAIN) $?
tchain.o :$(NCHAIN)/tchain.f
	$(FC) -c $(FFLAGS) -I$(NCHAIN) $?
xcpred.o :$(NCHAIN)/xcpred.f
	$(FC) -c $(FFLAGS) -I$(NCHAIN) $?
xtpert.o :$(NCHAIN)/xtpert.f
	$(FC) -c $(FFLAGS) -I$(NCHAIN) $?

printh:
	@- \rm -f NBODY3.TEXT
	@cath $(SOURCE) > NBODY3.TEXT
print:
	@- \rm -f NBODY3.TEXT
	@cat $(SOURCE) > NBODY3.TEXT
