#

LN      =       ln -sf
MAKE    =       make -i -r
RM      =       rm -f

MODULES = 

OBJS    =

LIBPATHS = 

include ../configure.wrf

da_3dvar : da_3dvar.o
	$(RANLIB) libwrflib.a
	$(LD) -o da_3dvar.exe $(LDFLAGS) da_3dvar.o libwrflib.a $(LIB)

kma2netcdf : kma2netcdf.o
	$(RANLIB) libwrflib.a
	$(LD) -o kma2netcdf.exe $(LDFLAGS) kma2netcdf.o libwrflib.a $(LIB) -L../convertor

netcdf2kma : netcdf2kma.o
	$(RANLIB) libwrflib.a
	$(LD) -o netcdf2kma.exe $(LDFLAGS) netcdf2kma.o libwrflib.a $(LIB) -L../convertor 

$(SOLVER) : $(SOLVER).o
	$(RANLIB) libwrflib.a
	$(LD) -o $(SOLVER).exe $(LDFLAGS) $(SOLVER).o libwrflib.a $(LIB)

$(SOLVER)_wrf : wrf.o nup_standalone.exe nupdown.exe
	$(RANLIB) libwrflib.a
	$(LD) -o wrfplus.exe $(LDFLAGS) wrf.o libwrflib.a $(LIB)

$(SOLVER)_ideal : module_initialize ideal.o
	$(RANLIB) libwrflib.a
	$(LD) -o ideal.exe $(LDFLAGS) ideal.o ../dyn_$(SOLVER)/module_initialize_$(IDEAL_CASE).o libwrflib.a $(LIB)

$(SOLVER)_real : module_initialize real_$(SOLVER).o ndown_$(SOLVER).o
	$(RANLIB) libwrflib.a
	$(LD) -o real.exe $(LDFLAGS) real_$(SOLVER).o ../dyn_$(SOLVER)/module_initialize_$(IDEAL_CASE).o libwrflib.a $(LIB)
	$(LD) -o ndown.exe $(LDFLAGS) ndown_$(SOLVER).o  ../dyn_$(SOLVER)/module_initialize_$(IDEAL_CASE).o libwrflib.a $(LIB)

convert_bioemiss : convert_bioemiss.o
	$(RANLIB) libwrflib.a
	$(FC) -o convert_bioemiss.exe $(LDFLAGS) convert_bioemiss.o libwrflib.a $(LIB)

convert_emiss : convert_emiss.o
	$(RANLIB) libwrflib.a
	$(FC) -o convert_emiss.exe $(LDFLAGS) convert_emiss.o libwrflib.a $(LIB)

real_nmm : real_nmm.o
	( cd ../dyn_nmm ;  $(MAKE) module_initialize_real.o )
	$(RANLIB) libwrflib.a
	$(FC) -o real_nmm.exe $(LDFLAGS) real_nmm.o ../dyn_nmm/module_initialize_real.o ../share/module_optional_si_input.o ../share/input_wrf.o ../share/module_io_domain.o libwrflib.a $(LIB)

convert_nmm : convert_nmm.o
	$(RANLIB) libwrflib.a
	$(FC) -o convert_nmm.exe $(LDFLAGS) convert_nmm.o libwrflib.a $(LIB)

nup_standalone.exe : 
	$(SFC) -I$(NETCDFPATH)/include -c $(FCBASEOPTS) module_nup_feedback.F
	x=`echo "$(SFC)" | awk '{print $$1}'` ; export x ; \
	if [ $$x = "gfortran" ] ; then \
           echo removing external declaration of iargc for gfortran ; \
           sed '/integer *, *external.*iargc/d' nup_standalone.F > nup_standalone.f  ; \
	   $(SFC) -I$(NETCDFPATH)/include -c $(FCBASEOPTS) nup_standalone.f ; \
        else   \
	   $(SFC) -I$(NETCDFPATH)/include -c $(FCBASEOPTS) nup_standalone.F ; \
        fi 
	x=`grep netcdff ../configure.wrf | awk '{print $$1}'` ; export x ;\
	if [ $$x ] ; then \
	   $(LD) -o nup_standalone.exe  nup_standalone.o module_nup_feedback.o -L$(NETCDFPATH)/lib -lnetcdff -lnetcdf -lm ; \
        else \
	   $(LD) -o nup_standalone.exe  nup_standalone.o module_nup_feedback.o -L$(NETCDFPATH)/lib -lnetcdf -lm ; \
        fi

nupdown.exe: 
	$(RM) $@
	x=`echo "$(SFC)" | awk '{print $$1}'` ; export x ; \
	if [ $$x = "gfortran" ] ; then \
           echo removing external declaration of iargc for gfortran ; \
           sed '/integer *, *external.*iargc/d' nupdown.F > nupdown.f  ; \
	   $(SFC) -c $(FCFLAGS) -I$(NETCDFPATH)/include nupdown.f ; \
        else   \
	   $(SFC) -c $(FCFLAGS) -I$(NETCDFPATH)/include nupdown.F ; \
        fi
	x=`grep netcdff ../configure.wrf | awk '{print $$1}'` ; export x ;\
	if [ $$x ] ; then \
	   $(SFC) -o nupdown.exe  nupdown.o -L$(NETCDFPATH)/lib -lnetcdff -lnetcdf -lm ; \
        else \
	   $(SFC) -o nupdown.exe  nupdown.o -L$(NETCDFPATH)/lib -lnetcdf -lm ; \
        fi

module_initialize :
	( cd ../dyn_$(SOLVER) ;  $(MAKE) module_initialize_$(IDEAL_CASE).o )

#############################################################################################################################

clean:
	@ echo 'use the clean script'

# DEPENDENCIES : only dependencies after this line (don't remove the word DEPENDENCIES)

convert_nmm.o: \
	../frame/module_machine.o \
	../frame/module_domain.o \
	../frame/module_driver_constants.o \
	../frame/module_configure.o \
	../frame/module_timing.o \
	../frame/module_dm.o \
	../share/module_wrf_esmf_super.o \
	../share/module_bc.o \
	../share/module_io_domain.o \
	$(ESMF_MOD_DEPENDENCE) $(EXTRAMODULES)

ideal.o: \
	../frame/module_machine.o \
	../frame/module_domain.o \
	../frame/module_driver_constants.o \
	../frame/module_configure.o \
	../frame/module_timing.o \
	../frame/module_dm.o \
	../share/module_wrf_esmf_super.o \
	../share/module_io_domain.o \
	../dyn_$(SOLVER)/$(CASE_MODULE) \
	$(ESMF_MOD_DEPENDENCE) $(EXTRAMODULES)

ndown_em.o: \
	../frame/module_machine.o \
	../frame/module_domain.o \
	../frame/module_driver_constants.o \
	../frame/module_configure.o \
	../frame/module_timing.o \
	../frame/module_dm.o \
	../share/module_wrf_esmf_super.o \
	../frame/module_wrf_error.o \
	../frame/module_integrate.o \
	../share/module_bc.o \
	../share/module_io_domain.o \
	../share/module_get_file_names.o \
	../share/module_soil_pre.o \
	../dyn_em/module_initialize_real.o \
	../dyn_em/module_big_step_utilities_em.o \
	$(ESMF_MOD_DEPENDENCE) $(EXTRAMODULES)

# this already built above :../dyn_em/module_initialize.real.o \
real_em.o: \
	../frame/module_machine.o \
	../frame/module_domain.o \
	../frame/module_driver_constants.o \
	../frame/module_configure.o \
	../frame/module_timing.o \
	../frame/module_dm.o \
	../share/module_wrf_esmf_super.o \
	../dyn_em/module_si_io_em.o \
	../dyn_em/module_big_step_utilities_em.o \
	../share/module_io_domain.o \
	../share/module_date_time.o \
	../share/module_optional_si_input.o \
	../share/module_bc_time_utilities.o \
	$(ESMF_MOD_DEPENDENCE) $(EXTRAMODULES)
#	../chem/module_input_chem_data.o \
#	../chem/module_input_chem_bioemiss.o \

wrf.o: \
	../frame/module_machine.o \
	../frame/module_domain.o \
	../frame/module_integrate.o \
	../frame/module_driver_constants.o \
	../frame/module_configure.o \
	../frame/module_timing.o \
	../frame/module_wrf_error.o \
	../frame/module_dm.o \
	../share/module_wrf_esmf_super.o \
	$(ESMF_MOD_DEPENDENCE) $(EXTRAMODULES)

da_3dvar.o: \
	../share/module_wrf_esmf_super.o \
	$(ESMF_MOD_DEPENDENCE) $(EXTRAMODULES)

#nup_standalone.o: \
#	module_nup_feedback.o
#	$(SFC) -I$(NETCDFPATH)/include -c nup_standalone.F

#module_nup_feedback.o : \
#	$(SFC) -I$(NETCDFPATH)/include -c module_nup_feedback.F

# DO NOT DELETE
