mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-14 20:48:17 +08:00
122 lines
4.6 KiB
Makefile
122 lines
4.6 KiB
Makefile
include $(TOPDIR)/rules.mk
|
|
|
|
PKG_NAME:=xray-core
|
|
PKG_VERSION:=26.11.9
|
|
PKG_RELEASE:=31
|
|
|
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
|
PKG_SOURCE_URL:=https://codeload.github.com/XTLS/Xray-core/tar.gz/v$(PKG_VERSION)?
|
|
PKG_HASH:=skip
|
|
|
|
PKG_MAINTAINER:=Tianling Shen <cnsztl@immortalwrt.org>
|
|
PKG_LICENSE:=MPL-2.0 GPL-3.0-or-later MIT
|
|
PKG_LICENSE_FILES:=LICENSE proxy/anytls/LICENSE.sing-anytls proxy/naive/LICENSE.sing-box proxy/shadowsocksr/LICENSE proxy/tuic/LICENSE.mihomo proxy/snell/LICENSE.mihomo transport/internet/shadowtls/LICENSE.mihomo transport/internet/kcptun/LICENSE.mihomo transport/internet/kcptun/LICENSE.kcptun
|
|
|
|
PKG_BUILD_DIR:=$(BUILD_DIR)/Xray-core-$(PKG_VERSION)
|
|
PKG_BUILD_DEPENDS:=golang/host upx/host
|
|
PKG_CONFIG_DEPENDS:=CONFIG_XRAY_CORE_NAIVE
|
|
PKG_BUILD_PARALLEL:=1
|
|
PKG_USE_MIPS16:=0
|
|
PKG_BUILD_FLAGS:=no-mips16
|
|
|
|
GO_PKG:=github.com/xtls/xray-core
|
|
GO_PKG_LDFLAGS:=-s -w
|
|
GO_PKG_BUILD_PKG:=$(GO_PKG)/main
|
|
GO_PKG_LDFLAGS_X:= \
|
|
$(GO_PKG)/core.build=OpenWrt \
|
|
$(GO_PKG)/core.version=$(PKG_VERSION)
|
|
|
|
include $(INCLUDE_DIR)/package.mk
|
|
include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk
|
|
|
|
# Cronet's native archives contain LLVM bitcode. Use its matching linker while
|
|
# retaining OpenWrt's target GCC, sysroot, ABI flags and C runtime.
|
|
CRONET_CLANG_VERSION:=llvmorg-24-init-3796-g20e97c4b-27
|
|
CRONET_CLANG_FILE:=clang-$(CRONET_CLANG_VERSION).tar.xz
|
|
CRONET_CLANG_DIR:=$(PKG_BUILD_DIR)/.cronet-clang
|
|
|
|
ifeq ($(CONFIG_XRAY_CORE_NAIVE),y)
|
|
GO_PKG_TAGS+=with_naive_outbound
|
|
ifeq ($(CONFIG_USE_MUSL),y)
|
|
GO_PKG_TAGS+=with_musl
|
|
endif
|
|
# golang-package.mk also appends TARGET_LDFLAGS through -extldflags, after
|
|
# CGO_LDFLAGS. Select LLD here so the SDK cannot override it with ld.bfd.
|
|
TARGET_LDFLAGS:=$(filter-out -fuse-ld=%,$(TARGET_LDFLAGS)) -B$(CRONET_CLANG_DIR)/bin -fuse-ld=lld $(if $(filter arm i386 mipsel loongarch64,$(ARCH)),-Wl$(comma)-no-pie) $(if $(filter loongarch64,$(ARCH)),-Wl$(comma)--no-relax)
|
|
|
|
ifeq ($(HOST_OS)-$(HOST_ARCH),Linux-x86_64)
|
|
define Download/cronet-clang
|
|
URL:=https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64
|
|
URL_FILE:=$(CRONET_CLANG_FILE)
|
|
FILE:=$(CRONET_CLANG_FILE)
|
|
HASH:=skip
|
|
endef
|
|
$(eval $(call Download,cronet-clang))
|
|
endif
|
|
|
|
define Build/Prepare
|
|
@if [ "$(HOST_OS)-$(HOST_ARCH)" != "Linux-x86_64" ]; then \
|
|
echo "xray-core: Naive outbound requires a Linux x86_64 build host; disable CONFIG_XRAY_CORE_NAIVE on this host." >&2; \
|
|
exit 1; \
|
|
fi
|
|
$(call Build/Prepare/Default)
|
|
$(INSTALL_DIR) $(CRONET_CLANG_DIR)
|
|
$(TAR) -xJf $(DL_DIR)/$(CRONET_CLANG_FILE) -C $(CRONET_CLANG_DIR)
|
|
endef
|
|
endif
|
|
|
|
# Apply only to this package; runtime DT detection restricts use to AN7581.
|
|
# Resolve Go through the same versioned PATH and environment as the build.
|
|
ifeq ($(GO_ARCH),arm64)
|
|
define Build/Compile
|
|
$(GO_PKG_VARS) python3 $(PKG_BUILD_DIR)/tools/eip93/overlay.py --go go --out $(PKG_BUILD_DIR)/.eip93-overlay
|
|
$(call GoPackage/Build/Compile,-overlay=$(PKG_BUILD_DIR)/.eip93-overlay/overlay.json)
|
|
endef
|
|
endif
|
|
|
|
# Compress once per build, not once per package/rootfs installation.
|
|
# Keep Go's output intact and let the .built stamp guard the packed copy.
|
|
define Build/Install
|
|
$(INSTALL_DIR) $(PKG_BUILD_DIR)/.upx
|
|
$(INSTALL_BIN) $(GO_PKG_BUILD_BIN_DIR)/main $(PKG_BUILD_DIR)/.upx/xray
|
|
$(STAGING_DIR_HOST)/bin/upx --lzma --best $(PKG_BUILD_DIR)/.upx/xray
|
|
endef
|
|
|
|
# Go's -s -w flags strip the binary before UPX; do not strip it again.
|
|
RSTRIP:=:
|
|
|
|
define Package/xray-core
|
|
TITLE:=A platform for building proxies to bypass network restrictions
|
|
SECTION:=net
|
|
CATEGORY:=Network
|
|
URL:=https://xtls.github.io
|
|
DEPENDS:=$(GO_ARCH_DEPENDS) +ca-bundle
|
|
endef
|
|
|
|
define Package/xray-core/config
|
|
config XRAY_CORE_NAIVE
|
|
bool "Enable NaiveProxy outbound (Chromium/Cronet)"
|
|
depends on PACKAGE_xray-core
|
|
depends on (aarch64 || arm || i386 || x86_64 || mipsel || riscv64 || loongarch64)
|
|
depends on (USE_MUSL || USE_GLIBC)
|
|
depends on !arm || (arm_v7 && HAS_FPU)
|
|
default $(if $(filter Linux-x86_64,$(HOST_OS)-$(HOST_ARCH)),y,n)
|
|
help
|
|
Link Chromium/Cronet for NaiveProxy HTTP/2 and HTTP/3 outbounds.
|
|
Requires an x86_64 Linux build host and adds a native library to Xray.
|
|
Disabled by default on other build hosts, including ARM and ARM64.
|
|
Naive inbound support remains available when this option is disabled.
|
|
endef
|
|
|
|
define Package/xray-core/description
|
|
Xray, Penetrates Everything. It helps you to build your own computer network.
|
|
It secures your network connections and thus protects your privacy.
|
|
endef
|
|
|
|
define Package/xray-core/install
|
|
$(INSTALL_DIR) $(1)/usr/bin
|
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/.upx/xray $(1)/usr/bin/xray
|
|
endef
|
|
|
|
$(eval $(call BuildPackage,xray-core))
|