180 lines
4.6 KiB
Makefile
180 lines
4.6 KiB
Makefile
# $Header$
|
|
EMHOME = ../../..
|
|
INSTALL = $(EMHOME)/modules/install
|
|
COMPARE = $(EMHOME)/modules/compare
|
|
LINT = lint
|
|
BINDIR = $(EMHOME)/lib
|
|
|
|
# set HOWMUCH to head -20 to limit number of patterns used
|
|
#HOWMUCH = head -20
|
|
HOWMUCH = cat
|
|
|
|
LEXLIB = -ll
|
|
INCLDIR = -I$(EMHOME)/h -I$(EMHOME)/modules/h -I$(EMHOME)/modules/pkg
|
|
PREFLAGS = $(INCLDIR) -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
|
|
|
|
PROFFLAG = -O
|
|
CFLAGS = $(PREFLAGS) $(PROFFLAG) $(COPT)
|
|
LINTFLAGS = $(PREFLAGS) -DNORCSID
|
|
LLOPT =
|
|
CMD = '$(CC) -c $(CFLAGS)'
|
|
AR = ar
|
|
SUF = o
|
|
LIBSUF = a
|
|
|
|
LIBOPT = libemopt.$(LIBSUF)
|
|
LIBCEOPT = libCEopt.$(LIBSUF)
|
|
|
|
.SUFFIXES: .d .r
|
|
|
|
.r.d: ; CMD=$(CMD); export CMD; awk -f makefuns.awk $*.r | sh -x
|
|
touch $@
|
|
|
|
.SUFFIXES: .$(SUF)
|
|
.c.$(SUF):
|
|
$(CC) -c $(CFLAGS) $*.c
|
|
|
|
CSRC = main.c nopt.c mkstrct.c aux.c outputdfa.c outcalls.c\
|
|
findworst.c initlex.c
|
|
|
|
SRCS = Makefile nopt.h parser.h parser.g syntax.l pseudo.r\
|
|
patterns $(CSRC)
|
|
|
|
NOFILES = nopt.$(SUF) dfa.$(SUF) trans.$(SUF) aux.$(SUF) mkstrct.$(SUF)
|
|
|
|
POFILES = parser.$(SUF) syntax.$(SUF) outputdfa.$(SUF) outcalls.$(SUF) findworst.$(SUF)\
|
|
initlex.$(SUF) Lpars.$(SUF)
|
|
|
|
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
|
|
|
|
all: em_nopt $(LIBOPT) $(LIBCEOPT) em_opt.3
|
|
|
|
install: all
|
|
$(INSTALL) lib/$(LIBOPT)
|
|
$(INSTALL) lib/$(LIBCEOPT)
|
|
$(INSTALL) man/em_opt.3
|
|
cp em_nopt.6 $(EMHOME)/man
|
|
cp em_nopt $(BINDIR)/em_nopt
|
|
|
|
cmp: all
|
|
-$(COMPARE) lib/$(LIBOPT)
|
|
-$(COMPARE) lib/$(LIBCEOPT)
|
|
-$(COMPARE) man/em_opt.3
|
|
-cmp em_nopt $(BINDIR)/em_nopt
|
|
|
|
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)
|
|
rm -f $(GENFILES) parser em_nopt $(LIBOPT) $(LIBCEOPT)
|
|
|
|
# How to build stand alone version of the optimizer
|
|
|
|
NOPTLIB = $(EMHOME)/modules/lib/libread_emk.$(LIBSUF)\
|
|
$(EMHOME)/modules/lib/libemk.$(LIBSUF)\
|
|
$(EMHOME)/modules/lib/liballoc.$(LIBSUF)\
|
|
$(EMHOME)/modules/lib/malloc.$(SUF)\
|
|
$(EMHOME)/modules/lib/libprint.$(LIBSUF)\
|
|
$(EMHOME)/modules/lib/libstring.$(LIBSUF)\
|
|
$(EMHOME)/modules/lib/libsystem.$(LIBSUF)\
|
|
$(EMHOME)/lib/em_data.$(LIBSUF)
|
|
|
|
em_nopt: incalls.r main.$(SUF) $(NOFILES)
|
|
$(CC) -o em_nopt main.$(SUF) $(NOFILES) $(NOPTLIB)
|
|
|
|
OLINT = main.c mkstrct.c nopt.c aux.c dfa.c trans.c
|
|
|
|
OLINTLIB = $(EMHOME)/modules/lib/llib-lread_emkV.ln\
|
|
$(EMHOME)/modules/lib/llib-lemk.ln\
|
|
$(EMHOME)/modules/lib/llib-lsystem.ln\
|
|
$(EMHOME)/modules/lib/llib-lalloc.ln\
|
|
$(EMHOME)/modules/lib/llib-lprint.ln\
|
|
$(EMHOME)/modules/lib/llib-lstring.ln
|
|
|
|
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 rc $(LIBOPT) O_*.$(SUF) $(NOFILES)
|
|
-sh -c 'ranlib $(LIBOPT)'
|
|
|
|
$(LIBCEOPT): incalls.r
|
|
rm -f O_*.$(SUF) $(NOFILES) pseudo.d incalls.d
|
|
-mv $(LIBOPT) $(LIBOPT).saved
|
|
make "EMHOME="$(EMHOME) PREFLAGS='$(INCLDIR) -DPRIVATE=static -DCODE_EXPANDER' $(LIBOPT)
|
|
mv $(LIBOPT) $(LIBCEOPT)
|
|
-mv $(LIBOPT).saved $(LIBOPT)
|
|
rm -f O_*.$(SUF) $(NOFILES)
|
|
|
|
incalls.r: patterns parser
|
|
-$(EMHOME)/lib/cpp patterns | $(HOWMUCH) >/tmp/patts
|
|
parser </tmp/patts
|
|
-rm /tmp/patts
|
|
|
|
# How to build the lint library for the optimizer
|
|
|
|
LLINT = nopt.c mkstrct.c aux.c dfa.c trans.c
|
|
|
|
lintlib: incalls.r $(LLINT)
|
|
$(LINT) $(LINTFLAGS) $(LLINT) -Cemopt
|
|
mv llib-lemopt.ln $(EMHOME)/modules/lib
|
|
|
|
# How to build program to parse patterns table and build c files.
|
|
|
|
PARSERLIB = $(EMHOME)/lib/em_data.$(LIBSUF)\
|
|
$(EMHOME)/modules/lib/liballoc.$(LIBSUF)\
|
|
$(EMHOME)/modules/lib/libstring.$(LIBSUF)\
|
|
$(EMHOME)/modules/lib/libsystem.$(LIBSUF)
|
|
|
|
parser: parserdummy $(POFILES) $(PARSERLIB)
|
|
$(CC) -o parser $(LDFLAGS) $(POFILES) $(PARSERLIB) $(LEXLIB)
|
|
|
|
parserdummy: parser.g
|
|
LLgen $(LLOPT) parser.g
|
|
touch parserdummy
|
|
|
|
PLINT = parser.c syntax.c outputdfa.c outcalls.c\
|
|
findworst.c initlex.c Lpars.c
|
|
|
|
PLINTLIB = $(EMHOME)/modules/lib/llib-lalloc.ln\
|
|
$(EMHOME)/modules/lib/llib-lstring.ln\
|
|
$(EMHOME)/modules/lib/llib-lsystem.ln
|
|
|
|
lintparser: parserdummy $(PLINT)
|
|
$(LINT) $(LINTFLAGS) $(PLINT) $(PLINTLIB)
|
|
|
|
# Dependancies
|
|
|
|
main.$(SUF): nopt.h
|
|
nopt.$(SUF): nopt.h
|
|
mkstrct.$(SUF): nopt.h
|
|
aux.$(SUF): nopt.h
|
|
pseudo.d: nopt.h makefuns.awk
|
|
dfa.$(SUF): nopt.h
|
|
trans.$(SUF): nopt.h
|
|
incalls.d: nopt.h makefuns.awk
|
|
|
|
parser.$(SUF): Lpars.h parser.h
|
|
Lpars.$(SUF): Lpars.h
|
|
syntax.$(SUF): syntax.l parser.h Lpars.h
|
|
outputdfa.$(SUF): parser.h Lpars.h
|
|
outcalls.$(SUF): parser.h
|
|
findworst.$(SUF): parser.h
|
|
initlex.$(SUF): parser.h
|