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