#
#   Makefile for $(DENNOUDIR)/model/gamiras 		93/09/27 S.Takehiro
#       

include	Mkinclude

LIBSUBDIRS	= admin dynamics\
		  io util sysdep gtintfc \
	          l-anal

SUBDIRS		= $(LIBSUBDIRS) include prep nonstd special dclcompat graph

FFLAGS 	       = $(STDFFLAGS) -Iinclude $(AUTODBL)
CFLAGS         = $(STDCFLAGS) -Iinclude
CPPFLAGS       = $(STDCPPFLAGS) $(LANALCPPFLAGS) -Iinclude \
                 -DNAME=\'\($(RESOLUTION)$(MODELNAME)\)\'
LDFLAGS        = $(STDLDFLAGS)

OBJS_GCM       = aadmn.o
OBJS_GCMXZ     = aadmn.o nonstd/usphxz.o
OBJS_GCMYZ     = aadmn.o nonstd/usphyz.o
OBJS_1DIM      = a1dim.o
OBJS_ALANAL    = alanal.o
OBJS_ALCRT     = alcrt.o 
OBJS_AEDYF     = aedyf.o
OBJS_ASTDY     = astdy.o 
OBJS_AKEANL    = akeanl.o

SRCS_GCM       = aadmn.F
SRCS_GCMXZ     = aadmn.F nonstd/usphxz.F
SRCS_GCMYZ     = aadmn.F nonstd/usphyz.F
SRCS_1DIM      = a1dim.F
SRCS_ALANAL    = alanal.F
SRSS_ALCRT     = alcrt.F 
SRCS_AEDYF     = aedyf.F
SRCS_ASTDY     = astdy.F 
SRCS_AKEANL    = akeanl.F
SRCS	       = aadmn.F

NONSTDS	       = $(SPECIAL) $(NONSTD) $(NODCL)

EXTHDRS	      = include/zccom.F \
		include/zcdim.F \
		include/zhdim.F

HDRS	      =

MAKEFILE      = Makefile

all: gcm

GCM		= $(BINDIR)/gami.$(RESOLUTION)$(MODELNAME)
GCMXZ		= $(BINDIR)/gamixz.$(RESOLUTION)$(MODELNAME)
GCMYZ		= $(BINDIR)/gamiyz.$(RESOLUTION)$(MODELNAME)
1DIM		= $(BINDIR)/gamiz.$(RESOLUTION)$(MODELNAME)
ALANAL		= $(BINDIR)/alanal.$(RESOLUTION)$(MODELNAME)
ALCRT		= $(BINDIR)/alcrt.$(RESOLUTION)$(MODELNAME)
AEDYF		= $(BINDIR)/aedyf.$(RESOLUTION)$(MODELNAME)
ASTDY		= $(BINDIR)/astdy.$(RESOLUTION)$(MODELNAME)
AKEANL		= $(BINDIR)/akeanl.$(RESOLUTION)$(MODELNAME)

gcm:	$(GCM)
gcmxz:	$(GCMXZ)
gcmyz:	$(GCMYZ)
1dim:	$(1DIM)
alanal:	$(ALANAL)
alcrt:	$(ALCRT)
aedyf:	$(AEDYF)
astdy:	$(ASTDY)
akeanl:	$(AKEANL)

$(GCM):		includes $(OBJS_GCM) $(NONSTDS) 
	$(FC) $(LDFLAGS) $(OBJS_GCM) $(NONSTDS) $(LIBS) $(STDLIBS) -o $@

$(GCMXZ):	includes $(OBJS_GCMXZ) $(NONSTDS) 
	$(FC) $(LDFLAGS) $(OBJS_GCMXZ) $(NONSTDS) $(LIBS) $(STDLIBS) -o $@

$(GCMYZ):	includes $(OBJS_GCMYZ) $(NONSTDS) 
	$(FC) $(LDFLAGS) $(OBJS_GCMYZ) $(NONSTDS) $(LIBS) $(STDLIBS) -o $@

$(1DIM):	includes $(OBJS_1DIM) $(NONSTDS) 
	$(FC) $(LDFLAGS) $(OBJS_1DIM) $(NONSTDS) $(LIBS) $(STDLIBS) -o $@

$(ALANAL):	includes $(OBJS_ALANAL) $(NONSTDS) 
	$(FC) $(LDFLAGS) $(OBJS_ALANAL) $(NONSTDS) $(LIBS) $(STDLIBS) -o $@

$(ALCRT):	includes $(OBJS_ALCRT) $(NONSTDS) 
	$(FC) $(LDFLAGS) $(OBJS_ALCRT) $(NONSTDS) $(LIBS) $(STDLIBS) -o $@

$(AEDYF):	includes $(OBJS_AEDYF) $(NONSTDS) 
	$(FC) $(LDFLAGS) $(OBJS_AEDYF) $(NONSTDS) $(LIBS) $(STDLIBS) -o $@

$(ASTDY):	includes $(OBJS_ASTDY) $(NONSTDS) 
	$(FC) $(LDFLAGS) $(OBJS_ASTDY) $(NONSTDS) $(LIBS) $(STDLIBS) -o $@

$(AKEANL):	includes $(OBJS_AKEANL) $(NONSTDS) 
	$(FC) $(LDFLAGS) $(OBJS_AKEANL) $(NONSTDS) $(LIBS) $(STDLIBS) -o $@


init:	includes
	@cd prep ; $(MAKE) init

sst:	includes 
	@cd prep ; $(MAKE) sst

axis:	includes
	@cd prep ; $(MAKE) axis

lib:	includes 
	@echo "Making $(LIBRARY)"
	@for i in $(LIBSUBDIRS) ; do \
	  cd $$i ; \
	  echo "Making $$i/" ; \
	  $(MAKE) ; \
	  cd .. ; \
	done

tools:
	@cd graph ; $(MAKE)

includes:
	@cd include; $(MAKE)

$(NONSTDS) nonstd/usphxz.o nonstd/usphyz.o nonstd/lstmtxf.o:
	@cd $(@D); $(MAKE) $(@F)

install: libinstall bininstall

libinstall: $(LIBRARY)
	@-if (test $(LIBDIR)!=$(LIBDEST)) then \
	$(INSTALL) $(LIBRARY) $(LIBDEST) \
	$(RANLIB) $(LIBDEST)/$(LIB) ; fi

bininstall: $(PROGRAM)
	@-if (test $(BINDIR)!=$(BINDEST)) then \
	$(INSTALL) $(PROGRAM) $(BINDEST); fi

clean: clean.local clean.dir

clean.local:
	$(RM) *.o *~ core *.trace *.f

clean.dir:
	@for i in $(SUBDIRS) ; do \
	  cd $$i ; \
	  echo "Cleaning $$i/" ; \
	  $(MAKE) clean ; \
	  cd .. ; \
	done

tags: tags.local tags.dir

tags.local:
	@$(TAGS) *.F */*.F

tags.dir:
	@for i in $(SUBDIRS) ; do \
	  cd $$i ; \
	  $(MAKE) tags ; \
	  cd .. ; \
	done

index: index.local index.dir

index.local:
		@$(INDEX) $(HDRS) $(SRCS)

index.dir:
	@for i in $(SUBDIRS) ; do \
	  cd $$i ; \
	  $(MAKE) index ; \
	  cd .. ; \
	done

print: print.local print.dir

print.local:	$(PRINTSTAMP)

$(PRINTSTAMP): $(HDRS) $(SRCS)
		$(PRINT) $?
		$(TOUCH) $(PRINTSTAMP)

print.dir:
	@for i in $(SUBDIRS) ; do \
	  cd $$i ; \
	  echo "Printing $$i/" ; \
	  $(MAKE) print ; \
	  cd .. ; \
	done

pack: pack.local pack.dir pack.nonstds

pack.local:	$(PACKFILE) $(SRCS:.F=.pac) 
	$(MD) $(PACKDIR)
	$(MV) $(PACKFILE) $(PACKDIR)/MAIN

pack.dir:
	@for i in $(SUBDIRS) ; do \
	  cd $$i ; \
	  echo "Packing $$i/" ; \
	  $(MAKE) pack; \
	  cd .. ; \
	done	

pack.nonstds: 
	@cd special; $(MAKE) $(PACKFILE) $(SPECIAL:.o=.pac);\
	$(MV) $(PACKFILE) $(PACKDIR)/special
	@cd nonstd; $(MAKE) $(PACKFILE) $(NONSTD:.o=.pac);\
	$(MV) $(PACKFILE) $(PACKDIR)/nonstd
	@cd dclcompat; $(MAKE) $(PACKFILE) $(NODCL:.o=.pac);\
	$(MV) $(PACKFILE) $(PACKDIR)/dclcompat

###
a1dim.o: include/zcdim.F include/zhdim.F include/zccom.F
aadmn.o: include/zcdim.F include/zhdim.F include/zccom.F
alanal.o: include/zcdim.F include/zldim.F include/zhdim.F include/zccom.F
alcrt.o: include/zcdim.F include/zldim.F include/zhdim.F include/zccom.F
aedyf.o: include/zcdim.F include/zhdim.F include/zccom.F
astdy.o: include/zcdim.F include/zhdim.F include/zccom.F
akeanl.o: include/zcdim.F include/zhdim.F include/zccom.F

