# You may have to define a macro for GAG_SYS if your system doesn't translate 
# all its environment variables to macros (occurs on convex for instance)
#GAG_SYS = convex
# No user serviceable parts beyond this point....
# For customisation, edit make-macros.$(GAG_SYS).
#
include make-macros.$(GAG_SYS)
#
#
BIN  = $(DEST)/bin
LIB  = $(DEST)/lib
TASK = $(DEST)/task
#
HELP = $(DEST)/help
THELP = $(DEST)/task/exec
DEMO = $(DEST)/demo
DOC = $(DEST)/doc
INC = $(DEST)/include/.uptodate
#
ARGS = 	 'TARDIR = $(TARDIR)' 'GAG_DEST = $(DEST)' 'LINK = $(LINK)'\
	 'GAG_REF = $(REF)' 'COMPILF = $(COMPILF)' 'COMPILC = $(COMPILC)'\
	 'GAG_SHARE = $(SHARE)' 'NAG = $(NAG)' 'RANLIB = $(RANLIB)' \
         'LAPACK = $(LAPACK)' 'SLATEC = $(SLATEC)' 'GAG_MOTIF = $(GAG_MOTIF)'
#
#---------------------------------------------------------------------------
#  List of objects to be reconstructed
#
# BASIC software
basic:  makefiles fpre co help demo doc procedures SIC \
     vector GREG CLASS CFITS GRAPHIC astro gfits 
#
# BASIC + IRAM software: complete
iramsoft: basic FLUX CLIC gagtasks mapping pdbitasks POINT nic_soft \
     Xtasks
#
# BASIC + Tasks: GAG software
gagsofts: basic gagtasks 
#
# TOOLS for reconstruction
tools: makefiles fpre co
#
# BINARY only
binary: makefiles help demo procedures task_help binar doc
#
custom: lovas
# Individual items...
#
fpre: $(BIN)/fpre $(DEST)/.gag.$(GAG_SYS) 
co:   makefiles $(BIN)/co
astro: $(BIN)/astro $(BIN)/gregfont.bin $(BIN)/gagdef.bin \
 $(BIN)/.gag.dico.gbl $(BIN)/astro_local.astro
gfits: $(BIN)/gfits $(BIN)/gregfont.bin $(BIN)/gagdef.bin $(BIN)/.gag.dico.gbl
vector: $(BIN)/vector $(BIN)/.gag.dico.gbl
CLIC: $(BIN)/CLIC $(BIN)/gregfont.bin $(BIN)/gagdef.bin $(BIN)/.gag.dico.gbl
GREG: $(BIN)/GREG $(BIN)/gregfont.bin $(BIN)/gagdef.bin $(BIN)/.gag.dico.gbl
GRAPHIC: $(BIN)/GRAPHIC $(BIN)/gregfont.bin $(BIN)/gagdef.bin \
$(BIN)/.gag.dico.gbl
CLASS: $(BIN)/CLASS $(BIN)/gregfont.bin $(BIN)/gagdef.bin $(BIN)/.gag.dico.gbl
CFITS: $(BIN)/CFITS $(BIN)/gregfont.bin $(BIN)/gagdef.bin $(BIN)/.gag.dico.gbl
lovas: $(BIN)/lovas
mapping: $(BIN)/mapping 
FLUX:  $(BIN)/FLUX $(BIN)/astro
help:  $(HELP)/.uptodate
demo:  $(DEMO)/.uptodate
doc:   $(DOC)/.uptodate $(BIN)/DOC
task_help: $(THELP)/.uptodate
procedures: $(DEST)/pro/astro/.uptodate \
       $(DEST)/pro/class/.uptodate $(DEST)/pro/clic/.uptodate \
       $(DEST)/pro/greg/.uptodate $(DEST)/pro/graphic/.uptodate \
       $(DEST)/pro/map/.uptodate $(DEST)/pro/nic/.uptodate \
       $(DEST)/pro/lut/.uptodate 
POINT: $(BIN)/POINT $(BIN)/gregfont.bin $(BIN)/gagdef.bin $(BIN)/.gag.dico.gbl
nic_soft: $(BIN)/NIC nictasks
#
SIC: $(LIB)/libgag.a $(LIB)/libimage.a $(LIB)/libsic.a
#
gagtasks: $(LIB)/libgagtask.a $(TASK)/exec/.uptodate \
       $(TASK)/sources/.uptodate $(TASK)/specials/.uptodate \
       $(TASK)/gauss/.uptodate \
       $(TASK)/catalogs/.uptodate \
       task_help 
pdbitasks: $(LIB)/libgagtask.a $(TASK)/exec/.uptodate \
       $(TASK)/clic/.uptodate $(TASK)/map/.uptodate \
       task_help
nictasks: $(LIB)/libgagtask.a $(TASK)/exec/.uptodate $(TASK)/nic/.uptodate
Xtasks: $(LIB)/libgagtask.a $(TASK)/exec/.uptodate $(TASK)/X/.uptodate
tasks: gagtasks pdbitasks Xtasks
#
# all: end
#--------------------------------------------------------------------------
#
# General dependence
BASE 	= $(BIN)/fpre $(BIN)/co $(DEST)/.gag.$(GAG_SYS) \
	$(TARDIR)/.uptodate $(REF)/.uptodate $(DEST)/.uptodate 
#--------------------------------------------------------------------------
#
# Makefiles: to rebuild all Makefile files and directory trees
#
makefiles: $(TARDIR)/.uptodate $(REF)/.uptodate $(DEST)/.uptodate 
$(TARDIR)/.uptodate: $(TARDIR)/all.tar.Z
	@(cd $(TARDIR); \
	  uncompress -c $(TARDIR)/all.tar.Z |tar xf -)
	touch $(TARDIR)/.uptodate
$(REF)/.uptodate: $(TARDIR)/makefile.tar.Z
	@(cd $(REF); tar xf $(MKDIR)/exist.TAR )
	(cd $(REF);\
	  uncompress -c $(TARDIR)/makefile.tar.Z |tar xf -)
	touch $(REF)/.uptodate
$(DEST)/.uptodate: $(TARDIR)/makefile.tar.Z
	@(cd $(DEST); tar xf $(MKDIR)/exist.TAR )
	@(cd $(DEST);\
	  uncompress -c $(TARDIR)/makefile.tar.Z |tar xf -)
	touch $(DEST)/.uptodate
#--------------------------------------------------------------------------
#
# Fortran pre-processor, configuration files
#
$(BIN)/fpre: $(TARDIR)/fpre.tar.Z 
	@echo 'Building preprocessor'
	@(cd $(DEST); tar xf $(MKDIR)/fpre.TAR )
	@(cd $(DEST); uncompress -c $(TARDIR)/fpre.tar.Z |tar xf -)
	@(cd $(DEST)/util/tools/pre ; make $(ARGS); mv fpre $(BIN)/fpre)
#
# RCS co -p pseudo-command. 
$(BIN)/co: $(TARDIR)/co.tar.Z 
	if ([ -x /usr/local/bin/co ]); then\
	   echo 'RCS co is already present in local/bin ' ; \
           if ([ -x $(BIN)/co ]); then \
                \rm -fr $(BIN)/co; \
                ln -f -s /usr/local/bin/co $(BIN)/co; \
           else \
	   	ln -f -s /usr/local/bin/co $(BIN)/co; \
           fi \
	elif ([ -x /usr/bin/co ]) ; then \
	   echo 'RCS co is already present in bin' ; \
           if ([ -x $(BIN)/co ]); then \
		\rm -fr $(BIN)/co; \
		ln -f -s /usr/bin/co $(BIN)/co; \
	   else \
	   	ln -f -s /usr/bin/co $(BIN)/co; \
           fi \
	else \
	   echo 'Building RCS simulator' ;\
	   cd $(DEST); tar xf $(MKDIR)/co.TAR  ;\
	   cd $(DEST); uncompress -c $(TARDIR)/co.tar.Z |tar xf - ;\
           cd $(DEST)/util/tools/co ; make $(ARGS); mv co $(BIN)/co ;\
	fi 
#
# Test to check if translation of inc: path is required or not
# (not required on HPUX and AIX)
#
$(DEST)/.gag.$(GAG_SYS): $(DEST)/util/tools/pre/pre_processor.$(GAG_SYS) 
	if [ ${GAG_INC} = YES ] ; then \
	   cat  $(DEST)/util/tools/pre/pre_processor.$(GAG_SYS) > \
		$(DEST)/.gag.$(GAG_SYS) ; \
	else \
	   sed -e "s?INC:?$(DEST)/include/?g"  \
		$(DEST)/util/tools/pre/pre_processor.$(GAG_SYS) > \
		$(DEST)/.gag.$(GAG_SYS) ; \
	fi
#
# Automatic edition of .gag.dico.gbl to define path
#
$(BIN)/.gag.dico.gbl: $(REF)/bin/gag.dico.gbl
	sed -e 's?\$$GAG_REF/?$(REF)/?g' -e 's?\$$GAG_DEST/?$(DEST)/?g'  \
	    -e 's?\$$GAG_PAPER_SIZE?$(PAPER_SIZE)?g' \
	    -e 's?\$$GILDAS_MOTIF?$(GILDAS_MOTIF)?g' \
		$(REF)/bin/gag.dico.gbl > \
		$(DEST)/bin/.gag.dico.gbl
#	
#--------------------------------------------------------------------------
#
# HELP:	.hlp files for internal Help in SIC
#
$(HELP)/.uptodate : $(MKDIR)/help.tar.Z
	@(cd $(DEST);\
	  uncompress -c $(MKDIR)/help.tar.Z |tar xf - ;\
	  chmod a+xr $(HELP)/*.hlp ;\
	  touch $(HELP)/.uptodate)
#
# THELP: .hlp files for EXPLAIN command in VECTOR (help about tasks)
#
$(THELP)/.uptodate : $(MKDIR)/task_help.tar.Z
	@(cd $(DEST);\
	  uncompress -c $(MKDIR)/task_help.tar.Z |tar xf - ;\
	  chmod a+xr $(THELP)/*.hlp ;\
	  touch $(THELP)/.uptodate)
#
# DEMO: demonstration procedures and files
# 
$(DEMO)/.uptodate : $(TARDIR)/demo.tar.Z
	@(cd $(DEST);\
	  uncompress -c $(TARDIR)/demo.tar.Z |tar xf - ;\
	  chmod a+xr $(DEMO)/* ;\
	  touch $(DEMO)/.uptodate)
#
#
# DOC: Documentations 
# 
$(BIN)/DOC: $(TARDIR)/DOC.tar.Z $(LIB)/libgag.a	
	@echo 'Building DOC program'
	@(cd $(DEST)/doc; make exe $(ARGS) )
$(DOC)/.uptodate : $(TARDIR)/DOC.tar.Z 
	@echo 'Building DOCs'
	@(cd $(DEST); tar xf $(MKDIR)/DOC.TAR )
	@(cd $(DEST)/doc; make unpack $(ARGS) )
	touch $(DOC)/.uptodate
#
#-------------------------------------------------------------------------
#
# Programs
#
# ASTRO:
# ------
$(BIN)/astro: $(LIB)/libastro.a $(LIB)/libGREG.a $(LIB)/libgtlang.a $(LIB)/libcontour.a $(LIB)/libchar.a $(LIB)/libsic.a $(LIB)/libimage.a $(LIB)/libgag.a $(LIB)/libatm.a $(LIB)/libfits.a
	@echo 'Building astro'
	@(cd $(DEST)/astro/astro; make exe $(ARGS) )
	@(mv $(DEST)/astro/astro/astro.exe $(BIN)/astro)
#
# VECTOR:
# -------
$(BIN)/vector: $(LIB)/libgag.a $(LIB)/libimage.a  $(LIB)/libsic.a  $(LIB)/libgdf.a $(LIB)/libvector.a $(LIB)/libfits.a
	@echo 'Building vector'
	@(cd $(DEST)/gdf/vector; make exe $(ARGS))
	@(mv $(DEST)/gdf/vector/vector.exe $(BIN)/vector)
#
# GFITS:
# ------
$(BIN)/gfits: $(LIB)/libgfits.a  $(LIB)/libsic.a  $(LIB)/libimage.a $(LIB)/libgag.a $(LIB)/libgdf.a $(LIB)/libfits.a $(TASK)/exec/.uptodate
	@echo 'Building gfits'
	@(cd $(DEST)/gdf/fits; make exe $(ARGS) )
	@(mv $(DEST)/gdf/fits/fgildas.exe $(BIN)/fgildas)
	@(mv $(DEST)/gdf/fits/gfits.exe $(BIN)/gfits)
	@(mv $(DEST)/gdf/fits/fits_gildas.exe $(DEST)/task/exec/fits_gildas.exe)
	@(mv $(DEST)/gdf/fits/gildas_fits.exe $(DEST)/task/exec/gildas_fits.exe)
#
# CLICant Library new version
$(LIB)/libclicant.a: $(TARDIR)/clicant.tar.Z $(INC) $(BASE)
	@echo 'Building libclicant'
	@(cd $(DEST); tar xf $(MKDIR)/clicant.TAR )
	@(cd $(DEST)/astro/clicant; make unpack $(ARGS); \
	    make inc $(ARGS); make lib $(ARGS) )
#
# CLICant image, new version
$(BIN)/CLIC:  $(LIB)/libgag.a $(LIB)/libimage.a \
$(LIB)/libcontour.a $(LIB)/libchar.a $(LIB)/libsic.a $(LIB)/libgtlang.a \
$(LIB)/libGREG.a $(LIB)/libatm.a $(LIB)/libastro.a $(LIB)/libgdf.a \
$(LIB)/libfits.a $(LIB)/libclicant.a
	@(cd $(DEST)/astro/clicant; \
	    echo 'Building CLIC '; \
	    echo ${LAPACK} ${NAG} ;\
	if [ ${LAPACK} != /dev/null ] ; then \
	    echo 'Building CLIC (LAPACK version) '; \
	    make lapack $(ARGS); \
	    mv $(DEST)/astro/clicant/clic-lapack.exe $(BIN)/CLIC; \
	elif [ ${NAG} != /dev/null ] ; then \
	    echo 'Building CLIC (NAG version) '; \
	    make nag $(ARGS); \
	    mv $(DEST)/astro/clicant/clic-nag.exe $(BIN)/CLIC; \
	else \
	    echo 'Building CLIC (Minimum version) '; \
	    make none $(ARGS); \
	    mv $(DEST)/astro/clicant/clic-none.exe $(BIN)/CLIC; \
	fi \
	)
#
# Mapping image, new version
$(BIN)/mapping: $(TARDIR)/MAP.tar.Z $(LIB)/libmapc.a $(LIB)/libgagtask.a \
$(LIB)/libfits.a
	@echo 'Building Mapping'
	@(cd $(DEST); tar xf $(MKDIR)/MAP.TAR )
	@(cd $(DEST)/astro/newmap; make unpack $(ARGS); \
	make inc $(ARGS); make exe $(ARGS); \
	mv $(DEST)/astro/newmap/mapping.exe $(BIN)/mapping)
#
# POINT image, new version
$(BIN)/POINT: $(TARDIR)/point.tar.Z
	@echo 'Building POINT'
	@(cd $(DEST); tar xf $(MKDIR)/point.TAR )
	@(cd $(DEST)/bure/point; make unpack $(ARGS); \
	make inc $(ARGS); make exe $(ARGS); \
	mv $(DEST)/bure/point/point.exe $(BIN)/POINT)
#
# FLUX image, new version
$(BIN)/FLUX: $(TARDIR)/flux.tar.Z $(BIN)/astro
	@echo 'Building FLUX'
	@(cd $(DEST); tar xf $(MKDIR)/flux.TAR )
	@(cd $(DEST)/astro/flux; make unpack $(ARGS); \
	make inc $(ARGS); make exe $(ARGS); \
	mv $(DEST)/astro/flux/flux.exe $(BIN)/FLUX)
#
#
#------------------------------------------------------------------------
#
# Libraries
# VECTOR
$(LIB)/libvector.a: $(TARDIR)/vector.tar.Z $(INC) $(BASE)
	@echo 'Building libvector'
	@(cd $(DEST); tar xf $(MKDIR)/vector.TAR )
	@(cd $(DEST)/gdf/vector; make unpack $(ARGS);\
	 make inc $(ARGS); make lib $(ARGS))
# GFITS
$(LIB)/libgfits.a: $(TARDIR)/gfits.tar.Z $(INC) $(BASE)
	@echo 'Building libgfits'
	@(cd $(DEST); tar xvf $(MKDIR)/gfits.TAR )
	@(cd $(DEST)/gdf/fits; make unpack $(ARGS);\
	 make inc $(ARGS); make lib $(ARGS) )
# ASTRO
$(LIB)/libastro.a: $(TARDIR)/astro.tar.Z $(INC) $(BASE)
	@echo 'Building libastro'
	@(cd $(DEST); tar xf $(MKDIR)/astro.TAR )
	@(cd $(DEST)/astro/astro; make unpack $(ARGS);\
	 make inc $(ARGS); make lib $(ARGS) )
# FITS
$(LIB)/libfits.a: $(TARDIR)/fits.tar.Z $(INC) $(BASE)
	@echo 'Building libfits'
	@(cd $(DEST); tar xf $(MKDIR)/fits.TAR )
	@(cd $(DEST)/util/fits; make unpack $(ARGS);\
	 make inc $(ARGS); make lib $(ARGS) )
# CONTOUR
$(LIB)/libcontour.a: $(TARDIR)/contour.tar.Z  $(INC) $(BASE)
	@echo 'Building contour'
	@(cd $(DEST); tar xf $(MKDIR)/contour.TAR )
	@(cd $(DEST)/plot/contour; make unpack $(ARGS);\
	 make inc $(ARGS); make lib $(ARGS); 	\
	if [ ${SHARE} = "YES" ] ; then \
	    make share $(ARGS) ; \
	else \
	    echo 'No shareable library to build'  ; \
	fi \
	 )
# CHAR
$(LIB)/libchar.a: $(TARDIR)/char.tar.Z  $(INC) $(BASE)
	@echo 'Building char library'
	@(cd $(DEST); tar xf $(MKDIR)/char.TAR )
	@(cd $(DEST)/plot/char; make unpack $(ARGS);\
	 make inc $(ARGS); make lib $(ARGS); \
	if [ ${SHARE} = "YES" ] ; then \
	    make share $(ARGS) ; \
	else \
	    echo 'No shareable library to build';\
	fi \
	)
# ATM
$(LIB)/libatm.a: $(TARDIR)/atm.tar.Z  $(INC) $(BASE)
	@echo 'Building atm library'
	@(cd $(DEST); tar xf $(MKDIR)/atm.TAR )
	@(cd $(DEST)/astro/atm; make unpack $(ARGS);\
	 make lib $(ARGS))
# GDF
$(LIB)/libgdf.a: $(TARDIR)/gdf.tar.Z  $(INC) $(BASE)
	@echo 'Building gdf library'
	@(cd $(DEST); tar xf $(MKDIR)/gdf.TAR )
	@(cd $(DEST)/gdf; make unpack $(ARGS);\
	 make lib $(ARGS) )
# SIC
$(LIB)/libsic.a: $(TARDIR)/sic.tar.Z $(INC) $(BASE)
	@echo 'Building libsic'
	@(cd $(DEST); tar xf $(MKDIR)/sic.TAR )
	@(cd $(DEST)/util/sic; make unpack $(ARGS);\
	 make inc $(ARGS); make lib $(ARGS); \
	if [ "${GAG_MOTIF}" != "" ] ; then \
	    make X $(ARGS) ; \
	fi ; \
	if [ ${SHARE} = "YES" ] ; then \
	    make share $(ARGS) ; \
	else \
	    echo 'No shareable library to build'  ; \
	fi \
	)
# GAG
$(LIB)/libgag.a: $(TARDIR)/gag.tar.Z $(INC) $(BASE)
	@echo 'Building gag'
	@(cd $(DEST); tar xf $(MKDIR)/gag.TAR )
	@(cd $(DEST)/util/gag; make unpack $(ARGS);\
	 make inc $(ARGS); make lib $(ARGS); \
	if [ ${SHARE} = "YES" ] ; then \
	    make share $(ARGS) ; \
	else \
	    echo 'No shareable library to build'  ; \
	fi \
	)
# IMAGE
$(LIB)/libimage.a: $(TARDIR)/image.tar.Z  $(INC) $(BASE)
	@echo 'Building IMAGE'
	@(cd $(DEST); tar xf $(MKDIR)/image.TAR )
	@(cd $(DEST)/util/image; make unpack $(ARGS);\
	 make inc $(ARGS); make lib $(ARGS); \
	if [ ${SHARE} = "YES" ] ; then \
	    make share $(ARGS) ; \
	else \
	    echo 'No shareable library to build'  ; \
	fi \
	)
# Task library
$(LIB)/libgagtask.a: $(TARDIR)/task_lib.tar.Z $(INC) $(BASE)
	@echo 'Building task library'
	@(cd $(DEST); tar xf $(MKDIR)/task_lib.TAR )
	@(cd $(DEST)/task; make unpack $(ARGS); \
	 make $(ARGS))
#
#---------------------------------------------------------------------------
#
# INCLUDEs
#
$(INC): $(TARDIR)/include.tar.Z $(BIN)/fpre $(DEST)/.gag.$(GAG_SYS)
	@echo $?
	@echo 'Building include files'
	@(cd $(DEST); tar xf $(MKDIR)/include.TAR )
	@(cd $(DEST)/include; make unpack $(ARGS);\
	 make $(ARGS) )
	@(touch $(INC))
#
#---------------------------------------------------------------------------
#
# Fonts and Terminal definition files and utility (GTVDEF)
#
$(BIN)/gregfont.bin: $(LIB)/libchar.a  $(INC)
	@echo 'Building graphic fonts'
	@(rm -f $(DEST)/plot/char/GREGFONT.DAT)
	@(cd $(DEST)/plot/char; make fonts $(ARGS))
	@(mv $(DEST)/plot/char/gregfont.bin $(BIN)/gregfont.bin)
$(BIN)/gagdef.bin: $(BIN)/gtvdef  $(TARDIR)/gag_terminal.tar.Z \
   ${BIN}/.gag.dico.gbl
	@echo 'Building terminal definition file'
	@(cd $(DEST); tar xf $(MKDIR)/gag_terminal.TAR )
	@(cd $(DEST)/plot/terminal/; make unpack $(ARGS); \
	  rm -f gagdef.bin; make gagdef.bin $(ARGS) )
	@(mv $(DEST)/plot/terminal/gagdef.bin $(BIN)/gagdef.bin)
$(BIN)/gtvdef: $(LIB)/libgtlang.a  
	@echo 'Building gtvdef'
	@(cd $(DEST)/gras/gtvirt; make exe $(ARGS); \
	  mv gtvdef.exe $(BIN)/gtvdef)
#
#---------------------------------------------------------------------------
#
# Parameter Files for tasks, must go on destination
#
#$(TASK)/exec/.uptodate: $(TARDIR)/task_par.tar.Z 
#	@echo 'Building task parameter files'
#	@(cd $(DEST); uncompress -c $(TARDIR)/task_par.tar.Z |tar xf -)
#	@(touch $(TASK)/exec/.uptodate)
#
# catalog search tasks
$(TASK)/catalogs/.uptodate: $(TARDIR)/task_catalogs.tar.Z $(BASE) $(LIB)/libgagtask.a
	@echo 'Building cataloging tasks'
	@(cd $(DEST); tar xf $(MKDIR)/task_catalogs.TAR )
	@(cd $(DEST)/task/catalogs; make unpack $(ARGS); \
	 make include $(ARGS); make $(ARGS); touch .uptodate)
#
# UV table stuff
$(TASK)/clic/.uptodate: $(TARDIR)/task_clic.tar.Z $(BASE) $(LIB)/libgagtask.a
	@echo 'Building CLIC tasks'
	@(cd $(DEST); tar xf $(MKDIR)/task_clic.TAR )
	@(cd $(DEST)/task/clic; make unpack $(ARGS); \
	 make include $(ARGS); make $(ARGS); touch .uptodate)
#
# Gaussian fitting
$(TASK)/gauss/.uptodate: $(TARDIR)/task_gauss.tar.Z $(BASE) $(LIB)/libgagtask.a
	@echo 'Building gauss fitting tasks'
	@(cd $(DEST); tar xf $(MKDIR)/task_gauss.TAR )
	@(cd $(DEST)/task/gauss; make unpack $(ARGS); \
	 make include $(ARGS); make $(ARGS); touch .uptodate)
#
# Mapping
$(LIB)/libmapc.a: $(TARDIR)/task_map.tar.Z 
	@echo 'Building mapping task library'
	@(cd $(DEST); tar xf $(MKDIR)/task_map.TAR )
	@(cd $(DEST)/task/map; make unpack $(ARGS); \
	 make include $(ARGS); make lib $(ARGS) )
$(TASK)/map/.uptodate: $(LIB)/libmapc.a $(BASE) $(LIB)/libgagtask.a
	@echo 'Building mapping tasks'
	@(cd $(DEST)/task/map; make $(ARGS); touch .uptodate)
#
# General tasks
$(TASK)/sources/.uptodate: $(TARDIR)/task_sources.tar.Z $(BASE) $(LIB)/libgagtask.a
	@echo 'Building basic tasks'
	@(cd $(DEST); tar xf $(MKDIR)/task_sources.TAR )
	@(cd $(DEST)/task/sources; make unpack $(ARGS); \
	 make include $(ARGS); make $(ARGS); touch .uptodate)
#
# ??
$(TASK)/specials/.uptodate: $(TARDIR)/task_specials.tar.Z $(BASE) $(LIB)/libgagtask.a
	@echo 'Building special tasks'
	@(cd $(DEST); tar xf $(MKDIR)/task_specials.TAR )
	@(cd $(DEST)/task/specials; make unpack $(ARGS); \
	 make include $(ARGS); make $(ARGS); touch .uptodate)
#
# X-Window tasks
$(TASK)/X/.uptodate: $(TARDIR)/task_X.tar.Z $(BASE) $(LIB)/libgagtask.a
	@echo 'Building special tasks'
	@(cd $(DEST); tar xf $(MKDIR)/task_X.TAR )
	@(if [ "${GAG_MOTIF}" != "" ] ; then \
	 cd $(DEST)/task/X; make unpack $(ARGS); \
	 make include $(ARGS); make $(ARGS); touch .uptodate ;\
	fi )
#
# NIC: bolometer software
$(LIB)/libnic.a: $(TARDIR)/nic_main.tar.Z  
	@echo 'Building libNIC'
	@(cd $(DEST); tar xf $(MKDIR)/nic_main.TAR )
	@(cd $(DEST)/nic/main; make unpack $(ARGS);\
	  make inc $(ARGS); make lib $(ARGS))
# NIC: bolometer software
$(BIN)/NIC: $(LIB)/libvector.a $(LIB)/libgag.a $(LIB)/libimage.a $(LIB)/libcontour.a $(LIB)/libchar.a $(LIB)/libsic.a $(LIB)/libgtlang.a $(LIB)/libGREG.a $(LIB)/libgtlang.a $(LIB)/libgdf.a $(LIB)/libnic.a
	@echo 'Building NIC'
	@(cd $(DEST)/nic/main; \
	if [ ${NAG} != /dev/null ] ; then \
	    echo 'Building NIC (NAG version) '; \
	    make nag $(ARGS) ;\
	    mv $(DEST)/nic/main/nic.exe $(BIN)/NIC; \
	else \
	    echo 'Building NIC (Minimum version) '; \
	    make none $(ARGS) ; \
	    mv $(DEST)/nic/main/nic.exe $(BIN)/NIC; \
	fi \
	)
$(TASK)/nic/.uptodate: $(TARDIR)/nic_task.tar.Z
	@echo 'Building NIC tasks'
	@(cd $(DEST); tar xf $(MKDIR)/nic_task.TAR )
	@(cd $(DEST)/task/nic; make unpack $(ARGS); \
	  make inc $(ARGS); make exe $(ARGS); touch .uptodate)
##
## end of tasks
##
#--------------------------------------------------------------------------
# NEW FEATURES
#--------------------------------------------------------------------------
#
# GTVL
$(LIB)/libgtlang.a: $(TARDIR)/GTVL.tar.Z  $(INC) $(BASE)
	@echo 'Building (new) GTVL'
	@(cd $(DEST); tar xf $(MKDIR)/GTVL.TAR )
	@(cd $(DEST)/gras/gtvirt; make unpack $(ARGS);\
	  make inc $(ARGS); make lib $(ARGS); \
	  if [ ${SHARE} = "YES" ] ; then \
	    make share $(ARGS) ; \
	  else \
	    echo 'No shareable library to build'  ; \
	  fi \
	 )
#
# GREG:
# -----
libGREG: $(LIB)/libGREG.a
$(LIB)/libGREG.a: $(BASE) $(TARDIR)/GREG.tar.Z $(INC) 
	@echo 'Building (new) libGREG'
	@(cd $(DEST); tar xf $(MKDIR)/GREG.TAR )
	@(cd $(DEST)/gras/greg; make unpack $(ARGS);\
	  make inc $(ARGS); make lib $(ARGS))
#
$(BIN)/GREG:  $(LIB)/libgag.a $(LIB)/libimage.a $(LIB)/libcontour.a $(LIB)/libchar.a $(LIB)/libsic.a $(LIB)/libgtlang.a $(LIB)/libGREG.a 
	@echo 'Building (new) GREG'
	@(cd $(DEST)/gras/greg; make exe $(ARGS))
	@(mv $(DEST)/gras/greg/GREG.exe $(BIN)/GREG)
#
# GRAPHIC:
# --------
libGRAPHIC: $(LIB)/libGRAPHIC.a
$(LIB)/libGRAPHIC.a: $(BASE) $(TARDIR)/GRAPHIC.tar.Z $(INC) 
	@echo 'Building libGRAPHIC'
	@(cd $(DEST); tar xf $(MKDIR)/GRAPHIC.TAR )
	@(cd $(DEST)/gras/graphic; make unpack $(ARGS);\
	 make inc $(ARGS); make lib $(ARGS) )
#
$(BIN)/GRAPHIC: $(LIB)/libGRAPHIC.a $(LIB)/libGREG.a $(LIB)/libvector.a $(LIB)/libgtlang.a  $(LIB)/libsic.a  $(LIB)/libimage.a $(LIB)/libgag.a $(LIB)/libgdf.a $(LIB)/libastro.a
	@echo 'Building (new) GRAPHIC'
	@(cd $(DEST)/gras/graphic; make exe $(ARGS) )
	@(mv $(DEST)/gras/graphic/GRAPHIC.exe $(BIN)/GRAPHIC)
#
#
# CLASS:
# ------
$(LIB)/libCLASS.a: $(TARDIR)/CLASS.tar.Z $(INC) $(BASE)
	@echo 'Building libCLASS'
	@(cd $(DEST); tar xf $(MKDIR)/CLASS.TAR )
	@(cd $(DEST)/astro/class; make unpack $(ARGS);\
	 make inc $(ARGS); make lib $(ARGS) )
#
$(BIN)/CLASS:  $(LIB)/libgag.a $(LIB)/libimage.a $(LIB)/libchar.a \
$(LIB)/libsic.a $(LIB)/libgtlang.a $(LIB)/libatm.a $(LIB)/libgdf.a  \
$(LIB)/libastro.a $(LIB)/libCLASS.a
	@echo 'Building CLASS'
	@(cd $(DEST)/astro/class; make exe $(ARGS) )
	@(mv $(DEST)/astro/class/class.exe $(BIN)/CLASS)
#
# CFITS (uses some include files in class)
$(LIB)/libCFITS.a: $(TARDIR)/CFITS.tar.Z $(INC) $(LIB)/libCLASS.a $(BASE)
	@echo 'Building libCFITS'
	@(cd $(DEST); tar xf $(MKDIR)/CFITS.TAR )
	@(cd $(DEST)/astro/cfits; make unpack $(ARGS);\
	 make inc $(ARGS); make lib $(ARGS) )
#
$(BIN)/CFITS: $(LIB)/libCFITS.a $(LIB)/libCLASS.a  $(LIB)/libsic.a $(LIB)/libgtlang.a $(LIB)/libimage.a $(LIB)/libchar.a $(LIB)/libgag.a $(LIB)/libatm.a $(LIB)/libgdf.a $(LIB)/libfits.a $(LIB)/libgfits.a 
	@echo 'Building CFITS'
	@(cd $(DEST)/astro/cfits; make exe $(ARGS))
	@(mv $(DEST)/astro/cfits/cfits.exe $(BIN)/CFITS)
#
# Lovas (CLASS with user code example)
$(BIN)/lovas: $(LIB)/libCLASS.a  $(LIB)/libsic.a $(LIB)/libgtlang.a $(LIB)/libimage.a $(LIB)/libchar.a $(LIB)/libgag.a $(LIB)/libatm.a $(LIB)/libgdf.a
	@echo 'Building LOVAS'
	@(cd $(DEST)/astro/lovas; make unpack $(ARGS); make exe $(ARGS))
	@(mv $(DEST)/astro/lovas/lovas.exe $(BIN)/lovas)
#
#--------------------------------------------------------------------------
#
# Procedures:
#$(DEST)/pro/.uptodate: $(MKDIR)/procedure.tar.Z
#	@echo 'Building procedures'
#	@(cd $(DEST); tar xf $(MKDIR)/procedure.TAR )
#	@(cd $(DEST)/pro ; \
#	 touch $(DEST)/pro/.uptodate)
$(DEST)/pro/class/.uptodate: $(MKDIR)/procedure-class.tar.Z
	@echo 'Building CLASS procedures'
	@(cd $(DEST); tar xf $(MKDIR)/procedure.TAR )
	@(cd $(DEST)/pro/class ; make unpack $(ARGS); make goal $(ARGS); \
	 touch $(DEST)/pro/class/.uptodate)
$(DEST)/pro/greg/.uptodate: $(MKDIR)/procedure-greg.tar.Z
	@echo 'Building GREG procedures'
	@(cd $(DEST); tar xf $(MKDIR)/procedure.TAR )
	@(cd $(DEST)/pro/greg ; make unpack $(ARGS); make goal $(ARGS); \
	 touch $(DEST)/pro/greg/.uptodate)
$(DEST)/pro/graphic/.uptodate: $(MKDIR)/procedure-graphic.tar.Z
	@echo 'Building GRAPHIC procedures'
	@(cd $(DEST); tar xf $(MKDIR)/procedure.TAR )
	@(cd $(DEST)/pro/graphic ; make unpack $(ARGS); make goal $(ARGS); \
	 touch $(DEST)/pro/graphic/.uptodate)
$(DEST)/pro/clic/.uptodate: $(MKDIR)/procedure-clic.tar.Z
	@echo 'Building CLIC procedures'
	@(cd $(DEST); tar xf $(MKDIR)/procedure.TAR )
	@(cd $(DEST)/pro/clic ; make unpack $(ARGS); make goal $(ARGS); \
	 touch $(DEST)/pro/clic/.uptodate)
$(DEST)/pro/lut/.uptodate: $(MKDIR)/procedure-lut.tar.Z
	@echo 'Building LUTs '
	@(cd $(DEST); tar xf $(MKDIR)/procedure.TAR )
	@(cd $(DEST)/pro/lut ; make unpack $(ARGS); make goal $(ARGS); \
	 touch $(DEST)/pro/lut/.uptodate)
$(DEST)/pro/nic/.uptodate: $(MKDIR)/procedure-nic.tar.Z
	@echo 'Building NIC procedures'
	@(cd $(DEST); tar xf $(MKDIR)/procedure.TAR )
	@(cd $(DEST)/pro/nic ; make unpack $(ARGS); make goal $(ARGS); \
	 touch $(DEST)/pro/nic/.uptodate)
$(DEST)/pro/astro/.uptodate: $(MKDIR)/procedure-astro.tar.Z
	@echo 'Building ASTRO procedures'
	@(cd $(DEST); tar xf $(MKDIR)/procedure.TAR )
	@(cd $(DEST)/pro/astro ; make unpack $(ARGS); make goal $(ARGS); \
	 touch $(DEST)/pro/astro/.uptodate)
$(DEST)/pro/map/.uptodate: $(MKDIR)/procedure-map.tar.Z
	@echo 'Building MAPPING procedures'
	@(cd $(DEST); tar xf $(MKDIR)/procedure.TAR )
	@(cd $(DEST)/pro/map ; make unpack $(ARGS); make goal $(ARGS); \
	 touch $(DEST)/pro/map/.uptodate)
#
# astro_local.astro and various .astro macros and .sou files should be in the path:
$(BIN)/astro_local.astro: $(TARDIR)/ephemeris.tar.Z
	@(cd $(DEST);\
	  uncompress -c $(TARDIR)/ephemeris.tar.Z |tar xf - ; \
	  cp $(DEST)/ephemeris/*.astro $(BIN)/. )
# Not sure this is used anywhere...
$(BIN): 
	mkdir $(BIN)
#
#---------------------------------------------------------------------------
# Link to "lowercase" images
links:
	(cd $(BIN); ln -f -s GREG greg; ln -f -s GRAPHIC graphic; \
	  ln -f -s CLIC clic; ln -f -s mapping MAPPING; ln -f -s astro ASTRO; \
	  ln -f -s CLASS class; ln -f -s CFITS cfits; ln -f -s POINT point; \
	  ln -f -s NIC nic)
#
# Build with binaries available...
binar:
	@(cd $(DEST); uncompress -c $(TARDIR)/bin_$(GAG_SYS).tar.Z |tar xf -) 
	  sed -e 's?\$$GAG_REF/?$(REF)/?g' -e 's?\$$GAG_DEST/?$(DEST)/?g'  \
		$(REF)/bin/gag.dico.gbl > \
		$(DEST)/bin/.gag.dico.gbl
	  if [ ${GAG_SYS} = HPUX ] ; then \
	   rm /users/softs/newtest/lib ; \
	   ln -s -f $(DEST)/lib /users/softs/newtest ; \
	  fi 
	@(cd $(DEST)/astro/astro; make unpack $(ARGS))
#
#----------------------------------------------------------------------------
# Delete all files
remove:
# Remove intermediate files, keep libraries, includes and reference sources
purge:
	rm -f -r ${DEST}/astro
	rm -f -r ${DEST}/gdf
	rm -f -r ${DEST}/plot
	rm -f -r ${DEST}/gras
	rm -f -r ${DEST}/task/clic
	rm -f -r ${DEST}/task/clean
	rm -f -r ${DEST}/task/gauss
	rm -f -r ${DEST}/task/map
	rm -f -r ${DEST}/task/mosaic
	rm -f -r ${DEST}/task/sources
	rm -f -r ${DEST}/task/special
	rm -f -r ${DEST}/util
#
	if [ $(SHARE) = "YES" ] ; then \
            rm -f ${DEST}/lib/libGREG.a ; \
            rm -f ${DEST}/lib/libchar.a ; \
            rm -f ${DEST}/lib/libcontour.a ; \
            rm -f ${DEST}/lib/libgag.a ; \
            rm -f ${DEST}/lib/libgtlang.a ; \
            rm -f ${DEST}/lib/libimage.a ; \
            rm -f ${DEST}/lib/libsic.a ; \
	fi
#
# Make sure the time sequence is such as to avoid non-needed rebuilds
# Archives
	touch $(DEST)/lib/lib*.a
# Shareable (if any)
	touch $(DEST)/lib/lib*.sl
# Executables
	touch ${DEST}/bin/gtvdef
	touch ${DEST}/bin/gagdef.bin
	touch ${DEST}/bin/gregfont.bin
	touch ${DEST}/bin/vector
	touch ${DEST}/bin/gfits
	touch ${DEST}/bin/GREG
	touch ${DEST}/bin/GRAPHIC
	touch ${DEST}/bin/CLASS
	touch ${DEST}/bin/CFITS
	touch ${DEST}/bin/mapping
	touch ${DEST}/task/exec/*
#
# Delete non strictly necessary files: sources, libraries....
# Should not be programmed without a safe protection on the basic reference
# version on iraux2!!!
purge-all: purge

