HTMLDIR=./
# Flags for HPUX
optimize1  =  +O2
optimize2  =  +O3
optimize3  =  +O3  
lib =   +U77
f77 =   f77
# Flags for Absoft
#optimize1  =   -N51 -N15 -N3 -N26 -B100 -O -w -f -s 
#optimize2  =  -N51 -N15 -N3 -N26 -B100 -O -w -f -s 
#optimize3  =   -N51 -N15 -N3 -N26 -B100 -O -w -f -s 
#lib =   
#f77 =   f77
# Flags for Portland
#optimize1  =   -fast -Mbyteswapio
#optimize2  =  -mp -Knoieee -Mconcur=dist:cyclic -Minline -Mvect -fast  -Mbyteswapio
#optimize2  =  -mp -Knoieee -Mconcur=dist:cyclic -Mvect  -fast  -Mbyteswapio 
#optimize2  =  -mp -Knoieee -Mvect -fast  -Mbyteswapio
#optimize3  =   -fast  -Mbyteswapio
#lib =   
#f77 =   pgf77

# Flags for Origin
#optopt = -Ofast=ip27 -INLINE:=ON -IPA -OPT:roundoff=3:Olimit=0:fast_sqrt=ON:IEEE_arithmetic=3
#opt =  -mp -LNO -64 $(optopt)
#optimize1  = $(opt)
#optimize2  = $(opt)
#optimize3  = $(opt)
#lib = 
#f77 = f77

# Flags for Solaris
#optimize1  =  -O3
#optimize2  =  -O3
#optimize3  =  -O3 -dbl  
#f77 =   f77

# General default
#optimize1  =  -O4 -fast -convert big_endian
#optimize2  =  -O4 -fast -convert big_endian
#optimize3  =  -O4 -fast -convert big_endian
#f77 = fort
lib =  

all: PMmain PMpower PMmodels PMmodelCHDM PMhalos PMstartCDM PMstartCHDM PM_to_ASCII PMselect PMstartM

clean:
	-rm *.o *.dvi *.log *.aux pmcode.ps *.tar *.DAT *.gz
	-rm PMmain PMpower PMmodels PMmodelCHDM PMhalos PMstartCDM PMstartCHDM PM_to_ASCII
	-rm InStart.dat fort.*
	-rm -rf pmcode

manual: pmcode.tex
	latex pmcode
	latex pmcode
	dvips pmcode

manual-html: pmcode.tex
	latex2html -info "0" -local_icons -no_math -html_version 3.2,math -t "PM Code" pmcode

tar:
	tar cvf PMcode.tar *.f *.h *.fit Makefile 
	gzip PMcode.tar
	tar cvf TEST32x128.tar TEST32x128
	gzip TEST32x128.tar
	tar cvXf .exclude.tar TEST128x256.tar TEST128x256
	gzip TEST128x256.tar

install: tar
	tar cvf - pmcode | (cd $(HTMLDIR) ; tar xvf -)
	mv PMcode.tar.gz $(HTMLDIR)/pmcode/
	cp pmcode.ps $(HTMLDIR)/pmcode/PMcode.ps
	gzip $(HTMLDIR)/pmcode/PMcode.ps
	-mkdir $(HTMLDIR)/pmcode/cgi-bin
	cp /home/avalon2/holtz/HTML/cgi-bin/PMregister.pl $(HTMLDIR)/pmcode/cgi-bin/

PMmain: PMmain.o PMauxiliary.o
	$(f77) $(lib) $(optimize1) -o PMmain PMmain.o PMauxiliary.o

PMmain.o: PMmain.f PMparameters.h PMmesh.h
	$(f77) $(lib) $(optimize1) -c  PMmain.f

PMmainM: PMmainM.o PMauxiliary.o
	$(f77) $(lib) $(optimize1) -o PMmainM PMmainM.o PMauxiliary.o

PMmainM.o: PMmainM.f PMparameters.h PMmesh.h
	$(f77) $(lib) $(optimize1) -c  PMmainM.f

PMauxiliary.o: PMauxiliary.f PMparameters.h PMmesh.h
	$(f77) $(lib) $(optimize2) -c  PMauxiliary.f

PMrotation: PMrotation.o PMauxiliary.o
	$(f77) $(lib) $(optimize1) -o PMrotation PMrotation.o PMauxiliary.o

PMrotation.o: PMrotation.f PMparameters.h PMrotation.h
	$(f77) $(lib) $(optimize1) -c  PMrotation.f

PMpower: PMpower.o PMauxiliary.o
	$(f77) $(lib) $(optimize1) -o PMpower PMpower.o PMauxiliary.o

PMpower.o: PMpower.f PMparameters.h PMmesh.h
	$(f77) $(lib) $(optimize1) -c  PMpower.f

PMpowerM: PMpowerM.o PMauxiliary.o
	$(f77) $(lib) $(optimize2) -o PMpowerM PMpowerM.o PMauxiliary.o

PMpowerM.o: PMpowerM.f PMparameters.h PMmesh.h
	$(f77) $(lib) $(optimize1) -c  PMpowerM.f

PMmodels: PMmodels.o 
	$(f77) $(lib) $(optimize3) -o PMmodels PMmodels.o

PMmodels.o: PMmodels.f
	$(f77) $(lib) $(optimize3) -c  PMmodels.f

PMmodelCHDM: PMmodelCHDM.o 
	$(f77) $(lib) $(optimize3) -o PMmodelCHDM PMmodelCHDM.o

PMmodelCHDM.o: PMmodelCHDM.f
	$(f77) $(lib) $(optimize3) -c  PMmodelCHDM.f

PMhalos: PMhalos.o PMauxiliary.o PMparameters.h PMlists.h
	$(f77) $(lib) $(optimize1) -o PMhalos PMhalos.o PMauxiliary.o

PMhalosM.o: PMhalosM.f PMauxiliary.o PMparameters.h PMlists.h
	$(f77) $(lib) $(optimize2) -c PMhalosM.f

PMhalosM: PMhalosM.o PMauxiliary.o PMparameters.h PMlists.h
	$(f77) $(lib) $(optimize2) -o PMhalosM PMhalosM.o PMauxiliary.o

PMprofile.o: PMprofile.f PMauxiliary.o PMparameters.h PMlists.h
	$(f77) $(lib) $(optimize2) -c PMprofile.f

PMprofile: PMprofile.o PMauxiliary.o PMparameters.h PMlists.h
	$(f77) $(lib) $(optimize2) -o PMprofile PMprofile.o PMauxiliary.o

PMhalos.o: PMhalos.f PMparameters.h PMlists.h
	$(f77) $(lib) $(optimize1) -c  PMhalos.f

PMstartCDM: PMstartCDM.o PMauxiliary.o
	$(f77) $(lib) $(optimize2) -o PMstartCDM PMstartCDM.o PMauxiliary.o

PMstartM: PMstartM.o 
	$(f77) $(lib) $(optimize2) -o PMstartM PMstartM.o 

PMstartM.o: PMstartM.f PMparameters.h 
	$(f77) $(lib) $(optimize2) -c  PMstartM.f

PMstartCR: PMstartCR.o 
	$(f77) $(lib) $(optimize2) -o PMstartCR PMstartCR.o 

PMstartCR.o: PMstartCR.f PMparameters.h 
	$(f77) $(lib) $(optimize2) -c  PMstartCR.f

PMstartCRm2: PMstartCRm2.o 
	$(f77) $(lib) $(optimize2) -o PMstartCRm2 PMstartCRm2.o 

PMstartCRm2.o: PMstartCRm.f PMparameters.h PMinitialCR2.h 
	$(f77) $(lib) $(optimize2) -c  PMstartCRm2.f

PMstartCDM.o: PMstartCDM.f PMparameters.h 
	$(f77) $(lib) $(optimize2) -c  PMstartCDM.f

PMfields: PMfields.o PMauxiliary.o
	$(f77) $(lib) $(optimize2) -o PMfields PMfields.o PMauxiliary.o

PMfields.o: PMfields.f PMfields.h PMparameters.h 
	$(f77) $(lib) $(optimize2) -c  PMfields.f

PMcone: PMcone.o PMauxiliary.o
	$(f77) $(lib) $(optimize2) -o PMcone PMcone.o PMauxiliary.o

PMcone.o: PMcone.f PMfields.h PMparameters.h 
	$(f77) $(lib) $(optimize2) -c  PMcone.f

PMstartCHDM: PMstartCHDM.o PMauxiliary.o
	$(f77) $(lib) $(optimize2) -o PMstartCHDM PMstartCHDM.o PMauxiliary.o

PMstartCHDM.o: PMstartCHDM.f PMparameters.h 
	$(f77) $(lib) $(optimize2) -c  PMstartCHDM.f

PM_to_ASCII: PM_to_ASCII.o PMauxiliary.o
	$(f77) $(lib) $(optimize2) -o PM_to_ASCII PM_to_ASCII.o PMauxiliary.o

PM_to_ASCII.o: PM_to_ASCII.f PMparameters.h 
	$(f77) $(lib) $(optimize2) -c  PM_to_ASCII.f

PM_to_ASCIIm: PM_to_ASCIIm.o PMauxiliary.o
	$(f77) $(lib) $(optimize1) -o PM_to_ASCIIm PM_to_ASCIIm.o PMauxiliary.o

PM_to_ASCIIm.o: PM_to_ASCIIm.f PMparameters.h 
	$(f77) $(lib) $(optimize1) -c  PM_to_ASCIIm.f


PMselect: PMselect.o PMauxiliary.o
	$(f77) $(lib) $(optimize2) -o PMselect PMselect.o PMauxiliary.o
PMselect.o: PMselect.f PMparameters.h 
	$(f77) $(lib) $(optimize2) -c  PMselect.f

PMsel: PMsel.o PMauxiliary.o
	$(f77) $(lib) $(optimize2) -o PMsel PMsel.o PMauxiliary.o
PMsel.o: PMsel.f PMparameters.h 
	$(f77) $(lib) $(optimize2) -c  PMsel.f

PMselectM: PMselectM.o PMauxiliary.o
	$(f77) $(lib) $(optimize2) -o PMselectM PMselectM.o PMauxiliary.o

PMselectM.o: PMselectM.f PMparameters.h 
	$(f77) $(lib) $(optimize2) -c  PMselectM.f
