install  : 
	@rm -f $(INSTLOGFILE)
	@$(MAKE) __instbin __instdev
	@more $(INSTLOGFILE)

instbin instdev : 
	@$(MAKE) __$@

__instbin:
	@$(MAKE) INSTSRC=$(TOPDIR)/bin INSTDEST=$(INST_DEMOS) \
		INSTALL?="$(INSTBINCMD)" __install
	@$(MAKE) INSTSRC=$(TOPDIR)/lib INSTDEST=$(INST_LIBS) \
		INSTALL?="$(INSTBINCMD)" __install
	@$(MAKE) INSTSRC=$(TOPDIR)/lib/osgPlugins INSTDEST=$(INST_PLUGINS)\
		INSTALL?="$(INSTBINCMD)" __install
	@echo  >> $(INSTLOGFILE)
	@echo "    Run-time environment installation successful.  Add "\
	  >> $(INSTLOGFILE)
	@echo "        $(INST_DEMOS)"\
	  >> $(INSTLOGFILE)
	@echo "    to your PATH environmental variable, and"\
	  >> $(INSTLOGFILE)
	@echo "        $(INST_LIBS) and $(INST_PLUGINS)"\
	  >> $(INSTLOGFILE)
	@echo "    to your LD_LIBRARY_PATH if not already present."\
	  >> $(INSTLOGFILE)
	@echo >> $(INSTLOGFILE)
	

__instdev:
	@for d in `ls -1  $(TOPDIR)/include/ | grep -v CVS`; \
	do\
	  if [ -d $(TOPDIR)/include/$$d ]; \
	  then \
	    $(MAKE) INSTSRC=$(TOPDIR)/include/$$d INSTDEST=$(INST_INCLUDE)/$$d\
		   INSTALL?="$(INSTDEVCMD)" __install;\
	  fi\
	done
	@$(TOPDIR)/Make/instdemosrc \
		$(TOPDIR)\
		$(INST_LIBS)\
		$(INST_INCLUDE)\
		$(INST_SRC)\
		$(INST_DEMO_SRC)\
		"$(INSTDEVCMD)"\
		"$(C++)"\
		"$(OPTF)"\
		"$(DEPARG)"\
		"$(LINKARGS)"\
		"$(OSG_LIBS)"\
		"$(FREETYPE_LIB)"\
		"$(GLUT_LIB)"\
		"$(GL_LIBS)"\
		"$(X_LIBS)"\
		"$(SOCKET_LIBS)"\
		"$(OTHER_LIBS)"\
		"$(TIFF_LIB)"\


	@echo\
	  >> $(INSTLOGFILE)
	@echo "    Development environment installation successful.  Add"\
	  >> $(INSTLOGFILE)
	@echo "        -I$(INST_INCLUDE)"\
	  >> $(INSTLOGFILE)
	@echo "    compile flag when compiling with OSG header files."\
	  >> $(INSTLOGFILE)
	@echo "    Example programs can be found at $(INST_DEMO_SRC)."\
	  >> $(INSTLOGFILE)
	@echo  >> $(INSTLOGFILE)
	  
	  
	

instlinks : 
	@rm -f $(INSTLOGFILE)
	$(MAKE) INSTBINCMD="$(INSTLINKBINCMD)" __instbin
	$(MAKE) INSTDEVCMD="$(INSTLINKDEVCMD)" __instdev
	@more $(INSTLOGFILE)

instlinksbin :
	@rm -f $(INSTLOGFILE)
	$(MAKE) INSTBINCMD="$(INSTLINKBINCMD)" __instbin
	@more $(INSTLOGFILE)

instlinksdev :
	@rm -f $(INSTLOGFILE)
	@$(MAKE) INSTDEVCMD="$(INSTLINKDEVCMD)" __instdev
	@more $(INSTLOGFILE)


instclean : instcleanbin instcleandev

instcleanbin :
	@$(MAKE) INSTSRC=$(TOPDIR)/bin INSTDEST=$(INST_DEMOS) \
		INSTALL?="$(INSTBINCMD)" __instclean
	@$(MAKE) INSTSRC=$(TOPDIR)/lib INSTDEST=$(INST_LIBS) \
		INSTALL?="$(INSTBINCMD)" __instclean
	@$(MAKE) INSTSRC=$(TOPDIR)/lib/osgPlugins INSTDEST=$(INST_PLUGINS)\
		INSTALL?="$(INSTBINCMD)" __instclean

instcleandev :
	@for d in `ls -1  $(TOPDIR)/include/ | grep -v CVS`; \
	do\
	  if [ -d $(TOPDIR)/include/$$d ]; \
	  then \
	    $(MAKE) INSTSRC=$(TOPDIR)/include/$$d INSTDEST=$(INST_INCLUDE)/$$d\
		   INSTALL?="$(INSTDEVCMD)" __instclean;\
	  fi\
	done
	@for d in `ls -1  $(TOPDIR)/src/Demos | grep -v CVS`; \
	do\
	  if [ -d $(TOPDIR)/src/Demos/$$d ]; \
	  then \
	    $(MAKE) INSTSRC=$(TOPDIR)/src/Demos/$$d INSTDEST=$(INST_DEMO_SRC)/$$d\
		   INSTALL?="$(INSTDEVCMD)" __instclean;\
	  fi\
	done

__install :
	@[ -n "$(INSTSRC)" ] || echo "Internal error (INSTSRC definition)"
	@[ -n "$(INSTSRC)" ] && echo > /dev/null
	@[ -n "$(INSTDEST)" ] || echo "Internal error (INSTDEST definition)"
	@[ -n "$(INSTDEST)" ] && echo > /dev/null
	@[ -d $(INSTDEST) ] || mkdir -p $(INSTDEST)
	@cd $(INSTSRC);\
	THISDIR=`pwd`;\
	if [ -n "`ls -1 | grep -v CVS`" ]; then\
	  for f in `ls -1 | grep -v CVS`; \
	  do\
	    if [ -f $$f ] ; \
	    then \
	        INSTPATH=$$THISDIR/$$f; \
	        echo $(INSTALL) $$INSTPATH $(INSTDEST)/$$f;\
	        $(INSTALL) $$INSTPATH $(INSTDEST)/$$f;\
	    fi\
	  done\
	fi

# These lines cause instlinks to install links pointing to the actual files
# rather than the links in $(TOPDIR)/{bin,lib,include}.  Advantage of this
# is for systems that hold multiple platforms  in the same nfs mounted source
# but install different executables.  Disadvantage is that it is not trivial
# to change to debug version by simply doing a 'make debug'.
#		while [ -L $$INSTPATH ]; \
#		while `csh -f -c "test -L $$INSTPATH"` ;\
#		do \
#		    ll=`ls -l $$INSTPATH | cut -f2 -d">"`;\
#		    cd `dirname $$ll`;\
#		    INSTPATH="`pwd`"/"`basename $$ll`";\
#		    cd $$THISDIR;\
#		done;\


__instclean :
	@[ -n "$(INSTSRC)" ] || echo "Internal error (INSTSRC definition)"
	@[ -n "$(INSTSRC)" ] && echo > /dev/null
	@[ -n "$(INSTDEST)" ] || echo "Internal error (INSTDEST definition)"
	@[ -n "$(INSTDEST)" ] && echo > /dev/null
	@if [ -d $(INSTDEST) ] ; \
	then\
	  cd $(INSTSRC);\
	  if [ -n "`ls -1 | grep -v CVS`" ]; then\
	    for f in `ls -1 | grep -v CVS`; \
	    do\
	      if [ -f $$f ] ; \
	      then \
	          echo "rm -f $(INSTDEST)/$$f";\
	          rm -f $(INSTDEST)/$$f;\
	      fi\
	    done\
	  fi;\
	  empty=`ls $(INSTDEST)`;\
	  if [ -z "$$empty" ];\
	  then\
	    repeat=1;\
	    while [ $$repeat = 1 ] ; \
	    do \
	      printf "$(INSTDEST) is empty.  Remove? (y/n) [y]: ";\
	      read resp;\
  	      case $$resp in  \
	        ""|Yes|YES|yes|Y|y) rm -rf $(INSTDEST); repeat=0;; \
	        n|N|no|NO)                              repeat=0;; \
                *)                                      repeat=1;; \
	      esac\
            done\
	  fi\
	fi




