You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

65 regels
1.8 KiB

  1. # Constants
  2. MK_FILE_PATH = $(lastword $(MAKEFILE_LIST))
  3. PRJ_DIR = $(abspath $(dir $(MK_FILE_PATH)))
  4. GOPATH_LOCAL = $(PRJ_DIR)/build
  5. GOPATH_DIR = github.com/cloudflare/p751sidh
  6. CSHAKE_PKG ?= github.com/henrydcase/nobs/hash/sha3
  7. TARGETS = p503 p751 sidh sike
  8. GO ?= go
  9. GOARCH ?=
  10. OPTS_GCCGO ?= -compiler gccgo -O2 -g
  11. OPTS ?=
  12. OPTS_TAGS ?= -tags=noasm
  13. NOASM ?=
  14. # -run="NonExistent" is set to make sure tests are not run before benchmarking
  15. BENCH_OPTS ?= -bench=. -run="NonExistent" -benchmem
  16. # whether to be verbose
  17. V ?= 1
  18. ifeq ($(NOASM),1)
  19. OPTS+=$(OPTS_TAGS)
  20. endif
  21. ifeq ($(V),1)
  22. OPTS += -v # Be verbose
  23. BENCH_OPTS += -gcflags=-m # Show results from inlining
  24. endif
  25. all: test
  26. clean:
  27. rm -rf $(GOPATH_LOCAL)
  28. rm -rf coverage*.txt
  29. build_env:
  30. GOPATH=$(GOPATH_LOCAL) $(GO) get $(CSHAKE_PKG)
  31. mkdir -p $(GOPATH_LOCAL)/src/$(GOPATH_DIR)
  32. cp -rf internal $(GOPATH_LOCAL)/src/$(GOPATH_DIR)
  33. cp -rf etc $(GOPATH_LOCAL)/src/$(GOPATH_DIR)
  34. copy-target-%:
  35. cp -rf $* $(GOPATH_LOCAL)/src/$(GOPATH_DIR)
  36. prep_targets: build_env $(addprefix copy-target-, $(TARGETS))
  37. install-%: prep_targets
  38. GOPATH=$(GOPATH_LOCAL) $(GO) install $(OPTS) $(GOPATH_DIR)/$*
  39. test-%: prep_targets
  40. GOPATH=$(GOPATH_LOCAL) $(GO) vet $(GOPATH_DIR)/$*
  41. GOPATH=$(GOPATH_LOCAL) $(GO) test $(OPTS) $(GOPATH_DIR)/$*
  42. bench-%: prep_targets
  43. GOMAXPROCS=1 GOPATH=$(GOPATH_LOCAL) $(GO) test $(OPTS) $(GOPATH_DIR)/$* $(BENCH_OPTS)
  44. cover-%: prep_targets
  45. GOPATH=$(GOPATH_LOCAL) $(GO) test \
  46. -race -coverprofile=coverage_$*.txt -covermode=atomic $(OPTS) $(GOPATH_DIR)/$*
  47. cat coverage_$*.txt >> coverage.txt
  48. rm coverage_$*.txt
  49. bench: $(addprefix bench-, $(TARGETS))
  50. cover: $(addprefix cover-, $(TARGETS))
  51. install: $(addprefix install-, $(TARGETS))
  52. test: $(addprefix test-, $(TARGETS))