
#***********************************************************************
# Makefile for the ECCO off-line large scale optimization.
#
# started: Patrick Heimbach heimbach@mit.edu 19-Jun-2000
#
# changed: 
#
#***********************************************************************

# The optimization routines.
SRC		=	optim_main.F			\
			optim_sub.F			\
			optim_numbmod.F			\
			optim_initmod.F			\
			optim_readdata.F		\
			optim_writedata.F		\
			optim_write_control.F		\
			xerbla.F                        \
			simul.F

EXEDIR     = ./

# Location of cpp preprocessor
# default is (Linux)
CPP             = cat $< | /usr/local/bin/cpp -P -traditional
# on SUNOS
# CPP		= cat $< | /usr/ccs/lib/cpp

INCLUDEDIRS     = -I.				\
		-I../mysetups/ecco_v4_cs32/build_1d/

LIBDIRS         = -L.				\
                  -L../lsopt/

LIBS            = -llsopt_ecco			\
                  -framework vecLib

# OPTMODE is either equal to OFFLINE or ONLINE
OPTMODE         = OFFLINE
EXECUTABLE      = $(EXEDIR)optim.x

# The cpp flags.
CPPFLAGS = -DREAL_BYTE=4		\
	-DMAX_INDEPEND=1000000		\
	-D_RL='double precision'	\
	-D_RS='double precision'	\
	-D$(OPTMODE)

#                -DMAX_INDEPEND=293570968        \
# FORTRAN compiler and its flags.
# default is (Linux)
FC              = gfortran
FFLAGS          =  -fconvert=big-endian

# ifort compilers
#FC              = ifort
#FFLAGS          = -mp -132 -r8 -i4 -w95 -W0 -WB -CB -fpe0 -traceback -convert big_endian -assume byterecl

# SGI o3k IRIX64
#FC              = f77
#FFLAGS          = -extend_source -bytereclen -mips4 -r8 -static

# AER cluster
#FC		= /opt/mpich/bin/mpif77
#FFLAGS		= -byteswapio -r8 -Mnodclchk -Mextend

# File removal.
RM		= rm -f

SMALLF      = $(SRC:.F=.for)
OBJECTS     = $(SRC:.F=.o)

.SUFFIXES: .o .for .F

all: $(EXECUTABLE)
$(EXECUTABLE): $(SMALLF)
	$(FC) $(FFLAGS) -c $(SMALLF)
	$(FC) -o $@ $(FFLAGS) $(OBJECTS) $(LIBDIRS) $(LIBS)

depend:
	makedepend -o .for $(INCLUDEDIRS) $(SRC)

# The normal chain of rules is (  .F - .for - .o  )
.F.for:
	$(CPP) $(CPPFLAGS) $(INCLUDEDIRS) > $@
xerbla.for: xerbla.F
	$(CPP) $(INCLUDEDIRS) > $@
.for.o:
	$(FC) $(FFLAGS) -c $<

# Cleaning options.
clean:
	$(RM) $(EXEDIR)optim.x *.o *.for

scratch:
	$(RM) OPWARMD OPWARMI $(EXEDIR)optim.x $(OBJ)

# DO NOT DELETE

