## Copyright (C) 1993,1994 by the author(s).
# 
# This software is published in the hope that it will be useful, but
# WITHOUT ANY WARRANTY for any part of this software to work correctly
# or as described in the manuals. See the ShapeTools Public License
# for details.
#
# Permission is granted to use, copy, modify, or distribute any part of
# this software but only under the conditions described in the ShapeTools 
# Public License. A copy of this license is supposed to have been given
# to you along with ShapeTools in a file named LICENSE. Among other
# things, this copyright notice and the Public License must be
# preserved on all copies.

#
# Makefile for vdiff and other vc scripts
#
# Authors: Andreas Lampen (Andreas.Lampen@cs.tu-berlin.de)
#          Axel Mahler (Axel.Mahler@cs.tu-berlin.de)
#
# $Header: Makefile[3.0] Fri Jul 30 17:45:34 1993 andy@cs.tu-berlin.de frozen $
#

# --------------------------------------------------------------------
#		locations and general macros
# --------------------------------------------------------------------

# The base directory of the project's repository area.

BASE = /home/stone/shape/development

# Path to this node system relative to the root of the
# repository area defined above (e.g. src/vc/save).

NODEPATH = src/vc/scripts

# A short name for this node system

NODENAME = vc_scripts

# The operating system, $(TARGET) shall be built for.

HOSTSYSTEM = s_sunos_4

# The processor type.

HOSTTYPE = sun4

# Preprocessor switches. (eg. -DDEBUG)

SWITCHES = 

# Locations and modes for the installation of executables, header
# files, libraries and manuals.

INSTALLBASE = $(BASE)
INSTALLBINPATH = $(INSTALLBASE)/bin
INSTALLBINMODE = 755
INSTALLINCPATH = $(INSTALLBASE)/include
INSTALLINCMODE = 444
INSTALLLIBPATH = $(INSTALLBASE)/lib/shape
INSTALLLIBMODE = 644
INSTALLMANPATH = $(INSTALLBASE)/man
INSTALLMANMODE = 444

# Directories, where local libraries and header files are to be
# installed for project wide use.

LOCALLIBPATH     = $(BASE)/lib
LOCALINCLUDEPATH = $(BASE)/include

# --------------------------------------------------------------------
#		the system's components
# --------------------------------------------------------------------

#
# The system (program, library, etc.) to be built. If you want to
# manage multiple programs, you should introduce multiple targets
# (like PROGTARGET LIBTARGET or any better names). In this case you 
# have to adjust the system building actions accordingly.

VDIFF_TARGET = vdiff
CPHIST_TARGET = cphist
RMHIST_TARGET = rmhist
VP_TARGET = vp

# The release number generator. The version number of this file will
# be used as release identifier for the whole system.

VERSIONFILE = Release

# The names of the subdirectories containing subsystems which are also
# to be built.

SUBSYSTEMS = 

# The regular source and header files.

VDIFF_SOURCE = vdiff.sh
CPHIST_SOURCE = cphist.sh
RMHIST_SOURCE = rmhist.sh
VP_SOURCE = vp.sh
SOURCES = $(VDIFF_SOURCE) $(CPHIST_SOURCE) $(RMHIST_SOURCE) $(VP_SOURCE)

HEADERS = 

MANUALS = $(MAN1) $(MAN3) $(MAN4) $(MAN5) $(MAN6) $(MAN7) $(MAN8)
MAN1 = vdiff.1
MAN3 = 
MAN4 = 
MAN5 = 
MAN6 = 
MAN7 = 
MAN8 = 

# All source components of the system (should not be changed)

COMPONENTS = $(SOURCES) $(HEADERS) $(MANUALS) Shapefile Makefile Dependencies

# --------------------------------------------------------------------
#		tools, flags, libraries etc.
# --------------------------------------------------------------------

MAKE = make
SHELL = /bin/sh

INCLUDES = -I$(LOCALINCLUDEPATH)
MAKECFLAGS = -g
MAKELDFLAGS = -g

CC = cc
CFLAGS  = $(INCLUDES) $(MAKECFLAGS) $(SWITCHES)
LDFLAGS = $(MAKELDFLAGS)

RANLIB  = /usr/bin/ranlib

# System libraries, local libraries and lint libraries.

SYSLIBS   =
LOCALLIBS =
LINTLIBS  =

# --------------------------------------------------------------------
#			the targets
# --------------------------------------------------------------------

# The default action (do not change)

all: +all $(ALLTARGETS)

# The final system building action.

targets: $(VDIFF_TARGET) $(CPHIST_TARGET) $(RMHIST_TARGET) $(VP_TARGET)

$(VDIFF_TARGET): $(VDIFF_SOURCE)
	@rm -f $(VDIFF_TARGET);			 \
	if [ $(HOSTSYSTEM) = s_ultrix ] ; then \
		echo '#!/bin/sh5' > $(VDIFF_TARGET) ;  \
	else					 \
		echo '#!/bin/sh'  > $(VDIFF_TARGET) ;  \
	fi
	cat $(VDIFF_SOURCE) >> $(VDIFF_TARGET)
	@chmod +x $(VDIFF_TARGET)

$(CPHIST_TARGET): $(CPHIST_SOURCE)
	@rm -f $(CPHIST_TARGET);			 \
	if [ $(HOSTSYSTEM) = s_ultrix ] ; then \
		echo '#!/bin/sh5' > $(CPHIST_TARGET) ;  \
	else					 \
		echo '#!/bin/sh'  > $(CPHIST_TARGET) ;  \
	fi
	cat $(CPHIST_SOURCE) >> $(CPHIST_TARGET)
	@chmod +x $(CPHIST_TARGET)

$(RMHIST_TARGET): $(RMHIST_SOURCE)
	@rm -f $(RMHIST_TARGET);			 \
	if [ $(HOSTSYSTEM) = s_ultrix ] ; then \
		echo '#!/bin/sh5' > $(RMHIST_TARGET) ;  \
	else					 \
		echo '#!/bin/sh'  > $(RMHIST_TARGET) ;  \
	fi
	cat $(RMHIST_SOURCE) >> $(RMHIST_TARGET)
	@chmod +x $(RMHIST_TARGET)

$(VP_TARGET): $(VP_SOURCE)
	@rm -f $(VP_TARGET);			 \
	if [ $(HOSTSYSTEM) = s_ultrix ] ; then \
		echo '#!/bin/sh5' > $(VP_TARGET) ;  \
	else					 \
		echo '#!/bin/sh'  > $(VP_TARGET) ;  \
	fi
	cat $(VP_SOURCE) >> $(VP_TARGET)
	@chmod +x $(VP_TARGET)

installtargets: $(INSTALLBINPATH)/$(VDIFF_TARGET) \
	$(INSTALLBINPATH)/$(CPHIST_TARGET) \
	$(INSTALLBINPATH)/$(RMHIST_TARGET) \
	$(INSTALLBINPATH)/$(VP_TARGET)

$(INSTALLBINPATH)/$(VDIFF_TARGET): $(VDIFF_TARGET)
	@-echo "installing $(VDIFF_TARGET) in $(INSTALLBINPATH)"; \
	if [ -f $(INSTALLBINPATH)/$(VDIFF_TARGET) ] && \
	   [ ! -w $(INSTALLBINPATH)/$(VDIFF_TARGET) ]; \
	then \
	  chmod u+w $(INSTALLBINPATH)/$(VDIFF_TARGET); \
	fi; \
	cp $(VDIFF_TARGET) $(INSTALLBINPATH)/$(VDIFF_TARGET); \
	chmod $(INSTALLBINMODE) $(INSTALLBINPATH)/$(VDIFF_TARGET)

$(INSTALLBINPATH)/$(CPHIST_TARGET): $(CPHIST_TARGET)
	@-echo "installing $(CPHIST_TARGET) in $(INSTALLBINPATH)"; \
	if [ -f $(INSTALLBINPATH)/$(CPHIST_TARGET) ] && \
	   [ ! -w $(INSTALLBINPATH)/$(CPHIST_TARGET) ]; \
	then \
	  chmod u+w $(INSTALLBINPATH)/$(CPHIST_TARGET); \
	fi; \
	cp $(CPHIST_TARGET) $(INSTALLBINPATH)/$(CPHIST_TARGET); \
	chmod $(INSTALLBINMODE) $(INSTALLBINPATH)/$(CPHIST_TARGET)

$(INSTALLBINPATH)/$(RMHIST_TARGET): $(RMHIST_TARGET)
	@-echo "installing $(RMHIST_TARGET) in $(INSTALLBINPATH)"; \
	if [ -f $(INSTALLBINPATH)/$(RMHIST_TARGET) ] && \
	   [ ! -w $(INSTALLBINPATH)/$(RMHIST_TARGET) ]; \
	then \
	  chmod u+w $(INSTALLBINPATH)/$(RMHIST_TARGET); \
	fi; \
	cp $(RMHIST_TARGET) $(INSTALLBINPATH)/$(RMHIST_TARGET); \
	chmod $(INSTALLBINMODE) $(INSTALLBINPATH)/$(RMHIST_TARGET)

$(INSTALLBINPATH)/$(VP_TARGET): $(VP_TARGET)
	@-echo "installing $(VP_TARGET) in $(INSTALLBINPATH)"; \
	if [ -f $(INSTALLBINPATH)/$(VP_TARGET) ] && \
	   [ ! -w $(INSTALLBINPATH)/$(VP_TARGET) ]; \
	then \
	  chmod u+w $(INSTALLBINPATH)/$(VP_TARGET); \
	fi; \
	cp $(VP_TARGET) $(INSTALLBINPATH)/$(VP_TARGET); \
	chmod $(INSTALLBINMODE) $(INSTALLBINPATH)/$(VP_TARGET)

installmanuals: $(MANUALS)
	@-_manuals="$(MAN1)"; \
	for i in $$_manuals; \
	do \
	  echo "installing $$i in $(INSTALLMANPATH)/man1"; \
	  if [ -f $(INSTALLMANPATH)/man1/$$i ] && \
	     [ ! -w $(INSTALLMANPATH)/man1/$$i ]; \
	  then \
	    chmod u+w $(INSTALLMANPATH)/man1/$$i; \
	  fi; \
	  cp $$i $(INSTALLMANPATH)/man1/$$i; \
	  chmod $(INSTALLMANMODE) $(INSTALLMANPATH)/man1/$$i; \
	done

# The cleanup action. Removes all automatically rederivable files.

doclean:
	rm -f $(VDIFF_TARGET) $(CPHIST_TARGET) $(RMHIST_TARGET) $(VP_TARGET)

# Recursive builds. Performed *before* building $(TARGET)

subsystems:
	@_subsystems="$(SUBSYSTEMS)"; \
	for i in $$_subsystems; \
	do \
	  echo cd $$i; \
	  (cd $$i; $(MAKE) \
		BASE=$(BASE) \
		HOSTSYSTEM=$(HOSTSYSTEM) \
		HOSTTYPE=$(HOSTTYPE) \
		INSTALLBASE=$(INSTALLBASE) \
		INSTALLBINPATH=$(INSTALLBINPATH) \
		INSTALLBINMODE=$(INSTALLBINMODE) \
		INSTALLINCPATH=$(INSTALLINCPATH) \
		INSTALLINCMODE=$(INSTALLINCMODE) \
		INSTALLLIBPATH=$(INSTALLLIBPATH) \
		INSTALLLIBMODE=$(INSTALLLIBMODE) \
		INSTALLMANPATH=$(INSTALLMANPATH) \
		INSTALLMANMODE=$(INSTALLMANMODE) \
		LOCALLIBPATH=$(LOCALLIBPATH) \
		MAKE="$(MAKE)" \
		SHELL="$(SHELL)" \
		CC="$(CC)" \
		CFLAGS="$(CFLAGS)" \
		LDFLAGS="$(LDFLAGS)" \
		RANLIB="$(RANLIB)" \
		SYSLIBS="$(SYSLIBS)" \
		BINDDEFAULT=$(BINDDEFAULT) \
		BINDINSTALL=$(BINDINSTALL) \
		COMPILER=$(COMPILER) \
		QUALITY=$(QUALITY) \
		TOTALRELEASEBASE=$(TOTALRELEASEBASE) \
		PARTIALRELEASEBASE=$(PARTIALRELEASEBASE) \
		SHAPELIBPATH=$(SHAPELIBPATH) \
		ALLTARGETS= \
		MAINTARGET= \
		$(MAINTARGET) ); \
	done

# --------------------------------------------------------------------
#			internals (do not modify)
# --------------------------------------------------------------------

install: +install $(ALLTARGETS)

clean: +clean $(ALLTARGETS)

+all:
	@-if [ -n "$(ALLTARGETS)" ]; \
	then : ; \
	else \
	  $(MAKE) ALLTARGETS="subsystems targets" MAINTARGET=all \
		BASE=$(BASE) \
		HOSTSYSTEM=$(HOSTSYSTEM) \
		HOSTTYPE=$(HOSTTYPE) \
		INSTALLBASE=$(INSTALLBASE) \
		INSTALLBINPATH=$(INSTALLBINPATH) \
		INSTALLBINMODE=$(INSTALLBINMODE) \
		INSTALLINCPATH=$(INSTALLINCPATH) \
		INSTALLINCMODE=$(INSTALLINCMODE) \
		INSTALLLIBPATH=$(INSTALLLIBPATH) \
		INSTALLLIBMODE=$(INSTALLLIBMODE) \
		INSTALLMANPATH=$(INSTALLMANPATH) \
		INSTALLMANMODE=$(INSTALLMANMODE) \
		LOCALLIBPATH=$(LOCALLIBPATH) \
		MAKE="$(MAKE)" \
		SHELL="$(SHELL)" \
		CC="$(CC)" \
		CFLAGS="$(CFLAGS)" \
		LDFLAGS="$(LDFLAGS)" \
		RANLIB="$(RANLIB)" \
		SYSLIBS="$(SYSLIBS)" all; \
	fi

+install:
	@-if [ -n "$(ALLTARGETS)" ]; \
	then : ; \
	else \
	  $(MAKE) ALLTARGETS="subsystems installtargets" \
		MAINTARGET=install \
		BASE=$(BASE) \
		HOSTSYSTEM=$(HOSTSYSTEM) \
		HOSTTYPE=$(HOSTTYPE) \
		INSTALLBASE=$(INSTALLBASE) \
		INSTALLBINPATH=$(INSTALLBINPATH) \
		INSTALLBINMODE=$(INSTALLBINMODE) \
		INSTALLINCPATH=$(INSTALLINCPATH) \
		INSTALLINCMODE=$(INSTALLINCMODE) \
		INSTALLLIBPATH=$(INSTALLLIBPATH) \
		INSTALLLIBMODE=$(INSTALLLIBMODE) \
		INSTALLMANPATH=$(INSTALLMANPATH) \
		INSTALLMANMODE=$(INSTALLMANMODE) \
		LOCALLIBPATH=$(LOCALLIBPATH) \
		MAKE="$(MAKE)" \
		SHELL="$(SHELL)" \
		CC="$(CC)" \
		CFLAGS="$(CFLAGS)" \
		LDFLAGS="$(LDFLAGS)" \
		RANLIB="$(RANLIB)" \
		SYSLIBS="$(SYSLIBS)" install; \
	fi

+clean:
	@-if [ -n "$(ALLTARGETS)" ]; \
	then : ; \
	else \
	  $(MAKE) ALLTARGETS="subsystems doclean" MAINTARGET=clean \
		BASE=$(BASE) \
		HOSTSYSTEM=$(HOSTSYSTEM) \
		HOSTTYPE=$(HOSTTYPE) \
		INSTALLBASE=$(INSTALLBASE) \
		INSTALLBINPATH=$(INSTALLBINPATH) \
		INSTALLBINMODE=$(INSTALLBINMODE) \
		INSTALLINCPATH=$(INSTALLINCPATH) \
		INSTALLINCMODE=$(INSTALLINCMODE) \
		INSTALLLIBPATH=$(INSTALLLIBPATH) \
		INSTALLLIBMODE=$(INSTALLLIBMODE) \
		INSTALLMANPATH=$(INSTALLMANPATH) \
		INSTALLMANMODE=$(INSTALLMANMODE) \
		LOCALLIBPATH=$(LOCALLIBPATH) \
		MAKE="$(MAKE)" \
		SHELL="$(SHELL)" \
		CC="$(CC)" \
		CFLAGS="$(CFLAGS)" \
		LDFLAGS="$(LDFLAGS)" \
		RANLIB="$(RANLIB)" \
		SYSLIBS="$(SYSLIBS)" clean; \
	fi
