#!/bin/make -f
# @(#)util/Makefile	1.4 18 Feb 1991 15:21:15
# Makefile for the smail utility tools
#
#    Copyright (C) 1987, 1988 Ronald S. Karr and Landon Curt Noll
# 
# See the file COPYING, distributed with smail, for restriction
# and warranty information.

SHELL=/bin/sh
MAKE=make
GET=sccs get
AR=ar
LINT=lint
CLEAN=sccs clean
MK=${MAKE} -${MAKEFLAGS}
SRC_PREFIX=
MKDEPEND=${ROOT}/conf/lib/mkdepend.sh
MKDEFS=${ROOT}/conf/lib/mkdefs.sh
CHECKDEFS=${ROOT}/conf/lib/checkdefs.sh
MKDIRS=${ROOT}/conf/lib/mkdirs.sh
INSTM=${ROOT}/conf/lib/instm.sh
INST=${ROOT}/conf/lib/inst.sh
DEFS_SH=defs.sh
DEFS_H=defs.h
DEFS_SED=defs.sed

ROOT=..
SMAILSRC=${ROOT}/src
UTILSRC=${ROOT}/util
INCLUDES=-I${SMAILSRC} $$INCLUDES
REMOTE_SRC=${SMAILSRC}/field.c ${SMAILSRC}/parse.c \
	   ${SMAILSRC}/ascii.c ${SMAILSRC}/string.c
LOCAL_SRC=field.c parse.c ascii.c string.c
LOCAL_OBJ=field.o parse.o ascii.o string.o
UTIL_TARGETS=mkline mksort dcasehost mkdbm mkpath \
	     pathmerge checkerr getmap gleem unsharmap savelog \
	     mkuuwho mkhpath
BIN_TARGETS=mkaliases
TARGETS=${UTIL_TARGETS} ${BIN_TARGETS}
STRIP_TARGETS=mkline mksort dcasehost mkdbm pathmerge
OBJ=mkline.o mksort.o dcasehost.o mkdbm.o pathmerge.o \
    gleem.o unsharmap.o ${LOCAL_OBJ}
CSRC=mkline.c mksort.c dcasehost.c mkdbm.c pathmerge.c gleem.c unsharmap.c
HSRC=
SHSRC=mkpath.sh checkerr.sh getmap.sh mkaliases.sh \
      savelog.sh mkuuwho.sh mkhpath.sh
AWK_SRC=mkpath.awk mkuuwho.awk
MISCSRC=Makefile
SRC=${CSRC} ${HSRC} ${SHSRC} ${AWK_SRC} ${MISCSRC}
COMPAT_LIB_DIR=${ROOT}/compat
COMPAT_LIB=${COMPAT_LIB_DIR}/compat.a

.c.o:
	. ./${DEFS_SH}; $$CC $$CFLAGS ${INCLUDES} -c $*.c

all: ${TARGETS}

sources: ${SRC}

${SRC}:
	${GET} $@

${DEFS_H} ${DEFS_SH}:
	ROOT=${ROOT} sh ${MKDEFS}

${COMPAT_LIB}:
	cd ${COMPAT_LIB_DIR}; ${MK}

names:
	@for i in ${SRC}; do echo ${SRC_PREFIX}$$i; done

install: all
	@. ./${DEFS_SH}; \
	   case "$$DONT_INSTALL" in \
	   ?*)	echo Testing ... install ignored; exit 0;; \
	   esac; \
	   echo ${SHELL} ${MKDIRS} -m 0755 $$UTIL_BIN_DIR $$SMAIL_BIN_DIR \
					   $$LIB_DIR $$LIB_DIR/maps $$TMP_DIR;\
	   ${SHELL} ${MKDIRS} -m 0755 $$UTIL_BIN_DIR $$SMAIL_BIN_DIR \
				      $$LIB_DIR $$LIB_DIR/maps $$TMP_DIR; \
	   case "$$UNSHAR_MAP_DIR" in \
	   ?*)	echo ${SHELL} ${MKDIRS} -m 0755 $$UNSHAR_MAP_DIR \
						$$UNSHAR_MAP_DIR/work; \
		${SHELL} ${MKDIRS} -m 0755 $$UNSHAR_MAP_DIR \
					   $$UNSHAR_MAP_DIR/work;; \
	   esac; \
	   echo ${SHELL} ${INSTM} -m 0555 $$UTIL_BIN_DIR ${UTIL_TARGETS}; \
	   ${SHELL} ${INSTM} -m 0555 $$UTIL_BIN_DIR ${UTIL_TARGETS}; \
	   case "$$NEWALIASES" in \
	   ?*)	echo ${SHELL} ${INST} -m 0555 -d $$UTIL_BIN_DIR mkaliases \
			 $$NEWALIASES; \
	   	${SHELL} ${INST} -m 0555 -d $$UTIL_BIN_DIR mkaliases \
			 $$NEWALIASES;; \
	   esac; \
	   echo ${SHELL} ${INSTM} -m 0444 $$UTIL_BIN_DIR ${AWK_SRC}; \
	   ${SHELL} ${INSTM} -m 0444 $$UTIL_BIN_DIR ${AWK_SRC}; \
	   echo ${SHELL} ${INSTM} -m 0555 $$SMAIL_BIN_DIR ${BIN_TARGETS}; \
	   ${SHELL} ${INSTM} -m 0555 $$SMAIL_BIN_DIR ${BIN_TARGETS}; \
	   case "$$STRIP" in \
	   ?*)	echo "cd $$UTIL_BIN_DIR; strip ${STRIP_TARGETS}"; \
		(cd $$UTIL_BIN_DIR; strip ${STRIP_TARGETS});; \
	   esac

depend local_depend: check_defs
	-@for i in ${LOCAL_SRC}; do \
		if cmp -s $$i ${SMAILSRC}/$$i; then \
			: ; \
		else \
			echo "rm -f $$i; cp ${SMAILSRC}/$$i $$i"; \
			rm -f $$i; cp ${SMAILSRC}/$$i $$i; \
		fi; \
	done
	. ./${DEFS_SH};sh ${MKDEPEND} ${INCLUDES} Makefile ${CSRC} ${LOCAL_SRC}
	. ./${DEFS_SH}; echo "$$DEFS_DEPEND" >> Makefile
	chmod -w Makefile

check_defs:
	ROOT=${ROOT} ${SHELL} ${CHECKDEFS}

mkline:	mkline.o string.o field.o parse.o ascii.o ${DEFS_SH} ${COMPAT_LIB}
	. ./${DEFS_SH}; $$CC $$CFLAGS $$LDFLAGS -o mkline mkline.o \
		string.o field.o parse.o ascii.o \
		$$LIBS ${COMPAT_LIB}

mksort: mksort.o string.o ascii.o ${DEFS_SH} ${COMPAT_LIB}
	. ./${DEFS_SH}; $$CC $$CFLAGS $$LDFLAGS -o mksort mksort.o string.o \
		ascii.o $$LIBS ${COMPAT_LIB}

dcasehost: dcasehost.o ascii.o ${DEFS_SH} ${COMPAT_LIB}
	. ./${DEFS_SH}; $$CC $$CFLAGS $$LDFLAGS -o dcasehost dcasehost.o \
		ascii.o $$LIBS ${COMPAT_LIB}

mkdbm: mkdbm.o ascii.o ${DEFS_SH} ${COMPAT_LIB}
	. ./${DEFS_SH}; $$CC $$CFLAGS $$LDFLAGS -o mkdbm mkdbm.o ascii.o \
		$$LIBS ${COMPAT_LIB}

mkpath: mkpath.sh ${DEFS_SED}
	@-rm -f $@
	sed -f ${DEFS_SED} $@.sh > $@
	chmod +x $@

checkerr: checkerr.sh ${DEFS_SED}
	@-rm -f $@
	sed -f ${DEFS_SED} $@.sh > $@
	chmod +x $@

mkaliases: mkaliases.sh ${DEFS_SED}
	@-rm -f $@
	sed -f ${DEFS_SED} $@.sh > $@
	chmod +x $@

pathmerge: pathmerge.o ${DEFS_SH} ${COMPAT_LIB}
	. ./${DEFS_SH}; $$CC $$CFLAGS $$LDFLAGS -o pathmerge pathmerge.o \
		$$LIBS ${COMPAT_LIB}

getmap: getmap.sh ${DEFS_SED}
	@-rm -f $@
	sed -f ${DEFS_SED} $@.sh > $@
	chmod +x $@

mkuuwho: mkuuwho.sh ${DEFS_SED}
	@-rm -f $@
	sed -f ${DEFS_SED} $@.sh > $@
	chmod +x $@

savelog: savelog.sh ${DEFS_SED}
	@-rm -f $@
	sed -f ${DEFS_SED} $@.sh > $@
	chmod +x $@

mkhpath: mkhpath.sh ${DEFS_SED}
	@-rm -f $@
	sed -f ${DEFS_SED} $@.sh > $@
	chmod +x $@

gleem: gleem.o ${DEFS_SH} ${COMPAT_LIB}
	. ./${DEFS_SH}; $$CC $$CFLAGS $$LDFLAGS -o gleem gleem.o $$LIBS ${COMPAT_LIB}

unsharmap: unsharmap.o string.o ascii.o ${DEFS_SH} ${COMPAT_LIB}
	. ./${DEFS_SH}; $$CC $$CFLAGS $$LDFLAGS -o unsharmap unsharmap.o \
		string.o ascii.o $$LIBS ${COMPAT_LIB}

field.c: ${SMAILSRC}/field.c
	-rm -f $@
	cp $? $@

parse.c: ${SMAILSRC}/parse.c
	-rm -f $@
	cp $? $@

ascii.c: ${SMAILSRC}/ascii.c
	-rm -f $@
	cp $? $@

string.c: ${SMAILSRC}/string.c
	-rm -f $@
	cp $? $@

clean:
	rm -f ${OBJ} core a.out
	rm -f ${DEFS_SH} ${DEFS_H} ${DEFS_SED} ${LOCAL_SRC} XMakefile

clobber: clean
	rm -f ${TARGETS}
	rm -f .${DEFS_SH} .${DEFS_H} .${DEFS_SED} .Makefile

nuke:	clobber
	-${CLEAN}
	-${GET} Makefile

${OBJ}:	${DEFS_SH}

# DO NOT REMOVE THIS LINE, OR "make depend" WILL NOT WORK
# Miscellaneous dependencies
mkline.o:  ../conf/lib/arch.h ../src/addr.h ../src/dys.h ../src/exitcodes.h
mkline.o:  ../src/extern.h ../src/field.h ../src/smail.h /usr/include/ctype.h
mkline.o:  /usr/include/stdarg.h /usr/include/stddef.h /usr/include/stdio.h
mkline.o:  /usr/include/string.h /usr/include/sys/stat.h
mkline.o:  /usr/include/sys/types.h /usr/include/sysexits.h defs.h mkline.c
mksort.o:  ../conf/lib/arch.h ../src/addr.h ../src/dys.h ../src/exitcodes.h
mksort.o:  ../src/extern.h ../src/field.h ../src/smail.h /usr/include/ctype.h
mksort.o:  /usr/include/stdarg.h /usr/include/stddef.h /usr/include/stdio.h
mksort.o:  /usr/include/string.h /usr/include/sys/stat.h
mksort.o:  /usr/include/sys/types.h /usr/include/sysexits.h defs.h mksort.c
dcasehost.o:  ../conf/lib/arch.h /usr/include/stdarg.h /usr/include/stddef.h
dcasehost.o:  /usr/include/stdio.h /usr/include/string.h dcasehost.c defs.h
mkdbm.o:  ../conf/lib/arch.h ../src/dys.h ../src/exitcodes.h ../src/extern.h
mkdbm.o:  ../src/smail.h /usr/include/ctype.h /usr/include/dbm.h
mkdbm.o:  /usr/include/ndbm.h /usr/include/stdarg.h /usr/include/stddef.h
mkdbm.o:  /usr/include/stdio.h /usr/include/string.h /usr/include/sys/stat.h
mkdbm.o:  /usr/include/sys/types.h /usr/include/sysexits.h defs.h mkdbm.c
pathmerge.o:  /usr/include/ctype.h /usr/include/stdarg.h /usr/include/stddef.h
pathmerge.o:  /usr/include/stdio.h pathmerge.c
gleem.o:  ../conf/lib/arch.h /usr/include/stdarg.h /usr/include/stddef.h
gleem.o:  /usr/include/stdio.h /usr/include/string.h defs.h gleem.c
unsharmap.o:  /usr/include/stdarg.h /usr/include/stddef.h /usr/include/stdio.h
unsharmap.o:  unsharmap.c
field.o:  ../conf/lib/arch.h ../src/addr.h ../src/dys.h ../src/exitcodes.h
field.o:  ../src/field.h ../src/log.h ../src/smail.h /usr/include/ctype.h
field.o:  /usr/include/stdarg.h /usr/include/stddef.h /usr/include/stdio.h
field.o:  /usr/include/string.h /usr/include/sysexits.h defs.h field.c
parse.o:  ../conf/lib/arch.h ../src/dys.h ../src/exitcodes.h ../src/parse.h
parse.o:  ../src/smail.h /usr/include/ctype.h /usr/include/stdarg.h
parse.o:  /usr/include/stddef.h /usr/include/stdio.h /usr/include/string.h
parse.o:  /usr/include/sysexits.h defs.h parse.c
ascii.o:  ../conf/lib/arch.h /usr/include/stddef.h /usr/include/string.h
ascii.o:  ascii.c defs.h
string.o:  ../conf/lib/arch.h ../src/dys.h ../src/smail.h /usr/include/ctype.h
string.o:  /usr/include/stdarg.h /usr/include/stddef.h /usr/include/stdio.h
string.o:  /usr/include/string.h /usr/include/varargs.h defs.h string.c
defs.sh defs.h defs.sed: ${ROOT}/conf/EDITME
defs.sh defs.h defs.sed: ${ROOT}/conf/lib/arch.h
defs.sh defs.h defs.sed: ${ROOT}/conf/lib/mkdefs.sh
defs.sh defs.h defs.sed: ${ROOT}/conf/os/NeXT
defs.sh defs.h defs.sed: ${ROOT}/conf/arch/32bit
version.sh version.h version.sed: ${ROOT}/conf/lib/mkversion.sh
version.sh version.h version.sed: ${ROOT}/level
version.sh version.h version.sed: ${ROOT}/patchnum

