# ------------------------------------------------------------------------------
# --- Standard rules  ----------------------------------------------------------
# ------------------------------------------------------------------------------
include Makefile

# ------------------------------------------------------------------------------
# --- NUOPC additions ----------------------------------------------------------
# ------------------------------------------------------------------------------
ocn_comp_mct.o : ocn_comp_mct.F90 
	$(ESMF_F90COMPILER) -c $(DEP_FRONTS) $(DEP_INCS) -I$(OBJROOT)/lib/include -I$(OBJROOT)/csm_share -I$(OBJROOT)/pio $(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) $(ESMF_F90COMPILEFREECPP) $(ESMF_F90COMPILECPPFLAGS) $(USER_DEFS) $<

ocn_comp_nuopc_mod.o : ocn_comp_nuopc_mod.F90
	$(ESMF_F90COMPILER) -c $(DEP_FRONTS) $(DEP_INCS) -I$(OBJROOT)/lib/include -I$(OBJROOT)/csm_share -I$(OBJROOT)/pio $(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) $(ESMF_F90COMPILEFREECPP) $(ESMF_F90COMPILECPPFLAGS) $(USER_DEFS) $<

mod_hycom_nuopc_glue.o : mod_hycom_nuopc_glue.F90
	$(ESMF_F90COMPILER) -c $(DEP_FRONTS) $(DEP_INCS) -I$(OBJROOT)/lib/include -I$(OBJROOT)/csm_share -I$(OBJROOT)/pio $(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) $(ESMF_F90COMPILEFREECPP) $(ESMF_F90COMPILECPPFLAGS) $(USER_DEFS) $<

mod_cb_arrays_nuopc_glue.o : mod_cb_arrays_nuopc_glue.F90
	$(ESMF_F90COMPILER) -c $(DEP_FRONTS) $(DEP_INCS) -I$(OBJROOT)/lib/include -I$(OBJROOT)/csm_share -I$(OBJROOT)/pio $(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) $(ESMF_F90COMPILEFREECPP) $(ESMF_F90COMPILECPPFLAGS) $(USER_DEFS) $<


.PRECIOUS: %.o

%.mk : %.o
	@echo "# ESMF self-describing build dependency makefile fragment" > $@
	@echo >> $@
	@echo "ESMF_DEP_FRONT     = hycom"                  >> $@
	@echo "ESMF_DEP_INCPATH   = `pwd`"                  >> $@
	@echo "ESMF_DEP_CMPL_OBJS = `pwd`/"$<               >> $@
	@echo "ESMF_DEP_LINK_OBJS = `pwd`/libhycom_nuopc.a" >> $@
	@echo "ESMF_DEP_SHRD_PATH = "                       >> $@
	@echo "ESMF_DEP_SHRD_LIBS = "                       >> $@
	@echo
	@echo "Finished generating ESMF self-describing build dependency makefile fragment:" $@
	@echo

nuopc: ocn_comp_mct.o ocn_comp_nuopc_mod.mk libhycom_nuopc.a

ocn_comp_mct.o: $(MODS) $(OBJS)

ocn_comp_nuopc_mod.o: mod_hycom_nuopc_glue.o $(MODS) $(OBJS)

mod_hycom_nuopc_glue.o: mod_cb_arrays_nuopc_glue.o $(MODS) $(OBJS)

mod_cb_arrays_nuopc_glue.o: $(MODS) $(OBJS)

libhycom_nuopc.a: ocn_comp_mct.o ocn_comp_nuopc_mod.o mod_hycom_nuopc_glue.o mod_cb_arrays_nuopc_glue.o $(MODS) $(OBJS)
	ar cr $@ $^

.PHONY: clean nuopcinstall
clean:
	rm -f hycom *.o *.mod *.a *.mk

PWDIR := `pwd`

ifndef DESTDIR
DESTDIR := $(PWDIR)
endif

INSTDATE := $(shell date '+%Y-%m-%d-%H-%M-%S')
ifndef INSTDIR
INSTDIR  := HYCOM_$(INSTDATE)
endif

nuopcinstall:
	@gmake nuopc
	@mkdir -p $(DESTDIR)/$(INSTDIR)
	@cp libhycom_nuopc.a hycom.mod $(DESTDIR)/$(INSTDIR)
	@sed -e 's;'$(PWDIR)';'$(DESTDIR)/$(INSTDIR)';g' ocn_comp_nuopc_mod.mk > $(DESTDIR)/$(INSTDIR)/ocn_comp_nuopc_mod.mk
	@touch VERSION
	@if [ -d .svn ]; then \
	  echo "SVN Repository" > VERSION; \
	  svn info . | grep URL >> VERSION; \
	  svn info . | grep "Last Changed Rev" >> VERSION; \
	fi
	@cp VERSION $(DESTDIR)/$(INSTDIR)/
	@echo Installation into \"$(DESTDIR)/$(INSTDIR)\" complete!
	@echo
# ------------------------------------------------------------------------------
