#
#       Makefile for $(DENNOUDIR)/model/agcm5
#
#                   ??/??/?? numaguti,takepiro
#                   93/06/15 pochaka  ( dennou version )
#                   98/01/28 akahori  ( smpack version )
#       

include	Mkinclude

LIBSUBDIRS	= admin dynamics physics io util sysdep gtintfc
SUBDIRS		= $(LIBSUBDIRS) include prep nonstd dclcompat $(SPECIALDIR)
LIBSUBDIRSSM	= admin_sm dynamics_sm physics io util_sm sysdep gtintfc
SUBDIRSSM	= $(LIBSUBDIRSSM) include prep nonstd dclcompat $(SPECIALDIR)
SUBDIRSALL	= admin_sm dynamics_sm util_sm $(SUBDIRS) 

FFLAGS 	       = $(STDFFLAGS) -Iinclude $(AUTODBL)
CFLAGS         = $(STDCFLAGS) -Iinclude
CPPFLAGS       = $(STDCPPFLAGS) -Iinclude 
LDFLAGS        = $(STDLDFLAGS)

OBJS_GCM       = aadmn.o
OBJS_GCMXZ     = aadmn.o nonstd/usphxz.o
OBJS_GCMYZ     = aadmn.o nonstd/usphyz.o
OBJS_1DIM      = a1dim.o

SRCS_GCM       = aadmn.F
SRCS_GCMXZ     = aadmn.F nonstd/usphxz.F
SRCS_GCMYZ     = aadmn.F nonstd/usphyz.F
SRCS_1DIM      = a1dim.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)/agcm5.$(RESOLUTION)$(MODELNAME)
GCMSM		= $(BINDIR)/agcm5sm.$(RESOLUTION)$(MODELNAME)
GCMXZ		= $(BINDIR)/agcm5xz.$(RESOLUTION)$(MODELNAME)
GCMYZ		= $(BINDIR)/agcm5yz.$(RESOLUTION)$(MODELNAME)
1DIM		= $(BINDIR)/agcm5z.$(RESOLUTION)$(MODELNAME)

gcm:	$(GCM)
gcmsm:	$(GCMSM)
gcmxz:	$(GCMXZ)
gcmyz:	$(GCMYZ)
1dim:	$(1DIM)

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

$(GCMSM):	includes $(OBJS_GCM) $(NONSTDS) 
	$(FC) $(LDFLAGS) $(OBJS_GCM) $(NONSTDS) $(LIBSSM) $(STDLIBSSM) -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 $@

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

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

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

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

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

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

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

libsm:	includes 
	@echo "Making $(LIBRARYSM)"
	@for i in $(LIBSUBDIRSSM) ; do \
	  cd $$i ; \
	  echo "Making $$i/" ; \
	  $(MAKE) libsm ; \
	  cd .. ; \
	done

includes:
	@cd include; $(MAKE)

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

install: libinstall bininstall

installsm: libinstallsm bininstallsm

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

libinstallsm: $(LIBRARYSM)
	@-if (test $(LIBDIR)!=$(LIBDEST)) then \
	$(INSTALL) $(LIBRARYSM) $(LIBDEST) \
	$(RANLIB) $(LIBDEST)/$(LIBSM) ; fi

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

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

clean: clean.local clean.dir

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

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

tags: tags.local tags.dir

tagssm: tagssm.local tagssm.dir

tags.local:
	@$(TAGS) aadmn.F $(SUBDIRS:%=%/*.F)
#	@$(TAGS) aadmn.F */*.F

tagssm.local:
	@$(TAGS) aadmn.F $(SUBDIRSSM:%=%/*.F)

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

tagssm.dir:
	@for i in $(SUBDIRSSM) ; 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 $(SPECIALDIR); $(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
