F90 = gfortran
FFLAGS = -g -fbounds-check -I./ 
LDFLAGS = -L./
RM = /bin/rm -f
MV = /bin/mv -f
CP = /usr/bin/cp
AR = /usr/bin/ar
ARFLAGS = qcs

LIBOBJ = modmxm_general.o modmxm_stkxe.o modmxm_tasks.o modmxm_stkrc.o \
         modmxm_stkmx.o modmxm_structload.o
MOD = $(LIBOBJ:.o=.mod)
OBJ = mod_xmlcocogen.o xmlcocogen_loaddb.o xmlcocogen_main.o

all : libmodmxm.a

xs : libmodmxm.a $(OBJ)
	$(F90) $(OBJ) $(LDFLAGS) -lmodmxm -o $@
	mv $@ ../work

xmlcocogen_main.o : xmlcocogen_main.F90 xmlcocogen_loaddb.o
	$(F90) -c xmlcocogen_main.F90  $(FFLAGS) -o $@

xmlcocogen_loaddb.o : mod_xmlcocogen.F90 xmlcocogen_loaddb.F90
	$(F90) -c xmlcocogen_loaddb.F90 $(FFLAGS) -o $@

modmxm_structload.o : modmxm_structload.F90 modmxm.h modmxm_general.o \
                      modmxm_stkxe.o modmxm_tasks.o modmxm_stkrc.o modmxm_stkmx.o
	$(F90) -c modmxm_structload.F90 $(FFLAGS) -o $@

modmxm_general.o : modmxm_general.F90 modmxm.h modmxm_general.h
	$(F90) -c modmxm_general.F90 $(FFLAGS) -o $@

modmxm_stkxe.o : modmxm_stkxe.F90 modmxm.h
	$(F90) -c modmxm_stkxe.F90 $(FFLAGS) -o $@

modmxm_tasks.o : modmxm_tasks.F90 modmxm_general.o modmxm.h
	$(F90) -c modmxm_tasks.F90 $(FFLAGS) -o $@

modmxm_stkrc.o : modmxm_stkrc.F90 modmxm_general.o modmxm.h
	$(F90) -c modmxm_stkrc.F90 $(FFLAGS) -o $@

modmxm_stkmx.o : modmxm_stkmx.F90 modmxm_stkrc.o modmxm.h
	$(F90) -c modmxm_stkmx.F90 $(FFLAGS) -o $@

mod_xmlcocogen.o : mod_xmlcocogen.F90 modmxm.h modmxm_stkxe.o modmxm_stkmx.o
	$(F90) -c mod_xmlcocogen.F90 $(FFLAGS) -o $@

libmodmxm.tgz : libmodmxm.a modmxm.h
	$(RM) $@
	tar cvfz $@ libmodmxm.a $(MOD) modmxm.h

libmodmxm.a : $(LIBOBJ)
	$(RM) $@
	$(AR) $(ARFLAGS) $@ $(LIBOBJ)

modmxm_general.h : configure_modmxm
	./configure_modmxm

configure_modmxm : configure_modmxm.F90
	$(F90) configure_modmxm.F90 -DFORTRAN_COMPILER_NAME=$(F90) -o $@


clean :
	$(RM) *.o 

tidy : clean
	$(RM) *.mod libmodmxm.a modmxm_general.h configure_modmxm
