Makefile 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. LMBENCHDIR = lmbench-2.5
  2. LINUXDIR=$(LMBENCHDIR)/bin/linux/
  3. GRAPHENEDIR=$(LMBENCHDIR)/bin/graphene/
  4. RUNDIR=$(LMBENCHDIR)/bin/graphene.run/
  5. HOST_BINARIES = /bin/sh /usr/include/x86_64-linux-gnu/sys/types.h
  6. BINARIES = $(LINUXDIR) $(addprefix host,$(HOST_BINARIES))
  7. LMBENCH_TESTS = lat_syscall lat_connect lat_fcntl lat_select lat_fs \
  8. lat_mmap lat_fifo lat_mem_rd lat_msg lat_tcp lat_udp \
  9. lat_unix_connect lat_pagefault \
  10. bw_tcp bw_mem bw_unix lat_proc lat_ctx lat_rpc \
  11. lat_unix lat_sig lat_http lat_pipe \
  12. bw_pipe bw_file_rd bw_mmap_rd lmhttp lmdd
  13. MANIFESTS = $(addsuffix .manifest,$(addprefix $(RUNDIR),$(LMBENCH_TESTS)))
  14. RUNTIME_BINS = $(LINUXDIR)hello /bin/sh
  15. RUNTIME_MANIFESTS=$(addsuffix .manifest,$(addprefix $(RUNDIR),$(foreach f,$(RUNTIME_BINS),$(notdir $(f)))))
  16. target = $(addprefix $(LINUXDIR),$(LMBENCH_TESTS)) $(GRAPHENEDIR)
  17. exec_target = $(MANIFESTS) $(RUNTIME_MANIFESTS)
  18. clean-extra = clean-lmbench
  19. level = ../../
  20. include ../../Makefile
  21. export CC
  22. export CFLAGS
  23. servers = lat_udp lat_tcp lat_rpc lat_connect bw_tcp
  24. $(GRAPHENEDIR): $(MANIFESTS) $(addprefix $(RUNDIR),$(LMBENCH_TESTS)) $(LINUXDIR)
  25. mkdir -p $@
  26. for f in $(MANIFESTS); do \
  27. f=$${f##*/}; f=$${f%.manifest}; \
  28. echo "#!/bin/sh\ncd $(abspath $(RUNDIR)) && exec ./$$f.manifest \$$@" > $(GRAPHENEDIR)$$f; \
  29. chmod +x $(GRAPHENEDIR)$$f; \
  30. done
  31. cd $(LINUXDIR) && for f in *; do \
  32. if [ ! -f ../graphene/$$f ]; then cp $$f ../graphene/$$f; fi; \
  33. done
  34. $(MANIFESTS): $(RUNDIR)%.manifest: $(RUNDIR)%.manifest.template $(LINUXDIR)%
  35. $(MAKE) -C .. lmbench/$@ appdir=lmbench/
  36. $(addsuffix .template,$(MANIFESTS)): $(RUNDIR)%.manifest.template: manifest.template $(RUNDIR)
  37. ln -sf ../../../$< $@
  38. $(RUNTIME_MANIFESTS): %.manifest: %.manifest.template
  39. $(MAKE) -C .. lmbench/$@ appdir=lmbench/
  40. $(addsuffix .template,$(RUNTIME_MANIFESTS)): $(RUNDIR)%.manifest.template: %.manifest.template $(RUNDIR)
  41. ln -sf ../../../$< $@
  42. $(addprefix $(RUNDIR),$(LMBENCH_TESTS)): $(RUNDIR)%: $(LINUXDIR)%
  43. ln -sf ../linux/$(notdir $@) $@
  44. $(RUNDIR):
  45. mkdir -p $@
  46. ifeq ($(SYS),x86_64-linux-gnu)
  47. $(addprefix $(LINUXDIR),$(LMBENCH_TESTS)): \
  48. $(wildcard $(LMBENCHDIR)/src/*.c) $(wildcard $(LMBENCHDIR)/src/*.h)
  49. $(MAKE) -C $(LMBENCHDIR)/src OS=linux CC="gcc -g"
  50. .PHONY: pack
  51. $(addprefix host,$(HOST_BINARIES)):
  52. @echo "$(patsubst host%,%,$@) -> $@"
  53. @mkdir -p $(dir $@)
  54. @cp -LTrf $(patsubst host%,%,$@) $@
  55. pack: $(BINARIES)
  56. @../../../../../Scripts/pack_binaries.sh lmbench $^
  57. else
  58. all: $(addprefix /tmp/host,$(HOST_BINARIES))
  59. $(filter-out $(HOST_BINARIES),$(BINARIES)): .packed/lmbench.tar.gz
  60. tar -xmozf $< $@
  61. $(addprefix /tmp/host,$(HOST_BINARIES)): .packed/lmbench.tar.gz
  62. cd /tmp && tar -xmozf $(abspath $<) $(subst /tmp/,,$@)
  63. endif
  64. LMBENCHCONFIG = $(shell $(LMBENCHDIR)/scripts/config)
  65. $(LINUXDIR)$(LMBENCHCONFIG):
  66. cd $(LMBENCHDIR)/scripts && env OS=linux ./config-run
  67. /tmp/hello: $(LINUXDIR)hello
  68. cp -f $< $@
  69. test-native: $(LINUXDIR) $(LINUXDIR)$(LMBENCHCONFIG) /tmp/hello
  70. cd $(LMBENCHDIR)/scripts && env OS=linux ./results
  71. $(RUNDIR)$(LMBENCHCONFIG): $(LINUXDIR)$(LMBENCHCONFIG)
  72. sed -e "s/OS=\"linux\"/OS=\"graphene\"/g" $< > $@
  73. test-graphene: all $(RUNDIR)$(LMBENCHCONFIG) /tmp/hello
  74. cd $(LMBENCHDIR)/scripts && env OS=graphene ./results
  75. clean-lmbench:
  76. $(MAKE) -C $(LMBENCHDIR) clean