# PKG_FFLAGS = -ffree-line-length-0 -fbacktrace -ffpe-trap=invalid,zero,overflow -O1 -Wall -Wextra -pedantic -fbacktrace -fPIC -fmax-errors=1 -ggdb -fcheck=all

# C objects
C_OBJS = wrappersc.o

# Fortran objects: refer to file names <name.o>, order reflects dependency structure
FT_OBJS = params_core.mod.o sofunutils.mod.o grid_siterun.mod.o params_siml_pmodel.mod.o params_siml_biomee.mod.o forcing_siterun_pmodel.mod.o forcing_siterun_biomee.mod.o params_soil_biomee.mod.o interface_biosphere_pmodel.mod.o interface_biosphere_biomee.mod.o tile_pmodel.mod.o plant_pmodel.mod.o soiltemp_sitch.mod.o waterbal_splash.mod.o vegdynamics_pmodel.mod.o gpp_pmodel.mod.o gpp_biomee.mod.o photosynth_pmodel.mod.o biosphere_pmodel.mod.o biosphere_biomee.mod.o vegetation_biomee.mod.o soil_biomee.mod.o sofun_r.o  

all: $(SHLIB) clean

$(SHLIB): $(FT_OBJS) $(C_OBJS)

# Dependency of objects (?)
# <name.o>: <modulename.o>
sofun_r.o: interface_biosphere_pmodel.mod.o interface_biosphere_biomee.mod.o params_core.mod.o params_core.mod.o params_soil_biomee.mod.o params_siml_pmodel.mod.o params_siml_biomee.mod.o
interface_biosphere_pmodel.mod.o: forcing_siterun_pmodel.mod.o params_siml_pmodel.mod.o params_core.mod.o
interface_biosphere_biomee.mod.o: forcing_siterun_biomee.mod.o params_soil_biomee.mod.o params_siml_biomee.mod.o params_core.mod.o
params_siml_pmodel.mod.o: params_core.mod.o
params_siml_biomee.mod.o: params_core.mod.o
forcing_siterun_pmodel.mod.o: params_core.mod.o params_siml_pmodel.mod.o grid_siterun.mod.o sofunutils.mod.o
forcing_siterun_biomee.mod.o: params_core.mod.o params_siml_biomee.mod.o grid_siterun.mod.o
params_soil_biomee.mod.o: params_core.mod.o
tile_pmodel.mod.o: params_core.mod.o interface_biosphere_pmodel.mod.o
waterbal_splash.mod.o: params_core.mod.o tile_pmodel.mod.o plant_pmodel.mod.o sofunutils.mod.o
gpp_pmodel.mod.o: params_core.mod.o sofunutils.mod.o plant_pmodel.mod.o tile_pmodel.mod.o interface_biosphere_pmodel.mod.o photosynth_pmodel.mod.o
gpp_biomee.mod.o: datatypes.mod.o soil_biomee.mod.o forcing_siterun_biomee.mod.o photosynth_pmodel.mod.o params_core.mod.o sofunutils.mod.o
photosynth_pmodel.mod.o: params_core.mod.o sofunutils.mod.o
soiltemp_sitch.mod.o: params_core.mod.o sofunutils.mod.o tile_pmodel.mod.o interface_biosphere_pmodel.mod.o
plant_pmodel.mod.o: params_core.mod.o sofunutils.mod.o interface_biosphere_pmodel.mod.o
vegdynamics_pmodel.mod.o: params_core.mod.o tile_pmodel.mod.o plant_pmodel.mod.o gpp_pmodel.mod.o waterbal_splash.mod.o
biosphere_pmodel.mod.o: params_core.mod.o classdefs.mod.o sofunutils.mod.o plant_pmodel.mod.o waterbal_splash.mod.o gpp_pmodel.mod.o vegdynamics_pmodel.mod.o tile_pmodel.mod.o interface_biosphere_pmodel.mod.o soiltemp_sitch.mod.o vegdynamics_pmodel.mod.o
biosphere_biomee.mod.o: params_core.mod.o interface_biosphere_biomee.mod.o datatypes.mod.o soil_biomee.mod.o vegetation_biomee.mod.o
soil_biomee.mod.o: datatypes.mod.o
vegetation_biomee.mod.o: datatypes.mod.o soil_biomee.mod.o gpp_biomee.mod.o
datatypes.mod.o: interface_biosphere_biomee.mod.o params_core.mod.o classdefs.mod.o

# Source (object) of Fortran modules
# <modulename.mod>: <filename.o>
sofun_r_mod.mod: sofun_r.o
md_params_siml_pmodel.mod: params_siml_pmodel.mod.o
md_params_siml_biomee.mod: params_siml_biomee.mod.o
md_params_core.mod: params_core.mod.o
md_forcing_pmodel.mod: forcing_siterun_pmodel.mod.o
md_forcing_biomee.mod: forcing_siterun_biomee.mod.o
md_params_soil_biomee.mod: params_soil_biomee.mod.o
md_interface_pmodel.mod: interface_biosphere_pmodel.mod.o
md_interface_biomee.mod: interface_biosphere_biomee.mod.o
md_grid.mod: grid_siterun.mod.o
md_biosphere_pmodel.mod: biosphere_pmodel.mod.o
md_biosphere_biomee.mod: biosphere_biomee.mod.o
md_classdefs.mod: classdefs.mod.o
md_plant_pmodel.mod: plant_pmodel.mod.o
md_waterbal.mod: waterbal_splash.mod.o
md_sofunutils.mod: sofunutils.mod.o
md_tile_pmodel.mod: tile_pmodel.mod.o
md_gpp_pmodel.mod: gpp_pmodel.mod.o
md_gpp_biomee.mod: gpp_biomee.mod.o
md_photosynth.mod: photosynth_pmodel.mod.o
md_soiltemp.mod: soiltemp_sitch.mod.o
md_vegdynamics_pmodel.mod: vegdynamics_pmodel.mod.o
datatypes.mod: datatypes.o
md_soil_biomee.mod: soil_biomee.o
md_vegetation_biomee.mod: vegetation_biomee.o

# Dependency of the C wrapper
wrappersc.o: sofun_r_mod.mod

clean:
	@rm -rf *.mod *.o
