Makefile 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #
  2. # Copyright (C) 2020 Project OpenWrt
  3. #
  4. # This is free software, licensed under the GNU General Public License v3.
  5. # See /LICENSE for more information.
  6. #
  7. include $(TOPDIR)/rules.mk
  8. PKG_NAME:=naiveproxy
  9. PKG_VERSION:=87.0.4280.66-1
  10. PKG_RELEASE:=1
  11. PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
  12. PKG_SOURCE_URL:=https://codeload.github.com/klzgrad/naiveproxy/tar.gz/v$(PKG_VERSION)?
  13. PKG_HASH:=17e79172fa32cb3b619614af989569aec7e866046f17e4a1b2179940f1915290
  14. PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
  15. PKG_LICENSE:=BSD 3-Clause
  16. PKG_LICENSE_FILES:=LICENSE
  17. PKG_MAINTAINER:=CN_SZTL <[email protected]>
  18. PKG_BUILD_DEPENDS:=ncurses/host ninja/host python3/host
  19. PKG_USE_MIPS16:=0
  20. PKG_BUILD_PARALLEL:=1
  21. ifneq ($(CONFIG_CPU_TYPE)," ")
  22. CPU_TYPE:=$(word 1, $(subst +," ,$(CONFIG_CPU_TYPE)))
  23. CPU_SUBTYPE:=$(word 2, $(subst +, ",$(CONFIG_CPU_TYPE)))
  24. ifeq ($(CPU_SUBTYPE),)
  25. CPU_SUBTYPE:=""
  26. endif
  27. else
  28. CPU_TYPE:=""
  29. CPU_SUBTYPE:=""
  30. endif
  31. include $(INCLUDE_DIR)/package.mk
  32. define Package/naiveproxy/config
  33. depends on !(arc||armeb||mips||mips64||powerpc)
  34. endef
  35. define Package/naiveproxy
  36. SECTION:=net
  37. CATEGORY:=Network
  38. SUBMENU:=Web Servers/Proxies
  39. URL:=https://github.com/klzgrad/naiveproxy
  40. TITLE:=Make a fortune quietly
  41. DEPENDS:=+libatomic +libnss
  42. endef
  43. define Package/naiveproxy/description
  44. NaïveProxy uses Chrome's network stack to camouflage traffic with strong
  45. censorship resistance and low detectability. Reusing Chrome's stack also
  46. ensures best practices in performance and security.
  47. endef
  48. ifneq ($(CONFIG_CCACHE),)
  49. export CCACHE_SLOPPINESS=time_macros
  50. export CCACHE_BASEDIR=$(PKG_BUILD_DIR)/src
  51. export CCACHE_CPP2=yes
  52. export naive_ccache_flags=cc_wrapper="ccache"
  53. endif
  54. AFDO_VER:=87.0.4278.0_rc-r1-merged
  55. AFDO_FILE:=chromeos-chrome-amd64-$$(AFDO_VER).afdo.bz2
  56. define Download/AFDO_PROF
  57. URL:=https://storage.googleapis.com.cnpmjs.org/chromeos-prebuilt/afdo-job/llvm \
  58. https://storage.googleapis.com/chromeos-prebuilt/afdo-job/llvm
  59. URL_FILE:=$(AFDO_FILE)
  60. FILE:=$(AFDO_FILE)
  61. HASH:=7625590b588195918b30c63db20e06339132bbe8975f39e2e429b929682ee3ff
  62. endef
  63. CLANG_VER:=llvmorg-12-init-5035-gd0abc757-3
  64. CLANG_FILE:=clang-$$(CLANG_VER).tgz
  65. define Download/CLANG
  66. URL:=https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64
  67. URL_FILE:=$(CLANG_FILE)
  68. FILE:=$(CLANG_FILE)
  69. HASH:=b0c3015209b6d624844ad230064eb5c9b4429a2eafd4854981e73217c563d93d
  70. endef
  71. GN_VER:=e002e68a48d1c82648eadde2f6aafa20d08c36f2
  72. GN_FILE:=gn-git_revision-$(GN_VER).zip
  73. define Download/GN_TOOL
  74. URL:=https://chrome-infra-packages.appspot.com/dl/gn/gn/linux-amd64/+
  75. URL_FILE:=git_revision:$(GN_VER)
  76. FILE:=$(GN_FILE)
  77. HASH:=67a733dc12803f61a0565ba3a390fa08576b2c4dc1d615c5c15c2b681e900675
  78. endef
  79. PGO_VER:=4280-1605284980-f890b7d0344c87909c28619fe56e1dd48953d29e
  80. PGO_FILE:=chrome-linux-$(PGO_VER).profdata
  81. define Download/PGO_PROF
  82. URL:=https://storage.googleapis.com.cnpmjs.org/chromium-optimization-profiles/pgo_profiles \
  83. https://storage.googleapis.com/chromium-optimization-profiles/pgo_profiles
  84. URL_FILE:=$(PGO_FILE)
  85. FILE:=$(PGO_FILE)
  86. HASH:=8d87e67b84b2694776c931d8eabf0760144420718fe6a5352951fae38a3a25f6
  87. endef
  88. define Build/Prepare
  89. $(call Build/Prepare/Default)
  90. ( \
  91. cd $(PKG_BUILD_DIR)/src ; \
  92. bzip2 -cd > "chrome/android/profiles/afdo.prof" < "$(DL_DIR)/$(AFDO_FILE)" ; \
  93. mkdir -p "chrome/build/pgo_profiles" ; \
  94. $(CP) "$(DL_DIR)/$(PGO_FILE)" "chrome/build/pgo_profiles" ; \
  95. mkdir -p "third_party/llvm-build/Release+Asserts" ; \
  96. $(TAR) -xzf "$(DL_DIR)/$(CLANG_FILE)" -C "third_party/llvm-build/Release+Asserts" ; \
  97. mkdir -p "gn/out" ; \
  98. unzip -o "$(DL_DIR)/$(GN_FILE)" -d "gn/out" ; \
  99. )
  100. endef
  101. define Build/Compile
  102. ( \
  103. cd "$(PKG_BUILD_DIR)/src" ; \
  104. . ../init_env.sh "$(ARCH)" "$(BOARD)" $(CPU_TYPE) $(CPU_SUBTYPE) "$(TOOLCHAIN_DIR)" ; \
  105. export naive_flags="$$$${naive_flags} pgo_data_path=\"$(PKG_BUILD_DIR)/src/chrome/build/pgo_profiles/$(PGO_FILE)\"" ; \
  106. export naive_flags="$$$${naive_flags} $$$${naive_ccache_flags}" ; \
  107. export OP_STAGING_DIR="$(STAGING_DIR)" ; \
  108. mkdir -p "out" ; \
  109. ./gn/out/gn gen "out/Release" --args="$$$${naive_flags}" --script-executable="$(STAGING_DIR_HOSTPKG)/bin/python3" ; \
  110. $(STAGING_DIR_HOSTPKG)/bin/ninja -C "out/Release" naive ; \
  111. )
  112. endef
  113. define Package/naiveproxy/install
  114. $(INSTALL_DIR) $(1)/usr/bin
  115. $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/out/Release/naive $(1)/usr/bin/naive
  116. endef
  117. $(eval $(call Download,AFDO_PROF))
  118. $(eval $(call Download,CLANG))
  119. $(eval $(call Download,GN_TOOL))
  120. $(eval $(call Download,PGO_PROF))
  121. $(eval $(call BuildPackage,naiveproxy))