Makefile 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #
  2. # Copyright (C) 2021 ImmortalWrt
  3. # <https://immortalwrt.org>
  4. #
  5. # This is free software, licensed under the GNU General Public License v3.
  6. # See /LICENSE for more information.
  7. #
  8. include $(TOPDIR)/rules.mk
  9. PKG_NAME:=naiveproxy
  10. PKG_VERSION:=89.0.4389.72-1
  11. PKG_RELEASE:=2
  12. PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
  13. PKG_SOURCE_URL:=https://codeload.github.com/klzgrad/naiveproxy/tar.gz/v$(PKG_VERSION)?
  14. PKG_HASH:=94b1c3f1e63ecab43eb8006a38ed1a76f1e510364ba651abaef0ec575449f687
  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:=89.0.4389.65_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:=75a176d57c9b5fb12bff7e9442ddf21226df8aa25de19266f7ceb426eafd3421
  62. endef
  63. CLANG_VER:=llvmorg-12-init-16296-g5e476061-1
  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:=78729dfab39fb9d52ede2841e408cf505959b26a5d0b086ed7cf4f784f2b393a
  70. endef
  71. GN_VER:=595e3be7c8381d4eeefce62a63ec12bae9ce5140
  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:=9d61dcab3814868786768c9dfab71e0cd850a61dbad9a049536d2f1aae784fe4
  78. endef
  79. PGO_VER:=4389-1614333145-3fb545b30f8abc065d64d3b5af88abd66c7abb5e
  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:=2dafccee5abb30bcc2dc627cfd8af203cac17b522f66e3e4a90301a70d237ce1
  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))