#*********************************************************
# Makefile for XFOIL V6.94 programs
# H.Youngren 12/10/01
# M.Drela
#*********************************************************


SHELL = sh
#BINDIR = $(HOME)/bin/
BINDIR = .

PROGS = xfoil pplot pxplot

SRC = ../src

XFOILOBJ = xfoil.o xpanel.o xoper.o xtcam.o xgdes.o xqdes.o xmdes.o \
xsolve.o xbl.o xblsys.o xpol.o xplots.o xgeom.o xutils.o modify.o \
polplt.o aread.o naca.o spline.o plutil.o iopol.o gui.o sort.o \
dplot.o profil.o

PPLOTOBJ = pplot.o polplt.o sort.o iopol.o gui.o
PXPLOTOBJ = pxplot.o plutil.o gui.o

XUTILOBJ  = userio.o

PLTOBJ = ../plotlib/libPlt.a 
# Use this if you have a copy of the plotlib as a system library
#PLTOBJ = -lPlt 

# The extra location arg here is for Linux (X libs located in /usr/X11R6)
PLTLIBS = -L/usr/X11R6/lib -lX11 -lblas

###================================================
###  Default compilers and flags
###  FFLAGS2 used for xbl.f, FFLOPT used for xsolve.f
FC = f77
FFLAGS  = -O
FFLOPT  = -O
FFLAGS2 = -O
INSTALLCMD = install -s
##--------------------------

# Uncomment flags for desired machine...

##--------------------------
### DEC Alpha with OSF and DEC f77/f90 compiler
#FC = f77
#FFLAGS  = -fast -O4 -tune host
#FFLAGS2 =  -O2 
#FFLOPT  = -fast -O4 -tune host
#FFLOPT  = -fast -O5 -tune host -unroll 3
# Debug flags
#FFLAGS  = -O0 -g
#FFLOPT  = -fast -O4 -tune host
#FFLAGS2 =  -O0 -g 
##--------------------------
### SGI setup
#FC = f77
#FFLAGS  = -O2 -static
#FFLOPT  = -O2 -static
#FFLAGS2 = -O2 -static
##--------------------------
##  Uncomment for RS/6000
#FFLAGS  = -O -qextname
#FFLOPT  = -O -qextname
#FFLAGS2 = -O -qextname
##--------------------------
##  Uncomment for HP-9000
#FFLAGS  = -O +ppu
#FFLOPT  = -O +ppu
#FFLAGS2 = -O +ppu
##--------------------------
### Linux setup f2c/gcc compiler driver 
#FC = fort77
#FFLAGS  =  -O2 -fomit-frame-pointer
#FFLOPT  =  -O2 -fomit-frame-pointer
#FFLAGS2 =  -O2 -fomit-frame-pointer
##--------------------------
### Linux setup GNU g77 (g77-3 for RH7.2 with optional gcc3 compilers)
FC = g77
#FC = g77-3
FFLAGS  =  -O3 -fomit-frame-pointer
FFLOPT  =  -O3 -fomit-frame-pointer
FFLAGS2 =  -O3 -fomit-frame-pointer
# Specialize for i686 machine (small gain...)
#FFLAGS  =  -O3 -fomit-frame-pointer -mcpu=i686
#FFLOPT  =  -O3 -fomit-frame-pointer -mcpu=i686
#FFLAGS2 =  -O3 -fomit-frame-pointer -mcpu=i686
# Debug flags (symbols, array bounds)
#FFLAGS  =  -g -O0 -C
#FFLAGS2 =  -g -O0 -C
##--------------------------
### Linux Portland Group pgf77
#FC = pgf77
#FFLAGS  = -O -fast
#FFLOPT  = -O -fast
#FFLAGS2 = -O -fast
##--------------------------
### Intel Fortran Linux ifc
#FC = ifc
#FFLAGS  = -O2 
#FFLOPT  = -O3
#FFLAGS2 = -O2 
##--------------------------


all:	 $(PROGS)

install: 
	$(INSTALLCMD) $(PROGS) $(BINDIR)

clean:
	-/bin/rm $(PROGS)
	-/bin/rm $(XFOILOBJ) $(XUTILOBJ) $(PPLOTOBJ) $(PXPLOTOBJ)
#	-/bin/rm *.o



xfoil: $(XFOILOBJ) $(XUTILOBJ)
	$(FC) -o $@ $(XFOILOBJ) $(XUTILOBJ) $(PLTOBJ) $(PLTLIBS)

pxplot:	$(PXPLOTOBJ) $(XUTILOBJ)
	$(FC) -o $@ $(PXPLOTOBJ) $(XUTILOBJ) $(PLTOBJ) $(PLTLIBS) 

pplot:	$(PPLOTOBJ) $(XUTILOBJ)
	$(FC) -o $@ $(PPLOTOBJ) $(XUTILOBJ)  $(PLTOBJ) $(PLTLIBS)


xfoil.o: $(SRC)/xfoil.f  $(SRC)/XFOIL.INC
	$(FC) -c $(FFLAGS)  $(SRC)/xfoil.f
xpanel.o: $(SRC)/xpanel.f  $(SRC)/XFOIL.INC
	$(FC) -c $(FFLOPT)  $(SRC)/xpanel.f
xoper.o: $(SRC)/xoper.f  $(SRC)/XFOIL.INC
	$(FC) -c $(FFLAGS)  $(SRC)/xoper.f
xsolve.o: $(SRC)/xsolve.f  $(SRC)/XFOIL.INC
	$(FC) -c $(FFLOPT)  $(SRC)/xsolve.f
xsolve2.o: $(SRC)/xsolve2.f  $(SRC)/XFOIL.INC
	$(FC) -c $(FFLOPT)  $(SRC)/xsolve2.f
dplot.o: $(SRC)/dplot.f  $(SRC)/XFOIL.INC
	$(FC) -c $(FFLOPT)  $(SRC)/dplot.f
xtcam.o: $(SRC)/xtcam.f  $(SRC)/XFOIL.INC $(SRC)/XDES.INC
	$(FC) -c $(FFLAGS)  $(SRC)/xtcam.f
xgdes.o: $(SRC)/xgdes.f  $(SRC)/XFOIL.INC $(SRC)/XDES.INC
	$(FC) -c $(FFLAGS)  $(SRC)/xgdes.f
xqdes.o: $(SRC)/xqdes.f  $(SRC)/XFOIL.INC $(SRC)/XDES.INC
	$(FC) -c $(FFLAGS)  $(SRC)/xqdes.f
xmdes.o: $(SRC)/xmdes.f  $(SRC)/XFOIL.INC $(SRC)/XDES.INC $(SRC)/CIRCLE.INC
	$(FC) -c $(FFLAGS)  $(SRC)/xmdes.f
xbl.o:   $(SRC)/xbl.f    $(SRC)/XFOIL.INC $(SRC)/XBL.INC
	$(FC) -c $(FFLAGS2)  $(SRC)/xbl.f
xblsys.o: $(SRC)/xblsys.f                  $(SRC)/XBL.INC
	$(FC) -c $(FFLAGS)  $(SRC)/xblsys.f
xplots.o: $(SRC)/xplots.f $(SRC)/XFOIL.INC
	$(FC) -c $(FFLAGS)  $(SRC)/xplots.f
xpol.o: $(SRC)/xpol.f     $(SRC)/XFOIL.INC
	$(FC) -c $(FFLAGS)  $(SRC)/xpol.f
xgeom.o: $(SRC)/xgeom.f 
	$(FC) -c $(FFLAGS)  $(SRC)/xgeom.f
xutils.o: $(SRC)/xutils.f 
	$(FC) -c $(FFLAGS)  $(SRC)/xutils.f
modify.o: $(SRC)/modify.f 
	$(FC) -c $(FFLAGS)  $(SRC)/modify.f
aread.o: $(SRC)/aread.f 
	$(FC) -c $(FFLAGS)  $(SRC)/aread.f
naca.o: $(SRC)/naca.f 
	$(FC) -c $(FFLAGS)  $(SRC)/naca.f
plutil.o: $(SRC)/plutil.f 
	$(FC) -c $(FFLAGS)  $(SRC)/plutil.f
userio.o: $(SRC)/userio.f 
	$(FC) -c $(FFLAGS)  $(SRC)/userio.f
gui.o: $(SRC)/gui.f 
	$(FC) -c $(FFLAGS)  $(SRC)/gui.f
spline.o: $(SRC)/spline.f 
	$(FC) -c $(FFLAGS)  $(SRC)/spline.f
sort.o: $(SRC)/sort.f
	$(FC) -c $(FFLAGS)  $(SRC)/sort.f
profil.o: $(SRC)/profil.f
	$(FC) -c $(FFLAGS)  $(SRC)/profil.f

polplt.o: $(SRC)/polplt.f $(SRC)/PINDEX.INC
	$(FC) -c $(FFLAGS)  $(SRC)/polplt.f
iopol.o: $(SRC)/iopol.f $(SRC)/PINDEX.INC
	$(FC) -c $(FFLAGS)  $(SRC)/iopol.f

pplot.o:  $(SRC)/pplot.f  $(SRC)/PPLOT.INC
	$(FC) -c $(FFLAGS)  $(SRC)/pplot.f
pxplot.o: $(SRC)/pxplot.f $(SRC)/PXPLOT.INC
	$(FC) -c $(FFLAGS)  $(SRC)/pxplot.f




