diff --git a/.dockerignore b/.dockerignore index d234be1..370098f 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,5 +2,5 @@ .gitignore # Other -bin/* +build/* docs/* diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 15b9a0b..62f7263 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -52,6 +52,6 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - files: bin/* + files: build/* draft: true prerelease: true diff --git a/.gitignore b/.gitignore index 14712fb..b044d80 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,7 @@ *.dll *.so *.dylib -bin/ +build/ # IDE .idea/ diff --git a/Dockerfile b/Dockerfile index 483aaf0..8222826 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ COPY . /tun2socks-src RUN apk add --no-cache make git \ && go mod download \ && make tun2socks \ - && mv ./bin/tun2socks /tun2socks + && mv ./build/tun2socks /tun2socks FROM alpine:latest LABEL org.opencontainers.image.source="https://github.com/xjasonlyu/tun2socks" diff --git a/Makefile b/Makefile index 23f7812..3be2bb2 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,18 @@ -BINARY = tun2socks -OUTPUT = bin +BINARY := tun2socks +MODULE := github.com/xjasonlyu/tun2socks -BUILD_FLAGS = -v -BUILD_TAGS = -BUILD_COMMIT = $(shell git describe --dirty --always) -BUILD_VERSION = $(shell git describe --abbrev=0 --tags HEAD) +BUILD_DIR := build +BUILD_TAGS := +BUILD_FLAGS := -v +BUILD_COMMIT := $(shell git describe --dirty --always) +BUILD_VERSION := $(shell git describe --abbrev=0 --tags HEAD) -CGO_ENABLED = 0 -GO111MODULE = on +CGO_ENABLED := 0 +GO111MODULE := on LDFLAGS += -w -s -buildid= -LDFLAGS += -X "github.com/xjasonlyu/tun2socks/constant.Version=$(BUILD_VERSION)" -LDFLAGS += -X "github.com/xjasonlyu/tun2socks/constant.GitCommit=$(BUILD_COMMIT)" +LDFLAGS += -X "$(MODULE)/constant.Version=$(BUILD_VERSION)" +LDFLAGS += -X "$(MODULE)/constant.GitCommit=$(BUILD_COMMIT)" GO_BUILD = GO111MODULE=$(GO111MODULE) CGO_ENABLED=$(CGO_ENABLED) \ go build $(BUILD_FLAGS) -ldflags '$(LDFLAGS)' -tags '$(BUILD_TAGS)' -trimpath @@ -24,52 +25,45 @@ PLATFORM_LIST = \ linux-arm64 \ openbsd-amd64 \ openbsd-arm64 \ - -WINDOWS_ARCH_LIST = \ windows-amd64 \ all: linux-amd64 darwin-amd64 windows-amd64 tun2socks: - $(GO_BUILD) -o $(OUTPUT)/$(BINARY) + $(GO_BUILD) -o $(BUILD_DIR)/$(BINARY) darwin-amd64: - GOARCH=amd64 GOOS=darwin $(GO_BUILD) -o $(OUTPUT)/$(BINARY)-$@ + GOARCH=amd64 GOOS=darwin $(GO_BUILD) -o $(BUILD_DIR)/$(BINARY)-$@ freebsd-amd64: - GOARCH=amd64 GOOS=freebsd $(GO_BUILD) -o $(OUTPUT)/$(BINARY)-$@ + GOARCH=amd64 GOOS=freebsd $(GO_BUILD) -o $(BUILD_DIR)/$(BINARY)-$@ freebsd-arm64: - GOARCH=arm64 GOOS=freebsd $(GO_BUILD) -o $(OUTPUT)/$(BINARY)-$@ + GOARCH=arm64 GOOS=freebsd $(GO_BUILD) -o $(BUILD_DIR)/$(BINARY)-$@ linux-amd64: - GOARCH=amd64 GOOS=linux $(GO_BUILD) -o $(OUTPUT)/$(BINARY)-$@ + GOARCH=amd64 GOOS=linux $(GO_BUILD) -o $(BUILD_DIR)/$(BINARY)-$@ linux-arm64: - GOARCH=arm64 GOOS=linux $(GO_BUILD) -o $(OUTPUT)/$(BINARY)-$@ + GOARCH=arm64 GOOS=linux $(GO_BUILD) -o $(BUILD_DIR)/$(BINARY)-$@ openbsd-amd64: - GOARCH=amd64 GOOS=openbsd $(GO_BUILD) -o $(OUTPUT)/$(BINARY)-$@ + GOARCH=amd64 GOOS=openbsd $(GO_BUILD) -o $(BUILD_DIR)/$(BINARY)-$@ openbsd-arm64: - GOARCH=arm64 GOOS=openbsd $(GO_BUILD) -o $(OUTPUT)/$(BINARY)-$@ + GOARCH=arm64 GOOS=openbsd $(GO_BUILD) -o $(BUILD_DIR)/$(BINARY)-$@ windows-amd64: - GOARCH=amd64 GOOS=windows $(GO_BUILD) -o $(OUTPUT)/$(BINARY)-$@.exe - -gz_releases=$(addsuffix .gz, $(PLATFORM_LIST)) -zip_releases=$(addsuffix .zip, $(WINDOWS_ARCH_LIST)) + GOARCH=amd64 GOOS=windows $(GO_BUILD) -o $(BUILD_DIR)/$(BINARY)-$@.exe -$(gz_releases): %.gz : % - chmod +x $(OUTPUT)/$(BINARY)-$(basename $@) - gzip -f -S .gz $(OUTPUT)/$(BINARY)-$(basename $@) +zip_releases := $(addsuffix .zip, $(PLATFORM_LIST)) -$(zip_releases): %.zip : % - zip -m -j $(OUTPUT)/$(BINARY)-$(basename $@).zip $(OUTPUT)/$(BINARY)-$(basename $@).exe +$(zip_releases): %.zip: % + @zip -m -j $(BUILD_DIR)/$(BINARY)-$(basename $@).zip $(BUILD_DIR)/$(BINARY)-$(basename $@)* -all-arch: $(PLATFORM_LIST) $(WINDOWS_ARCH_LIST) +all-arch: $(PLATFORM_LIST) -releases: $(gz_releases) $(zip_releases) +releases: $(zip_releases) clean: - rm $(OUTPUT)/* + rm -rf $(BUILD_DIR)