Makefile 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. SYS ?= $(shell gcc -dumpmachine)
  2. export SYS
  3. LMBENCHDIR = lmbench-2.5
  4. HOST_BINARIES = /bin/sh /usr/include/x86_64-linux-gnu/sys/types.h
  5. BINARIES = $(LMBENCHDIR)/bin/linux test-list $(addprefix host,$(HOST_BINARIES))
  6. NO_MANIFEST = lmbench lmbench.a *.o hello INFO.*
  7. export CC
  8. export CFLAGS
  9. all debug: test-list $(LMBENCHDIR)/bin/linux
  10. for f in `cat test-list`; do \
  11. [ -f $(LMBENCHDIR)/bin/graphene/$$f.manifest ] || \
  12. $(MAKE) $(LMBENCHDIR)/bin/graphene/$$f.manifest; \
  13. ln -sf $$f.manifest $(LMBENCHDIR)/bin/graphene/$$f; \
  14. done
  15. cp -f $(foreach p,$(addprefix $(LMBENCHDIR)/bin/linux/,$(NO_MANIFEST)),$(wildcard $(p))) \
  16. $(LMBENCHDIR)/bin/graphene
  17. debug: CC="gcc -g"
  18. kvm: CFLAGS += -DKVM_BENCH -D_DEBUG
  19. kvm: all
  20. servers = lat_udp lat_tcp lat_rpc lat_connect bw_tcp
  21. $(LMBENCHDIR)/bin/graphene/%.manifest: $(LMBENCHDIR)/bin/graphene/%.manifest.template
  22. $(MAKE) -C .. lmbench/$@ appdir=lmbench/
  23. $(LMBENCHDIR)/bin/graphene/%.manifest.template: manifest.template $(LMBENCHDIR)/bin/graphene
  24. ln -s ../../../$< $@
  25. $(LMBENCHDIR)/bin/graphene:
  26. mkdir -p $@
  27. ifeq ($(SYS),x86_64-linux-gnu)
  28. $(LMBENCHDIR)/bin/linux: $(wildcard $(LMBENCHDIR)/src/*.c) $(wildcard $(LMBENCHDIR)/src/*.h)
  29. $(MAKE) -C $(LMBENCHDIR)/src OS=linux CC="gcc -g"
  30. test-list: $(LMBENCHDIR)/bin/linux
  31. for f in `find $(LMBENCHDIR)/bin/linux/ \
  32. -type f -executable \
  33. $(subst *,\\*,$(addprefix -not -name ,$(NO_MANIFEST)))`; \
  34. do \
  35. echo $${f##*/}; \
  36. done > test-list
  37. .PHONY: pack
  38. $(addprefix host,$(HOST_BINARIES)):
  39. @echo "$(patsubst host%,%,$@) -> $@"
  40. @mkdir -p $(dir $@)
  41. @cp -LTrf $(patsubst host%,%,$@) $@
  42. pack: $(BINARIES)
  43. @../../../../../Scripts/pack_binaries.sh lmbench $^
  44. else
  45. all: $(addprefix /tmp/host,$(HOST_BINARIES))
  46. $(filter-out $(HOST_BINARIES),$(BINARIES)): .packed/lmbench.tar.gz
  47. tar -xmozf $< $@
  48. $(addprefix /tmp/host,$(HOST_BINARIES)): .packed/lmbench.tar.gz
  49. cd /tmp && tar -xmozf $(abspath $<) $(subst /tmp/,,$@)
  50. endif
  51. LMBENCHCONFIG = $(shell $(LMBENCHDIR)/scripts/config)
  52. $(LMBENCHDIR)/bin/linux/$(LMBENCHCONFIG):
  53. cd $(LMBENCHDIR)/scripts && env OS=linux ./config-run
  54. /tmp/hello: $(LMBENCHDIR)/bin/linux/hello
  55. cp -f $< $@
  56. test-native: $(LMBENCHDIR)/bin/linux $(LMBENCHDIR)/bin/linux/$(LMBENCHCONFIG) /tmp/hello
  57. cd $(LMBENCHDIR)/scripts && env OS=linux ./results
  58. $(LMBENCHDIR)/bin/graphene/$(LMBENCHCONFIG): $(LMBENCHDIR)/bin/linux/$(LMBENCHCONFIG)
  59. sed -e "s/OS=\"linux\"/OS=\"graphene\"/g" $< > $@
  60. test-graphene: all $(LMBENCHDIR)/bin/graphene/$(LMBENCHCONFIG) /tmp/hello
  61. cd $(LMBENCHDIR)/scripts && env OS=graphene ./results
  62. clean:
  63. rm -rf test-list
  64. $(MAKE) -C $(LMBENCHDIR) clean