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:=107.0.5304.87-3
  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:=a97787c8fff1d3569398dd9cbd263ca8688c919352db08478d2cc2668559cf23
  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-4609-g025a5b22-2
  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:=bbcf6a3456cb6d8648a6bb15fca27bcb77902318090d2eee6cbc9472acc0ef69
  56. endef
  57. GN_VER:=fff29c1b3f9703ea449f720fe70fa73575ef24e5
  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:=3fa137a6a090f5ac69593de6b19f8bfe6115e2383f15b6394509d431eea3cb5b
  64. endef
  65. PGO_VER:=5304-1666778341-6952d9583ad8c5425ae6677daa28778c2175311f
  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:=7ac8186cec385515c6164dbfe05b05e4c6c2b25b5733e2d6b2c932670b2bd6cf
  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))