Makefile 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. # $Id$
  2. # Make targets:
  3. #
  4. # lmbench [default] builds the benchmark suite for the current os/arch
  5. # results builds, configures run parameters, and runs the benchmark
  6. # rerun reruns the benchmark using the same parameters as last time
  7. # clean cleans out sources and run configuration
  8. # clobber clean and removes the bin directories
  9. # shar obsolete, use cd .. && make shar
  10. # depend builds make dependencies (needs gcc)
  11. #
  12. # This is largely self configuring. Most stuff is pretty portable.
  13. #
  14. # If you don't have gcc, try make CC=cc and see if that works.
  15. #
  16. # If you want to do cross-compilation try make OS=armv5tel-linux-gnu
  17. # or whatever your OS string should be in the target environment.
  18. # Since many embedded development environments also have a special
  19. # cross-compiler, you might want to also select a particular compiler,
  20. # so your build command would look something like:
  21. # make OS=armv5tel-linux-gnu CC=gcc-arm
  22. #
  23. # Overriding the OS and CC make parameters needs to be done as an
  24. # argument to make, not as an environment variable. See above comments.
  25. # I finally know why Larry Wall's Makefile says "Grrrr".
  26. SHELL=/bin/sh
  27. CC = `../scripts/compiler`
  28. LDLIBS = -lm
  29. AR = ar
  30. ARCREATE = cr
  31. BASE=/usr/local # base of installation location
  32. O= ../bin/unknown
  33. D= ../doc
  34. TRUE=/bin/true
  35. OS=`../scripts/os`
  36. TARGET=`../scripts/target`
  37. BINDIR=../bin/$(OS)
  38. CONFIG=../bin/$(OS)/`../scripts/config`
  39. UTILS=../scripts/target ../scripts/os ../scripts/gnu-os ../scripts/compiler \
  40. ../scripts/info ../scripts/info-template ../scripts/version \
  41. ../scripts/config ../scripts/config-run ../scripts/results \
  42. ../scripts/lmbench ../scripts/build ../scripts/depend
  43. INSTALL=cp
  44. RESULTS=Results/$(OS)
  45. SAMPLES=lmbench/Results/aix/rs6000 lmbench/Results/hpux/snake \
  46. lmbench/Results/irix/indigo2 lmbench/Results/linux/pentium \
  47. lmbench/Results/osf1/alpha lmbench/Results/solaris/ss20*
  48. COMPILE=$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
  49. INCS = bench.h lib_tcp.h lib_udp.h stats.h timing.h
  50. SRCS = bench.h bw_file_rd.c bw_mmap_rd.c \
  51. bw_pipe.c bw_tcp.c clock.c hello.c lat_connect.c lat_ctx.c \
  52. lat_fs.c lat_mem_rd.c lat_mmap.c lat_pagefault.c lat_pipe.c \
  53. lat_proc.c lat_rpc.c lat_syscall.c lat_tcp.c lat_udp.c \
  54. lib_tcp.c lib_udp.c mhz.c lib_timing.c lat_sig.c \
  55. memsize.c bw_unix.c lat_unix.c lmdd.c loop_o.c timing_o.c \
  56. timing.h stats.h lib_tcp.h lib_udp.h enough.c lat_select.c \
  57. msleep.c bw_mem.c lat_fifo.c lmhttp.c lat_http.c \
  58. disk.c flushdisk.c lat_unix_connect.c lib_unix.c lib_stats.c \
  59. lib_unix.h names.h version.h lat_msg.c lib_confidence.c
  60. EXES = $O/bw_file_rd $O/bw_mem $O/bw_mmap_rd $O/bw_pipe $O/bw_tcp \
  61. $O/lat_select $O/lat_pipe $O/lat_rpc $O/lat_syscall $O/lat_tcp \
  62. $O/lat_udp $O/lat_mmap $O/lat_proc $O/lat_pagefault $O/mhz \
  63. $O/lat_connect $O/lat_fs $O/lat_sig $O/lat_mem_rd $O/lat_ctx \
  64. $O/memsize $O/lat_unix $O/bw_unix $O/lmdd $O/timing_o $O/enough \
  65. $O/msleep $O/loop_o $O/lat_fifo $O/lmhttp $O/lat_http \
  66. $O/lat_unix_connect $O/lat_fcntl \
  67. $O/disk $O/flushdisk $O/clock $O/hello $O/lat_msg
  68. MAN1 = lmdd.1 $D/bargraph.1 $D/graph.1 $D/pgraph.1 $D/rccs.1
  69. MAN3 = $D/lmbench.3 $D/reporting.3 $D/results.3 $D/timing.3
  70. MAN8 = $D/bw_file_rd.8 $D/bw_mem.8 $D/bw_pipe.8 $D/bw_pipe.8 \
  71. $D/bw_tcp.8 $D/bw_unix.8 \
  72. $D/lat_connect.8 $D/lat_ctx.8 $D/lat_fcntl.8 $D/lat_fifo.8 \
  73. $D/lat_fs.8 $D/lat_http.8 $D/lat_mem_rd.8 $D/lat_mmap.8 \
  74. $D/lat_pagefault.8 $D/lat_pipe.8 $D/lat_proc.8 $D/lat_rpc.8 \
  75. $D/lat_select.8 $D/lat_sig.8 $D/lat_syscall.8 $D/lat_tcp.8 \
  76. $D/lat_udp.8 $D/lat_unix.8 $D/lat_unix_connect.8 \
  77. $D/lmbench.8 $D/disk.8 $D/lmdd.8 $D/mhz.8 \
  78. $D/clock.8 $D/enough.8 $D/loop_o.8 $D/timing_o.8
  79. LIBOBJS= $O/lib_tcp.o $O/lib_udp.o $O/lib_unix.o $O/lib_timing.o $O/lib_stats.o $O/lib_confidence.o
  80. lmbench: $(UTILS)
  81. @env OS="${OS}" CC="${CC}" CFLAGS="${CFLAGS} -O" MAKE="$(MAKE)" MAKEFLAGS="$(MAKEFLAGS)" ../scripts/build all
  82. results: lmbench
  83. @env OS="${OS}" ../scripts/config-run
  84. @env OS="${OS}" ../scripts/results
  85. rerun: lmbench
  86. @if [ ! -f $(CONFIG) ]; then env OS="${OS}" ../scripts/config-run; fi
  87. @env OS="${OS}" ../scripts/results
  88. install: lmbench
  89. $(MAKE) O=$(BINDIR) install-target
  90. install-target:
  91. if [ ! -d $(BASE) ]; then mkdir $(BASE); fi
  92. if [ ! -d $(BASE)/bin ]; then mkdir $(BASE)/bin; fi
  93. if [ ! -d $(BASE)/include ]; then mkdir $(BASE)/include; fi
  94. if [ ! -d $(BASE)/lib ]; then mkdir $(BASE)/lib; fi
  95. if [ ! -d $(BASE)/man ]; then mkdir $(BASE)/man; fi
  96. if [ ! -d $(BASE)/man/man1 ]; then mkdir $(BASE)/man/man1; fi
  97. if [ ! -d $(BASE)/man/man3 ]; then mkdir $(BASE)/man/man3; fi
  98. if [ ! -d $(BASE)/man/man8 ]; then mkdir $(BASE)/man/man8; fi
  99. cp $(EXES) $(BASE)/bin
  100. cp $(INCS) $(BASE)/include
  101. cp $O/lmbench.a $(BASE)/lib/libmbench.a
  102. cp $(MAN1) $(BASE)/man/man1
  103. cp $(MAN3) $(BASE)/man/man3
  104. cp $(MAN8) $(BASE)/man/man8
  105. # No special handling for all these
  106. all: $(EXES) $O/lmbench
  107. Wall:
  108. @env OS="${OS}" CC="${CC}" CFLAGS="-Wall -ansi" MAKE="$(MAKE)" MAKEFLAGS="$(MAKEFLAGS)" ../scripts/build all
  109. debug:
  110. @env OS="${OS}" CC="${CC}" CFLAGS="-g -O -D_DEBUG" MAKE="$(MAKE)" MAKEFLAGS="$(MAKEFLAGS)" ../scripts/build all
  111. dist:
  112. SRCDIR=`pwd`; \
  113. ROOT=`cat ../CVS/Root`; \
  114. MODULE=`cat ../CVS/Repository`; \
  115. VERSION=`../scripts/version`; \
  116. cd /tmp \
  117. && cvs -d$${ROOT} export -Dtomorrow \
  118. -d $${MODULE}-$${VERSION} $${MODULE} \
  119. && chmod +x $${MODULE}-$${VERSION}/scripts/[a-z]* \
  120. && mv $${MODULE}-$${VERSION} lmbench-$${VERSION} \
  121. && tar czf $${SRCDIR}/../../lmbench-$${VERSION}.tgz \
  122. lmbench-$${VERSION} \
  123. && rm -rf lmbench-$${VERSION};
  124. clean:
  125. /bin/rm -f ../bin/*/CONFIG.* ../bin/*.[oa] ../bin/*/*.[oa]
  126. clobber:
  127. /bin/rm -rf ../bin* SHAR
  128. shar:
  129. cd ../.. && shar lmbench/Results/Makefile $(SAMPLES) lmbench/scripts/* lmbench/src/Makefile lmbench/src/*.[ch] > lmbench/SHAR
  130. depend: ../scripts/depend
  131. ../scripts/depend
  132. $(UTILS):
  133. @cd ../scripts; make get
  134. $O/lmbench : ../scripts/lmbench version.h
  135. rm -f $O/lmbench
  136. VERSION=`../scripts/version`; \
  137. sed -e "s/<version>/$${VERSION}/g" < ../scripts/lmbench > $O/lmbench
  138. chmod +x $O/lmbench
  139. $O/lmbench.a: $(LIBOBJS)
  140. /bin/rm -f $O/lmbench.a
  141. $(AR) $(ARCREATE) $O/lmbench.a $(LIBOBJS)
  142. -ranlib $O/lmbench.a
  143. $O/lib_timing.o : lib_timing.c $(INCS)
  144. $(COMPILE) -c lib_timing.c -o $O/lib_timing.o -lm
  145. $O/lib_confidence.o : lib_confidence.c $(INCS)
  146. $(COMPILE) -c lib_confidence.c -o $O/lib_confidence.o -lm
  147. $O/lib_tcp.o : lib_tcp.c $(INCS)
  148. $(COMPILE) -c lib_tcp.c -o $O/lib_tcp.o -lm
  149. $O/lib_udp.o : lib_udp.c $(INCS)
  150. $(COMPILE) -c lib_udp.c -o $O/lib_udp.o -lm
  151. $O/lib_unix.o : lib_unix.c $(INCS)
  152. $(COMPILE) -c lib_unix.c -o $O/lib_unix.o -lm
  153. $O/lib_stats.o : lib_stats.c $(INCS)
  154. $(COMPILE) -c lib_stats.c -o $O/lib_stats.o -lm
  155. # Do not remove the next line, $(MAKE) depend needs it
  156. # MAKEDEPEND follows
  157. $O/rhttp: rhttp.c timing.h stats.h bench.h $O/lmbench.a
  158. $(COMPILE) -o $O/rhttp rhttp.c $O/lmbench.a $(LDLIBS) -lm
  159. $O/http: http.c timing.h stats.h bench.h $O/lmbench.a
  160. $(COMPILE) -o $O/http http.c $O/lmbench.a $(LDLIBS) -lm
  161. $O/flushdisk: flushdisk.c
  162. $(COMPILE) -DMAIN -o $O/flushdisk flushdisk.c -lm
  163. $O/mhz: mhz.c timing.h stats.h bench.h $O/lmbench.a
  164. $(COMPILE) -o $O/mhz mhz.c $O/lmbench.a $(LDLIBS) -lm
  165. $O/lat_ctx: lat_ctx.c timing.h stats.h bench.h $O/lmbench.a
  166. $(COMPILE) -o $O/lat_ctx lat_ctx.c $O/lmbench.a $(LDLIBS) -lm
  167. $O/lmhttp: lmhttp.c timing.h stats.h bench.h $O/lmbench.a
  168. $(COMPILE) -o $O/lmhttp lmhttp.c $O/lmbench.a $(LDLIBS) -lm
  169. $O/lat_http: lat_http.c timing.h stats.h bench.h $O/lmbench.a
  170. $(COMPILE) -o $O/lat_http lat_http.c $O/lmbench.a $(LDLIBS) -lm
  171. $O/bw_file_rd: bw_file_rd.c timing.h stats.h bench.h $O/lmbench.a
  172. $(COMPILE) -o $O/bw_file_rd bw_file_rd.c $O/lmbench.a $(LDLIBS) -lm
  173. $O/bw_mem: bw_mem.c timing.h stats.h bench.h $O/lmbench.a
  174. $(COMPILE) -o $O/bw_mem bw_mem.c $O/lmbench.a $(LDLIBS) -lm
  175. $O/bw_mmap_rd: bw_mmap_rd.c timing.h stats.h bench.h $O/lmbench.a
  176. $(COMPILE) -o $O/bw_mmap_rd bw_mmap_rd.c $O/lmbench.a $(LDLIBS) -lm
  177. $O/bw_pipe: bw_pipe.c timing.h stats.h bench.h $O/lmbench.a
  178. $(COMPILE) -o $O/bw_pipe bw_pipe.c $O/lmbench.a $(LDLIBS) -lm
  179. $O/bw_tcp: bw_tcp.c bench.h timing.h stats.h lib_tcp.h $O/lmbench.a
  180. $(COMPILE) -o $O/bw_tcp bw_tcp.c $O/lmbench.a $(LDLIBS) -lm
  181. $O/bw_unix: bw_unix.c timing.h stats.h bench.h $O/lmbench.a
  182. $(COMPILE) -o $O/bw_unix bw_unix.c $O/lmbench.a $(LDLIBS) -lm
  183. $O/disk: disk.c flushdisk.c bench.h timing.h stats.h lib_tcp.h $O/lmbench.a
  184. $(COMPILE) -o $O/disk disk.c flushdisk.c $O/lmbench.a $(LDLIBS) -lm
  185. $O/clock: clock.c timing.h stats.h bench.h version.h $O/lmbench.a
  186. $(COMPILE) -o $O/clock clock.c $O/lmbench.a $(LDLIBS) -lm
  187. $O/hello: hello.c $O/lmbench.a
  188. $(COMPILE) -o $O/hello hello.c $O/lmbench.a $(LDLIBS) -lm
  189. $O/lat_alarm: lat_alarm.c timing.h stats.h bench.h $O/lmbench.a
  190. $(COMPILE) -o $O/lat_alarm lat_alarm.c $O/lmbench.a $(LDLIBS) -lm
  191. $O/lat_connect: lat_connect.c lib_tcp.c bench.h lib_tcp.h timing.h stats.h $O/lmbench.a
  192. $(COMPILE) -o $O/lat_connect lat_connect.c $O/lmbench.a $(LDLIBS) -lm
  193. $O/lat_unix_connect: lat_unix_connect.c lib_tcp.c bench.h lib_tcp.h timing.h stats.h $O/lmbench.a
  194. $(COMPILE) -o $O/lat_unix_connect lat_unix_connect.c $O/lmbench.a $(LDLIBS) -lm
  195. $O/lat_fcntl: lat_fcntl.c timing.h stats.h bench.h $O/lmbench.a
  196. $(COMPILE) -o $O/lat_fcntl lat_fcntl.c $O/lmbench.a $(LDLIBS) -lm
  197. $O/lat_fs: lat_fs.c timing.h stats.h bench.h $O/lmbench.a
  198. $(COMPILE) -o $O/lat_fs lat_fs.c $O/lmbench.a $(LDLIBS) -lm
  199. $O/lat_mem_rd: lat_mem_rd.c timing.h stats.h bench.h $O/lmbench.a
  200. $(COMPILE) -o $O/lat_mem_rd lat_mem_rd.c $O/lmbench.a $(LDLIBS) -lm
  201. $O/lat_mem_rd2: lat_mem_rd2.c timing.h stats.h bench.h $O/lmbench.a
  202. $(COMPILE) -o $O/lat_mem_rd2 lat_mem_rd2.c $O/lmbench.a $(LDLIBS) -lm
  203. $O/lat_mem_wr: lat_mem_wr.c timing.h stats.h bench.h $O/lmbench.a
  204. $(COMPILE) -o $O/lat_mem_wr lat_mem_wr.c $O/lmbench.a $(LDLIBS) -lm
  205. $O/lat_mem_wr2: lat_mem_wr2.c timing.h stats.h bench.h $O/lmbench.a
  206. $(COMPILE) -o $O/lat_mem_wr2 lat_mem_wr2.c $O/lmbench.a $(LDLIBS) -lm
  207. $O/lat_mmap: lat_mmap.c timing.h stats.h bench.h $O/lmbench.a
  208. $(COMPILE) -o $O/lat_mmap lat_mmap.c $O/lmbench.a $(LDLIBS) -lm
  209. $O/lat_mmaprd: lat_mmaprd.c timing.h stats.h bench.h $O/lmbench.a
  210. $(COMPILE) -o $O/lat_mmaprd lat_mmaprd.c $O/lmbench.a $(LDLIBS) -lm
  211. $O/lat_pagefault: lat_pagefault.c timing.h stats.h bench.h $O/lmbench.a
  212. $(COMPILE) -o $O/lat_pagefault lat_pagefault.c $O/lmbench.a $(LDLIBS) -lm
  213. $O/lat_pipe: lat_pipe.c timing.h stats.h bench.h $O/lmbench.a
  214. $(COMPILE) -o $O/lat_pipe lat_pipe.c $O/lmbench.a $(LDLIBS) -lm
  215. $O/lat_fifo: lat_fifo.c timing.h stats.h bench.h $O/lmbench.a
  216. $(COMPILE) -o $O/lat_fifo lat_fifo.c $O/lmbench.a $(LDLIBS) -lm
  217. $O/lat_proc: lat_proc.c timing.h stats.h bench.h $O/lmbench.a
  218. $(COMPILE) -o $O/lat_proc lat_proc.c $O/lmbench.a $(LDLIBS) -lm
  219. $O/lat_rpc: lat_rpc.c timing.h stats.h bench.h $O/lmbench.a
  220. $(COMPILE) -o $O/lat_rpc lat_rpc.c $O/lmbench.a $(LDLIBS) -lm
  221. $O/lat_sig: lat_sig.c timing.h stats.h bench.h $O/lmbench.a
  222. $(COMPILE) -o $O/lat_sig lat_sig.c $O/lmbench.a $(LDLIBS) -lm
  223. $O/lat_syscall: lat_syscall.c timing.h stats.h bench.h $O/lmbench.a
  224. $(COMPILE) -o $O/lat_syscall lat_syscall.c $O/lmbench.a $(LDLIBS) -lm
  225. $O/lat_select: lat_select.c timing.h stats.h bench.h $O/lmbench.a
  226. $(COMPILE) -o $O/lat_select lat_select.c $O/lmbench.a $(LDLIBS) -lm
  227. $O/lat_tcp: lat_tcp.c timing.h stats.h bench.h lib_tcp.h $O/lmbench.a
  228. $(COMPILE) -o $O/lat_tcp lat_tcp.c $O/lmbench.a $(LDLIBS) -lm
  229. $O/lat_udp: lat_udp.c timing.h stats.h bench.h lib_udp.h $O/lmbench.a
  230. $(COMPILE) -o $O/lat_udp lat_udp.c $O/lmbench.a $(LDLIBS) -lm
  231. $O/lat_unix: lat_unix.c timing.h stats.h bench.h $O/lmbench.a
  232. $(COMPILE) -g3 -o $O/lat_unix lat_unix.c $O/lmbench.a $(LDLIBS) -lm
  233. $O/lib_tcp: lib_tcp.c bench.h lib_tcp.h $O/lmbench.a
  234. $(COMPILE) -o $O/lib_tcp lib_tcp.c $O/lmbench.a $(LDLIBS) -lm
  235. $O/lib_udp: lib_udp.c bench.h lib_udp.h $O/lmbench.a
  236. $(COMPILE) -o $O/lib_udp lib_udp.c $O/lmbench.a $(LDLIBS) -lm
  237. $O/lat_msg: lat_msg.c bench.h $O/lmbench.a
  238. $(COMPILE) -o $O/lat_msg lat_msg.c $O/lmbench.a $(LDLIBS) -lm
  239. $O/lmdd: lmdd.c timing.h stats.h bench.h $O/lmbench.a
  240. $(COMPILE) -o $O/lmdd lmdd.c $O/lmbench.a $(LDLIBS) -lm
  241. $O/enough: enough.c timing.h stats.h bench.h $O/lmbench.a
  242. $(COMPILE) -o $O/enough enough.c $O/lmbench.a $(LDLIBS) -lm
  243. $O/loop_o: loop_o.c timing.h stats.h bench.h $O/lmbench.a
  244. $(COMPILE) -o $O/loop_o loop_o.c $O/lmbench.a $(LDLIBS) -lm
  245. $O/timing_o: timing_o.c timing.h stats.h bench.h $O/lmbench.a
  246. $(COMPILE) -o $O/timing_o timing_o.c $O/lmbench.a $(LDLIBS) -lm
  247. $O/memsize: memsize.c timing.h stats.h bench.h $O/lmbench.a
  248. $(COMPILE) -o $O/memsize memsize.c $O/lmbench.a $(LDLIBS) -lm
  249. $O/msleep: msleep.c timing.h stats.h bench.h
  250. $(COMPILE) -o $O/msleep msleep.c -lm