Files
tg-ws-proxy-go/Makefile
spatiumstas ffb2803485 Release 0.8
2026-06-16 19:40:11 +03:00

168 lines
5.8 KiB
Makefile

-include .config
SHELL := /bin/bash
PKG_NAME := tg-ws-proxy
PKG_DESCRIPTION := Telegram MTProto WS bridge proxy (Go binary)
PKG_LICENSE := MIT
PKG_SECTION := net
PKG_MAINTAINER := tg-ws-proxy maintainers
PKG_VERSION := $(shell cat VERSION)
PKG_REVISION ?= 1
PLATFORM ?=
TARGET ?=
GOOS ?=
GOARCH ?=
GOARM ?=
GOMIPS ?=
GO386 ?=
CGO_ENABLED ?= 0
GO_PROXY_DIR ?= src
ifeq ($(PLATFORM),entware)
PKG_DEPENDS := ca-certificates
else ifeq ($(PLATFORM),openwrt)
PKG_DEPENDS := ca-certificates
else
$(error Unsupported PLATFORM='$(PLATFORM)'; expected entware or openwrt)
endif
BUILDS_DIR := ./.build
BUILD_DIR := $(BUILDS_DIR)/$(PLATFORM)_$(TARGET)
COMPILE_DIR := $(BUILD_DIR)/compile
ROOT_DIR := $(BUILD_DIR)/root
ROOT_APK_DIR := $(BUILD_DIR)/root_apk
CONTROL_DIR := $(BUILD_DIR)/control
APK_DIR := $(BUILD_DIR)/apk
APK_ARCH ?= $(TARGET)
BUILD_KEY_APK_SEC ?=
ifeq ($(PLATFORM),entware)
BIN_DIR := $(ROOT_DIR)/opt/bin
ETC_DIR := $(ROOT_DIR)/opt/etc
VAR_DIR := $(ROOT_DIR)/opt/var
else
BIN_DIR := $(ROOT_DIR)/usr/bin
ETC_DIR := $(ROOT_DIR)/etc
VAR_DIR := $(ROOT_DIR)/var
endif
define _copy_files
if [ -d $(1)/_ipk/control ]; then mkdir -p "$(CONTROL_DIR)"; cp -r $(1)/_ipk/control/* "$(CONTROL_DIR)"; fi
if [ -d $(1)/_apk ]; then mkdir -p "$(APK_DIR)"; cp -r $(1)/_apk/* "$(APK_DIR)"; fi
if [ -d $(1)/bin ]; then mkdir -p "$(BIN_DIR)"; cp -r $(1)/bin/* "$(BIN_DIR)"; fi
if [ -d $(1)/etc ]; then mkdir -p "$(ETC_DIR)"; cp -r $(1)/etc/* "$(ETC_DIR)"; fi
if [ -d $(1)/var ]; then mkdir -p "$(VAR_DIR)"; cp -r $(1)/var/* "$(VAR_DIR)"; fi
endef
PACKAGE_FILE := $(BUILDS_DIR)/$(PKG_NAME)_$(PKG_VERSION)-$(PKG_REVISION)_$(PLATFORM)_$(TARGET).ipk
APK_PACKAGE_FILE := $(BUILDS_DIR)/$(PKG_NAME)_$(PKG_VERSION)-r$(PKG_REVISION)_$(PLATFORM)_$(TARGET).apk
.PHONY: all clean build prepare_files package package_ipk package_apk
all: build package
clean:
rm -rf $(BUILDS_DIR)
build:
mkdir -p "$(COMPILE_DIR)"
cd "$(GO_PROXY_DIR)" && \
GOOS="$(GOOS)" GOARCH="$(GOARCH)" GOARM="$(GOARM)" GOMIPS="$(GOMIPS)" GO386="$(GO386)" CGO_ENABLED="$(CGO_ENABLED)" \
go build -trimpath -ldflags="-w -s" -o "$(abspath $(COMPILE_DIR))/tg-ws-proxy" .
ifneq ($(filter $(GOARCH),riscv64 mips64 mips64le loong64),$(GOARCH))
upx -9 --lzma "$(COMPILE_DIR)/tg-ws-proxy"
endif
prepare_files: build
rm -rf "$(ROOT_DIR)" "$(CONTROL_DIR)"
mkdir -p "$(BIN_DIR)" "$(CONTROL_DIR)"
cp "$(COMPILE_DIR)/tg-ws-proxy" "$(BIN_DIR)/tg-ws-proxy"
$(call _copy_files,./files/common)
$(if $(filter entware,$(PLATFORM)), $(call _copy_files,./files/entware))
$(if $(filter openwrt,$(PLATFORM)), $(call _copy_files,./files/openwrt))
if [ -d "$(CONTROL_DIR)" ]; then find "$(CONTROL_DIR)" -type f -exec dos2unix {} +; fi
if [ -d "$(ETC_DIR)" ]; then find "$(ETC_DIR)" -type f -exec dos2unix {} +; fi
if [ -d "$(ETC_DIR)/init.d" ]; then find "$(ETC_DIR)/init.d" -type f -exec dos2unix {} +; fi
echo "Package: $(PKG_NAME)" > "$(CONTROL_DIR)/control"
echo "Version: $(PKG_VERSION)-$(PKG_REVISION)" >> "$(CONTROL_DIR)/control"
echo "Depends: $(PKG_DEPENDS)" >> "$(CONTROL_DIR)/control"
echo "Section: $(PKG_SECTION)" >> "$(CONTROL_DIR)/control"
echo "Architecture: $(TARGET)" >> "$(CONTROL_DIR)/control"
echo "License: $(PKG_LICENSE)" >> "$(CONTROL_DIR)/control"
echo "Maintainer: $(PKG_MAINTAINER)" >> "$(CONTROL_DIR)/control"
echo "Description: $(PKG_DESCRIPTION)" >> "$(CONTROL_DIR)/control"
chmod +x "$(BIN_DIR)/tg-ws-proxy"
if [ -d "$(ETC_DIR)/init.d" ]; then chmod +x "$(ETC_DIR)/init.d"/*; fi
if [ -f "$(CONTROL_DIR)/prerm" ]; then chmod +x "$(CONTROL_DIR)/prerm"; fi
if [ -f "$(CONTROL_DIR)/postinst" ]; then chmod +x "$(CONTROL_DIR)/postinst"; fi
if [ -f "$(CONTROL_DIR)/postrm" ]; then chmod +x "$(CONTROL_DIR)/postrm"; fi
package: package_ipk
ifeq ($(PLATFORM),openwrt)
package: package_apk
endif
package_ipk: prepare_files
mkdir -p "$(BUILDS_DIR)"
echo 2.0 > "$(BUILD_DIR)/debian-binary"
tar -C "$(CONTROL_DIR)" -czf "$(BUILD_DIR)/control.tar.gz" --owner=0 --group=0 .
tar -C "$(ROOT_DIR)" -czf "$(BUILD_DIR)/data.tar.gz" --owner=0 --group=0 .
tar -C "$(BUILD_DIR)" -czf "$(PACKAGE_FILE)" --owner=0 --group=0 debian-binary control.tar.gz data.tar.gz
@echo "Built: $(PACKAGE_FILE)"
package_apk: prepare_files
rm -rf "$(ROOT_APK_DIR)"
mkdir -p "$(ROOT_APK_DIR)"
cp -r "$(ROOT_DIR)/." "$(ROOT_APK_DIR)/"
mkdir -p "$(ROOT_APK_DIR)/lib/apk/packages"
if [ -f "$(APK_DIR)/conffiles" ]; then \
cp "$(APK_DIR)/conffiles" "$(ROOT_APK_DIR)/lib/apk/packages/$(PKG_NAME).conffiles"; \
for file in $$(cat "$(ROOT_APK_DIR)/lib/apk/packages/$(PKG_NAME).conffiles"); do \
[ -f "$(ROOT_APK_DIR)/$$file" ] || continue; \
csum=$$(sha256sum "$(ROOT_APK_DIR)/$$file" | cut -d' ' -f1); \
echo "$$file $$csum" >> "$(ROOT_APK_DIR)/lib/apk/packages/$(PKG_NAME).conffiles_static"; \
done; \
fi
(cd "$(ROOT_APK_DIR)" && find . -type f,l -printf "/%P\\n") > "$(ROOT_APK_DIR)/lib/apk/packages/$(PKG_NAME).list"
APK_SIGN_ARG=""; \
APK_SCRIPT_ARGS=""; \
if [ -n "$(BUILD_KEY_APK_SEC)" ] && [ -f "$(BUILD_KEY_APK_SEC)" ]; then \
APK_SIGN_ARG="--sign $(BUILD_KEY_APK_SEC)"; \
fi; \
if [ -f "$(APK_DIR)/post-install.sh" ]; then \
APK_SCRIPT_ARGS="$$APK_SCRIPT_ARGS -s post-install:$(APK_DIR)/post-install.sh"; \
fi; \
if [ -f "$(APK_DIR)/pre-deinstall.sh" ]; then \
APK_SCRIPT_ARGS="$$APK_SCRIPT_ARGS -s pre-deinstall:$(APK_DIR)/pre-deinstall.sh"; \
fi; \
if [ -f "$(APK_DIR)/post-upgrade.sh" ]; then \
APK_SCRIPT_ARGS="$$APK_SCRIPT_ARGS -s post-upgrade:$(APK_DIR)/post-upgrade.sh"; \
fi; \
apk mkpkg \
-I "name:$(PKG_NAME)" \
-I "version:$(PKG_VERSION)-r$(PKG_REVISION)" \
-I "description:$(PKG_DESCRIPTION)" \
-I "arch:$(APK_ARCH)" \
-I "license:$(PKG_LICENSE)" \
-I "origin:feeds/packages/feeds/tg-ws-proxy/net/$(PKG_NAME)" \
-I "maintainer:$(PKG_MAINTAINER)" \
-I "provider-priority:100" \
-F "$(ROOT_APK_DIR)" \
-o "$(APK_PACKAGE_FILE)" \
$$APK_SCRIPT_ARGS \
$$APK_SIGN_ARG
@echo "Built: $(APK_PACKAGE_FILE)"