Makefile 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. # SPDX-License-Identifier: GPL-3.0-only
  2. #
  3. # Copyright (C) 2021 ImmortalWrt.org
  4. include $(TOPDIR)/rules.mk
  5. PKG_NAME:=naiveproxy
  6. PKG_VERSION:=100.0.4896.60-1
  7. PKG_RELEASE:=1
  8. PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
  9. PKG_SOURCE_URL:=https://codeload.github.com/klzgrad/naiveproxy/tar.gz/v$(PKG_VERSION)?
  10. PKG_HASH:=bcab770b15e6c5d3f50a83992d084c8f53942aa6ebd59463c21979be668a3e61
  11. PKG_LICENSE:=BSD 3-Clause
  12. PKG_LICENSE_FILES:=LICENSE
  13. PKG_MAINTAINER:=Tianling Shen <[email protected]>
  14. PKG_BUILD_DEPENDS:=python3/host
  15. ifneq ($(wildcard $(TOPDIR)/feeds/packages/devel/ninja/ninja.mk),)
  16. PKG_BUILD_DEPENDS+= ninja/host
  17. endif
  18. PKG_USE_MIPS16:=0
  19. PKG_BUILD_PARALLEL:=1
  20. ifeq ($(NINJA),)
  21. NINJA = \
  22. MAKEFLAGS="$(MAKE_JOBSERVER)" \
  23. $(STAGING_DIR_HOSTPKG)/bin/ninja \
  24. $(if $(findstring c,$(OPENWRT_VERBOSE)),-v) \
  25. $(if $(MAKE_JOBSERVER),,-j1)
  26. endif
  27. ifneq ($(CONFIG_CPU_TYPE)," ")
  28. CPU_TYPE:=$(word 1, $(subst +," ,$(CONFIG_CPU_TYPE)))
  29. CPU_SUBTYPE:=$(word 2, $(subst +, ",$(CONFIG_CPU_TYPE)))
  30. ifeq ($(CPU_SUBTYPE),)
  31. CPU_SUBTYPE:=""
  32. endif
  33. else
  34. CPU_TYPE:=""
  35. CPU_SUBTYPE:=""
  36. endif
  37. include $(INCLUDE_DIR)/package.mk
  38. define Package/naiveproxy
  39. SECTION:=net
  40. CATEGORY:=Network
  41. SUBMENU:=Web Servers/Proxies
  42. URL:=https://github.com/klzgrad/naiveproxy
  43. TITLE:=Make a fortune quietly
  44. DEPENDS:=@!(arc||armeb||mips||mips64||powerpc||TARGET_gemini) +libatomic
  45. endef
  46. define Package/naiveproxy/description
  47. NaïveProxy uses Chrome's network stack to camouflage traffic with strong
  48. censorship resistance and low detectability. Reusing Chrome's stack also
  49. ensures best practices in performance and security.
  50. endef
  51. ifneq ($(CONFIG_CCACHE),)
  52. export CCACHE_SLOPPINESS=time_macros
  53. export CCACHE_BASEDIR=$(PKG_BUILD_DIR)/src
  54. export CCACHE_CPP2=yes
  55. export naive_ccache_flags=cc_wrapper="$(CCACHE)"
  56. endif
  57. CLANG_VER:=15-init-1995-g5bec1ea7-1
  58. CLANG_FILE:=clang-llvmorg-$(CLANG_VER).tgz
  59. define Download/CLANG
  60. URL:=https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64
  61. URL_FILE:=$(CLANG_FILE)
  62. FILE:=$(CLANG_FILE)
  63. HASH:=c2ccf8e5136661eb7c25bb08ae6e78f7d667b03f0c16dabf2eb1a392b244bd5f
  64. endef
  65. GN_VER:=859dde4a7f34a4383179522f8e1061dcffac8691
  66. GN_FILE:=gn-git_revision-$(GN_VER).zip
  67. define Download/GN_TOOL
  68. URL:=https://chrome-infra-packages.appspot.com/dl/gn/gn/linux-amd64/+
  69. URL_FILE:=git_revision:$(GN_VER)
  70. FILE:=$(GN_FILE)
  71. HASH:=00691d4576ae52f809145ef6db5e3782e3eb63a80f04a7407168ce4b5ef83990
  72. endef
  73. PGO_VER:=4896-1648230561-717dc24b4ffc1663d1990243de5d49fac8001b06
  74. PGO_FILE:=chrome-linux-$(PGO_VER).profdata
  75. define Download/PGO_PROF
  76. URL:=https://storage.googleapis.com/chromium-optimization-profiles/pgo_profiles
  77. URL_FILE:=$(PGO_FILE)
  78. FILE:=$(PGO_FILE)
  79. HASH:=66fcba3f0ca6e97713ffd72c3937230ba63116ae64e9d520c960e368df6c954e
  80. endef
  81. define Build/Prepare
  82. $(call Build/Prepare/Default)
  83. ( \
  84. cd $(PKG_BUILD_DIR)/src ; \
  85. mkdir -p "chrome/build/pgo_profiles" ; \
  86. $(CP) "$(DL_DIR)/$(PGO_FILE)" "chrome/build/pgo_profiles" ; \
  87. mkdir -p "third_party/llvm-build/Release+Asserts" ; \
  88. $(TAR) -xzf "$(DL_DIR)/$(CLANG_FILE)" -C "third_party/llvm-build/Release+Asserts" ; \
  89. mkdir -p "gn/out" ; \
  90. unzip -o "$(DL_DIR)/$(GN_FILE)" -d "gn/out" ; \
  91. )
  92. endef
  93. define Build/Compile
  94. ( \
  95. cd "$(PKG_BUILD_DIR)/src" ; \
  96. . ../init_env.sh "$(ARCH)" $(CPU_TYPE) $(CPU_SUBTYPE) "$(TOOLCHAIN_DIR)" ; \
  97. export naive_flags+=" $$$${naive_ccache_flags}" ; \
  98. mkdir -p "out" ; \
  99. ./gn/out/gn gen "out/Release" --args="$$$${naive_flags}" --script-executable="$(PYTHON)" ; \
  100. $(NINJA) -C "$(PKG_BUILD_DIR)/src/out/Release" naive ; \
  101. )
  102. endef
  103. define Package/naiveproxy/install
  104. $(INSTALL_DIR) $(1)/usr/bin
  105. $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/out/Release/naive $(1)/usr/bin/naive
  106. endef
  107. $(eval $(call Download,CLANG))
  108. $(eval $(call Download,GN_TOOL))
  109. $(eval $(call Download,PGO_PROF))
  110. $(eval $(call BuildPackage,naiveproxy))