#-*-makefile-*-
# model

include		../Makefile.hdr

RM_LIST =	*.a *.o *.e *.mod core 


OBJS_CORE	= absor.o  air2sea.o air2soil.o air2veget.o caleffi.o chemistry.o \
		claeroscav.o coagu.o depaero.o \
		deposition.o depvel.o depwet.o emissions.o equilibrium.o searchinterv.o \
		evaporation.o exchange.o htransport.o  iniworker.o \
		interlin_N.o intermin.o interval.o locvalues.o  inter_aeroorg.o \
		mixing.o nuclea.o nucleation.o photorates.o physics2.o physloc.o \
		physstep.o ppm.o prep_outprint.o prodloss.o rates.o sea2air.o sedim.o  \
		soil2air.o surfcalc.o twostep_mod.o terminal.o thermo.o thermow.o \
		transmix.o vanleer.o  veget2air.o vertav.o \
		vtransport.o water.o wdeposition.o zenith.o worker.o worker_message_subs.o \
		worker_mpi_finalize.o


OBJS		= worker_common.o worker_message_subs.o

all:		libmodel.a


libmodel.a:	$(OBJS_CORE)
		$(RM) libmodel.a
		$(AR) libmodel.a $(OBJS_CORE) $(OBJS)

# specific rules
worker_params.o:      worker_params.F90
		      $(MPIFC) -o worker_params.o $(FFLAGS) -I.. -c  worker_params.F90

worker_common.o:	worker_params.o  worker_common.F90
			$(MPIFC) -o worker_common.o $(FFLAGS) -I.. -c  worker_common.F90


ifeq	($(COMPILO),BROKEN_CPP)
# pgf90 preprocessor does not understand the "##" operator
worker_message_subs.o	:	worker_message_subs.F90 worker_params.o worker_common.o
				$(CPP) worker_message_subs.F90 worker_message_subs.f 
				$(MPIFC) -o worker_message_subs.o $(FFLAGS) -I..  -c worker_message_subs.f
				$(RM) worker_message_subs.f
else
worker_message_subs.o:		worker_message_subs.F90 worker_params.o worker_common.o
				$(MPIFC) -o worker_message_subs.o $(FFLAGS) -I..  -c worker_message_subs.F90
endif

twostep_mod.o:		worker_params.o worker_common.o worker_message_subs.o

worker.o:		twostep_mod.o


# common rules for other object targets

%.o:			%.F90 $(OBJS)
			$(MPIFC) -I.. -I. -o $@ $(FFLAGS) -c $<

clean:
	$(RM) $(RM_LIST)


