#	Top level Makefile for 3dvar system

LN      =       ln -sf
MAKE    =       make -i -r
MV	=	/bin/mv
RM      =       /bin/rm -f

include ./configure.3dvar

DA_3DVAR_MOD_DIR = -I../da_3dvar
DA_3DVAR_MODULES = $(DA_3DVAR_MOD_DIR) $(INCLUDE_MODULES) 

DA_3DVAR_MOD_DIR_2 = -I../../da_3dvar
DA_3DVAR_MODULES_2 = $(DA_3DVAR_MOD_DIR_2) $(INC_MOD_3DVAR) 

deflt :
	@ echo Please compile the code using ./compile 3dvar

3dvar : 
	$(MAKE) MODULE_DIRS="$(DA_3DVAR_MODULES)" ext
	$(MAKE) MODULE_DIRS="$(DA_3DVAR_MODULES)" toolsdir
	$(MAKE) MODULE_DIRS="$(DA_3DVAR_MODULES)" REGISTRY="Registry_3dvar" framework
	$(MAKE) MODULE_DIRS="$(DA_3DVAR_MODULES)" shared
	$(MAKE) MODULE_DIRS="$(DA_3DVAR_MODULES)" 3dvar_drivers
	$(MAKE) MODULE_DIRS="$(DA_3DVAR_MODULES_2)" 3dvar_src
	( cd main ; \
          /bin/rm -f da_3dvar.exe ; \
	  $(MAKE) MODULE_DIRS="$(DA_3DVAR_MODULES)" SOLVER=da_3dvar )
	( cd run ; /bin/rm -f da_3dvar.exe ; ln -s ../main/da_3dvar.exe . )

3dv : 
	$(MAKE) MODULE_DIRS="$(DA_3DVAR_MODULES)" 3dvar_drivers
	$(MAKE) MODULE_DIRS="$(DA_3DVAR_MODULES_2)" 3dvar_src
	( cd main ; \
          /bin/rm -f da_3dvar.exe ; \
	  $(MAKE) MODULE_DIRS="$(DA_3DVAR_MODULES)" SOLVER=da_3dvar )

#  Eulerian height coordinate initializations

ext :
	@ echo '--------------------------------------'
	( cd frame ; $(MAKE) externals )

framework :
	@ echo '--------------------------------------'
	( cd frame ; $(MAKE) REGISTRY="$(REGISTRY)" framework )

shared :
	@ echo '--------------------------------------'
	( cd share ; $(MAKE) shared )

3dvar_drivers :
	@ echo '--------------------------------------'
	( cd da_3dvar ; $(MAKE) )

3dvar_src :
	@ echo '--------------------------------------'
	( cd da_3dvar ; $(MAKE) )
	( cd da_3dvar/src; $(MAKE) )

toolsdir :
	@ echo '--------------------------------------'
	( cd tools ; $(MAKE) )

utl :
	@ echo '--------------------------------------'
	( cd da_3dvar/utl; $(MAKE) all )

#	( cd external/io_diff ; \
#          $(MAKE) FC="$(FC) $(FCBASE) $(FCFORM) $(FCDEBUG) -I../../inc" all )

clean :
	( cd shared ; $(MAKE) clean ) 
	( cd framework ; $(MAKE) clean )
	( cd external ; $(MAKE) clean )
	( cd tools ; $(MAKE) clean )
	$(RM) da_3dvar.exe
	$(RM) core
	$(RM) configure.3dvar
	$(RM) inc/*

# DO NOT DELETE
