github.com/metacubex/mihomo@v1.18.5/Makefile (about) 1 NAME=mihomo 2 BINDIR=bin 3 BRANCH=$(shell git branch --show-current) 4 ifeq ($(BRANCH),Alpha) 5 VERSION=alpha-$(shell git rev-parse --short HEAD) 6 else ifeq ($(BRANCH),Beta) 7 VERSION=beta-$(shell git rev-parse --short HEAD) 8 else ifeq ($(BRANCH),) 9 VERSION=$(shell git describe --tags) 10 else 11 VERSION=$(shell git rev-parse --short HEAD) 12 endif 13 14 BUILDTIME=$(shell date -u) 15 GOBUILD=CGO_ENABLED=0 go build -tags with_gvisor -trimpath -ldflags '-X "github.com/metacubex/mihomo/constant.Version=$(VERSION)" \ 16 -X "github.com/metacubex/mihomo/constant.BuildTime=$(BUILDTIME)" \ 17 -w -s -buildid=' 18 19 PLATFORM_LIST = \ 20 darwin-amd64-compatible \ 21 darwin-amd64 \ 22 darwin-arm64 \ 23 linux-amd64-compatible \ 24 linux-amd64 \ 25 linux-armv5 \ 26 linux-armv6 \ 27 linux-armv7 \ 28 linux-arm64 \ 29 linux-mips64 \ 30 linux-mips64le \ 31 linux-mips-softfloat \ 32 linux-mips-hardfloat \ 33 linux-mipsle-softfloat \ 34 linux-mipsle-hardfloat \ 35 linux-riscv64 \ 36 linux-loong64 \ 37 android-arm64 \ 38 freebsd-386 \ 39 freebsd-amd64 \ 40 freebsd-arm64 41 42 WINDOWS_ARCH_LIST = \ 43 windows-386 \ 44 windows-amd64-compatible \ 45 windows-amd64 \ 46 windows-arm64 \ 47 windows-arm32v7 48 49 all:linux-amd64 linux-arm64\ 50 darwin-amd64 darwin-arm64\ 51 windows-amd64 windows-arm64\ 52 53 54 darwin-all: darwin-amd64 darwin-arm64 55 56 docker: 57 GOAMD64=v1 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 58 59 darwin-amd64: 60 GOARCH=amd64 GOOS=darwin GOAMD64=v3 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 61 62 darwin-amd64-compatible: 63 GOARCH=amd64 GOOS=darwin GOAMD64=v1 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 64 65 darwin-arm64: 66 GOARCH=arm64 GOOS=darwin $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 67 68 linux-386: 69 GOARCH=386 GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 70 71 linux-amd64: 72 GOARCH=amd64 GOOS=linux GOAMD64=v3 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 73 74 linux-amd64-compatible: 75 GOARCH=amd64 GOOS=linux GOAMD64=v1 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 76 77 linux-arm64: 78 GOARCH=arm64 GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 79 80 linux-armv5: 81 GOARCH=arm GOOS=linux GOARM=5 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 82 83 linux-armv6: 84 GOARCH=arm GOOS=linux GOARM=6 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 85 86 linux-armv7: 87 GOARCH=arm GOOS=linux GOARM=7 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 88 89 linux-mips-softfloat: 90 GOARCH=mips GOMIPS=softfloat GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 91 92 linux-mips-hardfloat: 93 GOARCH=mips GOMIPS=hardfloat GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 94 95 linux-mipsle-softfloat: 96 GOARCH=mipsle GOMIPS=softfloat GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 97 98 linux-mipsle-hardfloat: 99 GOARCH=mipsle GOMIPS=hardfloat GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 100 101 linux-mips64: 102 GOARCH=mips64 GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 103 104 linux-mips64le: 105 GOARCH=mips64le GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 106 107 linux-riscv64: 108 GOARCH=riscv64 GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 109 110 linux-loong64: 111 GOARCH=loong64 GOOS=linux $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 112 113 android-arm64: 114 GOARCH=arm64 GOOS=android $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 115 116 freebsd-386: 117 GOARCH=386 GOOS=freebsd $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 118 119 freebsd-amd64: 120 GOARCH=amd64 GOOS=freebsd GOAMD64=v3 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 121 122 freebsd-arm64: 123 GOARCH=arm64 GOOS=freebsd $(GOBUILD) -o $(BINDIR)/$(NAME)-$@ 124 125 windows-386: 126 GOARCH=386 GOOS=windows $(GOBUILD) -o $(BINDIR)/$(NAME)-$@.exe 127 128 windows-amd64: 129 GOARCH=amd64 GOOS=windows GOAMD64=v3 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@.exe 130 131 windows-amd64-compatible: 132 GOARCH=amd64 GOOS=windows GOAMD64=v1 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@.exe 133 134 windows-arm64: 135 GOARCH=arm64 GOOS=windows $(GOBUILD) -o $(BINDIR)/$(NAME)-$@.exe 136 137 windows-arm32v7: 138 GOARCH=arm GOOS=windows GOARM=7 $(GOBUILD) -o $(BINDIR)/$(NAME)-$@.exe 139 140 gz_releases=$(addsuffix .gz, $(PLATFORM_LIST)) 141 zip_releases=$(addsuffix .zip, $(WINDOWS_ARCH_LIST)) 142 143 $(gz_releases): %.gz : % 144 chmod +x $(BINDIR)/$(NAME)-$(basename $@) 145 gzip -f -S -$(VERSION).gz $(BINDIR)/$(NAME)-$(basename $@) 146 147 $(zip_releases): %.zip : % 148 zip -m -j $(BINDIR)/$(NAME)-$(basename $@)-$(VERSION).zip $(BINDIR)/$(NAME)-$(basename $@).exe 149 150 all-arch: $(PLATFORM_LIST) $(WINDOWS_ARCH_LIST) 151 152 releases: $(gz_releases) $(zip_releases) 153 154 vet: 155 go test ./... 156 157 lint: 158 golangci-lint run ./... 159 160 clean: 161 rm $(BINDIR)/* 162 163 CLANG ?= clang-14 164 CFLAGS := -O2 -g -Wall -Werror $(CFLAGS) 165 166 ebpf: export BPF_CLANG := $(CLANG) 167 ebpf: export BPF_CFLAGS := $(CFLAGS) 168 ebpf: 169 cd component/ebpf/ && go generate ./...