#---------------------------------------------------------------------
#     Copyright (C) GFD Dennou Club, 2005. All rights reserved.
#---------------------------------------------------------------------
#= Makefile for gt4f90io documentation
#
# Authors::   Eizi TOYODA (toyoda), Yasuhiro MORIKAWA (morikawa)
# Version::   $Id: Makefile,v 1.26 2006/07/19 09:58:10 morikawa Exp $
# Tag Name::  $Name: gt4f90io-20060818 $
# Copyright:: Copyright (C) GFD Dennou Club, 2004-2005. All rights reserved.
# License::   See COPYRIGHT[link:../../COPYRIGHT]
#
######################################################################
#
#== Settings

# in Config.mk, DEST_LIB, DEST_INC is defined
include ../Config.mk

TARGET=lib$(LIBNAME).a

OBJS_A = \
      sysdepabort-$(SYSDEPABORT).o \
      sysdeparg-$(SYSDEPARG).o \
      dc_test.o \
      dcstring_base.o dcstring_list.o regex.o \
      dcstringbase_warnlim.o \
      dcstringsprintf.o \
      dcstringprintf.o dcstringfprintf.o dcstringcprintf.o \
      dc_trace.o \
      dc_string.o dc_types.o netcdf_f77.o sysdep.o \
      dc_error.o dc_url.o dc_units.o dcunits_com.o \
      dc_message.o dc_present.o \
      dc_date_types.o dcdatetime.o dcdatetimeeval.o dc_date.o \
      dc_hash.o dc_args.o \
      an_types.o an_generic.o an_file.o an_vartable.o \
      anvarputattrchar.o anvarputattrint.o anvarputattrreal.o \
      anvarattr.o anvarattrtrue.o anvarclose.o anvarcreate.o \
      anvaropen.o \
      anattrgetnum.o \
      anattrgetchar.o \
      anvardelattr.o anvarsearch.o anvarsync.o anvarcreated.o \
      anattrinquire.o anvarattrcopy.o \
      anvarinquire.o \
      anvarinquire-ia.o \
      anvaropenbydimord.o anvartostring.o \
      anattrinquire.o \
      anxtypename.o \
      anvargetnum.o \
      anvarputnum.o \
      ansearchdim.o

OBJS_D = $(OBJS_A) \
      gt_mem.o \
      gt_vartable.o \
      gtdata_types.o \
      gtdata_generic.o \
      gtdata_internal.o \
      gt_vartable.o \
      gt_map.o \
      gtvardeldim.o \
      gtvaradddim.o \
      gtvarexchdim.o \
      gtdim_name2ord.o \
      gtdatatmpnam.o \
      gtvargetattrsc.o \
      gtvarsync.o \
      gtvargetslice.o \
      gtvarcopyattr.o \
      gtvarcopyattrall.o \
      gtvarcreatecopy.o \
      gtvargetattr.o \
      gtvarattrtrue.o \
      gtvardelattr.o \
      gtvarputattrchar.o \
      gtvaraddmember.o \
      gtvaropen.o \
      gtvarclose.o \
      gtvaropenbydimord.o \
      gtvarcreate.o \
      gtvarslice.o \
      gtvarslicenext.o \
      gtvarcreate.o \
      gtvarsliceauto.o \
      gtvargetsliceall.o \
      gtvarputline.o \
      gtvarsearch.o \
      gtvarattrsearch.o \
      gtvargetnum.o \
      gtvargetpointernum.o \
      gtvarputnum.o \
      gtvarinquire.o \
      gtvarlimit.o \
      gtvarlimitbinary.o \
      gtvarcreated.o \
      gtvarequivalent.o \
      gt4f90io.o \
      gt4_history.o \
      historyget.o \
      gt4_historyauto.o \
      hscrea.o hsavar.o hsclse.o \
      hsaatc.o hsaatr.o hsaatd.o hsaati.o \
      hsp1r.o hsp2d.o hsp3d.o hsp1d.o hsp2r.o hsp3r.o 


OBJS = $(OBJS_D)

RB2F90 = sysdepabort-abort.f90 \
	sysdepabort-exit.f90 sysdepabort-stop.f90 \
	sysdepabort-setrcd.f90 sysdepabort-errtra-setrcd.f90 \
	sysdeparg-common.f90 sysdeparg-hitachi.f90 \
	dc_test.f90 dc_string.f90 \
	anattrgetnum.f90 anvargetnum.f90 gtdata_generic.f90 \
	gtvargetpointernum.f90 gtvargetnum.f90 anvarputnum.f90 \
	gtvarputnum.f90 dc_present.f90 \
	gt4_history.f90 historyget.f90


# End Settings
######################################################################

######################################################################
#== Rules
#
all: $(TARGET)

install: $(TARGET)
	test -d $(DEST_LIB) || $(INSTALLDIR) $(DEST_LIB)
	test -d $(DEST_INC) || $(INSTALLDIR) $(DEST_INC)
	$(INSTALL) $(TARGET) $(DEST_LIB)
	$(RANLIB) $(DEST_LIB)/$(TARGET)
	$(INSTALL) $(MODS) $(MODINCS) $(DEST_INC)
	if [ X$(F90MODTYPE) = X"intel.d" ]; then \
	    $(INSTALL) work.pc $(DEST_INC)/work.pc ;\
	fi

doc: $(HTML)

clean-doc:
	$(RM) $(HTML)

$(OBJS):

$(OBJS): work.pcl

work.pcl: Makefile ../Config.mk
	sh ../chkpcl.sh $(SYSFFLAGS)

an: $(OBJS_A)
	$(AR) $(ARFLAGS) $(TARGET) $(OBJS_A)
	$(RANLIB) $(TARGET)

gtdata: $(OBJS_D)
	$(AR) $(ARFLAGS) $(TARGET) $(OBJS_D)
	$(RANLIB) $(TARGET)

$(TARGET): $(RB2F90) $(OBJS)
	$(AR) $(ARFLAGS) $@ $(OBJS)
	$(RANLIB) $@

#
#=== Files generated with ruby script
#
sysdepabort-abort.f90: sysdepabort.rb2f90
	! which $(RUBY) > /dev/null 2>&1 && touch $@  || \
	$(RUBY) $< --aborttype=ABORT > $@

sysdepabort-exit.f90: sysdepabort.rb2f90
	! which $(RUBY) > /dev/null 2>&1 && touch $@  || \
	$(RUBY) $< --aborttype=EXIT > $@

sysdepabort-stop.f90: sysdepabort.rb2f90
	! which $(RUBY) > /dev/null 2>&1 && touch $@  || \
	$(RUBY) $< --aborttype=STOP > $@

sysdepabort-setrcd.f90: sysdepabort.rb2f90
	! which $(RUBY) > /dev/null 2>&1 && touch $@  || \
	$(RUBY) $< --aborttype=SETRCD > $@

sysdepabort-errtra-setrcd.f90: sysdepabort.rb2f90
	! which $(RUBY) > /dev/null 2>&1 && touch $@  || \
	$(RUBY) $< --aborttype=ERRTRA-SETRCD > $@

sysdeparg-common.f90: sysdeparg.rb2f90
	! which $(RUBY) > /dev/null 2>&1 && touch $@  || \
	$(RUBY) $< --argtype=COMMON > $@

sysdeparg-hitachi.f90: sysdeparg.rb2f90
	! which $(RUBY) > /dev/null 2>&1 && touch $@  || \
	$(RUBY) $< --argtype=HITACHI > $@

dc_test.f90: dc_test.rb2f90
	! which $(RUBY) > /dev/null 2>&1 && touch $@  || \
	$(RUBY) $< --max_dim=$(MAXDIM) > $@

dc_string.f90: dc_string.rb2f90
	! which $(RUBY) > /dev/null 2>&1 && touch $@  || \
	$(RUBY) $< > $@

anattrgetnum.f90: anattrgetnum.rb2f90
	! which $(RUBY) > /dev/null 2>&1 && touch $@  || \
	$(RUBY) $< > $@

anvargetnum.f90: anvargetnum.rb2f90
	! which $(RUBY) > /dev/null 2>&1 && touch $@  || \
	$(RUBY) $< > $@

gtdata_generic.f90: gtdata_generic.rb2f90
	! which $(RUBY) > /dev/null 2>&1 && touch $@  || \
	$(RUBY) $< --gtvarget_dim=$(MAXDIM) --gtvarput_dim=$(MAXDIM) > $@

gtvargetpointernum.f90: gtvargetpointernum.rb2f90
	! which $(RUBY) > /dev/null 2>&1 && touch $@  || \
	$(RUBY) $< --gtvarget_dim=$(MAXDIM) > $@

gtvargetnum.f90: gtvargetnum.rb2f90
	! which $(RUBY) > /dev/null 2>&1 && touch $@  || \
	$(RUBY) $< > $@

anvarputnum.f90: anvarputnum.rb2f90
	! which $(RUBY) > /dev/null 2>&1 && touch $@  || \
	$(RUBY) $< > $@

gtvarputnum.f90: gtvarputnum.rb2f90
	! which $(RUBY) > /dev/null 2>&1 && touch $@  || \
	$(RUBY) $< --gtvarput_dim=$(MAXDIM) > $@

dc_present.f90: dc_present.rb2f90
	! which $(RUBY) > /dev/null 2>&1 && touch $@  || \
	$(RUBY) $< > $@

historyget.f90: historyget.rb2f90
	! which $(RUBY) > /dev/null 2>&1 && touch $@  || \
	$(RUBY) $< --histget_dim=$(MAXDIM) > $@


gt4_history.f90: gt4_history.rb2f90
	! which $(RUBY) > /dev/null 2>&1 && touch $@  || \
	$(RUBY) $< --histput_dim=$(MAXDIM) --histget_dim=$(MAXDIM) > $@

clean:
	-$(RM) $(MODS) *.o $(TARGET) work.pc*

clean.rb2f90:
	-$(RM) $(RB2F90)

depend: f90depend.pl Makefile
	@if which $(PERL) > /dev/null 2>&1 ; then \
	    echo "$(PERL) f90depend.pl -Xdcl.o *.f90 > depend" ;\
	    $(PERL) f90depend.pl -Xdcl.o *.f90 > depend ;\
	fi

include depend

tags: $(OBJS:.o=.f90)
	@if which $(PERL) > /dev/null 2>&1 ; then \
	    echo $(PERL) f90tags $(OBJS:.o=.f90) ;\
	    $(PERL) f90tags $(OBJS:.o=.f90) ;\
	fi

######################################################################
#== Suffixes
#

#.SUFFIXES:
