1BSON_PKGS = $(shell etc/list_pkgs.sh ./bson) 2BSON_TEST_PKGS = $(shell etc/list_test_pkgs.sh ./bson) 3MONGO_PKGS = $(shell etc/list_pkgs.sh ./mongo) 4MONGO_TEST_PKGS = $(shell etc/list_test_pkgs.sh ./mongo) 5UNSTABLE_PKGS = $(shell etc/list_pkgs.sh ./x) 6UNSTABLE_TEST_PKGS = $(shell etc/list_test_pkgs.sh ./x) 7TAG_PKG = $(shell etc/list_pkgs.sh ./tag) 8TAG_TEST_PKG = $(shell etc/list_test_pkgs.sh ./tag) 9EXAMPLES_PKGS = $(shell etc/list_pkgs.sh ./examples) 10EXAMPLES_TEST_PKGS = $(shell etc/list_test_pkgs.sh ./examples) 11PKGS = $(BSON_PKGS) $(MONGO_PKGS) $(UNSTABLE_PKGS) $(TAG_PKG) $(EXAMPLES_PKGS) 12TEST_PKGS = $(BSON_TEST_PKGS) $(MONGO_TEST_PKGS) $(UNSTABLE_TEST_PKGS) $(TAG_PKG) $(EXAMPLES_TEST_PKGS) 13 14TEST_TIMEOUT = 600 15 16.PHONY: default 17default: check-env check-fmt vet build-examples lint errcheck test-cover test-race 18 19.PHONY: check-env 20check-env: 21 etc/check_env.sh 22 23.PHONY: doc 24doc: 25 godoc -http=:6060 -index 26 27.PHONY: build-examples 28build-examples: 29 go build $(BUILD_TAGS) ./examples/... ./x/network/examples/... 30 31.PHONY: build 32build: 33 go build $(filter-out ./core/auth/internal/gssapi,$(PKGS)) 34 35.PHONY: check-fmt 36check-fmt: 37 @gofmt -l -s $(PKGS) | read; if [ $$? == 0 ]; then echo "gofmt check failed for:"; gofmt -l -s $(PKGS) | sed -e 's/^/ - /'; exit 1; fi 38 39.PHONY: fmt 40fmt: 41 gofmt -l -s -w $(PKGS) 42 43.PHONY: lint 44lint: 45 golint $(PKGS) | ./etc/lintscreen.pl .lint-whitelist 46 47.PHONY: lint-add-whitelist 48lint-add-whitelist: 49 golint $(PKGS) | ./etc/lintscreen.pl -u .lint-whitelist 50 sort .lint-whitelist -o .lint-whitelist 51 52.PHONY: errcheck 53errcheck: 54 errcheck -exclude .errcheck-excludes ./bson/... ./mongo/... ./x/... 55 56.PHONY: test 57test: 58 go test $(BUILD_TAGS) -timeout $(TEST_TIMEOUT)s $(TEST_PKGS) 59 60.PHONY: test-cover 61test-cover: 62 go test $(BUILD_TAGS) -timeout $(TEST_TIMEOUT)s -cover $(COVER_ARGS) $(TEST_PKGS) 63 64.PHONY: test-race 65test-race: 66 go test $(BUILD_TAGS) -timeout $(TEST_TIMEOUT)s -race $(TEST_PKGS) 67 68.PHONY: test-short 69test-short: 70 go test $(BUILD_TAGS) -timeout $(TEST_TIMEOUT)s -short $(TEST_PKGS) 71 72.PHONY: update-bson-corpus-tests 73update-bson-corpus-tests: 74 etc/update-spec-tests.sh bson-corpus 75 76.PHONY: update-connection-string-tests 77update-connection-string-tests: 78 etc/update-spec-tests.sh connection-string 79 80.PHONY: update-crud-tests 81update-crud-tests: 82 etc/update-spec-tests.sh crud 83 84.PHONY: update-initial-dns-seedlist-discovery-tests 85update-initial-dns-seedlist-discovery-tests: 86 etc/update-spec-tests.sh initial-dns-seedlist-discovery 87 88.PHONY: update-max-staleness-tests 89update-max-staleness-tests: 90 etc/update-spec-tests.sh max-staleness 91 92.PHONY: update-server-discovery-and-monitoring-tests 93update-server-discovery-and-monitoring-tests: 94 etc/update-spec-tests.sh server-discovery-and-monitoring 95 96.PHONY: update-server-selection-tests 97update-server-selection-tests: 98 etc/update-spec-tests.sh server-selection 99 100.PHONY: update-notices 101update-notices: 102 etc/generate-notices.pl > THIRD-PARTY-NOTICES 103 104.PHONY: vet 105vet: 106 go vet -cgocall=false -composites=false -unusedstringmethods="Error" $(PKGS) 107 108 109# Evergreen specific targets 110.PHONY: evg-test 111evg-test: 112 go test $(BUILD_TAGS) -v -timeout $(TEST_TIMEOUT)s $(TEST_PKGS) > test.suite 113 114.PHONY: evg-test-auth 115evg-test-auth: 116 go run -tags gssapi ./x/network/examples/count/main.go -uri $(MONGODB_URI) 117 118# benchmark specific targets and support 119perf:driver-test-data.tar.gz 120 tar -zxf $< $(if $(eq $(UNAME_S),Darwin),-s , --transform=s)/data/perf/ 121 @touch $@ 122driver-test-data.tar.gz: 123 curl --retry 5 "https://s3.amazonaws.com/boxes.10gen.com/build/driver-test-data.tar.gz" -o driver-test-data.tar.gz --silent --max-time 120 124benchmark:perf 125 go test $(BUILD_TAGS) -benchmem -bench=. ./benchmark 126driver-benchmark:perf 127 @go run cmd/godriver-benchmark/main.go | tee perf.suite 128.PHONY:benchmark driver-benchmark 129