include ./$(PDAF_ARCH).h

## includes
PFINCROOT = ../../../parflow/pfsimulator
CINCS     = -I$(PFINCROOT)/parflow_lib -I$(PFINCROOT)/amps/oas3 -I$(PFINCROOT)/include
FINCS     = -I. -I../../../tempbld_clm3.5 -I$(NETCDF_INC)

## common object files
OBJ =  dictionary.o\
	   iniparser.o\
	   read_enkfpar.o\
	   wrapper_tsmp.o\


## clm object files
OBJCLM = enkf_clm_mod.o\
		 mod_clm_statistics.o\
		 enkf_clm.o\

## parflow object files
OBJPF = enkf_parflow.o\
		enkf_ensemblestatistics.o\
		problem_saturationtopressure.o\


## case dependent definition of object files
ifeq ($(COUPLE_TYPE), parflow_stand_alone)
  OBJ   += $(OBJPF)
endif

ifeq ($(COUPLE_TYPE), clm_stand_alone)
  OBJ += $(OBJCLM)
  OBJ += print_update_clm.o
endif

ifeq ($(COUPLE_TYPE), terrsysmp)
  OBJ += $(OBJPF) $(OBJCLM)
endif

## case dependent preprocessor flags
ifeq ($(COUPLE_TYPE), parflow_stand_alone)
CPP_FLAGS += -DPARFLOW_STAND_ALONE
FC_CPP_FLAGS += $(PREP_MAC)-DPARFLOW_STAND_ALONE
endif

ifeq ($(COUPLE_TYPE), clm_stand_alone)
CPP_FLAGS += -DCLMSA
FC_CPP_FLAGS += $(PREP_MAC)-DCLMSA
endif

ifeq ($(COUPLE_TYPE), terrsysmp)
CPP_FLAGS += -Duse_comm_da -DCOUP_OAS_PFL
FC_CPP_FLAGS += $(PREP_MAC)-Duse_comm_da $(PREP_MAC)-DCOUP_OAS_PFL
endif

## target + rules
all: libmodel.a

libmodel.a: $(OBJ)
	ar rcs $@ *.o 
	ranlib $@
	mv $@ ../../libs
	@echo "library compilation suceeded"

.c.o:
	$(PREP_C) $(CC) $(CCFLAGS) $(CPP_FLAGS) $(CINCS) -c $<  -o $@

enkf_clm_mod.o:
	$(PREP_C) $(FC) $(FC_CPP_FLAGS) $(FCFLAGS) $(FINCS) -c enkf_clm_mod.F90

enkf_clm.o:
	$(PREP_C) $(FC) $(FC_CPP_FLAGS) $(FCFLAGS) $(FINCS) -c enkf_clm.F90

mod_clm_statistics.o:
	$(PREP_C) $(FC) $(FC_CPP_FLAGS) $(FCFLAGS) $(FINCS) -c mod_clm_statistics.F90

print_update_clm.o:
	$(PREP_C) $(FC) $(FC_CPP_FLAGS) $(FCFLAGS) $(FINCS) -c print_update_clm.F90

clean:
	rm -f *.o *.mod $(PROG) libmodel.a ../../libs/libmodel.a
