#
# Makefile for compiling all killproc tools
#
# Author: Werner Fink,  <werner@suse.de>
#

INITDIR  =	/sbin/init.d
#DEBUG	 =	-DDEBUG=1
#DESTDIR =	/tmp/root
DEBUG	 =
DESTDIR	 =
VERSION	 =	1.10
DATE	 =	$(shell date +'%d%b%y' | tr '[:lower:]' '[:upper:]')

#
# Architecture
#
	   ARCH = $(shell uname -m | sed 's@\(i\)[34567]\(86\)@\13\2@')
#
# egcs used with -O2 includes -fno-force-mem which is/was buggy (1998/10/08)
#
ifeq ($(ARCH),i386)
	  COPTS = -m486 -malign-loops=2 -malign-jumps=2 -malign-functions=2 \
		  -fomit-frame-pointer -fschedule-insns2
else
	  COPTS = -fomit-frame-pointer -fschedule-insns2
endif
	 CFLAGS = -O2 $(COPTS) $(DEBUG) -D_GNU_SOURCE -Wall -pipe
	  CLOOP = -funroll-loops
	     CC = gcc
	     RM = rm -f
	  MKDIR = mkdir -p
	  RMDIR = rm -rf
   INSTBINFLAGS = -s -m 0755
	INSTBIN = install $(INSTBINFLAGS)
   INSTDOCFLAGS = -c -m 0444
	INSTDOC = install $(INSTDOCFLAGS)

#
# The successor of FSSTND, FHS, places man pages
# in /usr/share/man/ ...
#	SDOCDIR = $(DESTDIR)/usr/share/man/man8
	SDOCDIR = $(DESTDIR)/usr/man/man8
	SBINDIR = $(DESTDIR)/sbin
#
#
#
TODO	=	killproc startproc checkproc

all: $(TODO)

libinit.o:	libinit.c libinit.h
	$(CC) $(CFLAGS) $(CLOOP) -DINITDIR=\"$(INITDIR)\" -c $<

killproc:	killproc.c libinit.o
	$(CC) $(CFLAGS) $(CLOOP) -o $@ $^

startproc:	startproc.c libinit.o
	$(CC) $(CFLAGS) $(CLOOP) -o $@ $^

checkproc:	checkproc.c libinit.o
	$(CC) $(CFLAGS) $(CLOOP) -o $@ $^

clean:
	$(RM) *.o *~ killproc startproc checkproc

install:	$(TODO)
	$(MKDIR)   $(SBINDIR)  $(SDOCDIR)
	$(INSTBIN) killproc    $(SBINDIR)
	$(INSTDOC) killproc.8  $(SDOCDIR)
	$(INSTBIN) startproc   $(SBINDIR)
	$(INSTDOC) startproc.8 $(SDOCDIR)
	$(INSTBIN) checkproc   $(SBINDIR)
	$(INSTDOC) checkproc.8 $(SDOCDIR)

#
# Make distribution
#
FILES	= README      \
	  COPYING     \
	  Makefile    \
	  killproc.8  \
	  killproc.c  \
	  startproc.c \
	  startproc.8 \
	  checkproc.c \
	  checkproc.8 \
	  libinit.c   \
	  libinit.h   \
	  killproc-$(VERSION).lsm

dest:
	$(MKDIR) killproc-$(VERSION)
	@echo -e 'Begin3\n\
Title:		killproc and assorted tools for boot scripts\n\
Version:	$(VERSION)\n\
Entered-date:	$(DATE)\n\
Description:	Some useful programs for a replacment of the shell functions\n\
x 		daemom and killproc found in the Linux System V init suite.\n\
x 		killproc(8) for signaling or terminating, checkproc(8) for\n\
x 		checking and startproc(8) for starting processes.\n\
x 		Each program has its own manual page.\n\
Keywords:	killproc, startproc, checkproc, process control\n\
Author:		Werner Fink <werner@suse.de>\n\
Maintained-by:	Werner Fink <werner@suse.de>\n\
Primary-site:	sunsite.unc.edu /pub/Linux/system/daemons/init\n\
x		@UNKNOWN killproc-$(VERSION).tar.gz\n\
Alternate-site:	ftp.suse.com /pub/projects/init\n\
Platforms:	Linux with System VR2 or higher boot scheme\n\
Copying-policy:	GPL\n\
End' | sed 's@^ @@g;s@^x@@g' > killproc-$(VERSION).lsm
	cp $(FILES) killproc-$(VERSION)
	tar -c -zf  killproc-$(VERSION).tar.gz killproc-$(VERSION)/
	$(RMDIR)    killproc-$(VERSION)
	set -- `gzip -l killproc-$(VERSION).tar.gz | tail -1` ; \
	sed "s:@UNKNOWN:$$1:" < killproc-$(VERSION).lsm > \
	killproc-$(VERSION).lsm.tmp ; \
	mv killproc-$(VERSION).lsm.tmp killproc-$(VERSION).lsm

tar.gz: all
	$(MKDIR) -p tmpr/sbin
	$(MKDIR) -p tmpr/usr/man/man8
	chown root:root tmpr/*
	install -s -m 0755 -o root -g root killproc  tmpr/sbin/
	install -s -m 0755 -o root -g root startproc tmpr/sbin/
	install -s -m 0755 -o root -g root checkproc tmpr/sbin/
	gzip -c -9 killproc.8   > tmpr/usr/man/man8/killproc.8.gz
	gzip -c -9 startproc.8  > tmpr/usr/man/man8/startproc.8.gz
	gzip -c -9 checkproc.8  > tmpr/usr/man/man8/checkproc.8.gz
	cd tmpr/; tar cfsSpz ../killproc.tgz sbin/ usr/
	rm -rf tmpr/
