|
13 | 13 | CRONET_GO_VERSION := $(shell cat hiddify-sing-box/.github/CRONET_GO_VERSION) |
14 | 14 | TAGS=with_gvisor,with_quic,with_wireguard,with_utls,with_clash_api,with_grpc,with_awg,with_naive_outbound |
15 | 15 | IOS_ADD_TAGS=with_dhcp,with_low_memory,with_conntrack |
16 | | -GOBUILDLIB=CGO_ENABLED=1 go build -trimpath -tags $(TAGS) -ldflags="-w -s" -buildmode=c-shared |
| 16 | +GOBUILDLIB=CGO_ENABLED=1 go build -trimpath -tags $(TAGS) -ldflags="-w -s -checklinkname=0" -buildmode=c-shared |
| 17 | +GOBUILDLIBWINDOWS=CGO_ENABLED=1 go build -trimpath -tags $(TAGS),with_purego,badlinkname,tfogo_checklinkname0 -ldflags="-w -s -checklinkname=0" -buildmode=c-shared |
17 | 18 | GOBUILDSRV=CGO_ENABLED=1 go build -ldflags "-s -w" -trimpath -tags $(TAGS) |
18 | 19 |
|
| 20 | +CRONET_DIR=./cronet |
19 | 21 | .PHONY: protos |
20 | 22 | protos: |
21 | 23 | go install github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc@latest |
@@ -64,47 +66,69 @@ webui: |
64 | 66 | windows-amd64: prepare |
65 | 67 | rm -rf $(BINDIR)/* |
66 | 68 | go run -v "github.com/sagernet/cronet-go/cmd/build-naive@$(CRONET_GO_VERSION)" extract-lib --target windows/amd64 -o $(BINDIR)/ |
67 | | - cp $(BINDIR)/libcronet.dll ./libcronet.dll |
68 | | - env GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc CGO_LDFLAGS="libcronet.dll" $(GOBUILDLIB) -o $(BINDIR)/$(LIBNAME).dll ./platform/desktop |
| 69 | + env GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc $(GOBUILDLIBWINDOWS) -o $(BINDIR)/$(LIBNAME).dll ./platform/desktop |
69 | 70 | go install -mod=readonly github.com/akavel/rsrc@latest ||echo "rsrc error in installation" |
70 | 71 | go run ./cli tunnel exit |
71 | 72 | cp $(BINDIR)/$(LIBNAME).dll ./$(LIBNAME).dll |
72 | 73 | $$(go env GOPATH)/bin/rsrc -ico ./assets/hiddify-cli.ico -o ./cmd/bydll/cli.syso ||echo "rsrc error in syso" |
73 | | - env GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc CGO_LDFLAGS="$(LIBNAME).dll libcronet.dll" $(GOBUILDSRV) -o $(BINDIR)/$(CLINAME).exe ./cmd/bydll |
| 74 | + env GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc CGO_LDFLAGS="$(LIBNAME).dll" $(GOBUILDSRV) -o $(BINDIR)/$(CLINAME).exe ./cmd/bydll |
74 | 75 | rm ./*.dll |
75 | 76 | make webui |
76 | 77 |
|
77 | 78 |
|
78 | | -linux-amd64: prepare |
79 | | - mkdir -p $(BINDIR)/lib |
80 | | - rm -rf $(BINDIR)/lib/* |
81 | | - go run -v "github.com/sagernet/cronet-go/cmd/build-naive@$(CRONET_GO_VERSION)" extract-lib --target linux/amd64 -o $(BINDIR)/lib/ |
82 | | - mkdir -p lib |
83 | | - cp $(BINDIR)/lib/libcronet.so ./lib/libcronet.so |
84 | | - env GOOS=linux GOARCH=amd64 CGO_LDFLAGS="./lib/libcronet.so" $(GOBUILDLIB) -o $(BINDIR)/lib/$(LIBNAME).so ./platform/desktop |
85 | | - cp $(BINDIR)/lib/$(LIBNAME).so ./lib/$(LIBNAME).so |
86 | | - env GOOS=linux GOARCH=amd64 CGO_LDFLAGS="./lib/$(LIBNAME).so ./lib/libcronet.so" $(GOBUILDSRV) -o $(BINDIR)/$(CLINAME) ./cmd/bydll |
87 | | - rm -rf ./lib |
88 | | - chmod +x $(BINDIR)/$(CLINAME) |
89 | | - make webui |
90 | 79 |
|
91 | | -linux-arm64: prepare |
| 80 | +################################ |
| 81 | +# Install Cronet + Generate Env |
| 82 | +################################ |
| 83 | +install_cronet: |
| 84 | +# rm -rf $(CRONET_DIR) |
| 85 | + git init $(CRONET_DIR) || echo "dir exist" |
| 86 | + cd $(CRONET_DIR) && \ |
| 87 | + git remote add origin https://github.com/sagernet/cronet-go.git ||echo "remote exist"; \ |
| 88 | + git fetch --depth=1 origin $(CRONET_GO_VERSION) && \ |
| 89 | + git checkout FETCH_HEAD && \ |
| 90 | + git submodule update --init --recursive --depth=1 && \ |
| 91 | + if [ "$(VARIANT)" = "musl" ]; then \ |
| 92 | + go run ./cmd/build-naive --target=linux/$(ARCH) --libc=musl download-toolchain && \ |
| 93 | + go run ./cmd/build-naive --target=linux/$(ARCH) --libc=musl env > cronet.env; \ |
| 94 | + else \ |
| 95 | + go run ./cmd/build-naive --target=linux/$(ARCH) download-toolchain && \ |
| 96 | + go run ./cmd/build-naive --target=linux/$(ARCH) env > cronet.env; \ |
| 97 | + fi |
| 98 | + |
| 99 | +################################ |
| 100 | +# Generic Linux Builder |
| 101 | +################################ |
| 102 | +linux-%: |
| 103 | + $(MAKE) ARCH=$* build-linux |
| 104 | + |
| 105 | +define load_cronet_env |
| 106 | +set -a; \ |
| 107 | +while IFS= read -r line; do \ |
| 108 | + key=$${line%%=*}; \ |
| 109 | + value=$${line#*=}; \ |
| 110 | + export "$$key=$$value"; \ |
| 111 | +done < $(CRONET_DIR)/cronet.env; \ |
| 112 | +set +a; |
| 113 | +endef |
| 114 | +build-linux: prepare install_cronet |
92 | 115 | mkdir -p $(BINDIR)/lib |
93 | | - rm -rf $(BINDIR)/lib/* |
94 | | - go run -v "github.com/sagernet/cronet-go/cmd/build-naive@$(CRONET_GO_VERSION)" extract-lib --target linux/arm64 -o $(BINDIR)/lib/ |
95 | | - mkdir -p lib |
96 | | - cp $(BINDIR)/lib/libcronet.so ./lib/libcronet.so |
97 | | - env GOOS=linux GOARCH=arm64 $(GOBUILDLIB) -o $(BINDIR)/lib/$(LIBNAME).so ./platform/desktop |
| 116 | + $(load_cronet_env) |
| 117 | + GOOS=linux GOARCH=$(ARCH) CGO_ENABLED=1 $(GOBUILDLIB) -o $(BINDIR)/lib/$(LIBNAME).so ./platform/desktop |
| 118 | + |
98 | 119 | cp $(BINDIR)/lib/$(LIBNAME).so ./lib/$(LIBNAME).so |
99 | | - env GOOS=linux GOARCH=arm64 CGO_LDFLAGS="./lib/$(LIBNAME).so ./lib/libcronet.so" $(GOBUILDSRV) -o $(BINDIR)/$(CLINAME) ./cmd/bydll |
100 | | - rm -rf ./lib |
| 120 | + |
| 121 | + GOOS=linux GOARCH=$(ARCH) CGO_ENABLED=1 CGO_LDFLAGS="./lib/$(LIBNAME).so -Wl,-rpath,\$$ORIGIN/lib -fuse-ld=lld" \ |
| 122 | + $(GOBUILDSRV) -o $(BINDIR)/$(CLINAME) ./cmd/bydll |
| 123 | + |
101 | 124 | chmod +x $(BINDIR)/$(CLINAME) |
102 | 125 | make webui |
103 | 126 |
|
104 | 127 |
|
105 | | -linux-custom: prepare |
| 128 | +linux-custom: prepare install_cronet |
106 | 129 | mkdir -p $(BINDIR)/ |
107 | 130 | #env GOARCH=mips $(GOBUILDSRV) -o $(BINDIR)/$(CLINAME) ./cmd/ |
| 131 | + $(load_cronet_env) |
108 | 132 | go build -ldflags "-s -w" -trimpath -tags $(TAGS) -o $(BINDIR)/$(CLINAME) ./cmd/main |
109 | 133 | chmod +x $(BINDIR)/$(CLINAME) |
110 | 134 | make webui |
|
0 commit comments