#sccs	"@(#)mcc/pcc2/m68k:Makefile	1.7"

#	MC68000 PCC2 MAKEFILE
#
include $(MAKEINC)/Makepre.h

ID = id.o
PCC2COM=	../common
# Directory for sdb.h

FLEX=	#-UFLEXNAMES
ITREES= 

LINT=	lint
YACC=	yacc
LFLAGS=	-p
#
#	conditional compilation variables are declared 
#	in the DEFLIST and are passed to cpp.
#
#	variables:
#		STKCK	- causes inclusion of code to generate
#			  stack fault preclusion code at function
#			  entry.  targeted for MC68000.
#		PROFILE - causes inclusion of profiling code -
#			  conditional compilation can be removed if desired.
#

ODEFLIST=	-USTKCK -DPROFILE -DPORTAR
DEFLIST=	$(FLEX) $(ITREES)
LDFLAGS=
YFLAGS=
LDLIBS=

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

# use M as a short-hand for the awkward PCC2COM
# (M for Machine independent part)

M=	$(PCC2COM)


OFILES= cgram.o xdefs.o scan.o pftn.o trees.o optim.o local.o reader.o\
	local2.o debug.o match.o allo.o comm1.o table.o cost.o cgen.o
CFILES=	$M/cgram.c $M/xdefs.c $M/scan.c $M/pftn.c $M/cgen.c $M/cost.c \
	$M/trees.c $M/optim.c local.c $M/reader.c \
	local2.c debug.c $M/match.c $M/allo.c $M/comm1.c \
	table.c

DEPENDLIST = $(CFILES)

all:	Makeincludes ccom

Makeincludes: $(DEPENDLIST)
	$(INCCMD) $(DEPENDLIST) | $(SORT) | $(FILTER) > Makeincludes
	$(MAKE)

includes: $(DEPENDLIST)
	$(INCCMD) $(DEPENDLIST) | $(SORT) | $(FILTER) > Makeincludes

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

ccom:	$(OFILES) $(SHAREDLIB) $(LIBC) $(ID)
	$(CC) $(CFLAGS) $(LDFLAGS) -o ccom.mini $(OFILES) $(ID) $(LDLIBS)
	$(LD) $(SHAREDLIB) -o ccom $(OFILES) $(ID)
	strip ccom ccom.mini

sty:	$M/manifest.h $M/sty.y macdefs.h $M/mfile2.h $M/common $(ID)
	-@echo "Expect 2 reduce/reduce conflicts"
	$(YACC_CMD) $M/sty.y
#
# always use the resident compiler to generate sty.
# whether generating a cross-compiler or a resident
# on a non-target machine.
#
	$(CC) $(CFLAGS) $(LDFLAGS) -o sty y.tab.c $(ID)
	rm y.tab.c

trees.o: $M/trees.c
	$(CC_CMD) $M/trees.c

optim.o: $M/optim.c
	$(CC_CMD) $M/optim.c

pftn.o:	$M/pftn.c
	$(CC_CMD) $M/pftn.c

local.o: local.c
	$(CC_CMD) local.c

scan.o:	$M/scan.c
	$(CC_CMD) $M/scan.c

xdefs.o: $M/xdefs.c
	$(CC_CMD) $M/xdefs.c

cgram.o: $M/cgram.c
	$(CC_CMD) $M/cgram.c

$M/cgram.c: $M/cgram.y
	-@echo "Expect 6 shift/reduce conflicts"
	$(YACC_CMD) $M/cgram.y
	mv y.tab.c $M/cgram.c

comm1.o: $M/comm1.c
	$(CC_CMD) $M/comm1.c

table.o: table.c
	$(CC_CMD) table.c

table.c: sty stin
	-@echo "Expect 3 \"... may be covered by ...\" messages"
	./sty <stin >table.c

cost.o:	$M/cost.c
	$(CC_CMD) $M/cost.c

cgen.o:	$M/cgen.c
	$(CC_CMD) $M/cgen.c

reader.o: $M/reader.c
	$(CC_CMD) $M/reader.c

local2.o: local2.c
	$(CC_CMD) local2.c

debug.o: debug.c
	$(CC_CMD) debug.c

match.o: $M/match.c
	$(CC_CMD) $M/match.c

allo.o:	$M/allo.c
	$(CC_CMD) $M/allo.c

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

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

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

clean:
	rm -f $(OFILES) $(ID) y.tab.o

clobber: clean
	rm -f ccom ccom.mini sty table.c $(M)/cgram.c id.c

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

populate:
	getunit

include Makeincludes
include $(MAKEINC)/Makepost.h
