#----------------------------------------------------------------------------
#
# Main makefile.
#
# $Ident: This file is part of the 'Gt-library' 1.0.0 $
# $Copyright: (C) 1997 by Gran Gustafsson $
#
#----------------------------------------------------------------------------

#----------------------------------------------------------------------------
# Include configuration
#----------------------------------------------------------------------------
include makefile.cfg


#----------------------------------------------------------------------------
# Targets
#----------------------------------------------------------------------------

all : $(GTLIB) demos

$(GTLIB) : gttagdefs.h library

$(GTSLIB) : gttagdefs.h sharedlibrary

shared : $(GTSLIB)
	$(CSHL) $(GTSLIB) base/*-sh.o widgets/*-sh.o extras/*-sh.o $(LIBS)
	
gttagdefs.h : tags.tag
	( cd utils ; $(MAKE) tagorg )
	utils/tagorg -c -pGT_ -sGT_USER -i"gttags.h" -ogttagdefs.h tags.tag
	$(CP) gttagdefs.h include

baselibrary :
	( cd base ; $(MAKE) base )

library :
	( cd base    ; $(MAKE) all )
	( cd widgets ; $(MAKE) all )
	( cd extras  ; $(MAKE) all )

sharedlibrary :
	( cd base    ; $(MAKE) allsh )
	( cd widgets ; $(MAKE) allsh )
	( cd extras  ; $(MAKE) allsh )

demos :
	( cd examples ; $(MAKE) all )

tst :
	( cd tests    ; $(MAKE) all )

#----------------------------------------------------------------------------
# Installs
#----------------------------------------------------------------------------

where :
	@echo "Install to $(GTINCDIR)/$(GTINC) and $(GTLIBDIR)."
	
install : $(GTLIB)
	( cd utils ; $(MAKE) tagorg )
	( cd utils ; $(MAKE) l2ghd )
	@if ! test -d $(GTINCDIR)/$(GTINC); then $(MKDIR) $(GTINCDIR)/$(GTINC); fi
	@echo "Created include directory $(GTINCDIR)/$(GTINC)."
	@(cd include ; ../utils/l2ghd -p "$(GTINC)/" * $(GTINCDIR)/$(GTINC) )
	@utils/tagorg -c -pGT_ -sGT_USER -i"gt/gttags.h" -ogttagdefs2.h tags.tag
	@$(CP) gttagdefs2.h $(GTINCDIR)/$(GTINC)/gttagdefs.h
	@$(RM) gttagdefs2.h
	@echo "Copied all headers to $(GTINCDIR)/$(GTINC)."
	@$(CP) $(GTLIB) $(GTLIBDIR)/$(GTLIB)
	@echo "Copied static library to $(GTLIBDIR)/$(GTLIB)."

installshared : shared
	@echo "Removing old versions of library."
	@if test -e $(GTLIBDIR)/$(GTSSO); then $(RM) $(GTLIBDIR)/$(GTSSO)*; fi
	@$(CP) $(GTSLIB) $(GTLIBDIR)/$(GTSLIB)
	@$(LN) $(GTLIBDIR)/$(GTSLIB) $(GTLIBDIR)/$(GTSMAJOR)
	@$(LN) $(GTLIBDIR)/$(GTSMAJOR) $(GTLIBDIR)/$(GTSSO)
	@echo "Copied shared library to $(GTLIBDIR)/$(GTSMAJOR)."

uninstall :
	@if test -d $(GTINCDIR)/$(GTINC); then $(RM) $(GTINCDIR)/$(GTINC)/*; $(RMDIR) $(GTINCDIR)/$(GTINC); fi
	@echo "Deleted include directory $(GTINCDIR)/$(GTINC)"
	@$(RM) $(GTLIBDIR)/$(GTLIB)
	@$(RM) $(GTLIBDIR)/$(GTSLIB)
	@$(RM) $(GTLIBDIR)/$(GTSMAJOR)
	@$(RM) $(GTLIBDIR)/$(GTSSO)
	@echo "Deleted static and shared library."
	

#----------------------------------------------------------------------------
# Specials
#----------------------------------------------------------------------------

newvers :
	( cd include ;\
	  keyw -l ../.inc-log -d ../.version -d ../.keywords *.h )
	( cd base ;\
	  keyw -l ../.base-log -d ../.version -d ../.keywords *.cc Makefile )
	( cd widgets ;\
	  keyw -l ../.widgets-log -d ../.version -d ../.keywords *.cc Makefile )
	( cd extras ;\
	  keyw -l ../.extras-log -d ../.version -d ../.keywords *.cc Makefile )
	( cd utils ;\
	  keyw -l ../.utils-log -d ../.version -d ../.keywords *.cc *.h Makefile )
	( cd tests ;\
	  keyw -l ../.tests-log -d ../.version -d ../.keywords *.cc Makefile )
	( cd examples ;\
	  keyw -l ../.examples-log -d ../.version -d ../.keywords *.cc Makefile )
	( cd docs ;\
	  keyw -l ../.doc-log -d ../.version -d ../.keywords *.txt )
	keyw -l .top-log -d .version -d .keywords Makefile makefile.cfg.in config.h.in proto.h VERSION
	keyw -l .top2-log -d .version -d .keywords COPYING HISTORY INSTALL README TODO
	
mkdeps :
	touch base/.depend
	touch widgets/.depend
	touch widgets/.pdepend
	touch widgets/.mdepend
	touch extras/.depend
	touch rterra/.depend
		
clean :
	( cd base     ; $(MAKE) clean )
	( cd widgets  ; $(MAKE) clean )
	( cd extras   ; $(MAKE) clean )
	( cd utils    ; $(MAKE) clean )
	( cd examples ; $(MAKE) clean )

cleanx : clean
	( cd utils    ; $(MAKE) cleanx )
	( cd tests    ; $(MAKE) cleanx )
	( cd examples ; $(MAKE) cleanx )
	$(RM) .*-log
	$(RM) $(GTLIB) $(GTBLIB) $(GTSLIB)

cleanall : cleanx
	$(RM) config.cache config.status config.log config.h makefile.cfg
	
backup : cleanall
	( cd .. ; tar -czf ~/Backups/gtnew.tgz gtnew )
