Makefile 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  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:=109.0.5414.74-2
  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:=3c1e9e276e4ae79c8192c25a15df2f564741602ae403712565c48aa6db9d78e7
  11. PKG_LICENSE:=BSD 3-Clause
  12. PKG_LICENSE_FILES:=LICENSE
  13. PKG_MAINTAINER:=Tianling Shen <[email protected]>
  14. ifneq ($(wildcard $(TOPDIR)/feeds/packages/devel/ninja/ninja.mk),)
  15. PKG_BUILD_DEPENDS+= ninja/host
  16. endif
  17. PKG_USE_MIPS16:=0
  18. PKG_BUILD_PARALLEL:=1
  19. ifneq ($(CONFIG_CPU_TYPE)," ")
  20. CPU_TYPE:=$(word 1, $(subst +," ,$(CONFIG_CPU_TYPE)))
  21. CPU_SUBTYPE:=$(word 2, $(subst +, ",$(CONFIG_CPU_TYPE)))
  22. ifeq ($(CPU_SUBTYPE),)
  23. CPU_SUBTYPE:=""
  24. endif
  25. else
  26. CPU_TYPE:=""
  27. CPU_SUBTYPE:=""
  28. endif
  29. include $(INCLUDE_DIR)/package.mk
  30. define Package/naiveproxy
  31. SECTION:=net
  32. CATEGORY:=Network
  33. SUBMENU:=Web Servers/Proxies
  34. TITLE:=Make a fortune quietly
  35. URL:=https://github.com/klzgrad/naiveproxy
  36. DEPENDS:=@!(arc||armeb||mips||mips64||powerpc||TARGET_gemini) +libatomic
  37. endef
  38. define Package/naiveproxy/description
  39. NaïveProxy uses Chrome's network stack to camouflage traffic with strong
  40. censorship resistance and low detectability. Reusing Chrome's stack also
  41. ensures best practices in performance and security.
  42. endef
  43. ifneq ($(CONFIG_CCACHE),)
  44. export CCACHE_SLOPPINESS=time_macros
  45. export CCACHE_BASEDIR=$(PKG_BUILD_DIR)/src
  46. export CCACHE_CPP2=yes
  47. export naive_ccache_flags=cc_wrapper="$(CCACHE)"
  48. endif
  49. CLANG_VER:=16-init-8697-g60809cd2-1
  50. CLANG_FILE:=clang-llvmorg-$(CLANG_VER).tgz
  51. define Download/CLANG
  52. URL:=https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64
  53. URL_FILE:=$(CLANG_FILE)
  54. FILE:=$(CLANG_FILE)
  55. HASH:=5ae35f85e0d32136795c6b223bf64263d46678dd4a24fea4e9039e58a32670de
  56. endef
  57. GN_VER:=1c4151ff5c1d6fbf7fa800b8d4bb34d3abc03a41
  58. GN_FILE:=gn-git_revision-$(GN_VER).zip
  59. define Download/GN_TOOL
  60. URL:=https://chrome-infra-packages.appspot.com/dl/gn/gn/linux-amd64/+
  61. URL_FILE:=git_revision:$(GN_VER)
  62. FILE:=$(GN_FILE)
  63. HASH:=7195291488d08f3a10e85b85d8c4816e077015f1c5f196f770003a97aa42caf8
  64. endef
  65. PGO_VER:=5414-1672766927-26b17aa1745606599e619feccfe46371e879e7c4
  66. PGO_FILE:=chrome-linux-$(PGO_VER).profdata
  67. define Download/PGO_PROF
  68. URL:=https://storage.googleapis.com/chromium-optimization-profiles/pgo_profiles
  69. URL_FILE:=$(PGO_FILE)
  70. FILE:=$(PGO_FILE)
  71. HASH:=e9a52f7a60d46fd6e682b0e908b1363faeb6f96bc2e95d5d95095b33fa67e34a
  72. endef
  73. define Build/Prepare
  74. $(call Build/Prepare/Default)
  75. ( \
  76. pushd $(PKG_BUILD_DIR)/src ; \
  77. mkdir -p "chrome/build/pgo_profiles" ; \
  78. $(CP) "$(DL_DIR)/$(PGO_FILE)" "chrome/build/pgo_profiles" ; \
  79. mkdir -p "third_party/llvm-build/Release+Asserts" ; \
  80. $(TAR) -xzf "$(DL_DIR)/$(CLANG_FILE)" -C "third_party/llvm-build/Release+Asserts" ; \
  81. echo -e "llvmorg-$(CLANG_VER)" > "third_party/llvm-build/Release+Asserts/cr_build_revision" ; \
  82. mkdir -p "gn/out" ; \
  83. unzip -o "$(DL_DIR)/$(GN_FILE)" -d "gn/out" ; \
  84. popd ; \
  85. )
  86. endef
  87. define Build/Configure
  88. ( \
  89. pushd "$(PKG_BUILD_DIR)/src" ; \
  90. . ../init_env.sh "$(ARCH)" $(CPU_TYPE) $(CPU_SUBTYPE) "$(TOOLCHAIN_DIR)" ; \
  91. export naive_flags+=" $$$${naive_ccache_flags}" ; \
  92. mkdir -p "out" ; \
  93. ./gn/out/gn gen "out/Release" --args="$$$${naive_flags}" --script-executable="python3" ; \
  94. popd ; \
  95. )
  96. endef
  97. define Build/Compile
  98. ninja -C "$(PKG_BUILD_DIR)/src/out/Release" naive
  99. endef
  100. define Package/naiveproxy/install
  101. $(INSTALL_DIR) $(1)/usr/bin
  102. $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/out/Release/naive $(1)/usr/bin/naive
  103. endef
  104. $(eval $(call Download,CLANG))
  105. $(eval $(call Download,GN_TOOL))
  106. $(eval $(call Download,PGO_PROF))
  107. $(eval $(call BuildPackage,naiveproxy))