#-*-makefile-*-

# Cuisine et dependances ...

include		Makefile.hdr

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

LDFLAGS =	-L.  -linitio -ltools -lmodel -ltools -liso \
			$(NETCDFLIBS)

OBJS    =       modules/interp_tools.o

.PHONY:		all modules main libiso libinitio libtools libmodel prep

all:		chimere prep

modules:	fastjx
		( $(CD) modules ; $(MAKE) all )
		$(LN) modules/master_message_subs.o .
		$(LN) modules/master_message_subs.mod .
		$(LN) modules/chimere_common.o .
		$(LN) modules/chimere_common.mod .
		$(LN) modules/message_defs.o .
		$(LN) modules/message_defs.mod .
		$(LN) modules/chimere_consts.o .
		$(LN) modules/chimere_consts.mod .
		$(LN) modules/chimere_params.o .
		$(LN) modules/chimere_params.mod .
		$(LN) model/diagbio_science.o .
		$(LN) model/diagbio_science.mod .
		$(LN) model/diagbio_megan.o .
		$(LN) model/diagbio_megan.mod .
		$(LN) model/diagdust_science.o .
		$(LN) model/diagdust_science.mod .
		$(LN) model/worker_dust.o .
		$(LN) model/worker_dust.mod .
		$(LN) modules/interp_tools.o .
		$(LN) modules/interp_tools.mod .

fastjx:
		( $(CD) fastjx70b ; $(MAKE) all )
		$(LN) fastjx70b/fjx_cmn_mod.mod .
		$(LN) fastjx70b/fjx_cmn_mod.o .
		$(LN) fastjx70b/fjx_init_mod.mod .
		$(LN) fastjx70b/fjx_init_mod.o .
		$(LN) fastjx70b/fjx_sub_mod.mod .
		$(LN) fastjx70b/fjx_sub_mod.o .
		$(LN) ../fastjx70b/fjx_cmn_mod.mod modules/
		$(LN) ../fastjx70b/fjx_cmn_mod.o modules/
		$(LN) ../fastjx70b/fjx_sub_mod.mod modules/
		$(LN) ../fastjx70b/fjx_sub_mod.o modules/

main:		modules
		( $(CD) main ; $(MAKE) all )
		$(LN) main/chimere.o .
		$(LN) main/integrun.o .
		$(LN) main/master_locvalues.o .


libiso:
		( $(CD) iso && $(MAKE) )
		$(LN) iso/libiso.a .

libinitio:	modules fastjx
		( $(CD) initio && $(MAKE) )
		$(LN) initio/libinitio.a .

libtools:	modules
		( $(CD) tools && $(MAKE) )
		$(LN) tools/libtools.a .

libmodel:	modules fastjx
		( $(CD) model ; $(MAKE) all )
		$(LN) model/libmodel.a .

prep:		libtools modules
		( $(CD) prep ; $(MAKE) all )
		$(LN) prep/prepemis.e .
		$(LN) prep/prep_bc.e .
		$(LN) prep/prep_chimere.e
		$(LN) prep/prep_mie.e .


chimere:	libiso libinitio libtools libmodel main fastjx
		$(MPIFC) -o chimere.e $(FFLAGS) \
		chimere.o integrun.o master_message_subs.o master_locvalues.o \
		chimere_common.o message_defs.o chimere_consts.o chimere_params.o\
		fjx_cmn_mod.o fjx_init_mod.o fjx_sub_mod.o \
		$(LDFLAGS) $(OBJS)


clean:
	$(RM) $(RM_LIST)
	( $(CD) main    ; $(MAKE) clean )
	( $(CD) modules ; $(MAKE) clean )
	( $(CD) prep    ; $(MAKE) clean )
	( $(CD) model   ; $(MAKE) clean )
	( $(CD) iso     ; $(MAKE) clean )
	( $(CD) initio  ; $(MAKE) clean )
	( $(CD) tools   ; $(MAKE) clean )
	( $(CD) fastjx70b   ; $(MAKE) clean )



