# $Header: Makefile,v 2.1 89/12/30 20:59:01 eric Exp $

###
# operating-system dependent stuff
###
.UNIVERSE =	att
#.UNIVERSE =	ucb
OS_TYPE =	unix
# OS_DEFS =	-D${OS_TYPE} -D${.UNIVERSE}_universe

###
# targets
###
NAME =	parseargs
PROGRAM =	${NAME}
LIBRARY =	${NAME}
STYLE =	unix

###
# target directories
###
LOCAL =  /usr/local
LIBDIR = ${LOCAL}/lib
INCDIR = ${LOCAL}/include

###
# compilation options
###
INCLUDES =	-I.
# MODEL =	-Ms
# MODELNAME =	S
OPT =	-O
# OPT =	-g
TEST_DEFS =	
USR_DEFS =	-DUSE_PAGER
DEFINES =	${OS_DEFS} ${USR_DEFS} ${TEST_DEFS} -D${STYLE}_style
OPTIONS =
CFLAGS =	${OPT} ${MODEL} ${INCLUDES} ${DEFINES} ${OPTIONS}
LINTFLAGS =	${INCLUDES} ${DEFINES} ${OPTIONS}

###
# libraries
###
LIBARGS =	${MODELNAME}lib${STYLE}_args.a
LIBFILE =	${MODELNAME}libparse.a
LOCLIBS =	${LIBARGS}
# SYSLIBS =	-lm -lcurses -ltermcap
LIBS =	${LOCLIBS} ${SYSLIBS}

###
# commands
###
AR =	ar rvu
DEL =	rm -f
COPY =	cp
CHDIR =	cd
LINT =	lint
MKTAGS =	ctags
PRINT =	pr
RANLIB =	ranlib
SHAR =	shar
SQZ =	compress -v
STRIP =	strip

###
# files used
###
DOCS=	doc/Makefile \
		doc/argtype.man3 \
		doc/parseargs.man1 \
		doc/parseargs.man3 \
		doc/parsecntl.man3 \
		doc/arg_macros.inc \
		doc/argdesc.inc \
		doc/argflags.inc \
		doc/argvalopt.inc \
		doc/bugs.inc \
		doc/caveats.inc \
		doc/cmd_macros.inc \
		doc/defargs.inc \
		doc/effects.inc \
		doc/env_args.inc \
		doc/env_parse.inc \
		doc/env_usage.inc \
		doc/fparseargs3.inc \
		doc/lib_bugs.inc \
		doc/lparseargs3.inc \
		doc/multivals.inc \
		doc/parseargs1.inc \
		doc/parseargs3.inc \
		doc/parsecntl3.inc \
		doc/parsecntls.inc \
		doc/parseflags.inc \
		doc/parsemodes.inc \
		doc/returns.inc \
		doc/sh_arrays.inc \
		doc/shells.inc \
		doc/sparseargs3.inc \
		doc/usage3.inc \
		doc/vparseargs3.inc
SCRIPTS =	test.sh  test.csh  test.ksh  test.rc  test.awk  test.pl
TEMPLATES =	${NAME}.pl  ${NAME}.awk
XXFILES =	Intro  README  MANIFEST  Makefile  Makefile.cpp

HDRS =	${NAME}.h \
		patchlevel.h \
		pgopen.h \
		strfuncs.h \
		useful.h

SRCS =	${NAME}.c \
		argtype.c \
		arglist.c \
		amiga_args.c \
		ibm_args.c \
		pgopen.c \
		stest.c \
		strfuncs.c \
		syserr.c \
		unix_args.c \
		unix_man.c \
		vms_args.c \
		vprintf.c \
		winsize.c \
		xparse.c

OBJS =  ${STYLE}_args.o \
		 arglist.o \
		 argtype.o \
		 pgopen.o \
		 strfuncs.o \
		 syserr.o \
		 vprintf.o \
		 winsize.o \
		 xparse.o

PROG_OBJS =  ${NAME}.o   unix_man.o
TEST_OBJS =  stest.o

FILES =	${XXFILES} ${DOCS} ${HDRS} ${SRCS} ${TEMPLATES} ${SCRIPTS}

###
# target dependencies
###
all: ${LIBARGS} test ${PROGRAM}

test: ${STYLE}_test

${STYLE}_test :  stest.o ${LOCLIBS}
	${CC} ${CFLAGS} -o ${STYLE}_test  stest.o ${LOCLIBS} ${SYSLIBS}

${LIBARGS}: ${OBJS}
	${AR} $@ ${OBJS}
	${RANLIB} $@

${PROGRAM}: ${PROG_OBJS} ${LOCLIBS}
	${CC} ${CFLAGS} -o $@ ${PROG_OBJS} ${LOCLIBS} ${SYSLIBS}

###
# object dependencies
###
${NAME}.o:	${NAME}.c ${NAME}.h patchlevel.h strfuncs.h useful.h
amiga_args.o:	amiga_args.c ${NAME}.h pgopen.h strfuncs.h useful.h \
                exit_codes.h
arglist.o:	arglist.c ${NAME}.h strfuncs.h useful.h
argtype.o:	argtype.c ${NAME}.h strfuncs.h useful.h
ibm_args.o:	ibm_args.c ${NAME}.h pgopen.h strfuncs.h useful.h exit_codes.h
pgopen.o:	pgopen.c useful.h exit_codes.h
stest.o:	stest.c ${NAME}.h useful.h
strfuncs.o:	strfuncs.c useful.h
syserr.o:	syserr.c useful.h
unix_args.o:	unix_args.c ${NAME}.h pgopen.h strfuncs.h useful.h exit_codes.h
unix_man.o:	unix_man.c ${NAME}.h strfuncs.h useful.h
vms_args.o:	vms_args.c ${NAME}.h pgopen.h strfuncs.h useful.h exit_codes.h
vprintf.o:	vprintf.c useful.h
winsize.o:	winsize.c useful.h
xparse.o:	xparse.c ${NAME}.h strfuncs.h useful.h exit_codes.h

###
# installation dependencies
###
install:  ${INCDIR}/${NAME}.h \
		 ${LIBDIR}/${LIBFILE} \
		 ${LOCAL}/${PROGRAM}

 ${INCDIR}/${NAME}.h: ${NAME}.h useful.h
	( ${CHDIR} ${INCDIR}; ${DEL} ${NAME}.h useful.h )
	${COPY} ${NAME}.h useful.h ${INCDIR}

 ${LIBDIR}/${LIBFILE}: ${LIBARGS}
	${DEL}   ${LIBDIR}/${LIBFILE}
	${COPY} ${LIBARGS}   ${LIBDIR}/${LIBFILE}
	${RANLIB}   ${LIBDIR}/${LIBFILE}

 ${LOCAL}/${PROGRAM}: ${PROGRAM} ${TEMPLATES}
	( ${CHDIR} ${LOCAL} ; ${DEL} ${PROGRAM} ${TEMPLATES} )
	${COPY} ${PROGRAM} ${TEMPLATES} ${LOCAL}
	${STRIP} ${LOCAL}/${PROGRAM}

###
# maintenance dependencies
###
lint: ${SRCS}
	${LINT} ${LINTFLAGS} ${SRCS}

shar: ${NAME}.shar

${NAME}.shar: ${FILES}
	${DEL} ${NAME}.shar
	${SHAR} ${FILES}  >${NAME}.shar

clean:
	${DEL} ${OBJS} ${PROG_OBJS} ${TEST_OBJS}
	${DEL} tags core .exrc

clobber: clean
	${DEL} ${LIBARGS}  ${PROGRAM}  ${STYLE}_test

tags: ${SRCS} ${HDRS}
	${MKTAGS} ${SRCS} ${HDRS}

collapse: clobber shar
	${SQZ} ${NAME}.shar
	${DEL} ${FILES}

print: ${SRCS} ${HDRS}
	@${PRINT} ${SRCS} ${HDRS}

