#ident	"@(#)as:makefile	1.6"
#
#	MC68000/020 AS MAKEFILE
#

SGS=
OWN=	bin		#file owner
GRP=	bin		#file group
PROT=	755		#protections
ROOT=	

BINDIR=	$(ROOT)/bin
M68INC=	../../inc/m68k
COMINC=	/usr/include
COMAS=	../common
BASE= ../..

ARCH=	AR32W
FLEX=	-DFLEXNAMES

CC=	cc
LINT=	lint
YACC=	yacc
LFLAGS=	-p
CFLAGS=	-O
INCLIST=	-I. -I$(M68INC) -I$(COMINC) -I$(COMAS)
DEFLIST=	-DINT32BIT -DM68020 -DM68881
#DEFLIST=	-DINT32BIT -DM68020 -DM68881 -DYYDEBUG
ODEFLIST=	-DONEPROC $(FLEX) -D$(ARCH)
LDFLAGS=
YFLAGS=		-d

CC_CMD=	$(CC) -c $(CFLAGS) $(INCLIST) $(DEFLIST) $(ODEFLIST)
YACC_CMD=	$(YACC) $(YFLAGS)


OFILES=	pass0.o instab.o parse.o gencode.o fgencode.o pass1.o symbols.o \
	code.o expand1.o expand2.o errors.o addr2.o pass2.o  \
	addr1.o codeout.o getstab.o obj.o symlist.o unused.o

CFILES=	$(COMAS)/pass0.c $(COMAS)/instab.c parse.c gencode.c fgencode.c \
	$(COMAS)/pass1.c $(COMAS)/symbols.c $(COMAS)/code.c  \
	expand1.c expand2.c $(COMAS)/errors.c	     \
	addr2.c $(COMAS)/pass2.c $(COMAS)/addr1.c	     \
	$(COMAS)/codeout.c $(COMAS)/getstab.c $(COMAS)/obj.c \
	$(COMAS/symlist.c $(COMAS)/unused.c

HFILES=	$(COMAS)/codeout.h gendefs.h instab.h ops.out	     \
	$(COMAS)/symbols.h $(M68INC)/paths.h		     \
	$(COMAS)/expand.h expand2.h parse.h		     \
	$(COMINC)/reloc.h $(COMINC)/syms.h		     \
	$(COMINC)/storclass.h $(COMINC)/filehdr.h	     \
	$(COMINC)/scnhdr.h $(COMINC)/linenum.h		     \
	$(M68INC)sgs.h

build:	$(SGS)as

#-------------------------
$(SGS)as:	$(OFILES)
		$(CC) $(CFLAGS) $(LDFLAGS) -o $(SGS)as $(OFILES)

pass0.o:	$(COMAS)/pass0.c pass0.h $(M68INC)/paths.h   \
		$(M68INC)/sgs.h systems.h gendefs.h
		$(CC_CMD) pass0.c

# The baroque code here tries to keep file times in sync to
# avoid unnecessary re-compilations.

parse.o:	parse.c $(COMAS)/symbols.h instab.h gendefs.h $(COMINC)/scnhdr.h
		$(CC_CMD) parse.c

instab.o:	$(COMAS)/instab.c instab.h ops.out parse.h \
		$(COMAS)/symbols.h systems.h fops.out
		$(CC_CMD) instab.c

ops.out:
		$(GET) s.ops.out

fops.out:
		$(GET) s.fops.out

parse.c:	y.tab.c
		cp y.tab.c parse.c
parse.h:	y.tab.h
		cp y.tab.h parse.h

y.tab.c y.tab.h:	parse.y
		$(YACC_CMD) parse.y

# end baroque code

code.o:		$(COMAS)/code.c $(COMAS)/symbols.h	     \
		$(COMAS)/codeout.h gendefs.h systems.h $(COMAS)/temppack.h
		$(CC_CMD) code.c

errors.o:	$(COMAS)/errors.c gendefs.h systems.h
		$(CC_CMD) errors.c

pass1.o:	$(COMAS)/pass1.c $(M68INC)/paths.h gendefs.h \
		$(COMAS)/symbols.h systems.h $(COMAS)/codeout.h \
		$(COMAS)/section.h
		$(CC_CMD) pass1.c

gencode.o:	gencode.c $(COMAS)/symbols.h instab.h	     \
		gendefs.h $(COMAS)/expand.h expand2.h
		$(CC_CMD) gencode.c

fgencode.o:	fgencode.c $(COMAS)/symbols.h instab.h	     \
		gendefs.h $(COMAS)/expand.h expand2.h
		$(CC_CMD) fgencode.c

expand1.o:	expand1.c $(COMAS)/expand.h	     \
		$(COMAS)/symbols.h gendefs.h systems.h
		$(CC_CMD) expand1.c

expand2.o:	expand2.c $(COMAS)/expand.h expand2.h	     \
		$(COMAS)/symbols.h
		$(CC_CMD) expand2.c

addr1.o:	$(COMAS)/addr1.c $(COMINC)/reloc.h gendefs.h \
		$(COMINC)/syms.h $(COMINC)/storclass.h	     \
		$(COMINC)/linenum.h $(COMINC)/filehdr.h	     \
		$(COMAS)/symbols.h $(COMAS)/codeout.h	     \
		systems.h
		$(CC_CMD) addr1.c

addr2.o:	addr2.c $(COMINC)/reloc.h $(COMAS)/symbols.h \
		instab.h gendefs.h $(COMAS)/codeout.h
		$(CC_CMD) addr2.c

codeout.o:	$(COMAS)/codeout.c $(COMAS)/symbols.h	     \
		$(COMAS)/codeout.h gendefs.h systems.h
		$(CC_CMD) codeout.c

getstab.o:	$(COMAS)/getstab.c $(COMAS)/symbols.h	     \
		gendefs.h systems.h
		$(CC_CMD) getstab.c

pass2.o:	$(COMAS)/pass2.c gendefs.h systems.h	     \
		$(COMAS)/symbols.h
		$(CC_CMD) pass2.c

obj.o:		$(COMAS)/obj.c $(COMINC)/filehdr.h	     \
		$(COMINC)/linenum.h $(COMINC)/reloc.h	     \
		$(COMINC)/scnhdr.h $(COMINC)/syms.h	     \
		$(COMINC)/storclass.h $(COMAS)/symbols.h     \
		$(COMAS)/codeout.h gendefs.h systems.h	     \
		$(M68INC)/sgs.h
		$(CC_CMD) obj.c

symlist.o:	$(COMAS)/symlist.c $(COMAS)/symbols.h	     \
		$(COMINC)/syms.h $(COMINC)/storclass.h	     \
		gendefs.h systems.h
		$(CC_CMD) symlist.c

symbols.o:	$(COMAS)/symbols.c $(COMAS)/symbols.h	     \
		symbols2.h systems.h
		$(CC_CMD) symbols.c

unused.o:	$(COMAS)/unused.c symbols2.h $(COMINC)/filehdr.h \
		$(COMINC)/linenum.h $(COMINC)/reloc.h $(COMINC)/scnhdr.h \
	        $(COMINC)/syms.h $(COMINC)/storclass.h
		$(CC_CMD) unused.c

#-------------------------

install:	$(SGS)as
		cp as as.bak
		strip as
		sh $(BASE)/sgs.install $(PROT) $(OWN) $(GRP) $(BINDIR)/$(SGS)as as
		mv as.bak as

#--------------------------

save:	$(BINDIR)/$(SGS)as
	-rm -f $(BINDIR)/$(SGS)as.back
	cp $(BINDIR)/$(SGS)as $(BINDIR)/$(SGS)as.back

#--------------------------

uninstall:	$(BINDIR)/$(SGS)as.back
		-rm -f $(BINDIR)/$(SGS)as
		cp $(BINDIR)/$(SGS)as.back $(BINDIR)/$(SGS)as

#--------------------------

clean:
	-rm -f $(OFILES)

#--------------------------

clobber:	clean
		-rm -f $(SGS)as parse.c parse.h y.tab.c y.tab.h

#--------------------------

shrink:		clobber

#--------------------------

lint:	$(COMINC)/a.out.h $(COMINC)/ar.h \
	$(CFILES)
	$(LINT) $(LFLAGS) -I$(M68INC) -I$(COMINC) $(CFILES) >lint.out
#
