#!/bin/make -f
# Smail SCCS ID: @(#)pd/pathalias/Makefile	1.12 9/20/92 16:46:13
# pathalias -- by steve bellovin, as told to peter honeyman

# NOTE: this does not build arpatxt, to avoid requiring regular
#	expressions for generic builds.

SHELL=/bin/sh
MAKE=make
GET=sccs get
AR=ar
LINT=lint
CLEAN=sccs clean
MK=${MAKE} -${MAKEFLAGS} SHELL=${SHELL}
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
INST=${ROOT}/conf/lib/inst.sh
INSTM=${ROOT}/conf/lib/instm.sh
XEXEC=${SHELL} ${ROOT}/conf/lib/xexec.sh
DEFS_SH=defs.sh
DEFS_H=defs.h
DEFS_SED=defs.sed

ROOT=../..
UTILSRC=${ROOT}/util
INCLUDES=-I${UTILSRC} $$DBM_INCLUDES $$INCLUDES
CFLAGS = -DSTATIC=static $$CFLAGS
YFLAGS = -d
OBJ = addlink.o addnode.o local.o main.o mapit.o mapaux.o mem.o parse.o printit.o
HDRS = def.h config.h
CSRC = addlink.c addnode.c local.c main.c mapit.c mapaux.c mem.c printit.c
MORE_OBJ=makedb.o arpatxt.o
MORE_CSRC=makedb.c arpatxt.c
MISCSRC=Makefile CHANGES README arpa-privates
YSRC=parse.y
SRC = $(CSRC) $(HDRS) $(MISCSRC) $(YSRC) $(MORE_CSRC)
LSRC = $(CSRC) parse.c
TARGETS = pathalias makedb # arpatxt
COMPAT_LIB_DIR=${ROOT}/compat
COMPAT_LIB=${COMPAT_LIB_DIR}/compat.a

all: ${TARGETS}

pathalias: $(OBJ) ${COMPAT_LIB}
	@. ./${DEFS_SH}; ${XEXEC} $$CC ${CFLAGS} $$LDFLAGS ${OBJ} ${GETOPT} \
		-o pathalias $$LIBS $$DBM_LIB ${COMPAT_LIB}

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

sources: ${SRC}

${SRC}:
	${GET} $@

${DEFS_H} ${DEFS_SH} ${DEFS_SED}:
	ROOT=${ROOT} ${SHELL} ${MKDEFS}

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

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

${OBJ} ${MORE_OBJ}: ${DEFS_SH}
	@. ./${DEFS_SH}; ${XEXEC} $$CC ${CFLAGS} ${INCLUDES} -c $*.c

depend local_depend: ${SRC} parse.c check_defs
	@. ./${DEFS_SH}; ${XEXEC} ${SHELL} ${MKDEPEND} $$CPPFLAGS ${INCLUDES} \
		Makefile ${CSRC} ${MORE_CSRC} parse.c
	. ./${DEFS_SH}; echo "$$DEFS_DEPEND" >> Makefile
	chmod -w Makefile

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

install: all ${DEFS_SH}
	@. ./${DEFS_SH}; \
	   case "$$DONT_INSTALL" in \
	   ?*)	echo Testing ... install ignored; exit 0;; \
	   esac; \
	   ${XEXEC} ${SHELL} ${MKDIRS} -m 0755 $$UTIL_BIN_DIR; \
	   s_flag=; \
	   case "$STRIP" in \
	   ?*)	s_flag=-s;;\
	   esac; \
	   ${XEXEC} ${SHELL} ${INSTM} $$s_flag -m 0555 $$UTIL_BIN_DIR ${TARGETS}

parse.c: parse.y $(HDRS)
	$(YACC) $(YFLAGS) parse.y
	mv y.tab.c parse.c

makedb: makedb.o ${DEFS_SH} ${COMPAT_LIB}
	@. ./${DEFS_SH}; ${XEXEC} $$CC ${CFLAGS} $$LDFLAGS makedb.o ${GETOPT} \
		-o makedb $$LIBS $$DBM_LIB ${COMPAT_LIB}

makedb.o: config.h

arpatxt: arpatxt.o ${DEFS_SH} ${COMPAT_LIB}
	@. ./${DEFS_SH}; ${XEXEC} $$CC ${CFLAGS} $$LDFLAGS arpatxt.o ${GETOPT} \
		-o arpatxt $$LIBS ${COMPAT_LIB}

clean:
	rm -f ${DEFS_SH} ${DEFS_H} ${DEFS_SED}
	rm -f *.o y.tab.? parse.c

clobber: clean
	rm -f pathalias makedb arpatxt

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

tags: $(CSRC) $(HSRC)
	ctags -w $(CSRC) $(HSRC)

bundle:
	@bundle ${SRC}

lint:	$(LSRC)
	${LINT} ${LINTFLAGS} $(CFLAGS) $(LSRC)
	${LINT} ${LINTFLAGS} makedb.c
	${LINT} ${LINTFLAGS} arpatxt.c

# DO NOT REMOVE THIS LINE, OR "make depend" WILL NOT WORK
# Miscellaneous dependencies
addlink.o:  ../../conf/lib/arch.h /usr/include/_G_config.h /usr/include/ctype.h
addlink.o:  /usr/include/features.h /usr/include/libio.h /usr/include/stdio.h
addlink.o:  /usr/include/sys/cdefs.h addlink.c config.h def.h defs.h
addnode.o:  ../../conf/lib/arch.h /usr/include/_G_config.h /usr/include/ctype.h
addnode.o:  /usr/include/features.h /usr/include/libio.h /usr/include/stdio.h
addnode.o:  /usr/include/sys/cdefs.h addnode.c config.h def.h defs.h
local.o:  ../../conf/lib/arch.h /usr/include/_G_config.h
local.o:  /usr/include/features.h /usr/include/libio.h /usr/include/limits.h
local.o:  /usr/include/linux/limits.h /usr/include/linux/param.h
local.o:  /usr/include/posix1_lim.h /usr/include/posix2_lim.h
local.o:  /usr/include/stdio.h /usr/include/sys/cdefs.h
local.o:  /usr/include/sys/param.h /usr/include/sys/utsname.h
local.o:  /usr/lib/gcc-lib/i486-linux/2.5.8/include/limits.h
local.o:  /usr/lib/gcc-lib/i486-linux/2.5.8/include/syslimits.h config.h defs.h
local.o:  local.c
main.o:  ../../conf/lib/arch.h /usr/include/_G_config.h /usr/include/ctype.h
main.o:  /usr/include/features.h /usr/include/libio.h /usr/include/stdio.h
main.o:  /usr/include/sys/cdefs.h config.h def.h defs.h main.c
mapit.o:  ../../conf/lib/arch.h /usr/include/_G_config.h /usr/include/ctype.h
mapit.o:  /usr/include/features.h /usr/include/libio.h /usr/include/stdio.h
mapit.o:  /usr/include/sys/cdefs.h config.h def.h defs.h mapit.c
mapaux.o:  ../../conf/lib/arch.h /usr/include/_G_config.h /usr/include/ctype.h
mapaux.o:  /usr/include/features.h /usr/include/libio.h /usr/include/stdio.h
mapaux.o:  /usr/include/sys/cdefs.h config.h def.h defs.h mapaux.c
mem.o:  ../../conf/lib/arch.h /usr/include/_G_config.h /usr/include/ctype.h
mem.o:  /usr/include/features.h /usr/include/libio.h /usr/include/stdio.h
mem.o:  /usr/include/sys/cdefs.h config.h def.h defs.h mem.c
printit.o:  ../../conf/lib/arch.h /usr/include/_G_config.h /usr/include/ctype.h
printit.o:  /usr/include/features.h /usr/include/libio.h /usr/include/stdio.h
printit.o:  /usr/include/sys/cdefs.h config.h def.h defs.h printit.c
makedb.o:  ../../conf/lib/arch.h ../../util/dbm_compat.h
makedb.o:  /usr/include/_G_config.h /usr/include/dbm.h /usr/include/features.h
makedb.o:  /usr/include/libio.h /usr/include/stdio.h /usr/include/sys/cdefs.h
makedb.o:  config.h defs.h makedb.c
arpatxt.o:  /usr/include/_G_config.h /usr/include/ctype.h
arpatxt.o:  /usr/include/features.h /usr/include/libio.h /usr/include/stdio.h
arpatxt.o:  /usr/include/sys/cdefs.h arpatxt.c
parse.o:  ../../conf/lib/arch.h /usr/include/_G_config.h /usr/include/ctype.h
parse.o:  /usr/include/features.h /usr/include/libio.h /usr/include/stdio.h
parse.o:  /usr/include/sys/cdefs.h /usr/lib/bison.simple config.h def.h defs.h
parse.o:  parse.c parse.y
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/linux
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

