#sccs	"@(#)mld/m68k:Makefile	1.6"

include $(MAKEINC)/Makepre.h

ID = id.o
OUTFIL = output.tmp
CDIR = ../common

#
# AR16WR - 16 bit machines like 11/70(s)
# AR32WR - 32 bit machines like the vax(en)
# AR32W  - 32 bit machines like the 3b, maxi(s/370) and mc68k
#
ARCH = AR32W
# Specify the archive format of the host machine
#	PORTAR : 6.0 portable archive format
#	PORT5AR : 5.0 archive format
#	OLDAR : pre-5.0 archive format
#
ARFORMAT = -DPORT5AR -DPORTAR
FLEX = #-UFLEXNAMES
LIBLD = $(USRLIB)/libld.a
LDFLAGS = -s
B10 =

YACC = yacc
YFLAGS = -d

LEX = lex
LEXFLAGS =

LINT = lint
LINTFLAGS  = -abhxp
LINTOUT = lint.out

PRINT = pr
PRFLAGS = -n
LP = lp

RM = rm
CP = cp

ENV =
FRC =

DEFLIST = $(ARFORMAT) $(FLEX) -D$(ARCH) -DCT=1 -DPAGING=1

LIBES = -ll -ly $(LIBLD)

STRIP	= strip
SPFLAGS =

OFILES = rodata.o expr0.o globs.o ld00.o lex.yy.o lists.o\
	 util.o y.tab.o special.o\
	 alloc.o dump.o expr1.o ld01.o ld1.o ld2.o\
	 version.o maps.o output.o slotvec.o syms.o instr.o


CFILES = $(CDIR)/ld.yac $(CDIR)/ld.lex $(CDIR)/expr0.c $(CDIR)/expr1.c\
	$(CDIR)/ld00.c $(CDIR)/ld01.c $(CDIR)/ld1.c $(CDIR)/ld2.c\
	$(CDIR)/alloc.c $(CDIR)/output.c $(CDIR)/util.c $(CDIR)/lists.c\
	$(CDIR)/dump.c $(CDIR)/syms.c $(CDIR)/globs.c $(CDIR)/instr.c\
	$(CDIR)/slotvec.c $(CDIR)/version.c $(CDIR)/maps.c \
	special.c


DEPENDLIST = $(CDIR)/expr0.c $(CDIR)/expr1.c $(CDIR)/ld00.c $(CDIR)/ld01.c \
	$(CDIR)/ld1.c $(CDIR)/ld2.c $(CDIR)/alloc.c $(CDIR)/output.c \
	$(CDIR)/util.c $(CDIR)/lists.c $(CDIR)/dump.c $(CDIR)/syms.c \
	$(CDIR)/globs.c $(CDIR)/instr.c $(CDIR)/slotvec.c $(CDIR)/version.c \
	$(CDIR)/maps.c special.c y.tab.c rodata.c lex.yy.c

all:	Makeincludes ld

Makeincludes: $(DEPENDLIST) y.tab.h
	$(INCCMD) $(DEPENDLIST) | $(SORT) | $(FILTER) > Makeincludes
	$(MAKE)

includes: $(DEPENDLIST) y.tab.h
	$(INCCMD) $(DEPENDLIST) | $(SORT) | $(FILTER) > Makeincludes

ld:	$(OFILES) $(SHAREDLIB) $(LIBC) $(LIBY) $(LIBL) $(LIBLD) $(ID)
	$(CC) $(LDFLAGS) $(CFLAGS) $(OFILES) $(LIBES) $(ID) -o ld.mini
	$(LD) $(LDFLAGS) $(SHAREDLIB) -o ld $(OFILES) $(LIBES) $(ID)

install:
	$(INSTALL) -i$(EXITFLAG) ld $(INSDIR) $(PROTOFILE)

#	linkage editor components


y.tab.c rodata.c y.tab.h rodata.o:	$(CDIR)/ld.yac
	@echo "Expect to see message 'conflicts: 6 shift/reduce'"
	$(YACC) $(YFLAGS) $(CDIR)/ld.yac
	-chmod +x ./:yyfix
	./:yyfix  > rodata.c
	$(CC) -DYYDEBUG=0 $(CFLAGS) -S rodata.c
	if vax; then \
		sh ./:rofix rodata.s; \
	fi
	$(CC) -c rodata.s

y.tab.o: y.tab.c
	$(CC) $(B10) $(CFLAGS) -c $(DEFLIST) $(ENV) -DYYDEBUG=0 y.tab.c

lex.yy.c:	$(CDIR)/ld.lex
	$(LEX) $(CDIR)/ld.lex

lex.yy.o: lex.yy.c
	$(CC) $(CFLAGS) -c $(DEFLIST) $(ENV) lex.yy.c

expr0.o: $(CDIR)/expr0.c
	$(CC) $(CFLAGS) -c $(DEFLIST) $(ENV) $(CDIR)/expr0.c

expr1.o: $(CDIR)/expr1.c
	$(CC) $(CFLAGS) -c $(DEFLIST) $(ENV) $(CDIR)/expr1.c

ld00.o:	$(CDIR)/ld00.c
	$(CC) $(CFLAGS) -c $(DEFLIST) $(ENV) $(CDIR)/ld00.c

ld01.o:	$(CDIR)/ld01.c
	$(CC) $(CFLAGS) -c $(DEFLIST) $(ENV) $(CDIR)/ld01.c

ld1.o:	$(CDIR)/ld1.c
	$(CC) $(CFLAGS) -c $(DEFLIST) $(ENV) $(CDIR)/ld1.c

ld2.o:	$(CDIR)/ld2.c
	$(CC) $(CFLAGS) -c $(DEFLIST) $(ENV) $(CDIR)/ld2.c

alloc.o: $(CDIR)/alloc.c
	$(CC) $(CFLAGS) -c $(DEFLIST) $(ENV) $(CDIR)/alloc.c

output.o: $(CDIR)/output.c
	$(CC) $(B10) $(CFLAGS) -c $(DEFLIST) $(ENV) $(CDIR)/output.c

maps.o:	$(CDIR)/maps.c
	$(CC) $(CFLAGS) -c $(DEFLIST) $(ENV) $(CDIR)/maps.c

util.o:	$(CDIR)/util.c
	$(CC) $(CFLAGS) -c $(DEFLIST) $(ENV) $(CDIR)/util.c

lists.o: $(CDIR)/lists.c
	$(CC) $(CFLAGS) -c $(DEFLIST) $(ENV) $(CDIR)/lists.c

dump.o:	$(CDIR)/dump.c
	$(CC) $(CFLAGS) -c $(DEFLIST) $(ENV) $(CDIR)/dump.c

syms.o:	$(CDIR)/syms.c
	$(CC) $(CFLAGS) -c $(DEFLIST) $(ENV) $(CDIR)/syms.c

globs.o: $(CDIR)/globs.c
	$(CC) $(CFLAGS) -c $(DEFLIST) $(ENV) $(CDIR)/globs.c

instr.o: $(CDIR)/instr.c
	$(CC) $(CFLAGS) -c $(DEFLIST) $(ENV) $(CDIR)/instr.c

slotvec.o: $(CDIR)/slotvec.c
	$(CC) $(CFLAGS) -c $(DEFLIST) $(ENV) $(CDIR)/slotvec.c

version.o: $(CDIR)/version.c
	$(CC) $(CFLAGS) -c $(DEFLIST) $(ENV) $(CDIR)/version.c

special.o: special.c
	$(CC) $(CFLAGS) -c $(DEFLIST) $(ENV) special.c

listing:
	$(PR) $(PRFLAGS) makefile $(CFILES) | $(LP)
	@echo "files sent to printer!"

clean:
	$(RM) -f $(OFILES) $(ID)

clobber: clean
	$(RM) -f y.tab.[ch] lex.yy.c ld ld.mini id.c rodata.[cs]

flow:
	cflow $(DEFLIST) $(ENV) $(CFILES) > $(OUTFIL)

flowr:
	cflow -r $(DEFLIST) $(ENV) $(CFILES) > $(OUTFIL)

lint:
	$(CFILES) 
	$(LINT) $(LINTFLAGS) $(DEFLIST) $(ENV) $(CFILES) > $(LINTOUT)

id.c: ../mld.sl
	mkslid > id.c

populate:
	getunit

include Makeincludes
include $(MAKEINC)/Makepost.h
