25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

62 lines
1.7 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 = p751toolbox p503toolbox sidh sike
  8. GOARCH ?=
  9. OPTS_GCCGO ?= -compiler gccgo -O2 -g
  10. OPTS ?=
  11. OPTS_TAGS ?= -tags=noasm
  12. NOASM ?=
  13. # -run="NonExistent" is set to make sure tests are not run before benchmarking
  14. BENCH_OPTS ?= -bench=. -run="NonExistent"
  15. # whether to be verbose
  16. V ?= 1
  17. ifeq ($(NOASM),1)
  18. OPTS+=$(OPTS_TAGS)
  19. endif
  20. ifeq ($(V),1)
  21. OPTS += -v # Be verbose
  22. OPTS += -gcflags=-m # Show results from inlining
  23. endif
  24. clean:
  25. rm -rf $(GOPATH_LOCAL)
  26. rm -rf coverage*.txt
  27. build_env:
  28. GOPATH=$(GOPATH_LOCAL) go get $(CSHAKE_PKG)
  29. mkdir -p $(GOPATH_LOCAL)/src/$(GOPATH_DIR)
  30. cp -rf etc $(GOPATH_LOCAL)/src/$(GOPATH_DIR)
  31. cp -rf internal $(GOPATH_LOCAL)/src/$(GOPATH_DIR)
  32. copy-target-%:
  33. cp -rf $* $(GOPATH_LOCAL)/src/$(GOPATH_DIR)
  34. prep_targets: build_env $(addprefix copy-target-, $(TARGETS))
  35. install-%: prep_targets
  36. GOPATH=$(GOPATH_LOCAL) go install $(OPTS) $(GOPATH_DIR)/$*
  37. test-%: prep_targets
  38. GOPATH=$(GOPATH_LOCAL) go test $(OPTS) $(GOPATH_DIR)/$*
  39. bench-%: prep_targets
  40. cd $*; GOPATH=$(GOPATH_LOCAL) go test $(OPTS) $(BENCH_OPTS)
  41. cover-%: prep_targets
  42. GOPATH=$(GOPATH_LOCAL) go test \
  43. -race -coverprofile=coverage_$*.txt -covermode=atomic $(OPTS) $(GOPATH_DIR)/$*
  44. cat coverage_$*.txt >> coverage.txt
  45. rm coverage_$*.txt
  46. bench: $(addprefix bench-, $(TARGETS))
  47. cover: $(addprefix cover-, $(TARGETS))
  48. install: $(addprefix install-, $(TARGETS))
  49. test: $(addprefix test-, $(TARGETS))