#
# This is the `Makefile' for the flight simulator
# based on the AIAA Aircraft Controls Design Challenge computer model
# converted from FORTRAN to C++ using A Fortran-to-C Converter, `f2c'.
#
# It requires the `libI77.a' and `libF77.a' libraries
# but the `f2c.h' header file is already included.
# It also uses The C++ Matrix class `libMatrix.a' library
# and `double.Matrix.h' header file.
#
# Library source programs and header files can be obtained via anonymous FTP.
# Get `libf77.Z' and `libi77.Z' from `netlib.att.com:/netlib/f2c/'
# and `Matrix.tar.Z' from `ftp.cs.ucla.edu:/pub/'.
#
# If the `-DLEARNING' macro definition is included in the `DEFINES' variable,
# the learning algorithm and derivative arithmetic are automatically included
# in the code for the flight simulator.
#

COMPILE=g++
#COMPILE=CC
INC_DIR=$(HOME)
LIB_DIR=$(HOME)
INCLUDE=-I$(INC_DIR)/Matrix/include \
#	-I$(INC_DIR)/Matrix/libg++/include
LIBRARY=-L$(LIB_DIR)/f2c/libF77 -L$(LIB_DIR)/f2c/libI77 \
	-L$(LIB_DIR)/Matrix/lib \
#	-L$(LIB_DIR)/Matrix/libg++/lib
DEFINES=-DLEARNING
OBJECTS=adatin.o  aircac.o   altfn.o  b05fcn.o  b08fcn.o   ccalc.o  cgcalc.o  \
	datinp.o  dedbnd.o  derivc.o  engdin.o  engine.o  engmdl.o  engsdl.o  \
	engtlu.o  flimit.o  headin.o   icset.o    init.o  initac.o  instrm.o  \
	limtin.o  rlimnp.o     tlu.o  uengin.o    vcal.o
SOURCES=adatin.C aircac.C  altfn.C b05fcn.C b08fcn.C  ccalc.C cgcalc.C \
	datinp.C dedbnd.C derivc.C engdin.C engine.C engmdl.C engsdl.C \
	engtlu.C flimit.C headin.C  icset.C   init.C initac.C instrm.C \
	limtin.C rlimnp.C    tlu.C uengin.C   vcal.C
HEADERS=f2c.h Builtin.h arithmetic.h variables.h doublereal.h
EXECUTE=simulate

       all: $(EXECUTE)

$(EXECUTE): $(OBJECTS) simulate.o umisc.o doublereal.o
	$(COMPILE) $(LIBRARY) -O -o $(EXECUTE) \
	$(OBJECTS) simulate.o umisc.o doublereal.o \
	-lI77 -lF77 -lMatrix -lg++ -lm -ltermcap

  adatin.o: adatin.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c adatin.C

  aircac.o: aircac.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c aircac.C

   altfn.o:  altfn.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c  altfn.C

  b05fcn.o: b05fcn.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c b05fcn.C

  b08fcn.o: b08fcn.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c b08fcn.C

   ccalc.o:  ccalc.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c  ccalc.C

  cgcalc.o: cgcalc.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c cgcalc.C

  datinp.o: datinp.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c datinp.C

  dedbnd.o: dedbnd.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c dedbnd.C

  derivc.o: derivc.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c derivc.C

  engdin.o: engdin.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c engdin.C

  engine.o: engine.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c engine.C

  engmdl.o: engmdl.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c engmdl.C

  engsdl.o: engsdl.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c engsdl.C

  engtlu.o: engtlu.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c engtlu.C

  flimit.o: flimit.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c flimit.C

  headin.o: headin.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c headin.C

   icset.o:  icset.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c  icset.C

    init.o:   init.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c   init.C

  initac.o: initac.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c initac.C

  instrm.o: instrm.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c instrm.C

  limtin.o: limtin.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c limtin.C

  rlimnp.o: rlimnp.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c rlimnp.C

     tlu.o:    tlu.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c    tlu.C

  uengin.o: uengin.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c uengin.C

    vcal.o:   vcal.C $(HEADERS)
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c   vcal.C

simulate.o: simulate.C simulate.h arithmetic.h variables.h doublereal.h
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c simulate.C

   umisc.o:   umisc.C arithmetic.h variables.h doublereal.h
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c umisc.C

 control.o: control.C arithmetic.h variables.h doublereal.h
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c control.C

doublereal.o: doublereal.C variables.h doublereal.h
	$(COMPILE) $(INCLUDE) $(DEFINES) -O -c doublereal.C

doublereal.h doublereal.C: real.hP real.ccP
	genclass -2 double val doublereal ref real double
	mv doublereal.cc doublereal.C

    clean:
	rm -f core $(EXECUTE) *.o
