# include	"../conf/conf.h"

# ifdef MSDOS
DBS=	..\..
LIB=	$(DBS)\lib
BIN=	$(DBS)\bin
H=	..\h
CTRACE=	/Zi /Od
LTRACE=	/Co
CFLAGS=	/c /Alfu /Gt20 /Od /FmNUL /I$(H) $(CTRACE) /DSINGLE
LDFLAGS=/NOI /NOE /SE:512 /ST:30720 $(LTRACE)

PQR=	lpqr.lib
RG=	lrg.lib
RC=	lrc.lib
DBSLIB= $(LIB)\llibi2.lib

pqr:			..\bummi
	echo	-----	pqr

.C.OBJ:
	$(CC) $(CFLAGS) $*.c

r_code.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(PQR)-+$*;

r_dbs.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(PQR)-+$*;

grammar.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RC)-+$*;

rc.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RC)-+$*;

rc_case.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RC)-+$*;

rc_cmap.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RC)-+$*;

rc_cmt.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RC)-+$*;

rc_error.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RC)-+$*;

rc_gtchr.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RC)-+$*;

rc_lex.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RC)-+$*;

rc_name.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RC)-+$*;

rc_num.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RC)-+$*;

rc_op.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RC)-+$*;

rc_parse.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RC)-+$*;

rc_rep.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RC)-+$*;

rc_stab.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RC)-+$*;

rc_str.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RC)-+$*;

rc_main.obj:

$(BIN)\rc.exe:		rc_main.obj $(RC) $(PQR) $(DBSLIB)
	$(LD) $(LDFLAGS) rc_main,$(BIN)\rc,nul,$(RC)+$(PQR)+$(DBSLIB);

rg.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_batch.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_case.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_check.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_code.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_col.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_comp.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_dom.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_error.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_expr.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_file.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_fmt.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_getup.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_init.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_int.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_line.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_page.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_push.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_rep.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_rept.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_time.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_util.obj:
	$(CC) $(CFLAGS) $*.c
	lib $(RG)-+$*;

rg_main.obj:

$(BIN)\rg.exe:		rg_main.obj $(RG) $(PQR) $(DBSLIB)
	$(LD) $(LDFLAGS) rg_main,$(BIN)\rg,nul,$(RG)+$(PQR)+$(DBSLIB);

rp.obj:

$(BIN)\rp.exe:		rp.obj $(PQR) $(DBSLIB)
	$(LD) $(LDFLAGS) rp,$(BIN)\rp,nul,$(PQR)+$(DBSLIB);

rp_arg.obj:

$(BIN)\rp_arg.exe:	rp_arg.obj $(PQR) $(DBSLIB)
	$(LD) $(LDFLAGS) rp_arg,$(BIN)\rp_arg,nul,$(PQR)+$(DBSLIB);

rp_code.obj:

$(BIN)\rp_code.exe:	rp_code.obj $(PQR) $(DBSLIB)
	$(LD) $(LDFLAGS) rp_code,$(BIN)\rp_code,nul,$(PQR)+$(DBSLIB);

rp_desc.obj:

$(BIN)\rp_desc.exe:	rp_desc.obj $(PQR) $(DBSLIB)
	$(LD) $(LDFLAGS) rp_desc,$(BIN)\rp_desc,nul,$(PQR)+$(DBSLIB);
# else
# ifdef SINGLE
BIN=	.
SYSBIN=	.
LIB=	.
d_FLAG=	-DSINGLE
CONF=	../conf
GUTIL=	../gutil
# else
SHELL=	/bin/sh
DBS=	../..
BIN=	$(DBS)/bin
SYSBIN=	$(DBS)/sys/bin
LIB=	../lib
d_FLAG=
G_U_T_I_L=.gutil
P_Q_R=	.pqrlib
U_LIB=	$(LIB)/g.a
$(U_LIB):

# endif

CC=	cc
i_FLAG=
O_FLAG=	-O
# ifndef FP_PROCESSOR
f_FLAG=	-f
# else
f_FLAG=
# endif

LD=	$(CC)
CRT0=
# ifdef ID_SEPERATE
LDFLAGS= -i
# else
# ifdef TEXT_SEPERATE
LDFLAGS= -n
# endif
# endif
LIBC=	-lm

# ifdef A7150
# endif

# ifdef BC
# endif

# ifdef EC1834
# endif

# ifdef ESER_PSU
# ifdef TRACE
i_FLAG=	-d
# endif
LIBC=	-lm -lc
# endif

# ifdef ESER_VMX
# endif

# ifdef HP_UX
# endif

# ifdef P8000
LD=	ld
CRT0=	/lib/crt0.o
LIBC=	-lm -lc
# endif

# ifdef PDP
# endif

# ifdef PDP70
# endif

# ifdef VAX
# endif

# ifdef VENIX
LD=	ld
CRT0=	/lib/crt0.o
LIBC=	-lm -lc
# endif

# ifdef XENIX286
i_FLAG=	-i -M2s
LD=	ld
LDFLAGS= -i -Ms -F 2000
CRT0=	/lib/Sseg.o /lib/Scrt0.o
LIBC=	/lib/Slibm.a /lib/Slibcfp.a /lib/Slibc.a
# endif

# ifdef XENIX386
LD=	ld
CRT0=	/lib/386/Sseg.o /lib/386/Scrt0.o
LIBC=	/lib/386/Slibm.a /lib/386/Slibcfp.a /lib/386/Slibc.a
# endif

CFLAGS=	$(O_FLAG) $(f_FLAG) $(i_FLAG) $(d_FLAG)

AR=	-ar
# ifdef TEST
AR_R	=rv
AR_X	=xv
# else
AR_R	=r
AR_X	=x
# endif
LIBMODE=0644

CHMOD=	chmod
MODE=	0711
UMODE=	0700
# ifdef RANLIB
MKLIB=	ranlib
# else
MKLIB=	@echo ranlib
# endif
RM=	-rm -f
TOUCH=	touch

YACC=	../yyyacc/yyyacc
YFLAGS=	-s

RC_LIB=	$(LIB)/rc.a
RG_LIB=	$(LIB)/rg.a
PQRLIB=	$(LIB)/pqr.a
PQRLIBS=$(PQRLIB) $(LIBC)
ALLIBS=	$(PQRLIB) $(RC_LIB) $(RG_LIB)
RC=	$(BIN)/RC
RG=	$(BIN)/RG
RP=	$(SYSBIN)/RP
RP_ARG=	$(SYSBIN)/RP_ARG
RP_CODE=$(SYSBIN)/RP_CODE
RP_DESC=$(BIN)/RP_DESC
rc=	$(BIN)/rc
rg=	$(BIN)/rg
rp=	$(SYSBIN)/rp
rp_arg=	$(SYSBIN)/rp_arg
rp_code=$(SYSBIN)/rp_code
rp_desc=$(BIN)/rp_desc
ALL=	$(RC) $(RG) $(RP_DESC)
SYS=	$(RP) $(RP_ARG) $(RP_CODE)

U_SRC1=	$(GUTIL)/atof.c			$(GUTIL)/atoi.c			\
	$(GUTIL)/atol.c			$(GUTIL)/bequal.c		\
	$(GUTIL)/bmove.src		$(GUTIL)/length.c		\
	$(GUTIL)/scompare.c		$(GUTIL)/sequal.c		\
	$(CONF)/conf.h

U_SRC2=	atof.c		atoi.c		atol.c		bequal.c	\
	bmove.c		length.c	scompare.c	sequal.c	\
	conf.h

U_OBJ=	atof.o		atoi.o		atol.o		bequal.o	\
	bmove.o		length.o	scompare.o	sequal.o

R_OBJ=	r_code.o	r_dbs.o

C_OBJ=	rc_main.o	rc_parse.o	rc_lex.o	rc_gtchr.o	\
	rc_name.o	rc_num.o	rc_op.o		rc_str.o	\
	rc_cmt.o	rc_stab.o	rc_cmap.o	rc_error.o	\
	rc_case.o	rc_rep.o	rc.o

G_OBJ=	rg_main.o	rg_init.o	rg_file.o	rg_error.o	\
	rg_getup.o	rg_int.o	rg_expr.o	rg_check.o	\
	rg_col.o	rg_line.o	rg_page.o	rg_batch.o	\
	rg_time.o	rg_push.o	rg_dom.o	rg_fmt.o	\
	rg_case.o	rg_rept.o	rg_comp.o	rg_rep.o	\
	rg.o		rg_util.o	rg_code.o

P_OBJ=	rp.o		rp_arg.o	rp_code.o	rp_desc.o

INSTALL:		install

install:		$(ALLIBS) $(ALL)

SYSINSTALL:		sysinstall

sysinstall:		install $(SYS)

$(RC_LIB):		$(C_OBJ)
	$(AR) $(AR_R) $@ $?
	@-$(CHMOD) $(LIBMODE) $@
	$(MKLIB) $@

$(RG_LIB):		$(G_OBJ)
	$(AR) $(AR_R) $@ $?
	@-$(CHMOD) $(LIBMODE) $@
	$(MKLIB) $@

CLEAN:			clean

# ifdef SINGLE
$(PQRLIB):		$(R_OBJ) $(U_OBJ)
	$(AR) $(AR_R) $@ $?
	@-$(CHMOD) $(LIBMODE) $@
	$(MKLIB) $@

conf:
	CP $(U_SRC1) .
	mv bmove.src bmove.c
	@-$(CHMOD) $(LIBMODE) $(U_SRC2)

clean:
	$(RM)	$(U_OBJ) $(R_OBJ) $(C_OBJ) grammar.o $(G_OBJ) $(P_OBJ)	\
		$(ALLIBS) $(ALL) $(SYS)
# else
UNLOAD:			unload

unload:
	@-$(AR) $(AR_X) $(PQRLIB) $(R_OBJ)
	@$(TOUCH) $(G_U_T_I_L) $(P_Q_R)
	@-$(TOUCH) $(PQRLIB)
	@-$(AR) $(AR_X) $(RC_LIB)
	@-$(TOUCH) $(RC_LIB)
	@-$(AR) $(AR_X) $(RG_LIB)
	@-$(TOUCH) $(RG_LIB)
	@$(RM) __.SYMDEF

$(PQRLIB):		$(P_Q_R) $(G_U_T_I_L)
	@-$(CHMOD) $(LIBMODE) $@
	$(MKLIB) $@

$(G_U_T_I_L):		$(U_LIB)
	$(TOUCH) $@
	@-$(CHMOD) $(LIBMODE) $@
	$(AR) $(AR_X) $(U_LIB) $(U_OBJ)
	$(AR) $(AR_R) $(PQRLIB) $(U_OBJ)
	@-$(RM) $(U_OBJ)

$(P_Q_R):		$(R_OBJ)
	$(TOUCH) $@
	@-$(CHMOD) $(LIBMODE) $@
	$(AR) $(AR_R) $(PQRLIB) $?

conf:
	$(RM) $(U_SRC2) $(U_OBJ)

ALLCLEAN:		allclean

allclean:		clean
	$(RM) grammar.c $(ALLIBS) $(ALL) $(SYS)

clean:			conf
	$(RM)	$(R_OBJ) $(C_OBJ) grammar.o $(G_OBJ) $(P_OBJ)		\
		$(G_U_T_I_L) $(P_Q_R)

r_dbs.o:		../h/bs.h
# endif

$(rc):			grammar.o $(RC_LIB) $(PQRLIB)
	$(LD) $(LDFLAGS) STRIPFLAG $(CRT0) grammar.o $(RC_LIB) $(PQRLIBS) -o $@
	@-$(CHMOD) $(MODE) $@

$(RC):			$(rc)
	$(RM) $@
	LN $(rc) $@

$(rg):			$(RG_LIB) $(PQRLIB)
	$(LD) $(LDFLAGS) STRIPFLAG $(CRT0) $(RG_LIB) $(PQRLIBS) -o $@
	@-$(CHMOD) $(MODE) $@

$(RG):			$(rg)
	$(RM) $@
	LN $(rg) $@

$(rp):			rp.o $(PQRLIB)
	$(LD) $(LDFLAGS) STRIPFLAG $(CRT0) rp.o $(PQRLIBS) -o $@
	@-$(CHMOD) $(UMODE) $@

$(RP):			$(rp)
	$(RM) $@
	LN $(rp) $@

$(rp_arg):		rp_arg.o $(PQRLIB)
	$(LD) $(LDFLAGS) STRIPFLAG $(CRT0) rp_arg.o $(PQRLIBS) -o $@
	@-$(CHMOD) $(UMODE) $@

$(RP_ARG):		$(rp_arg)
	$(RM) $@
	LN $(rp_arg) $@

$(rp_code):		rp_code.o $(PQRLIB)
	$(LD) $(LDFLAGS) STRIPFLAG $(CRT0) rp_code.o $(PQRLIBS) -o $@
	@-$(CHMOD) $(UMODE) $@

$(RP_CODE):		$(rp_code)
	$(RM) $@
	LN $(rp_code) $@

$(rp_desc):		rp_desc.o $(PQRLIB)
	$(LD) $(LDFLAGS) STRIPFLAG $(CRT0) rp_desc.o $(PQRLIBS) -o $@
	@-$(CHMOD) $(MODE) $@

$(RP_DESC):		$(rp_desc)
	$(RM) $@
	LN $(rp_desc) $@

y.tab.c:		grammar.y
	$(YACC) $(YFLAGS) grammar.y

# ifdef CODE
grammar.c:		y.tab.c
	CP y.tab.c $@
	@-$(CHMOD) $(LIBMODE) $@
	@ed - $@ < grammar.ed
# else
grammar.c:		y.tab.c
	CP y.tab.c $@
	@-$(CHMOD) $(LIBMODE) $@
# endif

# ifdef YACC_OPTIM
grammar.o:		grammar.c rc_tab.y
	$(CC) -c $(f_FLAG) $(i_FLAG) grammar.c

rg_expr.o:		rg_expr.c
	$(CC) -c $(f_FLAG) $(i_FLAG) $<

rp.o:			rp.c
	$(CC) -c $(f_FLAG) $(i_FLAG) $<

rp_arg.o:		rp_arg.c
	$(CC) -c $(f_FLAG) $(i_FLAG) $<

rp_code.o:		rp_code.c
	$(CC) -c $(f_FLAG) $(i_FLAG) $<
# else
grammar.o:		grammar.c rc_tab.y
# endif

rc.c:			r_useful.h

rc_cmt.c:		r_useful.h

rc_gtchr.c:		r_useful.h

rc_lex.c:		r_useful.h

rc_main.c:		r_useful.h

rc_name.c:		r_useful.h

rc_num.c:		r_useful.h

rc_op.c:		r_useful.h

rc_parse.c:		r_useful.h

rc_rep.c:		r_useful.h

rc_stab.c:		r_useful.h

rc_str.c:		r_useful.h

rg.c:			r_useful.h

rg_batch.c:		r_useful.h

rg_code.c:		r_useful.h

rg_dom.c:		r_useful.h

rg_expr.c:		r_useful.h

rg_file.c:		r_useful.h

rg_fmt.c:		r_useful.h

rg_getup.c:		r_useful.h

rg_int.c:		r_useful.h

rg_line.c:		r_useful.h

rg_main.c:		r_useful.h

rg_page.c:		r_useful.h

rg_push.c:		r_useful.h

rg_rep.c:		r_useful.h

rg_util.c:		r_useful.h

# ifdef WENZLAFF
HOME=	/z/dbs/src/pqr
SRC=	r_code.c	r_code.h	r_dbs.daba	r_dbs.h		\
	r_dbs.ing_db	r_useful.h	Makefile	grammar.ed	\
	grammar.y	y.tab.c		rc.c		rc.h		\
	rc_case.c	rc_cmap.c	rc_cmt.c	rc_error.c	\
	rc_gtchr.c	rc_lex.c	rc_main.c	rc_name.c	\
	rc_num.c	rc_op.c		rc_parse.c	rc_rep.c	\
	rc_str.c	rc_stab.c	rc_tab.y			\
	rg.c		rg.h		rg_batch.c	rg_case.c	\
	rg_check.c	rg_code.c	rg_col.c	rg_comp.c	\
	rg_dom.c	rg_error.c	rg_expr.c	rg_file.c	\
	rg_file.h	rg_fmt.c	rg_getup.c	rg_init.c	\
	rg_int.c	rg_int.h	rg_line.c	rg_main.c	\
	rg_page.c	rg_push.c	rg_rept.c	rg_rep.c	\
	rg_time.c	rg_util.c					\
	rp.c		rp_arg.c	rp_code.c	rp_desc.c

.save:			$(SRC)
	mount DISK /wrk
	CP $? $@ /wrk/pqr
	> $@
	umount DISK

$(HOME)/.save:		$(SRC)
	CP $? $(HOME)
	> $@

.PRECIOUS:		.save
.PRECIOUS:		$(HOME)/.save
# endif
# endif
