github.com/sagernet/sing-box@v1.2.7/Makefile (about) 1 NAME = sing-box 2 COMMIT = $(shell git rev-parse --short HEAD) 3 TAGS ?= with_gvisor,with_quic,with_wireguard,with_utls,with_reality_server,with_clash_api 4 TAGS_TEST ?= with_gvisor,with_quic,with_wireguard,with_grpc,with_ech,with_utls,with_reality_server,with_shadowsocksr 5 6 GOHOSTOS = $(shell go env GOHOSTOS) 7 GOHOSTARCH = $(shell go env GOHOSTARCH) 8 VERSION=$(shell CGO_ENABLED=0 GOOS=$(GOHOSTOS) GOARCH=$(GOHOSTARCH) go run ./cmd/internal/read_tag) 9 10 PARAMS = -v -trimpath -tags "$(TAGS)" -ldflags "-X 'github.com/sagernet/sing-box/constant.Version=$(VERSION)' -s -w -buildid=" 11 MAIN = ./cmd/sing-box 12 PREFIX ?= $(shell go env GOPATH) 13 14 .PHONY: test release 15 16 build: 17 go build $(PARAMS) $(MAIN) 18 19 install: 20 go build -o $(PREFIX)/bin/$(NAME) $(PARAMS) $(MAIN) 21 22 fmt: 23 @gofumpt -l -w . 24 @gofmt -s -w . 25 @gci write --custom-order -s standard -s "prefix(github.com/sagernet/)" -s "default" . 26 27 fmt_install: 28 go install -v mvdan.cc/gofumpt@latest 29 go install -v github.com/daixiang0/gci@latest 30 31 lint: 32 GOOS=linux golangci-lint run ./... 33 GOOS=android golangci-lint run ./... 34 GOOS=windows golangci-lint run ./... 35 GOOS=darwin golangci-lint run ./... 36 GOOS=freebsd golangci-lint run ./... 37 38 lint_install: 39 go install -v github.com/golangci/golangci-lint/cmd/golangci-lint@latest 40 41 proto: 42 @go run ./cmd/internal/protogen 43 @gofumpt -l -w . 44 @gofumpt -l -w . 45 46 proto_install: 47 go install -v google.golang.org/protobuf/cmd/protoc-gen-go@latest 48 go install -v google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest 49 50 snapshot: 51 go run ./cmd/internal/build goreleaser release --rm-dist --snapshot || exit 1 52 mkdir dist/release 53 mv dist/*.tar.gz dist/*.zip dist/*.deb dist/*.rpm dist/release 54 ghr --delete --draft --prerelease -p 1 nightly dist/release 55 rm -r dist 56 57 release: 58 go run ./cmd/internal/build goreleaser release --rm-dist --skip-publish || exit 1 59 mkdir dist/release 60 mv dist/*.tar.gz dist/*.zip dist/*.deb dist/*.rpm dist/release 61 ghr --delete --draft --prerelease -p 3 $(shell git describe --tags) dist/release 62 rm -r dist 63 64 release_install: 65 go install -v github.com/goreleaser/goreleaser@latest 66 go install -v github.com/tcnksm/ghr@latest 67 68 test: 69 @go test -v ./... && \ 70 cd test && \ 71 go mod tidy && \ 72 go test -v -tags "$(TAGS_TEST)" . 73 74 test_stdio: 75 @go test -v ./... && \ 76 cd test && \ 77 go mod tidy && \ 78 go test -v -tags "$(TAGS_TEST),force_stdio" . 79 80 android: 81 go run ./cmd/internal/build_libbox -target android 82 83 ios: 84 go run ./cmd/internal/build_libbox -target ios 85 86 lib: 87 go run ./cmd/internal/build_libbox -target android 88 go run ./cmd/internal/build_libbox -target ios 89 90 lib_install: 91 go get -v -d 92 go install -v github.com/sagernet/gomobile/cmd/gomobile@v0.0.0-20230413023804-244d7ff07035 93 go install -v github.com/sagernet/gomobile/cmd/gobind@v0.0.0-20230413023804-244d7ff07035 94 95 clean: 96 rm -rf bin dist sing-box 97 rm -f $(shell go env GOPATH)/sing-box 98 99 update: 100 git fetch 101 git reset FETCH_HEAD --hard 102 git clean -fdx