#ident "@(#)makefile	35.1       88/08/26     "
#ident "Copyright (c) 1984 AT&T, INC. and MOTOROLA, INC."
#
#	MAKEFILE for intermediate optimizer
#
#
ROOT=	

BINDIR=	$(ROOT)/bin
LIBDIR=	$(ROOT)/lib

BASE= ../..

M68KINC= $(BASE)/inc/m68k

COMP2=	../../comp2

FLEX=	-DFLEXNAMES

SGS=                    #prefix
OWN=	bin		#file owner
GRP=	bin		#file group
PROT=	775		#protections
CC=     cc
LINT=	lint
YACC=	yacc
LFLAGS=	-p
CFLAGS=	-O
M68881= -DM68881
#
STRIP=strip
SPFLAGS=
STRIP_CMD=$(STRIP) $(SPFLAGS)
#
INCLIST=	-I. -I../common -I$(COMP2)/common -I$(COMP2)/m68k 
#
#	conditional compilation variables are declared 
#	in the DEFLIST and are passed to cpp.
#
#	variables:
#		TWOPASS - causes inclusion of code when defined
#			  to generate two pass compiler.  this "#undef"s
#			  ONEPASS in macdefs.h.  if not defined, the code 
#			  for a one pass compiler is used.
#
#		ITREES  - Use icon based passing to pass all information
#			  to the back end.
#
#		HLOPTIM   - cause inclusion/exclusion of code specific to the
#			  high level optimizer. Should be set to -DHLOPTIM
#			  for the optimizer.
#
#
#
#

TWOPASS=	-DTWOPASS -DITREES 
HLOPTIM=	-DHLOPTIM
LDFLAGS=
YFLAGS=
#FPU=NONE
FPU=M68881

CC_CMD=	$(CC) -c -D$(PROCESSOR) $(M68881) $(CFLAGS) $(INCLIST) $(TWOPASS) $(HLOPTIM)

M=	../common

HLOPTIM_OFILES= addvalue.o bb.o bitset.o gather.o\
	hash.o hloptim.o localopt.o main.o misc.o\
	reader.o regasg.o symtab.o storage.o write.o

HLOPTIM_CFILES= $M/addvalue.c $M/bb.c $M/bitset.c $M/gather.c\
	$M/hash.c $M/hloptim.c localopt.c $M/main.c $M/misc.c\
	$(COMP2)/common/reader.c $M/regasg.c $M/symtab.c storage.c $M/write.c

HLOPTIM_H= $(COMP2)/common/manifest.h $M/symtab.h \
	$(COMP2)/m68k/macdefs.h $M/hash.h $M/declar.h

build:  $(SGS)coptim

#-------------------------
$(SGS)coptim: $(HLOPTIM_OFILES)
		$(CC) $(CFLAGS) $(LDFLAGS) -o $(SGS)coptim $(HLOPTIM_OFILES)
		chmod +x $(SGS)coptim

addvalue.o:	$M/addvalue.c $(HLOPTIM_H)
		$(CC_CMD) $M/addvalue.c

bb.o:		$M/bb.c $(HLOPTIM_H)
		$(CC_CMD) $M/bb.c

bitset.o:	$M/bitset.h $M/bitset.c
		$(CC_CMD) $M/bitset.c

gather.o:	$M/gather.c $(HLOPTIM_H)
		$(CC_CMD) $M/gather.c

hash.o:		$M/hash.c $(HLOPTIM_H)
		$(CC_CMD) -DSTART $M/hash.c

hloptim.o:	$M/hloptim.c $(HLOPTIM_H)
		$(CC_CMD) $M/hloptim.c

localopt.o:	localopt.c $(HLOPTIM_H)
		$(CC_CMD) localopt.c

main.o:		$M/main.c $(HLOPTIM_H)
		$(CC_CMD) $M/main.c

misc.o:		$M/misc.c $(HLOPTIM_H)
		$(CC_CMD) $M/misc.c

regasg.o:	$M/regasg.c $(HLOPTIM_H)
		$(CC_CMD) $M/regasg.c

reader.o:	$(COMP2)/common/manifest.h $(COMP2)/common/mfile2.h $(COMP2)/m68k/macdefs.h $(COMP2)/common/reader.c $M/hash.h
		$(CC_CMD) -DFLEXNAMES $(COMP2)/common/reader.c

storage.o:	storage.c $(HLOPTIM_H)
		$(CC_CMD) storage.c

symtab.o:	$M/symtab.c $(HLOPTIM_H)
		$(CC_CMD) $M/symtab.c

write.o:	$M/write.c $(HLOPTIM_H)
		$(CC_CMD) $M/write.c

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

install:        $(SGS)coptim
	-rm -f $(LIBDIR)/$(SGS)coptim
	cp $(SGS)coptim $(SGS)coptim.bak
	-$(STRIP_CMD) $(SGS)coptim
	sh $(BASE)/sgs.install $(PROT) $(OWN) $(GRP) \
		$(LIBDIR)/$(SGS)coptim $(SGS)coptim
	mv $(SGS)coptim.bak $(SGS)coptim

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

save:   $(LIBDIR)/$(SGS)coptim
	-rm -f $(LIBDIR)/$(SGS)coptim.bak
	cp $(LIBDIR)/$(SGS)coptim $(LIBDIR)/$(SGS)coptim.bak

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

uninstall:      $(LIBDIR)/$(SGS)coptim.bak
		-rm -f $(LIBDIR)/$(SGS)coptim
		cp $(LIBDIR)/$(SGS)coptim.bak $(LIBDIR)/$(SGS)coptim

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

clean:
	-rm -f $(HLOPTIM_OFILES)

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

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

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

lintopt:	$(HLOPTIM_CFILES)
	$(LINT) $(LFLAGS) $(INCLIST) $(HLOPTIM_CFILES) >lintopt.out

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

listopt:	$(HLOPTIM_CFILES)
	pr -n  $(COMP2)/common/manifest.h $M/declar.h $M/defin.h $M/hash.h\
		$M/symtab.h $M/bitset.h $(COMP2)/common/mfile2.h\
		$(HLOPTIM_CFILES) makefile | lp -tHLOPTIM

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

cflowopt:	$(HLOPTIM_CFILES)
	cflow -DHLOPTIM $(TWOPASS) $(INCLIST) $(HLOPTIM_CFILES) > optim.cf
	cflow -r -DHLOPTIM $(TWOPASS) $(INCLIST) $(HLOPTIM_CFILES) > optim.rcf

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

cxrefopt:	$(CO_CFILES)
	cxref -c -DHLOPTIM $(TWOPASS) $(INCLIST) $(HLOPTIM_CFILES) -o opt.xref
