Makefile 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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:=90.0.4430.85-10
  7. PKG_RELEASE:=2
  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:=d4e3d6d5a3205fff910e5fcbe64e9aeaa92f66078615ca4a525144a487eeef15
  11. PKG_LICENSE:=BSD 3-Clause
  12. PKG_LICENSE_FILES:=LICENSE
  13. PKG_MAINTAINER:=Tianling Shen <[email protected]>
  14. PKG_BUILD_DEPENDS:=ninja/host python3/host
  15. PKG_USE_MIPS16:=0
  16. PKG_BUILD_PARALLEL:=1
  17. ifneq ($(CONFIG_CPU_TYPE)," ")
  18. CPU_TYPE:=$(word 1, $(subst +," ,$(CONFIG_CPU_TYPE)))
  19. CPU_SUBTYPE:=$(word 2, $(subst +, ",$(CONFIG_CPU_TYPE)))
  20. ifeq ($(CPU_SUBTYPE),)
  21. CPU_SUBTYPE:=""
  22. endif
  23. else
  24. CPU_TYPE:=""
  25. CPU_SUBTYPE:=""
  26. endif
  27. include $(INCLUDE_DIR)/package.mk
  28. define Package/naiveproxy/config
  29. depends on !(arc||armeb||mips||mips64||powerpc)
  30. endef
  31. define Package/naiveproxy
  32. SECTION:=net
  33. CATEGORY:=Network
  34. SUBMENU:=Web Servers/Proxies
  35. URL:=https://github.com/klzgrad/naiveproxy
  36. TITLE:=Make a fortune quietly
  37. DEPENDS:=+libatomic
  38. endef
  39. define Package/naiveproxy/description
  40. NaïveProxy uses Chrome's network stack to camouflage traffic with strong
  41. censorship resistance and low detectability. Reusing Chrome's stack also
  42. ensures best practices in performance and security.
  43. endef
  44. ifneq ($(CONFIG_CCACHE),)
  45. export CCACHE_SLOPPINESS=time_macros
  46. export CCACHE_BASEDIR=$(PKG_BUILD_DIR)/src
  47. export CCACHE_CPP2=yes
  48. export naive_ccache_flags=cc_wrapper="$(CCACHE)"
  49. endif
  50. AFDO_VER:=90.0.4430.53_rc-r1-merged
  51. AFDO_FILE:=chromeos-chrome-amd64-$(AFDO_VER).afdo.bz2
  52. define Download/AFDO_PROF
  53. URL:=https://storage.googleapis.com.cnpmjs.org/chromeos-prebuilt/afdo-job/llvm \
  54. https://storage.googleapis.com/chromeos-prebuilt/afdo-job/llvm
  55. URL_FILE:=$(AFDO_FILE)
  56. FILE:=$(AFDO_FILE)
  57. HASH:=5cfc5e371459687a320b92e255995d377837843a1fabba6a01d432e932b5b761
  58. endef
  59. CLANG_VER:=llvmorg-13-init-1559-g01b87444-3
  60. CLANG_FILE:=clang-$(CLANG_VER).tgz
  61. define Download/CLANG
  62. URL:=https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64
  63. URL_FILE:=$(CLANG_FILE)
  64. FILE:=$(CLANG_FILE)
  65. HASH:=676448e180fb060d3983f24476a2136eac83c6011c600117686035634a2bbe26
  66. endef
  67. GN_VER:=dfcbc6fed0a8352696f92d67ccad54048ad182b3
  68. GN_FILE:=gn-git_revision-$(GN_VER).zip
  69. define Download/GN_TOOL
  70. URL:=https://chrome-infra-packages.appspot.com/dl/gn/gn/linux-amd64/+
  71. URL_FILE:=git_revision:$(GN_VER)
  72. FILE:=$(GN_FILE)
  73. HASH:=a150f403e2fa3f4464148ce5ec0735c8c6058577ef3fadffcdcf7aadba6ee8e1
  74. endef
  75. PGO_VER:=4430-1618483786-646ea3f0575412a6f8d1607da5c9f7b4f0e5e58d
  76. PGO_FILE:=chrome-linux-$(PGO_VER).profdata
  77. define Download/PGO_PROF
  78. URL:=https://storage.googleapis.com.cnpmjs.org/chromium-optimization-profiles/pgo_profiles \
  79. https://storage.googleapis.com/chromium-optimization-profiles/pgo_profiles
  80. URL_FILE:=$(PGO_FILE)
  81. FILE:=$(PGO_FILE)
  82. HASH:=d781d7e72687d1897eb837ee4e404367b3fdd2e65c6f0f3b2e74a20dc001ef0e
  83. endef
  84. define Build/Prepare
  85. $(call Build/Prepare/Default)
  86. ( \
  87. cd $(PKG_BUILD_DIR)/src ; \
  88. bzip2 -cd > "chrome/android/profiles/afdo.prof" < "$(DL_DIR)/$(AFDO_FILE)" ; \
  89. mkdir -p "chrome/build/pgo_profiles" ; \
  90. $(CP) "$(DL_DIR)/$(PGO_FILE)" "chrome/build/pgo_profiles" ; \
  91. mkdir -p "third_party/llvm-build/Release+Asserts" ; \
  92. $(TAR) -xzf "$(DL_DIR)/$(CLANG_FILE)" -C "third_party/llvm-build/Release+Asserts" ; \
  93. mkdir -p "gn/out" ; \
  94. unzip -o "$(DL_DIR)/$(GN_FILE)" -d "gn/out" ; \
  95. )
  96. endef
  97. define Build/Compile
  98. ( \
  99. cd "$(PKG_BUILD_DIR)/src" ; \
  100. . ../init_env.sh "$(ARCH)" "$(BOARD)" $(CPU_TYPE) $(CPU_SUBTYPE) "$(TOOLCHAIN_DIR)" ; \
  101. export naive_flags="$$$${naive_flags} $$$${naive_ccache_flags}" ; \
  102. export OP_STAGING_DIR="$(STAGING_DIR)" ; \
  103. mkdir -p "out" ; \
  104. ./gn/out/gn gen "out/Release" --args="$$$${naive_flags}" --script-executable="$(STAGING_DIR_HOSTPKG)/bin/python3" ; \
  105. $(STAGING_DIR_HOSTPKG)/bin/ninja -C "out/Release" naive ; \
  106. )
  107. endef
  108. define Package/naiveproxy/install
  109. $(INSTALL_DIR) $(1)/usr/bin
  110. $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/out/Release/naive $(1)/usr/bin/naive
  111. endef
  112. $(eval $(call Download,AFDO_PROF))
  113. $(eval $(call Download,CLANG))
  114. $(eval $(call Download,GN_TOOL))
  115. $(eval $(call Download,PGO_PROF))
  116. $(eval $(call BuildPackage,naiveproxy))