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

instbin instdev : 
	@$(MAKE) __$@

__instbin:
	@$(MAKE) INSTSRC=$(TOPDIR)/bin/$(OS)$(ARCH) INSTDEST=$(INST_EXAMPLES)   \
		INSTALL?="$(INSTBINCMD)" __install
	@$(MAKE) INSTSRC=$(TOPDIR)/lib/$(OS)$(ARCH) INSTDEST=$(INST_LIBS)   \
		INSTALL?="$(INSTBINCMD)" __install
	@echo  >> $(INSTLOGFILE)
	@echo "    Run-time environment installation successful.  Add "  \
	  >> $(INSTLOGFILE)
	@echo "        $(INST_EXAMPLES)"  \
	  >> $(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/instexamplesrc   \
		$(TOPDIR)  \
		$(INST_LIBS)  \
		$(INST_INCLUDE)  \
		$(INST_SRC)  \
		$(INST_EXAMPLE_SRC)  \
		"$(INSTDEVCMD)"  \
		"$(C++)"  \
		"$(OPTF)"  \
		"$(DEPARG)"  \
		"$(LINKARGS)"  \
		"$(OTHER_LIBS)"  \
        $(MAKE)   \


	@echo  \
	  >> $(INSTLOGFILE)
	@echo "    Development environment installation successful.  Add"  \
	  >> $(INSTLOGFILE)
	@echo "        -I$(INST_INCLUDE)"  \
	  >> $(INSTLOGFILE)
	@echo "    compile flag when compiling with libwms header files."  \
	  >> $(INSTLOGFILE)
	@echo "    Example programs can be found at $(INST_EXAMPLE_SRC)."  \
	  >> $(INSTLOGFILE)
	@echo  >> $(INSTLOGFILE)
	  
instlinks : 
	@rm -f $(INSTLOGFILE)
	$(MAKE) INSTBINCMD="$(INSTLINKBINCMD)" __instbin
	$(MAKE) INSTDEVCMD="$(INSTLINKDEVCMD)" __instdev
	@cat $(INSTLOGFILE)

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

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


instclean : instcleanbin instcleandev

instcleanbin :
	@$(MAKE) INSTSRC=$(TOPDIR)/bin/$(OS)$(ARCH) INSTDEST=$(INST_EXAMPLES)   \
		INSTALL?="$(INSTBINCMD)" __instclean
	@$(MAKE) INSTSRC=$(TOPDIR)/lib/$(OS)$(ARCH) INSTDEST=$(INST_LIBS)   \
		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)/examples | grep -v CVS`;   \
	do  \
	  if [ -d $(TOPDIR)/examples/$$d ];   \
	  then   \
	    $(MAKE) INSTSRC=$(TOPDIR)/examples/$$d INSTDEST=$(INST_EXAMPLE_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;   \
	        $(INSTALL) $$INSTPATH $(INSTDEST)/$$f;  \
	    fi  \
	  done  \
	fi

__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  \
        rm -rf $(INSTDEST);  \
	  fi  \
	fi
