# Makefile for ps, w, free, top and tload
# for Linux version 0.99.6
#

#
# uncomment the next line if you want warning messages when the
# psdatabase is out of date
# CFLAGS= -O -DVERSION_CHECK

LDFLAGS= -s
#LDFLAGS= -static

# BINDIR: if you type "make install" the programs will be copied to this
# directory. This will also set the right mode and owner of these files
# and the devices /dev/kmem and /dev/swap.
BINDIR= /bin

CC= gcc

# PSDB=	-DPSDATABASE=\"/var/run/psdatabase\"

# add -DSERIAL_S or -DSERIAL_s if your serial ttys are ttyS0, ttyS1..
# or ttys0, ttys1..
#
CFLAGS= -O $(PSDB) -DVC_a


TLIB= -ltermcap

PROG= ps free w tload top fstat

ALLPROG= $(PROG) memmap kprof clrprof procw

W_OBJ=	w.o attime.o no_update.o cmdline.o w_linux.o
PS_OBJ=	ps.o ps_subr.o psdata.o update_db.o cmdline.o devname.o pwcache.o
TOP_OBJ= top.o ps_subr.o no_update.o cmdline.o pwcache.o devname.o # ps_mem.o


all: $(PROG)

xtra: $(ALLPROG)

ps: $(PS_OBJ)
	$(CC) -o $@ $(PS_OBJ) $(LDFLAGS)

fstat: fstat.o no_update.o pwcache.o ps_mem.o strmode.o
	$(CC) -o $@ fstat.o no_update.o pwcache.o ps_mem.o strmode.o $(LDFLAGS)

kprof: kprof.o no_update.o
	$(CC) -o $@ kprof.o no_update.o $(LDFLAGS)

clrprof: clrprof.o no_update.o
	$(CC) -o $@ clrprof.o no_update.o $(LDFLAGS)

memmap: memmap.o no_update.o
	$(CC) -o $@ memmap.o no_update.o $(LDFLAGS)

free: free.o no_update.o ps_mem.o
	$(CC) -o $@ free.o no_update.o ps_mem.o $(LDFLAGS)

tload: tload.o no_update.o
	$(CC) -o $@ tload.o no_update.o $(LDFLAGS)

procw: procw.o attime.o
	$(CC) -o $@ procw.o attime.o $(LDFLAGS)

w: $(W_OBJ)
	$(CC) -o $@ $(W_OBJ) $(LDFLAGS)

top: $(TOP_OBJ)
	$(CC) -o $@ $(TOP_OBJ) $(TLIB) $(LDFLAGS)


no_update.o: psdata.c
	$(CC) -o $@ $(CFLAGS) -DNO_UPDATE -c psdata.c

man ps.0: ps.1
	groff -Tascii -man ps.1 >ps.0

install: $(PROG)
	-chown root.kmem /dev/kmem || chown root.mem /dev/kmem
	-chown root.kmem /dev/swap || chown root.mem /dev/swap
	-chmod 640 /dev/kmem /dev/swap
	-chown root.kmem $(PROG) || chown root.mem $(PROG)
	chmod 2755 $(PROG)
	cp -p $(PROG) $(BINDIR)
	ln -f $(BINDIR)/w $(BINDIR)/uptime
	ln -f $(BINDIR)/fstat $(BINDIR)/fuser

clean:
	rm -f *.o *.a .depend core a.out $(ALLPROG)

dep .depend:
	$(CC) -M $(CFLAGS) *.c >.depend

.SUFFIXES: .i

.c.i:
	$(CC) -E $(CFLAGS) -o $@ $<

#
# include a dependency file if one exists
#
ifeq (.depend,$(wildcard .depend))
include .depend
endif

