From 2626d6ed926745a6dda4301ceee79d00d44f696c Mon Sep 17 00:00:00 2001 From: fatedier Date: Fri, 12 Apr 2024 21:21:28 +0800 Subject: [PATCH] support linux/arm v6 (#4154) --- Makefile.cross-compiles | 27 +++++++++------ package.sh | 77 ++++++++++++++++++++++------------------- 2 files changed, 59 insertions(+), 45 deletions(-) diff --git a/Makefile.cross-compiles b/Makefile.cross-compiles index 8887cad..956f163 100644 --- a/Makefile.cross-compiles +++ b/Makefile.cross-compiles @@ -2,22 +2,29 @@ export PATH := $(PATH):`go env GOPATH`/bin export GO111MODULE=on LDFLAGS := -s -w -os-archs=darwin:amd64 darwin:arm64 freebsd:amd64 linux:amd64 linux:arm linux:arm64 windows:amd64 windows:arm64 linux:mips64 linux:mips64le linux:mips:softfloat linux:mipsle:softfloat linux:riscv64 android:arm64 +os-archs=darwin:amd64 darwin:arm64 freebsd:amd64 linux:amd64 linux:arm linux:arm:6 linux:arm64 windows:amd64 windows:arm64 linux:mips64 linux:mips64le linux:mips:softfloat linux:mipsle:softfloat linux:riscv64 android:arm64 all: build build: app app: - @$(foreach n, $(os-archs),\ - os=$(shell echo "$(n)" | cut -d : -f 1);\ - arch=$(shell echo "$(n)" | cut -d : -f 2);\ - gomips=$(shell echo "$(n)" | cut -d : -f 3);\ - target_suffix=$${os}_$${arch};\ - echo "Build $${os}-$${arch}...";\ - env CGO_ENABLED=0 GOOS=$${os} GOARCH=$${arch} GOMIPS=$${gomips} go build -trimpath -ldflags "$(LDFLAGS)" -tags frpc -o ./release/frpc_$${target_suffix} ./cmd/frpc;\ - env CGO_ENABLED=0 GOOS=$${os} GOARCH=$${arch} GOMIPS=$${gomips} go build -trimpath -ldflags "$(LDFLAGS)" -tags frps -o ./release/frps_$${target_suffix} ./cmd/frps;\ - echo "Build $${os}-$${arch} done";\ + @$(foreach n, $(os-archs), \ + os=$(shell echo "$(n)" | cut -d : -f 1); \ + arch=$(shell echo "$(n)" | cut -d : -f 2); \ + extra=$(shell echo "$(n)" | cut -d : -f 3); \ + flags=''; \ + target_suffix=$${os}_$${arch}; \ + if [ "$${os}" = "linux" ] && [ "$${arch}" = "arm" ] && [ "$${extra}" != "" ] ; then \ + flags=GOARM=$${extra}; \ + target_suffix=$${os}_$${arch}_$${extra}; \ + elif [ "$${os}" = "linux" ] && [ "$${arch}" = "mips" ] && [ "$${extra}" != "" ] ; then \ + flags=GOMIPS=$${extra}; \ + fi; \ + echo "Build $${os}-$${arch}$${extra:+ ($${extra})}..."; \ + env CGO_ENABLED=0 GOOS=$${os} GOARCH=$${arch} $${flags} go build -trimpath -ldflags "$(LDFLAGS)" -tags frpc -o ./release/frpc_$${target_suffix} ./cmd/frpc; \ + env CGO_ENABLED=0 GOOS=$${os} GOARCH=$${arch} $${flags} go build -trimpath -ldflags "$(LDFLAGS)" -tags frps -o ./release/frps_$${target_suffix} ./cmd/frps; \ + echo "Build $${os}-$${arch}$${extra:+ ($${extra})} done"; \ ) @mv ./release/frpc_windows_amd64 ./release/frpc_windows_amd64.exe @mv ./release/frps_windows_amd64 ./release/frps_windows_amd64.exe diff --git a/package.sh b/package.sh index 8d16f72..8bdcbc9 100755 --- a/package.sh +++ b/package.sh @@ -19,48 +19,55 @@ mkdir -p ./release/packages os_all='linux windows darwin freebsd android' arch_all='386 amd64 arm arm64 mips64 mips64le mips mipsle riscv64' +extra_all='_ 6' cd ./release for os in $os_all; do for arch in $arch_all; do - frp_dir_name="frp_${frp_version}_${os}_${arch}" - frp_path="./packages/frp_${frp_version}_${os}_${arch}" + for extra in $extra_all; do + suffix="${os}_${arch}" + if [ "x${extra}" != x"_" ]; then + suffix="${os}_${arch}_${extra}" + fi + frp_dir_name="frp_${frp_version}_${suffix}" + frp_path="./packages/frp_${frp_version}_${suffix}" - if [ "x${os}" = x"windows" ]; then - if [ ! -f "./frpc_${os}_${arch}.exe" ]; then - continue - fi - if [ ! -f "./frps_${os}_${arch}.exe" ]; then - continue - fi - mkdir ${frp_path} - mv ./frpc_${os}_${arch}.exe ${frp_path}/frpc.exe - mv ./frps_${os}_${arch}.exe ${frp_path}/frps.exe - else - if [ ! -f "./frpc_${os}_${arch}" ]; then - continue - fi - if [ ! -f "./frps_${os}_${arch}" ]; then - continue - fi - mkdir ${frp_path} - mv ./frpc_${os}_${arch} ${frp_path}/frpc - mv ./frps_${os}_${arch} ${frp_path}/frps - fi - cp ../LICENSE ${frp_path} - cp -f ../conf/frpc.toml ${frp_path} - cp -f ../conf/frps.toml ${frp_path} + if [ "x${os}" = x"windows" ]; then + if [ ! -f "./frpc_${os}_${arch}.exe" ]; then + continue + fi + if [ ! -f "./frps_${os}_${arch}.exe" ]; then + continue + fi + mkdir ${frp_path} + mv ./frpc_${os}_${arch}.exe ${frp_path}/frpc.exe + mv ./frps_${os}_${arch}.exe ${frp_path}/frps.exe + else + if [ ! -f "./frpc_${suffix}" ]; then + continue + fi + if [ ! -f "./frps_${suffix}" ]; then + continue + fi + mkdir ${frp_path} + mv ./frpc_${suffix} ${frp_path}/frpc + mv ./frps_${suffix} ${frp_path}/frps + fi + cp ../LICENSE ${frp_path} + cp -f ../conf/frpc.toml ${frp_path} + cp -f ../conf/frps.toml ${frp_path} - # packages - cd ./packages - if [ "x${os}" = x"windows" ]; then - zip -rq ${frp_dir_name}.zip ${frp_dir_name} - else - tar -zcf ${frp_dir_name}.tar.gz ${frp_dir_name} - fi - cd .. - rm -rf ${frp_path} + # packages + cd ./packages + if [ "x${os}" = x"windows" ]; then + zip -rq ${frp_dir_name}.zip ${frp_dir_name} + else + tar -zcf ${frp_dir_name}.tar.gz ${frp_dir_name} + fi + cd .. + rm -rf ${frp_path} + done done done