# $Header: makefile,v 76.1 95/07/24 20:28:51 ssa Exp $
# @(#) $Revision: 76.1 $
#
# makefile -- makefile for /usr/bin/ex and releated commands
#
FLAGS  = -DTABS=8 -DSINGLE -DUSG -DSTDIO -DVMUNIX -DVFORK
DEBUG  = -DTRACE -g $(FLAGS)
LIBS   = -lHcurses -lIO
OBJS =	ex.o ex_addr.o ex_cmds.o ex_cmds2.o ex_cmdsub.o \
	ex_data.o ex_extern.o ex_get.o ex_io.o ex_put.o ex_re.o \
	ex_rldata.o ex_set.o ex_subr.o ex_temp.o ex_tty.o ex_unix.o \
	ex_v.o ex_vadj.o ex_vget.o ex_vmain.o ex_voper.o \
	ex_vops.o ex_vops2.o ex_vops3.o ex_vput.o ex_vwind.o \
	printf.o bcopy.o ex_crypt.o
REL  =  hpux_rel.o
SRCS =	ex.c ex_addr.c ex_cmds.c ex_cmds2.c ex_cmdsub.c \
	ex_data.c ex_extern.c ex_get.c ex_io.c ex_put.c ex_re.c \
	ex_rldata.c ex_set.c ex_subr.c ex_temp.c ex_tty.c ex_unix.c \
	ex_v.c ex_vadj.c ex_vget.c ex_vmain.c ex_voper.c \
	ex_vops.c ex_vops2.c ex_vops3.c ex_vput.c ex_vwind.c \
	printf.c bcopy.c ex_crypt.c
REL_C=  hpux_rel.c
HDRS =	ex.h ex_argv.h ex_re.h ex_temp.h ex_tty.h ex_tune.h ex_vars.h \
	ex_vis.h
MSGSRC=	ex.c ex_addr.c ex_cmds.c ex_cmds2.c ex_cmdsub.c ex_get.c \
	ex_io.c ex_re.c ex_set.c ex_subr.c ex_temp.c ex_tty.c \
	ex_unix.c ex_v.c ex_vadj.c ex_vget.c ex_vmain.c ex_vops2.c \
	ex_vput.c printf.c ex_vops.c 
FINDMSG	= /usr/bin/findmsg
GENCAT	= /usr/bin/gencat
TOUCH   = /usr/bin/touch

.c.o:
	$(CC) -c $(CFLAGS) $(FLAGS) $*.c

default: all

all:	ex exrecover expreserve ex.cat expreserve.cat exrecover.cat

metrics:	ex.M exrecover.M expreserve.M

ex: $(OBJS) $(REL)
	$(CC) $(CFLAGS) $(FLAGS) $(LDFLAGS) $(REL) $(OBJS) $(LIBS) -o ex

ex.M: $(SRCS) $(REL_C)
	$(METRICS) $(CFLAGS) $(FLAGS) $(REL_C) $(SRCS) $(LIBS) -o ex.M

exrecover: exrecover.o ex_extern.o $(REL)
	$(CC) $(CFLAGS) $(FLAGS) $(LDFLAGS) -o $@ \
	    $(REL) exrecover.o ex_extern.o

exrecover.M: exrecover.c ex_extern.c $(REL_C)
	$(METRICS) $(CFLAGS) $(FLAGS) -o $@ $(REL_C) exrecover.c ex_extern.c

expreserve: expreserve.o ex_extern.o $(REL)
	libs="";						\
	if ifdef SecureWare || ifdef B1 || ifdef TRUSTED; then	\
	    libs="$$libs -lscmd -lsec -lHcurses";		\
	fi;							\
	$(CC) $(CFLAGS) $(FLAGS) $(LDFLAGS) -o $@ \
	    $(REL) expreserve.o ex_extern.o $$libs

expreserve.M: expreserve.c ex_extern.c $(REL_C)
	$(METRICS) $(CFLAGS) $(FLAGS) -o $@ $(REL_C) expreserve.c ex_extern.c

ex.cat:	ex.msg
	$(GENCAT) $@ ex.msg

ex.msg:	$(MSGSRC)
	rm -f $@
	for i in $(MSGSRC); do \
		$(FINDMSG) $$i >>$@;\
	done

exrecover.cat: exrecover.msg
	$(GENCAT) $@ exrecover.msg

exrecover.msg: exrecover.c
	$(FINDMSG) exrecover.c >$@

expreserve.cat: expreserve.msg
	$(GENCAT) $@ expreserve.msg

expreserve.msg: expreserve.c
	$(FINDMSG) expreserve.c >$@

#
# For some engineers, CRYPT-specific source is unavailable.  Touch the
# file so that the (non-CRYPT) make can work.
#
ex_crypt.c :
	$(TOUCH) ex_crypt.c

ex_crypt.o : ex_crypt.c
	$(CC) -c $(CFLAGS) $(FLAGS) ex_crypt.c

clean:
	rm -f *.o *.msg

clobber: clean
	rm -f ex exrecover expreserve *.cat ex.M exrecover.M expreserve.M

lint:
	$(LINT) $(CFLAGS) $(FLAGS) ex.c ex_?*.c
	$(LINT) $(CFLAGS) $(FLAGS) -u exrecover.c
	$(LINT) $(CFLAGS) $(FLAGS) expreserve.c

tags:	/tmp
	ctags -w ex.[hc] ex_*.[hc]
