proto.make 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. # $Id$
  2. #PARAMS do not remove this line!
  3. SRC_DIR = $(SRC_HOME)/modules/src/em_opt
  4. MOD_DIR = $(TARGET_HOME)/modules
  5. # set HOWMUCH to head -20 to limit number of patterns used
  6. #HOWMUCH = head -20
  7. HOWMUCH = cat
  8. INCLUDES = -I$(TARGET_HOME)/h -I$(MOD_DIR)/h \
  9. -I$(MOD_DIR)/pkg -I$(SRC_DIR) -I.
  10. UINCLUDES = -I$(UTIL_HOME)/h -I$(UTIL_HOME)/modules/h \
  11. -I$(UTIL_HOME)/modules/pkg -I$(SRC_DIR) -I.
  12. PREFLAGS = $(INCLUDES) -DPRIVATE=static# -DDEBUG
  13. UPREFLAGS = $(UINCLUDES) -DPRIVATE=static# -DDEBUG
  14. # Enable the next line to produce a version that output's the line number
  15. # from the patterns file each time an optimization is performed.
  16. #PREFLAGS = $(PREFLAGS) -DSTATS
  17. CFLAGS = $(PREFLAGS) $(COPTIONS)
  18. LINTFLAGS = $(PREFLAGS) -DNORCSID
  19. LDFLAGS = $(LDOPTIONS)
  20. UCFLAGS = $(UPREFLAGS) $(UCOPTIONS)
  21. ULDFLAGS = $(ULDOPTIONS)
  22. LLOPT =
  23. CMD = '$(CC) -c $(CFLAGS)'
  24. LIBOPT = libemopt.$(LIBSUF)
  25. LIBCEOPT = libCEopt.$(LIBSUF)
  26. .SUFFIXES: .d .r
  27. .r.d: ; CMD=$(CMD); export CMD; awk -f $(SRC_DIR)/makefuns.awk prototypes=/dev/null $*.r | sh -x
  28. touch $@
  29. .SUFFIXES: .$(SUF)
  30. .c.$(SUF):
  31. $(CC) -c $(CFLAGS) $*.c
  32. CSRC = $(SRC_DIR)/main.c $(SRC_DIR)/nopt.c $(SRC_DIR)/mkstrct.c \
  33. $(SRC_DIR)/aux.c $(SRC_DIR)/outputdfa.c $(SRC_DIR)/outcalls.c\
  34. $(SRC_DIR)/findworst.c $(SRC_DIR)/initlex.c
  35. SRCS = $(SRC_DIR)/proto.make $(SRC_DIR)/nopt.h $(SRC_DIR)/parser.h \
  36. $(SRC_DIR)/parser.g $(SRC_DIR)/syntax.l $(SRC_DIR)/pseudo.r\
  37. $(SRC_DIR)/patterns $(CSRC)
  38. NOFILES = nopt.$(SUF) dfa.$(SUF) trans.$(SUF) aux.$(SUF) mkstrct.$(SUF)
  39. POFILES = parser.$(USUF) syntax.$(USUF) outputdfa.$(USUF) outcalls.$(USUF)\
  40. findworst.$(USUF) initlex.$(USUF) Lpars.$(USUF)
  41. GENFILES = Lpars.h Lpars.c parserdummy parser.c syntax.c \
  42. dfa.c dfa.c.new trans.c trans.c.new\
  43. incalls.d incalls.r incalls.r.new pseudo.d pseudo.r
  44. all: em_nopt $(LIBOPT) $(LIBCEOPT) prototypes
  45. install: all
  46. -mkdir $(MOD_DIR)/lib
  47. -mkdir $(MOD_DIR)/h
  48. cp $(LIBOPT) $(MOD_DIR)/lib/$(LIBOPT)
  49. $(RANLIB) $(MOD_DIR)/lib/$(LIBOPT)
  50. cp $(LIBCEOPT) $(MOD_DIR)/lib/$(LIBCEOPT)
  51. $(RANLIB) $(MOD_DIR)/lib/$(LIBCEOPT)
  52. cp em_nopt $(TARGET_HOME)/lib.bin/em_nopt
  53. cp prototypes $(MOD_DIR)/h/em_codeO.h
  54. if [ $(DO_MACHINE_INDEP) = y ] ; \
  55. then mk_manpage $(SRC_DIR)/em_opt.3 $(TARGET_HOME) ; \
  56. mk_manpage $(SRC_DIR)/em_nopt.6 $(TARGET_HOME) ; \
  57. fi
  58. cmp: all
  59. -cmp $(LIBOPT) $(MOD_DIR)/lib/$(LIBOPT)
  60. -cmp $(LIBCEOPT) $(MOD_DIR)/lib/$(LIBCEOPT)
  61. -cmp em_nopt $(TARGET_HOME)/lib.bin/em_nopt
  62. -cmp prototypes $(MOD_DIR)/h/em_codeO.h
  63. pr:
  64. @pr $(SRCS)
  65. opr:
  66. make pr | opr
  67. lint: lintparser lintnopt
  68. clean:
  69. rm -f O_*.$(SUF)
  70. rm -f O_*.c
  71. rm -f $(NOFILES) main.$(SUF) $(POFILES) prototypes
  72. rm -f $(GENFILES) parser em_nopt $(LIBOPT) $(LIBCEOPT)
  73. # How to build stand alone version of the optimizer
  74. NOPTLIB = $(MOD_DIR)/lib/libread_emk.$(LIBSUF)\
  75. $(MOD_DIR)/lib/libemk.$(LIBSUF)\
  76. $(MOD_DIR)/lib/liballoc.$(LIBSUF)\
  77. $(MOD_DIR)/lib/malloc.$(SUF)\
  78. $(MOD_DIR)/lib/libprint.$(LIBSUF)\
  79. $(MOD_DIR)/lib/libstring.$(LIBSUF)\
  80. $(MOD_DIR)/lib/libsystem.$(LIBSUF)\
  81. $(TARGET_HOME)/lib.bin/em_data.$(LIBSUF)
  82. em_nopt: incalls.r main.$(SUF) $(NOFILES)
  83. $(CC) $(LDFLAGS) -o em_nopt main.$(SUF) $(NOFILES) $(NOPTLIB)
  84. OLINT = $(SRC_DIR)/main.c $(SRC_DIR)/mkstrct.c $(SRC_DIR)/nopt.c $(SRC_DIR)/aux.c dfa.c trans.c
  85. OLINTLIB = $(UTIL_HOME)/modules/lib/$(LINTPREF)read_emkV.$(LINTSUF)\
  86. $(UTIL_HOME)/modules/lib/$(LINTPREF)emk.$(LINTSUF)\
  87. $(UTIL_HOME)/modules/lib/$(LINTPREF)system.$(LINTSUF)\
  88. $(UTIL_HOME)/modules/lib/$(LINTPREF)alloc.$(LINTSUF)\
  89. $(UTIL_HOME)/modules/lib/$(LINTPREF)print.$(LINTSUF)\
  90. $(UTIL_HOME)/modules/lib/$(LINTPREF)string.$(LINTSUF)
  91. lintnopt: incalls.r $(OLINT)
  92. $(LINT) $(LINTFLAGS) $(OLINT) $(OLINTLIB)
  93. # How to build the library version of the optimizer
  94. $(LIBOPT): $(NOFILES) pseudo.d incalls.d
  95. rm -f $(LIBOPT)
  96. $(AR) r $(LIBOPT) O_*.$(SUF) $(NOFILES)
  97. $(RANLIB) $(LIBOPT)
  98. $(LIBCEOPT): incalls.r
  99. rm -f O_*.$(SUF) $(NOFILES) pseudo.d incalls.d
  100. -mv $(LIBOPT) $(LIBOPT).saved
  101. make PREFLAGS='$(INCLUDES) -DPRIVATE=static -DCODE_EXPANDER' $(LIBOPT)
  102. mv $(LIBOPT) $(LIBCEOPT)
  103. -mv $(LIBOPT).saved $(LIBOPT)
  104. rm -f O_*.$(SUF) $(NOFILES)
  105. prototypes: pseudo.r incalls.r
  106. cp $(SRC_DIR)/em_codeO.h prototypes
  107. echo >> prototypes
  108. awk -f $(SRC_DIR)/makefuns.awk pseudo.r incalls.r > /dev/null
  109. incalls.r: $(SRC_DIR)/patterns parser
  110. -$(UTIL_HOME)/lib.bin/cpp $(SRC_DIR)/patterns | $(HOWMUCH) >/tmp/patts
  111. parser </tmp/patts
  112. -rm /tmp/patts
  113. # How to build the lint library for the optimizer
  114. LLINT = $(SRC_DIR)/nopt.c $(SRC_DIR)/mkstrct.c $(SRC_DIR)/aux.c dfa.c trans.c
  115. lintlib: incalls.r $(LLINT)
  116. $(MK_LINT_LIB) emopt $(MOD_DIR)/lib $(LLINT)
  117. # How to build program to parse patterns table and build c files.
  118. PARSERLIB = $(UTIL_HOME)/lib.bin/em_data.$(ULIBSUF)\
  119. $(UTIL_HOME)/modules/lib/liballoc.$(ULIBSUF)\
  120. $(UTIL_HOME)/modules/lib/libstring.$(ULIBSUF)\
  121. $(UTIL_HOME)/modules/lib/libsystem.$(ULIBSUF)
  122. parser: parserdummy $(POFILES) $(PARSERLIB)
  123. $(UCC) -o parser $(ULDFLAGS) $(POFILES) $(PARSERLIB)
  124. syntax.c: $(SRC_DIR)/syntax.l
  125. flex -ts $(SRC_DIR)/syntax.l > syntax.c
  126. parserdummy: $(SRC_DIR)/parser.g
  127. LLgen $(LLOPT) $(SRC_DIR)/parser.g
  128. touch parserdummy
  129. PLINT = parser.c syntax.c $(SRC_DIR)/outputdfa.c $(SRC_DIR)/outcalls.c\
  130. $(SRC_DIR)/findworst.c $(SRC_DIR)/initlex.c Lpars.c
  131. PLINTLIB = $(UTIL_HOME)/modules/lib/$(LINTPREF)alloc.$(LINTSUF)\
  132. $(UTIL_HOME)/modules/lib/$(LINTPREF)string.$(LINTSUF)\
  133. $(UTIL_HOME)/modules/lib/$(LINTPREF)system.$(LINTSUF)
  134. LINTFLAGS = $(LINTOPTIONS)
  135. lintparser: parserdummy $(PLINT)
  136. $(LINT) $(LINTFLAGS) $(PLINT) $(PLINTLIB)
  137. # Dependancies
  138. main.$(SUF): $(SRC_DIR)/main.c
  139. $(CC) -c $(CFLAGS) $(SRC_DIR)/main.c
  140. main.$(SUF): $(SRC_DIR)/nopt.h
  141. nopt.$(SUF): $(SRC_DIR)/nopt.c
  142. $(CC) -c $(CFLAGS) $(SRC_DIR)/nopt.c
  143. nopt.$(SUF): $(SRC_DIR)/nopt.h
  144. mkstrct.$(SUF): $(SRC_DIR)/mkstrct.c
  145. $(CC) -c $(CFLAGS) $(SRC_DIR)/mkstrct.c
  146. mkstrct.$(SUF): $(SRC_DIR)/nopt.h
  147. aux.$(SUF): $(SRC_DIR)/aux.c
  148. $(CC) -c $(CFLAGS) $(SRC_DIR)/aux.c
  149. aux.$(SUF): $(SRC_DIR)/nopt.h
  150. dfa.$(SUF): dfa.c
  151. $(CC) -c $(CFLAGS) dfa.c
  152. dfa.$(SUF): $(SRC_DIR)/nopt.h
  153. trans.$(SUF): trans.c
  154. $(CC) -c $(CFLAGS) trans.c
  155. trans.$(SUF): $(SRC_DIR)/nopt.h
  156. incalls.d: $(SRC_DIR)/nopt.h $(SRC_DIR)/makefuns.awk
  157. pseudo.d: $(SRC_DIR)/nopt.h $(SRC_DIR)/makefuns.awk
  158. pseudo.r: $(SRC_DIR)/pseudo.r
  159. cp $(SRC_DIR)/pseudo.r pseudo.r
  160. parser.$(USUF): parser.c
  161. $(UCC) -c $(UCFLAGS) parser.c
  162. parser.$(USUF): Lpars.h $(SRC_DIR)/parser.h
  163. Lpars.$(USUF): Lpars.c
  164. $(UCC) -c $(UCFLAGS) Lpars.c
  165. Lpars.$(USUF): Lpars.h
  166. syntax.$(USUF): syntax.c
  167. $(UCC) -c $(UCFLAGS) syntax.c
  168. sybtax.$(USUF): $(SRC_DIR)/parser.h Lpars.h
  169. outputdfa.$(USUF): $(SRC_DIR)/outputdfa.c
  170. $(UCC) -c $(UCFLAGS) $(SRC_DIR)/outputdfa.c
  171. outputdfa.$(USUF): $(SRC_DIR)/parser.h Lpars.h
  172. outcalls.$(USUF): $(SRC_DIR)/outcalls.c
  173. $(UCC) -c $(UCFLAGS) $(SRC_DIR)/outcalls.c
  174. outcalls.$(USUF): $(SRC_DIR)/parser.h
  175. findworst.$(USUF): $(SRC_DIR)/findworst.c
  176. $(UCC) -c $(UCFLAGS) $(SRC_DIR)/findworst.c
  177. findworst.$(USUF): $(SRC_DIR)/parser.h
  178. initlex.$(USUF): $(SRC_DIR)/initlex.c
  179. $(UCC) -c $(UCFLAGS) $(SRC_DIR)/initlex.c
  180. initlex.$(USUF): $(SRC_DIR)/parser.h