#= Makefile for build of gtool5 library in UNIX like platform
#
# Authors::   Eizi TOYODA (toyoda), Yasuhiro MORIKAWA (morikawa)
# Version::   $Id: Makefile,v 1.1.1.1 2008-09-23 09:56:03 morikawa Exp $
# Tag Name::  $Name: gtool5-20080923-2 $
# Copyright:: Copyright (C) GFD Dennou Club, 2004-2007. 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 \
      sysdepenv-$(SYSDEPENV).o \
      dc_test.o \
      regex.o \
      dcstringsprintf.o dcstringfprintf.o dcstringcprintf.o \
      dcstringputline.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_scaledsec.o \
      dc_date_types.o dcdatetimecreate.o dcdatetimeeval.o \
      dcdatetimesetcaltype.o dcdatetimesetsecofday.o \
      dcdatetimevalidcaltype.o dcdatetimezone.o \
      dcdatetimetochar.o dcdatetimeputline.o dc_date.o \
      dc_clock.o dc_iounit.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 \
      gtool5.o \
      gtool_history.o \
      historyget.o \
      gtool_history_nmlinfo.o \
      gtool_historyauto.o \
      gt4f90io.o \
      gt4_history.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-nostd.f90 sysdeparg-f2003std.f90 sysdeparg-hitachi.f90 \
	sysdepenv-nostd.f90 sysdepenv-f2003std.f90 sysdepenv-nogetenv.f90 \
	dc_test.f90 dc_string.f90 \
	dcstringputline.f90 \
	anattrgetnum.f90 anvargetnum.f90 gtdata_generic.f90 \
	gtvargetpointernum.f90 gtvargetnum.f90 anvarputnum.f90 \
	gtvarputnum.f90 dc_present.f90 \
	gtool_history.f90 \
	historyget.f90 \
	gtool_historyauto.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
	$(RUBY) ruby_version_check.rb > /dev/null 2>&1 && \
	    $(RUBY) $< --aborttype=ABORT > $@ || \
	    touch $@

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

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

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

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

sysdeparg-nostd.f90: sysdeparg.rb2f90
	$(RUBY) ruby_version_check.rb > /dev/null 2>&1 && \
	    $(RUBY) $< --argtype=NOSTD > $@ || \
	    touch $@

sysdeparg-f2003std.f90: sysdeparg.rb2f90
	$(RUBY) ruby_version_check.rb > /dev/null 2>&1 && \
	    $(RUBY) $< --argtype=F2003STD > $@ || \
	    touch $@

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

sysdepenv-nostd.f90: sysdepenv.rb2f90
	$(RUBY) ruby_version_check.rb > /dev/null 2>&1 && \
	    $(RUBY) $< --envtype=NOSTD > $@ || \
	    touch $@

sysdepenv-f2003std.f90: sysdepenv.rb2f90
	$(RUBY) ruby_version_check.rb > /dev/null 2>&1 && \
	    $(RUBY) $< --envtype=F2003STD > $@ || \
	    touch $@

sysdepenv-nogetenv.f90: sysdepenv.rb2f90
	$(RUBY) ruby_version_check.rb > /dev/null 2>&1 && \
	    $(RUBY) $< --envtype=NOGETENV > $@ || \
	    touch $@

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

depend: f90depend.rb Makefile
	$(RUBY) ruby_version_check.rb > /dev/null 2>&1 && \
	    $(RUBY) $< -q *.f90 > $@ || \
	    touch $@

include depend

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

Makefile.win: Makefile depend
	$(RUBY) gnumakefileparser-test.rb
	$(RUBY) gen-Makefile.win.rb --input $(shell echo $+ | sed -e 's/ /,/') --output $@
