#-*-makefile-*-

# Cuisine et dependances ...

include		Makefile.hdr

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

LDFLAGS =	-L.  -linitio -ltools -lmodel -ltools -liso \
			-L${NETCDFLIB} $(CDFLIBS) -L${HDF5LIB}


.PHONY:		all modules main libiso libinitio libtools libmodel diag prep

all:		chimere diag prep

modules:
		( $(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) modules/interp_tools.o .
		$(LN) modules/interp_tools.mod .


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
		( $(CD) initio && $(MAKE) )
		$(LN) initio/libinitio.a .

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

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

diag:		libtools modules
		( $(CD) diag ; $(MAKE) all )
		$(LN) diag/diagmet.e .
		$(LN) diag/diagbio.e .
		$(LN) diag/diagdust.e .

prep:		libtools modules
		( $(CD) prep ; $(MAKE) all )
		$(LN) prep/prepemis.e .
		$(LN) prep/prep_bound.e .
		$(LN) prep/prep_chimere.e .
#		$(LN) prep/prep_mozart_lightfile.e prep_mozart.e


chimere:	libiso libinitio libtools libmodel main
		$(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 \
		$(LDFLAGS)


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) diag    ; $(MAKE) clean )
	( $(CD) tools   ; $(MAKE) clean )



