#
# Makefile for loadavgd and monitor -programs
#
# Author: Jussi Maki, jmaki@csc.fi
#         Marcel J.E. Mol marcel@mesa.nl
#
# How to install:
#  1. Edit Makefile to contain correct PREFIX
#     where programs will be installed
#  2. Run make
#  3. Install programs by making monitor and loadavgd suid-programs
#     to root user eg.
#       make install
#

# Set HIGHLIGHT for highlighting headers (see also -H option)
#    0 sets default to plain headers.
#    A_STANDOUT sets default to reverse headers.
#    A_BOLD sets default to bold headers.
# 
HIGHLIGHT=A_STANDOUT

FASTGETPWUID = # -DUSE_FAST_GETPWUID

# Define the fullpath compression program to use
# This will only be used when monitor is started by root
COMPPROG = -DCOMPPROG=\"/usr/local/bin/gzip\"

PREFIX=/usr/local
BINDIR= $(PREFIX)/bin
MANDIR=$(PREFIX)/man
LOADAVGD_LOCATION= $(PREFIX)/etc
install=/usr/ucb/install

MON_VERSION = 2.1.5
MON_DATE    = 13aug1998
#
# When you have AFS installed, remove the # characters from the
# following 4 AFS lines
#
AFS        = # -DHAVE_AFS
AFSCFLAG   = # -I/usr/afsws/include
AFSLDFLAGS = # -bnoquiet /usr/afsws/lib/afs/util.a /usr/afsws/lib/afs/libcmd.a
AFSOBJS    = # get_afsstat.o print_afsstat.o

AIX_VERSION = "`uname -v`"
AIX_RELEASE = "`uname -r`"
AIXNUM = AIXv$(AIX_VERSION)r$(AIX_RELEASE)



DEFS= -Dmon_notdef $(COMPPROG) $(FASTGETPWUID) -DHIGHLIGHT=$(HIGHLIGHT) $(AFS)

CC=cc
LD=cc
# options for debugging loadavgd
#CFLAGS= -DDEBUG -g 
CFLAGS = -O $(DEFS) $(AFSCFLAG) \
        -D$(AIXNUM) -DAIX_VERSION=$(AIX_VERSION) -DAIX_RELEASE=$(AIX_RELEASE) \
        -DMON_VERSION=\"$(MON_VERSION)\" -DMON_DATE=\"$(MON_DATE)\"
LDFLAGS= -s $(CFLAGS)
# LDFLAGS= -s -Wl,-bloadmap:nfsmap $(CFLAGS)


MONVERSION  = monitor-$(MON_VERSION)
MONITOROBJS = monitor.o monprint.o \
              get_sysvminfo.o \
              get_cpuinfo.o \
              get_dkstat.o print_dkstat.o \
              get_ifnet.o print_ifnet.o \
              get_nfsstat.o print_nfsstat.o \
              get_afsstat.o print_afsstat.o \
              get_top.o print_top.o \
              filesys.o $(AFSOBJS)
LIBOBJS = getloadavg.o getkmemdata.o
PROGS   = monitor fps vmker uptime loadavgLED loadavgd


all:	$(PROGS)


loadavgLED:	loadavgLED.o libgetloadavg.a
	$(CC) $(CFLAGS) -o loadavgLED loadavgLED.o libgetloadavg.a

uptime:	uptime.o libgetloadavg.a
	$(CC) $(CFLAGS) -o uptime uptime.o libgetloadavg.a

fps:	fps.o
	$(CC) $(CFLAGS) -o fps fps.o

vmker:	vmker.o
	$(CC) $(CFLAGS) -o vmker vmker.o

loadavgd:	loadavgd.o loadavg.o
	$(CC) $(CFLAGS) -o loadavgd loadavgd.o loadavg.o

monitor:	$(MONITOROBJS) libgetloadavg.a
	$(LD) $(LDFLAGS) -o monitor $(MONITOROBJS) libgetloadavg.a -lcurses $(AFSLDFLAGS) -lrpcsvc

testgetloadavg:	testgetloadavg.o libgetloadavg.a
	$(CC) $(CFLAGS) -o testgetloadavg testgetloadavg.o libgetloadavg.a

getloadavg.o:	getloadavg.c getloadavg.h
	$(CC) -c $(CFLAGS) \
              -DLOADAVGD_LOCATION=\"$(LOADAVGD_LOCATION)/loadavgd\" \
              getloadavg.c

libgetloadavg.a:	$(LIBOBJS)
	-/bin/rm -f libgetloadavg.a
	ar qc libgetloadavg.a  $(LIBOBJS)
	ranlib libgetloadavg.a

tar:	
	(cd ..; tar cvfb $(MONVERSION).tar 1 \
	$(MONVERSION)/*README* \
	$(MONVERSION)/Makefile \
	$(MONVERSION)/FAQ \
	$(MONVERSION)/TODO \
	$(MONVERSION)/*.h \
	$(MONVERSION)/*.c \
	$(MONVERSION)/*.1 \
	$(MONVERSION)/*.3 \
	$(MONVERSION)/top \
	$(MONVERSION)/scripts)


clean:
	-/bin/rm -f *.o $(PROGS) libgetloadavg.a core make.log *.bak *~

install: $(PROGS)
	-/bin/rm -f $(BINDIR)/uptime
	-/bin/rm -f $(LOADAVGD_LOCATION)/loadavgd
	-/bin/rm -f $(BINDIR)/loadavgLED
	-/bin/rm -f $(BINDIR)/monitor
	-/bin/rm -f $(BINDIR)/fps
	mkdir -p $(BINDIR)
	mkdir -p $(LOADAVGD_LOCATION)
	$(install) -c -o root -g system uptime $(BINDIR)
	$(install) -c -o root -g system -m 2711 monitor $(BINDIR)
	$(install) -c -o root -g system -m 2711 loadavgd $(LOADAVGD_LOCATION)
	$(install) -c -o root -g system -m 4711 loadavgLED $(BINDIR)
	$(install) -c -o root -g system -m 711 fps $(BINDIR)
	mkdir -p $(MANDIR)/man1
	mkdir -p $(MANDIR)/man3
	$(install) -c monitor.1 $(MANDIR)/man1
	$(install) -c fps.1 $(MANDIR)/man1
	$(install) -c monitor.3 $(MANDIR)/man3
	$(install) -c getloadavg.3 $(MANDIR)/man3
	$(install) -c getproc.3 $(MANDIR)/man3


monitor.o:	monitor.c monitor.h print.h
monprint.o:	monprint.c monitor.h
monitor.h:	get_nfsstat.h print_nfsstat.h get_top.h print_top.h \
                get_dkstat.h print_dkstat.h get_ifnet.h print_ifnet.h \
                getloadavg.h monprint.h get_sysvminfo.h
get_top.o:	get_top.c get_top.h getproc.h get_topP.h
get_dkstat.o:	get_dkstat.c get_dkstat.h
print_ifnet.o:	print_dkstat.c print_dkstat.h get_dkstat.h print.h
get_ifnet.o:	get_ifnet.c get_ifnet.h
print_ifnet.o:	print_ifnet.c print_ifnet.h get_ifnet.h print.h
get_sysvminfo.o:	get_sysvminfo.c get_sysvminfo.h
get_cpuinfo.o:	get_cpuinfo.c get_cpuinfo.h
get_nfsstat.o:	get_nfsstat.c get_nfsstat.h
print_nfsstat.o:	print_nfsstat.c print_nfsstat.h get_nfsstat.h print.h
get_afsstat.o:	get_afsstat.c get_afsstat.h
print_afsstat.o:	print_afsstat.c print_afsstat.h get_afsstat.h print.h
print_top.o:	print_top.c print_top.h print.h
getloadavg.o:	getloadavg.c getloadavg.h
