#"@(#) ld.mk : version 1.2 of 8/26/86 "
# @(#)Copyright (C) 1986 by National Semiconductor Corp.
#
#	GNX System V linkage editor makefile
#

ROOT =#
VINCL = $(ROOT)/usr/include
INCL = #

BINDIR =$(ROOT)/bin#

SGS =
ARCH = AR32WR
# 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 = PORTAR  
NS = ns32000
FLEX = -DFLEXNAMES

CCV = cc
CVEFLAGS =#
CVFLAGS = $(CFLAGS) $(DFLT) $(CVEFLAGS)
CFLAGS = -O -s#
DFLT = -DSYSTEMV
FILENO = -DSHOWFILENO=0

CC = #
LEX = lex
LEXFLAGS =

BASE=../..

#LIBLD = /usr/lib/libl.a /usr/lib/liby.a /lib/libld.a /usr/lib/liblang.a
LIBLD = $(BASE)/libld/ns32000/libld.a

#LIBES = -ll -ly -lld -llang
LIBES = -ll -ly


YACC = yacc
YFLAGS = -d

ENV =
MKFILE =
FRC =

DEFLIST = $(FLEX) -D$(ARCH) -D$(NS)
VINCLIST = -I$(VINCL) 

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

cfiles	= ld.yac ld.lex expr0.c expr1.c\
	 ld00.c ld01.c ld1.c ld2.c\
	 alloc.c output.c util.c lists.c\
	 syms.c globs.c instr.c cmdfile.c\
	 slotvec.c version.c maps.c 

vcfiles	= special.c

chfiles = attributes.h list.h structs.h ldtv.h\
	 ldmacros.h extrns.h instr.h slotvec.h

cohfiles = sgsmacros.h patch.h 

ihfiles	= $(VINCL)/filehdr.h $(VINCL)/scnhdr.h $(VINCL)/syms.h \
	$(VINCL)/storclass.h $(VINCL)/ldfcn.h $(VINCL)/reloc.h \
	$(VINCL)/linenum.h $(VINCL)/aouthdr.h

shfiles	= sgs.h paths.h tv.h

vhfiles	= system.h params.h bool.h

SRCS	= $(cfiles) $(vcfiles)

HFILES = $(ihfiles) $(chfiles) $(cohfiles) $(shfiles) $(vhfiles)

all:	ld

sources	:$(SRCS) $(HFILES) #

ld:	$(OBJS) $(LIBLD)
	$(CCV) $(CFLAGS) $(OBJS) $(LIBLD) $(LIBES) -o ld

install:	ld
	cp ld $(BINDIR)/$(SGS)ld

clean:#
	-rm -f $(OBJS) y.tab.[ch] lex.yy.c

clobber: clean #
	-rm -f ld

shrink: clobber

#	linkage editor components


y.tab.c y.tab.h :    ld.yac 
	@echo "Expect to see message 'conflicts: 7 shift/reduce'";
	$(YACC) $(YFLAGS) ld.yac

y.tab.o:	attributes.h list.h structs.h $(FRC)\
		ldmacros.h extrns.h system.h\
		$(VINCL)/filehdr.h $(VINCL)/scnhdr.h $(VINCL)/syms.h\
		$(VINCL)/storclass.h bool.h sgsmacros.h\
		sgs.h y.tab.c
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(VINCLIST) $(ENV) y.tab.c

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

lex.yy.o:	structs.h extrns.h system.h $(FRC)\
		instr.h $(VINCL)/aouthdr.h\
		$(VINCL)/filehdr.h $(VINCL)/scnhdr.h $(VINCL)/syms.h\
		$(VINCL)/storclass.h bool.h\
		paths.h sgs.h \
		y.tab.h lex.yy.c
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(VINCLIST) $(ENV) lex.yy.c

expr0.o:	ldmacros.h extrns.h $(FRC)\
		structs.h system.h\
		$(VINCL)/filehdr.h $(VINCL)/scnhdr.h $(VINCL)/syms.h\
		$(VINCL)/storclass.h sgsmacros.h y.tab.h\
		expr0.c
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(VINCLIST) $(ENV) expr0.c

expr1.o:	ldmacros.h extrns.h $(FRC)\
		structs.h system.h\
		$(VINCL)/filehdr.h $(VINCL)/scnhdr.h $(VINCL)/syms.h\
		$(VINCL)/storclass.h sgsmacros.h y.tab.h\
		expr1.c
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(VINCLIST) $(ENV) expr1.c

ld00.o:		extrns.h list.h structs.h $(FRC)\
		$(VINCL)/filehdr.h $(VINCL)/scnhdr.h $(VINCL)/syms.h\
		$(VINCL)/storclass.h sgsmacros.h\
		paths.h sgs.h\
 		system.h y.tab.h ld00.c
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(FILENO) $(VINCLIST) $(ENV) ld00.c

ld01.o:		ldmacros.h extrns.h structs.h $(FRC)\
		list.h instr.h\
		$(VINCL)/filehdr.h $(VINCL)/scnhdr.h $(VINCL)/syms.h\
		$(VINCL)/storclass.h sgsmacros.h system.h\
		ld01.c
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(VINCLIST) $(ENV) ld01.c

ld1.o:		extrns.h ldmacros.h list.h $(FRC)\
		structs.h params.h system.h sgs.h\
		$(VINCL)/filehdr.h $(VINCL)/scnhdr.h $(VINCL)/syms.h\
		$(VINCL)/storclass.h $(VINCL)/ldfcn.h $(VINCL)/reloc.h\
		sgsmacros.h sgs.h ld1.c
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(FILENO) $(VINCLIST) $(ENV) ld1.c

ld2.o:		extrns.h list.h $(FRC)\
		structs.h system.h\
		$(VINCL)/filehdr.h $(VINCL)/scnhdr.h $(VINCL)/syms.h\
		sgsmacros.h $(VINCL)/storclass.h\
		$(VINCL)/reloc.h $(VINCL)/linenum.h patch.h\
		params.h y.tab.h ld2.c
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(VINCLIST) $(ENV) ld2.c

alloc.o:	extrns.h list.h structs.h $(FRC)\
		ldmacros.h params.h system.h\
		$(VINCL)/filehdr.h $(VINCL)/scnhdr.h $(VINCL)/syms.h\
		$(VINCL)/storclass.h sgsmacros.h\
		alloc.c
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(VINCLIST) $(ENV) alloc.c

output.o:	ldmacros.h structs.h $(FRC)\
		extrns.h system.h\
		slotvec.h instr.h $(VINCL)/aouthdr.h\
		$(VINCL)/filehdr.h $(VINCL)/scnhdr.h $(VINCL)/syms.h\
		sgsmacros.h $(VINCL)/storclass.h params.h\
		$(VINCL)/reloc.h $(VINCL)/linenum.h $(VINCL)/ldfcn.h\
		patch.h sgs.h output.c
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(FILENO) $(VINCLIST) $(ENV) output.c

maps.o:		extrns.h structs.h attributes.h $(FRC)\
		$(VINCL)/filehdr.h $(VINCL)/scnhdr.h $(VINCL)/syms.h\
		$(VINCL)/storclass.h sgsmacros.h\
		system.h maps.c
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(FILENO) $(VINCLIST) $(ENV) maps.c

util.o:		structs.h extrns.h system.h slotvec.h $(FRC)\
		$(VINCL)/filehdr.h $(VINCL)/scnhdr.h $(VINCL)/syms.h\
		$(VINCL)/storclass.h sgsmacros.h\
		sgs.h util.c
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(VINCLIST) $(ENV) util.c

lists.o: 	list.h structs.h system.h $(FRC)\
		$(VINCL)/filehdr.h $(VINCL)/scnhdr.h $(VINCL)/syms.h\
		sgsmacros.h $(VINCL)/storclass.h\
		lists.c
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(VINCLIST) $(ENV) lists.c

syms.o:		ldmacros.h $(FRC)\
		structs.h extrns.h instr.h\
		$(VINCL)/filehdr.h $(VINCL)/scnhdr.h $(VINCL)/syms.h\
		$(VINCL)/storclass.h sgsmacros.h system.h\
		paths.h syms.c
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(VINCLIST) $(ENV) syms.c

globs.o:	structs.h params.h system.h $(FRC)\
		$(VINCL)/filehdr.h $(VINCL)/scnhdr.h $(VINCL)/syms.h\
		$(VINCL)/storclass.h\
		paths.h globs.c
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(VINCLIST) $(ENV) globs.c

instr.o:	instr.c $(FRC)
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(VINCLIST) $(ENV) instr.c

cmdfile.o:	cmdfile.c $(FRC)
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(VINCLIST) $(ENV) -DHOST_5_2 -DHOSTSYS5 cmdfile.c

slotvec.o:	slotvec.h structs.h extrns.h $(FRC)\
		$(VINCL)/filehdr.h $(VINCL)/scnhdr.h \
		$(VINCL)/syms.h paths.h\
       		paths.h system.h $(VINCL)/storclass.h\
		slotvec.c
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(VINCLIST) $(ENV) slotvec.c

version.o:	version.c $(FRC)
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(VINCLIST) $(ENV) version.c


special.o:	$(VINCL)/aouthdr.h structs.h params.h $(FRC)\
		$(VINCL)/ldfcn.h ldtv.h tv.h\
		slotvec.h $(VINCL)/reloc.h extrns.h\
		list.h system.h sgs.h\
		sgsmacros.h $(VINCL)/syms.h special.c
	$(CCV) $(CVFLAGS) -c $(DEFLIST) $(VINCLIST) $(ENV) special.c



# Force recompilation
FRC:

