#ident "@(#)makefile	35.1       88/08/26     "
#ident "Copyright (c) 1984 AT&T, INC. and MOTOROLA, INC."
#
#	MC68000 OPTIM MAKEFILE
#		PROCESSOR must be set to M68000, M68010, or M68020
#
#
OWN=	bin		#file owner
GRP=	bin		#file group
PROT=	775		#protections
ROOT=	

BINDIR=	$(ROOT)/bin
LIBDIR=	$(ROOT)/lib
COMDIR= ../common

CC=	cc
LINT=	lint
LFLAGS=	-p
CFLAGS= -O
LDFLAGS=
DEFLIST=        -D$(PROCESSOR)
AWKLIST=	p=$(PROCESSOR)
INCLIST=        -I. -I$(COMDIR)

CC_CMD=	$(CC) -c $(CFLAGS) $(DEFLIST) $(INCLIST)


OFILES=		scan.o parse.o optab.o rand.o mipsup.o vtrace.o \
		optim.o inter.o
CFILES=         scan.c mipsup.c \
		vtrace.c optab.c \
		parse.c rand.c \
		$(COMDIR)/optim.c $(COMDIR)/inter.c
OP_FILES=       optab.h ops.h opdefs.h

OPTIM_H=        $(COMDIR)/optim.h defs rand.h ops.h opdefs.h \
		/usr/include/stdio.h /usr/include/ctype.h

all : cpu build

cpu :
	if [ ! -f t.$(PROCESSOR) ] ; then make clobber; fi
	touch t.$(PROCESSOR)

build:  $(SGS)optim

#------------------------- The main include file dependencies
#
#       optim.h :  /usr/include/ctype.h /usr/include/stdio.h defs
#               touch optim.h
#
#       defs : rand.h ops.h
#               touch defs
#
#       ops.h : opdefs.h
#               touch ops.h
#
#-------------------------
$(SGS)optim:  $(OFILES)
		$(CC) $(CFLAGS) $(LDFLAGS) -o $(SGS)optim $(OFILES)

optim.o:	$(OPTIM_H) $(COMDIR)/optim.c
		$(CC_CMD) $(COMDIR)/optim.c

inter.o:	$(OPTIM_H) $(COMDIR)/inter.c
		$(CC_CMD) $(COMDIR)/inter.c

scan.o:         $(OPTIM_H) scan.c
		$(CC_CMD) scan.c

parse.o:        $(OPTIM_H) parse.c /usr/include/string.h
		$(CC_CMD) parse.c

rand.o:		$(OPTIM_H) rand.c
		$(CC_CMD) rand.c

mipsup.o:       $(OPTIM_H) mipsup.c
		$(CC_CMD) mipsup.c

$(OP_FILES):    optab.base optab.awk
		awk -f ./optab.awk $(AWKLIST) optab.base >optab.h
		#
		# NOTE: awk also builds a new "opdefs.h" file.
		#
		touch $(OP_FILES)

optab.o:        optab.c $(OP_FILES)
		$(CC_CMD) optab.c

vtrace.o:       vtrace.c peep.c $(OPTIM_H)
		$(CC_CMD) vtrace.c

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

install:        $(SGS)optim
		-rm -f $(LIBDIR)/$(SGS)optim
		cp $(SGS)optim $(LIBDIR)
		strip $(LIBDIR)/$(SGS)optim
		chmod $(PROT) $(LIBDIR)/$(SGS)optim
		chgrp $(GRP) $(LIBDIR)/$(SGS)optim
		chown $(OWN) $(LIBDIR)/$(SGS)optim

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

save:   $(LIBDIR)/$(SGS)optim
	-rm -f $(LIBDIR)/$(SGS)optim.back
	cp $(LIBDIR)/$(SGS)optim $(LIBDIR)/$(SGS)optim.back

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

uninstall:      $(LIBDIR)/$(SGS)optim.back
		-rm -f $(LIBDIR)/$(SGS)optim
		cp $(LIBDIR)/$(SGS)optim.back $(LIBDIR)/$(SGS)optim

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

clean:
	-rm -f $(OFILES) opdefs.h optab.h t.M680?0

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

clobber shrink:	clean
		-rm -f $(SGS)optim

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

lint:   $(CFILES) peep.c
	$(LINT) $(LFLAGS) $(INCLIST) $(CFILES) >lint.out

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

cxref:  $(CFILES) peep.c
	cxref -c $(INCLIST) $(CFILES) -o $(SGS)optim.xref

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

cflow:  $(CFILES) peep.c
	cflow -r $(INCLIST) $(CFILES) >$(SGS)optim.cflow
