#
# Makefile for loadavgd and monitor -programs
#
# Current maintainer: Marcel J.E. Mol marcel@mesa.nl
# Original Author:    Jussi Maki, jmaki@csc.fi
#
# How to install:
#  1. Edit Makefile to
#         - specify where binaries etc should be installed: PREFIX 
#         - select highlight mode: HIGHLIGHT
#         - setup compress command: COMPPROG
#         - switch on AFS monitoring if yo have it: AFS*
#  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

# Define the fullpath compression program to use
COMPPROG = -DCOMPPROG=\"/usr/local/bin/gzip\"

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

#
# 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

MON_VERSION = 2.1.9
MON_DATE    = 26feb2001

#
# Needed for AIX 4.2 and higher
# May be needed for AIX AIX 4.1.5
# Not needed for AIX 3 and lower
#
# Leaving it as is probably does not hurt...
#


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

CC=cc
LD=cc

# options for debugging loadavgd
#CFLAGS= -DDEBUG -g 
CFLAGS = $(DEFS) $(AFSCFLAG) \
        -DMON_VERSION=\"$(MON_VERSION)\" -DMON_DATE=\"$(MON_DATE)\"
#
# it seems -brtl is needed for dlopen and friends to work for kernel extensions 
# on AIX 4.2 and higher
# 
LDFLAGS= -lodm  -brtl -bI:symbol.import
# FOR AIX <= 4.1
#LDFLAGS= -lodm  -bI:symbol.import
#
# GCC LDFLAGS (I think...)
#
# it seems -brtl is needed for dlopen and friends to work for kernel extensions 
# on AIX 4.2 and higher
# 
#LDFLAGS= -lodm -s -Wl,-brtl -Wl,-bI:symbol.import 
# FOR AIX <= 4.1
#LDFLAGS= -lodm -s -Wl,-bI:symbol.import 


MONVERSION  = monitor-$(MON_VERSION)
MONITOROBJS = monitor.o monprint.o \
              get_sysvminfo.o \
              get_cpuinfo.o get_odm.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 get_odm
#
# Only needed for AIX 3.1
#
PROGS3  = loadavgd


begin:
	-rm -f config.h 2> /dev/null
	make all

all:	$(PROGS)

config.h: get_odm
	./get_config.sh > config.h

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

get_odm:	get_odm.c
	$(CC) $(CFLAGS) -o get_odm get_odm.c -s -lodm -DMAIN

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

monitor:	config.h $(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)/LICENSE \
	$(MONVERSION)/Changelog \
	$(MONVERSION)/*README* \
	$(MONVERSION)/Makefile \
	$(MONVERSION)/FAQ \
	$(MONVERSION)/TODO \
	$(MONVERSION)/*.h \
	$(MONVERSION)/*.c \
	$(MONVERSION)/*.1 \
	$(MONVERSION)/*.3 \
	$(MONVERSION)/top \
	$(MONVERSION)/monitor.logrun \
	$(MONVERSION)/symbol.import \
	$(MONVERSION)/get_config.sh \
	$(MONVERSION)/vmker.sh \
	$(MONVERSION)/scripts)

clean:
	-/bin/rm -f *.o $(PROGS) config.h 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 config.h monitor.h print.h 
monprint.o:	monprint.c config.h 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_odm.o:	get_odm.c get_odm.h config.h
get_top.o:	get_top.c config.h get_top.h getproc.h get_topP.h
get_dkstat.o:	get_dkstat.c config.h get_dkstat.h
print_ifnet.o:	print_dkstat.c config.h print_dkstat.h get_dkstat.h print.h
get_ifnet.o:	get_ifnet.c config.h get_ifnet.h
print_ifnet.o:	print_ifnet.c config.h print_ifnet.h get_ifnet.h print.h
get_sysvminfo.o:	get_sysvminfo.c config.h get_sysvminfo.h
get_cpuinfo.o:	get_cpuinfo.c config.h get_cpuinfo.h
get_nfsstat.o:	get_nfsstat.c config.h get_nfsstat.h
print_nfsstat.o:	print_nfsstat.c config.h print_nfsstat.h \
                get_nfsstat.h print.h
get_afsstat.o:	get_afsstat.c config.h get_afsstat.h
print_afsstat.o:	print_afsstat.c config.h print_afsstat.h get_afsstat.h print.h
print_top.o:	print_top.c config.h print_top.h print.h
getloadavg.o:	getloadavg.c config.h getloadavg.h

