1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- NAME = sing-box
- COMMIT = $(shell git rev-parse --short HEAD)
- TAGS ?= with_gvisor,with_quic,with_wireguard,with_utls,with_reality_server,with_clash_api
- TAGS_TEST ?= with_gvisor,with_quic,with_wireguard,with_grpc,with_ech,with_utls,with_reality_server,with_shadowsocksr
- GOHOSTOS = $(shell go env GOHOSTOS)
- GOHOSTARCH = $(shell go env GOHOSTARCH)
- VERSION=$(shell CGO_ENABLED=0 GOOS=$(GOHOSTOS) GOARCH=$(GOHOSTARCH) go run ./cmd/internal/read_tag)
- PARAMS = -v -trimpath -tags "$(TAGS)" -ldflags "-X 'github.com/sagernet/sing-box/constant.Version=$(VERSION)' -s -w -buildid="
- MAIN = ./cmd/sing-box
- PREFIX ?= $(shell go env GOPATH)
- .PHONY: test release
- build:
- go build $(PARAMS) $(MAIN)
- install:
- go build -o $(PREFIX)/bin/$(NAME) $(PARAMS) $(MAIN)
- fmt:
- @gofumpt -l -w .
- @gofmt -s -w .
- @gci write --custom-order -s "standard,prefix(github.com/sagernet/),default" .
- fmt_install:
- go install -v mvdan.cc/gofumpt@latest
- go install -v github.com/daixiang0/gci@latest
- lint:
- GOOS=linux golangci-lint run ./...
- GOOS=android golangci-lint run ./...
- GOOS=windows golangci-lint run ./...
- GOOS=darwin golangci-lint run ./...
- GOOS=freebsd golangci-lint run ./...
- lint_install:
- go install -v github.com/golangci/golangci-lint/cmd/golangci-lint@latest
- proto:
- @go run ./cmd/internal/protogen
- @gofumpt -l -w .
- @gofumpt -l -w .
- proto_install:
- go install -v google.golang.org/protobuf/cmd/protoc-gen-go@latest
- go install -v google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
- snapshot:
- go run ./cmd/internal/build goreleaser release --rm-dist --snapshot || exit 1
- mkdir dist/release
- mv dist/*.tar.gz dist/*.zip dist/*.deb dist/*.rpm dist/release
- ghr --delete --draft --prerelease -p 1 nightly dist/release
- rm -r dist
- release:
- go run ./cmd/internal/build goreleaser release --rm-dist --skip-publish || exit 1
- mkdir dist/release
- mv dist/*.tar.gz dist/*.zip dist/*.deb dist/*.rpm dist/release
- ghr --delete --draft --prerelease -p 3 $(shell git describe --tags) dist/release
- rm -r dist
- release_install:
- go install -v github.com/goreleaser/goreleaser@latest
- go install -v github.com/tcnksm/ghr@latest
- test:
- @go test -v ./... && \
- cd test && \
- go mod tidy && \
- go test -v -tags "$(TAGS_TEST)" .
- test_stdio:
- @go test -v ./... && \
- cd test && \
- go mod tidy && \
- go test -v -tags "$(TAGS_TEST),force_stdio" .
- lib:
- go run ./cmd/internal/build_libbox
- lib_install:
- go get -v -d
- go install -v github.com/sagernet/gomobile/cmd/[email protected]
- go install -v github.com/sagernet/gomobile/cmd/[email protected]
- clean:
- rm -rf bin dist sing-box
- rm -f $(shell go env GOPATH)/sing-box
- update:
- git fetch
- git reset FETCH_HEAD --hard
- git clean -fdx
|