123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- # $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
|