ack/modules/src/em_opt/proto.make
1994-06-24 11:31:16 +00:00

241 lines
7 KiB
Makefile

# $Id$
#PARAMS do not remove this line!
SRC_DIR = $(SRC_HOME)/modules/src/em_opt
MOD_DIR = $(TARGET_HOME)/modules
# set HOWMUCH to head -20 to limit number of patterns used
#HOWMUCH = head -20
HOWMUCH = cat
INCLUDES = -I$(TARGET_HOME)/h -I$(MOD_DIR)/h \
-I$(MOD_DIR)/pkg -I$(SRC_DIR) -I.
UINCLUDES = -I$(UTIL_HOME)/h -I$(UTIL_HOME)/modules/h \
-I$(UTIL_HOME)/modules/pkg -I$(SRC_DIR) -I.
PREFLAGS = $(INCLUDES) -DPRIVATE=static# -DDEBUG
UPREFLAGS = $(UINCLUDES) -DPRIVATE=static# -DDEBUG
# Enable the next line to produce a version that output's the line number
# from the patterns file each time an optimization is performed.
#PREFLAGS = $(PREFLAGS) -DSTATS
CFLAGS = $(PREFLAGS) $(COPTIONS)
LINTFLAGS = $(PREFLAGS) -DNORCSID
LDFLAGS = $(LDOPTIONS)
UCFLAGS = $(UPREFLAGS) $(UCOPTIONS)
ULDFLAGS = $(ULDOPTIONS)
LLOPT =
CMD = '$(CC) -c $(CFLAGS)'
LIBOPT = libemopt.$(LIBSUF)
LIBCEOPT = libCEopt.$(LIBSUF)
.SUFFIXES: .d .r
.r.d: ; CMD=$(CMD); export CMD; awk -f $(SRC_DIR)/makefuns.awk prototypes=/dev/null $*.r | sh -x
touch $@
.SUFFIXES: .$(SUF)
.c.$(SUF):
$(CC) -c $(CFLAGS) $*.c
CSRC = $(SRC_DIR)/main.c $(SRC_DIR)/nopt.c $(SRC_DIR)/mkstrct.c \
$(SRC_DIR)/aux.c $(SRC_DIR)/outputdfa.c $(SRC_DIR)/outcalls.c\
$(SRC_DIR)/findworst.c $(SRC_DIR)/initlex.c
SRCS = $(SRC_DIR)/proto.make $(SRC_DIR)/nopt.h $(SRC_DIR)/parser.h \
$(SRC_DIR)/parser.g $(SRC_DIR)/syntax.l $(SRC_DIR)/pseudo.r\
$(SRC_DIR)/patterns $(CSRC)
NOFILES = nopt.$(SUF) dfa.$(SUF) trans.$(SUF) aux.$(SUF) mkstrct.$(SUF)
POFILES = parser.$(USUF) syntax.$(USUF) outputdfa.$(USUF) outcalls.$(USUF)\
findworst.$(USUF) initlex.$(USUF) Lpars.$(USUF)
GENFILES = Lpars.h Lpars.c parserdummy parser.c syntax.c \
dfa.c dfa.c.new trans.c trans.c.new\
incalls.d incalls.r incalls.r.new pseudo.d pseudo.r
all: em_nopt $(LIBOPT) $(LIBCEOPT) prototypes
install: all
-mkdir $(MOD_DIR)/lib
-mkdir $(MOD_DIR)/h
cp $(LIBOPT) $(MOD_DIR)/lib/$(LIBOPT)
$(RANLIB) $(MOD_DIR)/lib/$(LIBOPT)
cp $(LIBCEOPT) $(MOD_DIR)/lib/$(LIBCEOPT)
$(RANLIB) $(MOD_DIR)/lib/$(LIBCEOPT)
cp em_nopt $(TARGET_HOME)/lib.bin/em_nopt
cp prototypes $(MOD_DIR)/h/em_codeO.h
if [ $(DO_MACHINE_INDEP) = y ] ; \
then mk_manpage $(SRC_DIR)/em_opt.3 $(TARGET_HOME) ; \
mk_manpage $(SRC_DIR)/em_nopt.6 $(TARGET_HOME) ; \
fi
cmp: all
-cmp $(LIBOPT) $(MOD_DIR)/lib/$(LIBOPT)
-cmp $(LIBCEOPT) $(MOD_DIR)/lib/$(LIBCEOPT)
-cmp em_nopt $(TARGET_HOME)/lib.bin/em_nopt
-cmp prototypes $(MOD_DIR)/h/em_codeO.h
pr:
@pr $(SRCS)
opr:
make pr | opr
lint: lintparser lintnopt
clean:
rm -f O_*.$(SUF)
rm -f O_*.c
rm -f $(NOFILES) main.$(SUF) $(POFILES) prototypes
rm -f $(GENFILES) parser em_nopt $(LIBOPT) $(LIBCEOPT)
# How to build stand alone version of the optimizer
NOPTLIB = $(MOD_DIR)/lib/libread_emk.$(LIBSUF)\
$(MOD_DIR)/lib/libemk.$(LIBSUF)\
$(MOD_DIR)/lib/liballoc.$(LIBSUF)\
$(MOD_DIR)/lib/malloc.$(SUF)\
$(MOD_DIR)/lib/libprint.$(LIBSUF)\
$(MOD_DIR)/lib/libstring.$(LIBSUF)\
$(MOD_DIR)/lib/libsystem.$(LIBSUF)\
$(TARGET_HOME)/lib.bin/em_data.$(LIBSUF)
em_nopt: incalls.r main.$(SUF) $(NOFILES)
$(CC) $(LDFLAGS) -o em_nopt main.$(SUF) $(NOFILES) $(NOPTLIB)
OLINT = $(SRC_DIR)/main.c $(SRC_DIR)/mkstrct.c $(SRC_DIR)/nopt.c $(SRC_DIR)/aux.c dfa.c trans.c
OLINTLIB = $(UTIL_HOME)/modules/lib/$(LINTPREF)read_emkV.$(LINTSUF)\
$(UTIL_HOME)/modules/lib/$(LINTPREF)emk.$(LINTSUF)\
$(UTIL_HOME)/modules/lib/$(LINTPREF)system.$(LINTSUF)\
$(UTIL_HOME)/modules/lib/$(LINTPREF)alloc.$(LINTSUF)\
$(UTIL_HOME)/modules/lib/$(LINTPREF)print.$(LINTSUF)\
$(UTIL_HOME)/modules/lib/$(LINTPREF)string.$(LINTSUF)
lintnopt: incalls.r $(OLINT)
$(LINT) $(LINTFLAGS) $(OLINT) $(OLINTLIB)
# How to build the library version of the optimizer
$(LIBOPT): $(NOFILES) pseudo.d incalls.d
rm -f $(LIBOPT)
$(AR) r $(LIBOPT) O_*.$(SUF) $(NOFILES)
$(RANLIB) $(LIBOPT)
$(LIBCEOPT): incalls.r
rm -f O_*.$(SUF) $(NOFILES) pseudo.d incalls.d
-mv $(LIBOPT) $(LIBOPT).saved
make PREFLAGS='$(INCLUDES) -DPRIVATE=static -DCODE_EXPANDER' $(LIBOPT)
mv $(LIBOPT) $(LIBCEOPT)
-mv $(LIBOPT).saved $(LIBOPT)
rm -f O_*.$(SUF) $(NOFILES)
prototypes: pseudo.r incalls.r
cp $(SRC_DIR)/em_codeO.h prototypes
echo >> prototypes
awk -f $(SRC_DIR)/makefuns.awk pseudo.r incalls.r > /dev/null
incalls.r: $(SRC_DIR)/patterns parser
-$(UTIL_HOME)/lib.bin/cpp $(SRC_DIR)/patterns | $(HOWMUCH) >/tmp/patts
parser </tmp/patts
-rm /tmp/patts
# How to build the lint library for the optimizer
LLINT = $(SRC_DIR)/nopt.c $(SRC_DIR)/mkstrct.c $(SRC_DIR)/aux.c dfa.c trans.c
lintlib: incalls.r $(LLINT)
$(MK_LINT_LIB) emopt $(MOD_DIR)/lib $(LLINT)
# How to build program to parse patterns table and build c files.
PARSERLIB = $(UTIL_HOME)/lib.bin/em_data.$(ULIBSUF)\
$(UTIL_HOME)/modules/lib/liballoc.$(ULIBSUF)\
$(UTIL_HOME)/modules/lib/libstring.$(ULIBSUF)\
$(UTIL_HOME)/modules/lib/libsystem.$(ULIBSUF)
parser: parserdummy $(POFILES) $(PARSERLIB)
$(UCC) -o parser $(ULDFLAGS) $(POFILES) $(PARSERLIB)
syntax.c: $(SRC_DIR)/syntax.l
flex -ts $(SRC_DIR)/syntax.l > syntax.c
parserdummy: $(SRC_DIR)/parser.g
LLgen $(LLOPT) $(SRC_DIR)/parser.g
touch parserdummy
PLINT = parser.c syntax.c $(SRC_DIR)/outputdfa.c $(SRC_DIR)/outcalls.c\
$(SRC_DIR)/findworst.c $(SRC_DIR)/initlex.c Lpars.c
PLINTLIB = $(UTIL_HOME)/modules/lib/$(LINTPREF)alloc.$(LINTSUF)\
$(UTIL_HOME)/modules/lib/$(LINTPREF)string.$(LINTSUF)\
$(UTIL_HOME)/modules/lib/$(LINTPREF)system.$(LINTSUF)
LINTFLAGS = $(LINTOPTIONS)
lintparser: parserdummy $(PLINT)
$(LINT) $(LINTFLAGS) $(PLINT) $(PLINTLIB)
# Dependancies
main.$(SUF): $(SRC_DIR)/main.c
$(CC) -c $(CFLAGS) $(SRC_DIR)/main.c
main.$(SUF): $(SRC_DIR)/nopt.h
nopt.$(SUF): $(SRC_DIR)/nopt.c
$(CC) -c $(CFLAGS) $(SRC_DIR)/nopt.c
nopt.$(SUF): $(SRC_DIR)/nopt.h
mkstrct.$(SUF): $(SRC_DIR)/mkstrct.c
$(CC) -c $(CFLAGS) $(SRC_DIR)/mkstrct.c
mkstrct.$(SUF): $(SRC_DIR)/nopt.h
aux.$(SUF): $(SRC_DIR)/aux.c
$(CC) -c $(CFLAGS) $(SRC_DIR)/aux.c
aux.$(SUF): $(SRC_DIR)/nopt.h
dfa.$(SUF): dfa.c
$(CC) -c $(CFLAGS) dfa.c
dfa.$(SUF): $(SRC_DIR)/nopt.h
trans.$(SUF): trans.c
$(CC) -c $(CFLAGS) trans.c
trans.$(SUF): $(SRC_DIR)/nopt.h
incalls.d: $(SRC_DIR)/nopt.h $(SRC_DIR)/makefuns.awk
pseudo.d: $(SRC_DIR)/nopt.h $(SRC_DIR)/makefuns.awk
pseudo.r: $(SRC_DIR)/pseudo.r
cp $(SRC_DIR)/pseudo.r pseudo.r
parser.$(USUF): parser.c
$(UCC) -c $(UCFLAGS) parser.c
parser.$(USUF): Lpars.h $(SRC_DIR)/parser.h
Lpars.$(USUF): Lpars.c
$(UCC) -c $(UCFLAGS) Lpars.c
Lpars.$(USUF): Lpars.h
syntax.$(USUF): syntax.c
$(UCC) -c $(UCFLAGS) syntax.c
sybtax.$(USUF): $(SRC_DIR)/parser.h Lpars.h
outputdfa.$(USUF): $(SRC_DIR)/outputdfa.c
$(UCC) -c $(UCFLAGS) $(SRC_DIR)/outputdfa.c
outputdfa.$(USUF): $(SRC_DIR)/parser.h Lpars.h
outcalls.$(USUF): $(SRC_DIR)/outcalls.c
$(UCC) -c $(UCFLAGS) $(SRC_DIR)/outcalls.c
outcalls.$(USUF): $(SRC_DIR)/parser.h
findworst.$(USUF): $(SRC_DIR)/findworst.c
$(UCC) -c $(UCFLAGS) $(SRC_DIR)/findworst.c
findworst.$(USUF): $(SRC_DIR)/parser.h
initlex.$(USUF): $(SRC_DIR)/initlex.c
$(UCC) -c $(UCFLAGS) $(SRC_DIR)/initlex.c
initlex.$(USUF): $(SRC_DIR)/parser.h