#
# PSMILe Makefile
#
# Must be replaced by a generated Makefile in future.
#
# $Id: Makefile,v 1.3 2006/06/16 15:25:50 ghattas Exp $
#
##### User configurable options #####

include ../../../oasis3/util/make_dir/make.inc

### End User configurable options ###
#
#-------------------------------------------------------------------------------------------------
#
# Definitions
#
# CPPLOCAL (_M1) (_M2) = Local CPP directives for testing special cases
#
#--------------------------------------------------------------------------------------------------
#

# keys
# type of decomposition :
# DECOMP_SERIAL only for 1D decomposition in monoprocessor
# DECOMP_APPLE for 1D decomposition in monoprocessor and in parallel (equivalent to SERIAL in mono or APPLE in para)
# DECOMP_BOX for 2D decomposition in monoprocessor and in parallel (equivalent to BOX)
#CPPKEYDECOMP_M1=DECOMP_SERIAL
CPPKEYDECOMP_M1=DECOMP_APPLE
#CPPKEYDECOMP_M1=DECOMP_BOX
#CPPKEYDECOMP_M2=DECOMP_SERIAL
CPPKEYDECOMP_M2=DECOMP_APPLE
#CPPKEYDECOMP_M2=DECOMP_BOX

#--------------------------------------------------------------------------------------------------

CPPLOCAL_M1 =  -D${CPPKEYDECOMP_M1}
#
#
#
CPPLOCAL_M2 =  -D${CPPKEYDECOMP_M2}

#-------------------------------------------------------------------------------------------------
#
#
OBJ_M1 =  routine_hdlerr.o read_dim_model1.o  \
          read_grid_model1.o oasis3_decomp.o \
          function_sent.o 
OBJ_M2 =  routine_hdlerr.o read_dim_model2.o  \
          read_grid_model2.o oasis3_decomp_m2.o \
          function_sent.o 
#-------------------------------------------------------------------------------
# General rules
#-------------------------------------------------------------------------------
#
default: all
#
all: oasis3_psmile toyocn toyatm 
#
# Compile and link oasis3 and libaries
oasis3_psmile:
	-rm -f oasis3.$(CHAN).x
	(cd ../../../oasis3/util/make_dir ; $(MAKE) oasis3_psmile -f TopMakefileOasis3)
	ln -sf $(BINDIR)/oasis3.$(CHAN).x oasis3.$(CHAN).x
#
#
#-------------------------------------------------------------------------------
# Rules for executables
#-------------------------------------------------------------------------------
#
toyocn: $(OBJ_M1) model1.o $(LIBPSMILE) Makefile
	$(LD) $(LDFLAGS) -o $@ $(OBJ_M1) model1.o $(LIBPSMILE) $(FLIBS)
toyatm: $(OBJ_M2) model2.o $(LIBPSMILE) Makefile
	$(LD) $(LDFLAGS) -o $@ $(OBJ_M2) model2.o $(LIBPSMILE) $(FLIBS)
#
#-------------------------------------------------------------------------------
# Rules for compilation
#-------------------------------------------------------------------------------
#
routine_hdlerr.o :		routine_hdlerr.F90
				$(F90) $(F90FLAGS) -c routine_hdlerr.F90
read_dim_model1.o :		read_dim_model1.F90
				$(F90) $(F90FLAGS) -c read_dim_model1.F90
read_grid_model1.o :		read_grid_model1.F90
				$(F90) $(F90FLAGS) -c read_grid_model1.F90
read_dim_model2.o :		read_dim_model2.F90
				$(F90) $(F90FLAGS) -c read_dim_model2.F90
read_grid_model2.o :		read_grid_model2.F90 
				$(F90) $(F90FLAGS) -c read_grid_model2.F90
oasis3_decomp.o : 		oasis3_decomp.F90
				$(F90) $(F90FLAGS) $(CPPLOCAL_M1) -c oasis3_decomp.F90
oasis3_local_grid.o :		oasis3_local_grid.F90
				$(F90) $(F90FLAGS) -c oasis3_local_grid.F90
function_sent.o :		function_sent.F90
				$(F90) $(F90FLAGS) -c function_sent.F90
oasis3_decomp_m2.o : 		oasis3_decomp.F90
				$(F90) $(F90FLAGS) $(CPPLOCAL_M2) -o oasis3_decomp_m2.o -c oasis3_decomp.F90

model1.o :	model1.F90 Makefile
		$(F90) $(F90FLAGS) $(CPPLOCAL_M1) -c model1.F90
model2.o :	model2.F90 Makefile
		$(F90) $(F90FLAGS) $(CPPLOCAL_M2) -c model2.F90
#
#-------------------------------------------------------------------------------
# Rules for configuration files
#-------------------------------------------------------------------------------
#
#
get_code = /lib/cpp -P -traditional
#
#-------------------------------------------------------------------------------
# Utilities
#-------------------------------------------------------------------------------
#
help:
	more Make.help
#
# Clean directory
#
clean:
	-rm -f *.o *.x *.mod *.MOD
	-rm -f i.*.F90 *.L
	-rm -f core core.* 

