
# Linux /proc-based Makefile
#
# $Id: Makefile,v 1.11 2008/04/15 13:30:01 abe Exp $

PROG=	lsof

BIN=	${DESTDIR}

DOC=	${DESTDIR}

I=/usr/include
S=/usr/include/sys
L=/usr/include/local
P=

CDEF=
CDEFS=  ${CDEF} ${CFGF}
DEP=	${CFGD} ${CFGDN}
INCL=	${DINC}
CFLAGS=	-Wall ${CDEFS} ${INCL} ${DEP} ${DEBUG}

GRP=

HDR=    lsof.h lsof_fields.h dlsof.h machine.h proto.h dproto.h

SRC=    dfile.c dmnt.c dnode.c dproc.c dsock.c dstore.c \
	arg.c main.c misc.c node.c print.c proc.c store.c usage.c \
	util.c

OBJ=	dfile.o dmnt.o dnode.o dproc.o dsock.o dstore.o \
	arg.o main.o misc.o node.o print.o proc.o store.o usage.o \
	util.o

MAN=	lsof.8

OTHER=	

SHELL=	/bin/sh

SOURCE=	Makefile ${OTHER} ${MAN} ${HDR} ${SRC}

all: ${PROG}

${PROG}: ${P} ${LIB} ${OBJ}
	${CC} -o $@ ${OBJ} ${CFGL}

check: all
	bash ./check.bash linux

dist: clean
	test -d .git && bash support/GenericDistrib2 linux

clean: FRC
	rm -f Makefile.bak ${PROG} a.out core errs lint.out tags *.o version.h ${CFGDN}
	rm -f machine.h.old new_machine.h
	(cd lib; ${MAKE} -f Makefile.skel clean)
	(cd tests; ${MAKE} clean)
	(cd dialects/linux/tests; ${MAKE} clean)

install: all FRC
	@echo ''
	@echo 'Please write your own install rule.  Lsof should be installed'
	@echo 'setuid to root if you wish any lsof user to be able to examine'
	@echo 'all open files.  Your install rule actions might look something'
	@echo 'like this:'
	@echo ''
	@echo '    install -m 4xxx -o root -g $${GRP} $${PROG} $${BIN}'
	@echo '    install -m 444 $${MAN} $${DOC}'
	@echo ''
	@echo 'You will have to complete the 4xxx modes, the GRP value, and'
	@echo 'the skeletons for the BIN and DOC strings, given at the'
	@echo 'beginning of this Makefile, e.g.,'
	@echo ''
	@echo '    BIN= $${DESTDIR}/usr/local/etc'
	@echo '    DOC= $${DESTDIR}/usr/man/man8'
	@echo '    GRP= sys'
	@echo ''

${LIB}: FRC
	(cd lib; ${MAKE} DEBUG="${DEBUG}" CFGF="${CFGF}")

version.h:	FRC
	@echo Constructing version.h
	@rm -f version.h
	@echo '#define	LSOF_BLDCMT	"${LSOF_BLDCMT}"' > version.h;
	@echo '#define	LSOF_CC		"${CC}"' >> version.h
	@echo '#define	LSOF_CCV	"${CCV}"' >> version.h
	@echo '#define	LSOF_CCFLAGS	"'`echo ${CFLAGS} | sed 's/\\\\(/\\(/g' | sed 's/\\\\)/\\)/g' | sed 's/"/\\\\"/g'`'"' >> version.h
	@echo '#define	LSOF_CINFO	"${CINFO}"' >> version.h
	@if [ "X${LSOF_HOST}" = "X" ]; then \
	  if [ "X${SOURCE_DATE_EPOCH}" = "X" ]; then \
	    echo '#define	LSOF_HOST	"'`uname -n`'"' >> version.h; \
	  else \
	    echo '#define	LSOF_HOST	""' >> version.h; \
	  fi \
	else \
	  if [ "${LSOF_HOST}" = "none" ]; then \
	    echo '#define	LSOF_HOST	""' >> version.h; \
	  else \
	    echo '#define	LSOF_HOST	"${LSOF_HOST}"' >> version.h; \
	  fi \
	fi
	@echo '#define	LSOF_LDFLAGS	"${CFGL}"' >> version.h
	@if [ "X${LSOF_LOGNAME}" = "X" ]; then \
	  if [ "X${SOURCE_DATE_EPOCH}" = "X" ]; then \
	    echo '#define	LSOF_LOGNAME	"${LOGNAME}"' >> version.h; \
	  else \
	    echo '#define	LSOF_LOGNAME	""' >> version.h; \
	  fi \
	else \
	  if [ "${LSOF_LOGNAME}" = "none" ]; then \
	    echo '#define	LSOF_LOGNAME	""' >> version.h; \
	  else \
	    echo '#define	LSOF_LOGNAME	"${LSOF_LOGNAME}"' >> version.h; \
	  fi; \
	fi
	@if [ "X${LSOF_SYSINFO}" = "X" ]; then \
	  if [ "X${SOURCE_DATE_EPOCH}" = "X" ]; then \
	    echo '#define	LSOF_SYSINFO	"'`uname -a`'"' >> version.h; \
	  else \
	    echo '#define	LSOF_SYSINFO	""' >> version.h; \
	  fi \
	else \
	  if [ "${LSOF_SYSINFO}" = "none" ]; then \
	    echo '#define	LSOF_SYSINFO	""' >> version.h; \
	  else \
	    echo '#define	LSOF_SYSINFO	"${LSOF_SYSINFO}"' >> version.h; \
	  fi \
	fi
	@if [ "X${LSOF_USER}" = "X" ]; then \
	  if [ "X${SOURCE_DATE_EPOCH}" = "X" ]; then \
	    echo '#define	LSOF_USER	"${USER}"' >> version.h; \
	  else \
	    echo '#define	LSOF_USER	""' >> version.h; \
	  fi \
	else \
	  if [ "${LSOF_USER}" = "none" ]; then \
	    echo '#define	LSOF_USER	""' >> version.h; \
	  else \
	    echo '#define	LSOF_USER	"${LSOF_USER}"' >> version.h; \
	  fi \
	fi
	@sed '/VN/s/.ds VN \(.*\)/#define	LSOF_VERSION	"\1"/' < version >> version.h

FRC:

# DO NOT DELETE THIS LINE - make depend DEPENDS ON IT

dfile.o:	${HDR} dfile.c

dmnt.o:		${HDR} dmnt.c

dnode.o:	${HDR} dnode.c

dproc.o:	${HDR} dproc.c

dsock.o:	${HDR} dsock.c

dstore.o:	${HDR} dstore.c

arg.o:		${HDR} arg.c

main.o:		${HDR} main.c

misc.o:		${HDR} misc.c

node.o:		${HDR} node.c

print.o:	${HDR} print.c

proc.o:		${HDR} proc.c

store.o:	${HDR} store.c

usage.o:	${HDR} version.h usage.c

util.o:		${HDR} util.c

# *** Do not add anything here - It will go away. ***
