#-*-makefile-*-

include		Makefile.hdr

LDFLAGS	=	-L. -lchimere -L${NETCDF}/lib -lnetcdf 

RM_LIST =	chimere.e diagmet.e diagbio.e \
		prepemis_std.e  \
		preplat_MOZART2.e preptop_MOZART2.e \
		preplat_LMDZINCA2.e preptop_LMDZINCA2.e \
		preplat_CHIMERE.e  preptop_CHIMERE.e \
		preplat_GOCART.e preptop_GOCART.e \
		concat.e \
		$(OBJS) $(OBJS1) $(OBJS2) libchimere.a *.mod core 


OBJS	=	chimere.o \
		diagmet.o diagmet_common.o diagmet_science.o \
		diagbio.o diagbio_common.o diagbio_science.o \
		prepemis_std.o concat.o \
		preplat_chimere.o preplat_gocart.o preplat_lmdzinca2.o preplat_mozart2.o \
		preptop_chimere.o preptop_gocart.o preptop_lmdzinca2.o	preptop_mozart2.o

OBJS1	=	calendar.o chemistry.o deposition.o depvel.o emissions.o \
		endchimere.o findspec.o gridloc.o htransport.o iniboun.o inicdf.o \
		inichem.o inichimere.o iniconc.o inidepo.o inidepout.o iniemis.o \
		iniend.o inigeom.o iniout.o iniparam.o iniphys.o \
		iniread.o integrun.o io.o layave.o locvalues.o mixing.o \
		photorates.o physics.o ppm.o prodloss.o rates.o readhour.o renewhour.o \
		subs.o transmix.o twostep.o vanleer.o vertav.o vtransport.o zenith.o \
		absor.o beta.o betcal.o caleffi.o calsiz.o claeroscav.o coagu.o coef.o \
		depaero.o depwet.o equilibrium.o evaporation.o gaus2.o gausbt.o \
		growth.o iniaero.o inicoef.o iniequi.o intermin.o interval.o \
		isocom.o isofwd.o isorev.o \
		kmcf198.o kmcf223.o kmcf248.o kmcf273.o kmcf298.o kmcf323.o \
		nuclea.o nucleation.o outprint.o partition.o physloc.o physstep.o \
		profile.o rhotr.o sedim.o setgas.o surfcalc.o tabul.o terminal.o \
		thermo.o thermow.o water.o wdeposition.o write_concs.o write_depo.o



OBJS2	=	chimere_consts.o chimere_params.o chimere_common.o 


# cancelling Pascal rule to avoid compiling prepemis_std.p
%.o: 		%.p



all:			chimere.e \
			diagmet.e diagbio.e \
			prepemis_std.e \
			preplat_MOZART2.e   preptop_MOZART2.e  \
			preplat_LMDZINCA2.e preptop_LMDZINCA2.e \
			preplat_CHIMERE.e   preptop_CHIMERE.e \
			preplat_GOCART.e    preptop_GOCART.e \
			concat.e 


chimere.e:		chimere.o libchimere.a
			$(FC) -o $@ chimere.o $(FFLAGS) $(LDFLAGS)

prepemis_std.e:		prepemis_std.o libchimere.a
			$(FC) -o $@ prepemis_std.o $(FFLAGS) $(LDFLAGS)

preplat_MOZART2.e:	preplat_mozart2.o libchimere.a
			$(FC) -o $@ preplat_mozart2.o $(FFLAGS) $(LDFLAGS)

preptop_MOZART2.e:	preptop_mozart2.o libchimere.a
			$(FC) -o $@ preptop_mozart2.o $(FFLAGS) $(LDFLAGS)

preplat_LMDZINCA2.e:	preplat_lmdzinca2.o libchimere.a
			$(FC) -o $@ preplat_lmdzinca2.o $(FFLAGS) $(LDFLAGS)

preptop_LMDZINCA2.e:	preptop_lmdzinca2.o libchimere.a
			$(FC) -o $@ preptop_lmdzinca2.o $(FFLAGS) $(LDFLAGS)

preplat_CHIMERE.e:	preplat_chimere.o libchimere.a
			$(FC) -o $@ preplat_chimere.o $(FFLAGS) $(LDFLAGS)

preptop_CHIMERE.e:	preptop_chimere.o libchimere.a
			$(FC) -o $@ preptop_chimere.o $(FFLAGS) $(LDFLAGS)

preplat_GOCART.e:	preplat_gocart.o libchimere.a
			$(FC) -o $@ preplat_gocart.o $(FFLAGS) $(LDFLAGS)

preptop_GOCART.e:	preptop_gocart.o libchimere.a
			$(FC) -o $@ preptop_gocart.o $(FFLAGS) $(LDFLAGS)

concat.e:		concat.o libchimere.a
			$(FC) -o $@ concat.o $(FFLAGS) $(LDFLAGS)


diagmet.e:		diagmet.o diagmet_science.o diagmet_common.o chimere_consts.o
			$(FC) -o $@ diagmet.o diagmet_science.o diagmet_common.o \
			chimere_params.o io.o subs.o calendar.o layave.o chimere_common.o chimere_consts.o\
			$(FFLAGS) 	-L.  -L${NETCDF}/lib -lnetcdf 

diagbio.e:		diagbio.o diagbio_science.o diagbio_common.o libchimere.a
			$(FC) -o $@ diagbio.o diagbio_science.o diagbio_common.o  \
			$(FFLAGS) $(LDFLAGS)



libchimere.a:		$(OBJS2) $(OBJS1)
	        	$(RM) libchimere.a
			$(AR) libchimere.a $(OBJS2) $(OBJS1)

# specific rules for $(OBJS2)
chimere_consts.o:	chimere_consts.f90
			$(FC) -o $@ $(FFLAGS) -c $<

chimere_params.o:	chimere_params.f90
			$(FC) -o $@ $(FFLAGS) -c $<

chimere_common.o:	chimere_common.f90 chimere_params.o chimere_consts.o
			$(FC) -o $@ $(FFLAGS) -c $<

# specific rules for fixed-form fortran (g95 does not switch by itself to ff-mode)
# We assume .f files are fixed-form.
%.o:			%.f $(OBJS2)
			$(FC) -o $@ $(FFFLAGS) -c $<


# common rule for other object targets
%.o :			%.f90	$(OBJS2)	
			$(FC) -o $@ $(FFLAGS) -c $<

diagmet.o:		diagmet_science.o $(OBJS2)

diagbio.o:		diagbio_science.o $(OBJS2)

diagmet_science.o:	$(OBJS2) diagmet_common.o

diagbio_science.o:	$(OBJS2) diagbio_common.o

clean:
	$(RM) $(RM_LIST)

