immortalwrt/package/lean/v2ray/Makefile
2019-04-16 20:58:36 +08:00

169 lines
4.2 KiB
Makefile

#
# Copyright (C) 2019 Xingwang Liao
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=v2ray-core
PKG_VERSION:=4.18.0
PKG_RELEASE:=5
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/v2ray/v2ray-core/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=0d18418d97d36f986666cf6a979e8e8d0c261bda182d244bb5897f724ae48ce8
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
PKG_MAINTAINER:=Xingwang Liao <kuoruan@gmail.com>
PKG_BUILD_DEPENDS:=golang/host
PKG_BUILD_PARALLEL:=1
PKG_USE_MIPS16:=0
GO_PKG:=v2ray.com/core
include $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk
define Package/v2ray-core/Default
TITLE:=A platform for building proxies
URL:=https://www.v2ray.com
endef
define Package/v2ray-core/Default/description
Project V is a set of network tools that help you to build your own computer network.
It secures your network connections and thus protects your privacy.
endef
define project-v/SubMenu
SECTION:=net
CATEGORY:=Network
SUBMENU:=Project V
endef
define v2ray-core/GoBinDefault
$(call Package/v2ray-core/Default)
$(call project-v/SubMenu)
USERID:=v2ray=10800:v2ray=10800
DEPENDS:=$(GO_ARCH_DEPENDS)
endef
define v2ray-core/templates
define Package/$(1)
$$(call v2ray-core/GoBinDefault)
TITLE+= ($(1))
DEPENDS:=+ca-certificates
endef
define Package/$(1)/description
$$(call Package/v2ray-core/Default/description)
This package contains the $(1).
endef
define Package/$(1)/install
$$(INSTALL_DIR) $$(1)/usr/bin/v2ray
$$(INSTALL_BIN) $$(GO_PKG_BUILD_BIN_DIR)/$(1) $$(1)/usr/bin/v2ray
endef
endef
V2RAY_COMPONENTS:=v2ray v2ctl
$(foreach component,$(V2RAY_COMPONENTS), \
$(eval $(call v2ray-core/templates,$(component))) \
)
define Package/v2ray-assets
$(call Package/v2ray-core/Default)
$(call project-v/SubMenu)
TITLE+= (geoip & geosite)
endef
define Package/v2ray-assets/description
$(call Package/v2ray-core/Default/description)
This package contains geoip.dat & geosite.dat.
endef
define Package/v2ray-assets/install
$(INSTALL_DIR) $(1)/usr/bin/v2ray
$(INSTALL_DATA) \
$(PKG_BUILD_DIR)/release/config/{geoip,geosite}.dat \
$(1)/usr/bin/v2ray
endef
define Package/v2ray-core
$(call v2ray-core/GoBinDefault)
TITLE+= (full)
PROVIDES:=$(V2RAY_COMPONENTS) v2ray-assets
DEPENDS:=+ca-certificates
endef
define Package/v2ray-core/description
$(call Package/v2ray-core/Default/description)
This package contains v2ray, v2ctl and v2ray-assets.
endef
define Package/v2ray-core/install
$(call Package/v2ray-assets/install,$(1))
$(INSTALL_DIR) $(1)/usr/bin/v2ray
( \
for component in $(V2RAY_COMPONENTS); do \
$(INSTALL_BIN) $(GO_PKG_BUILD_BIN_DIR)/$$$$component $(1)/usr/bin/v2ray ; \
done ; \
)
endef
define Package/golang-v2ray-core-dev
$(call Package/v2ray-core/Default)
$(call GoPackage/GoSubMenu)
TITLE+= (source files)
PKGARCH:=all
endef
define Package/golang-v2ray-core-dev/description
$(call Package/v2ray-core/Default/description)
This package provides the source files for v2ray-core.
endef
define Build/Prepare
$(Build/Prepare/Default)
( \
sed -i \
's/\(version[[:space:]]*=[[:space:]]*"\).*\("\)/\1$(PKG_VERSION)\2/' \
$(PKG_BUILD_DIR)/core.go ; \
build="Lean's custom build - Release $(PKG_RELEASE)" ; \
sed -i \
"s/\(build[[:space:]]*=[[:space:]]*\"\).*\(\"\)/\1$$$$build\2/" \
$(PKG_BUILD_DIR)/core.go ; \
$(CP) ./all.go $(PKG_BUILD_DIR)/main/distro/all/all.go ; \
)
endef
define Build/Compile
$(eval GO_PKG_BUILD_PKG:=v2ray.com/core/main)
$(call GoPackage/Build/Compile,-ldflags "-s -w")
mv -f $(GO_PKG_BUILD_BIN_DIR)/main $(GO_PKG_BUILD_BIN_DIR)/v2ray
$(eval GO_PKG_BUILD_PKG:=v2ray.com/core/infra/control/main)
$(call GoPackage/Build/Compile,-ldflags "-s -w")
mv -f $(GO_PKG_BUILD_BIN_DIR)/main $(GO_PKG_BUILD_BIN_DIR)/v2ctl
endef
$(foreach component,$(V2RAY_COMPONENTS), \
$(eval $(call GoBinPackage,$(component))) \
$(eval $(call BuildPackage,$(component))) \
)
$(eval $(call BuildPackage,v2ray-assets))
$(eval $(call GoBinPackage,v2ray-core))
$(eval $(call BuildPackage,v2ray-core))
$(eval $(call GoSrcPackage,golang-v2ray-core-dev))
$(eval $(call BuildPackage,golang-v2ray-core-dev))