Makefile 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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:=91.0.4472.77-1
  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:=01c660efd162859a2cabdf336cf889c191449fbd63883fc5a7b1be1348005fe1
  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. CLANG_VER:=llvmorg-13-init-6429-g0e92cbd6-2
  51. CLANG_FILE:=clang-$(CLANG_VER).tgz
  52. define Download/CLANG
  53. URL:=https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64
  54. URL_FILE:=$(CLANG_FILE)
  55. FILE:=$(CLANG_FILE)
  56. HASH:=3355d81f43412c1664babdafc2051b9154aaca8d86077829107cc4eae28b018c
  57. endef
  58. GN_VER:=dba01723a441c358d843a575cb7720d54ddcdf92
  59. GN_FILE:=gn-git_revision-$(GN_VER).zip
  60. define Download/GN_TOOL
  61. URL:=https://chrome-infra-packages.appspot.com/dl/gn/gn/linux-amd64/+
  62. URL_FILE:=git_revision:$(GN_VER)
  63. FILE:=$(GN_FILE)
  64. HASH:=bc2d2bc6a8aa1930f796cf4a247ae026858fd8e0623e4fd010eff16c322d298a
  65. endef
  66. PGO_VER:=4472-1621756476-ebad7a91210ae5a7ae94aabb1dd5a349fcc91380
  67. PGO_FILE:=chrome-linux-$(PGO_VER).profdata
  68. define Download/PGO_PROF
  69. URL:=https://storage.googleapis.com.cnpmjs.org/chromium-optimization-profiles/pgo_profiles \
  70. https://storage.googleapis.com/chromium-optimization-profiles/pgo_profiles
  71. URL_FILE:=$(PGO_FILE)
  72. FILE:=$(PGO_FILE)
  73. HASH:=0550e44d41cbdafcd4fd02a4a40515da167dc2033437ddfc7ed5ff264fe8129f
  74. endef
  75. define Build/Prepare
  76. $(call Build/Prepare/Default)
  77. ( \
  78. cd $(PKG_BUILD_DIR)/src ; \
  79. mkdir -p "chrome/build/pgo_profiles" ; \
  80. $(CP) "$(DL_DIR)/$(PGO_FILE)" "chrome/build/pgo_profiles" ; \
  81. mkdir -p "third_party/llvm-build/Release+Asserts" ; \
  82. $(TAR) -xzf "$(DL_DIR)/$(CLANG_FILE)" -C "third_party/llvm-build/Release+Asserts" ; \
  83. mkdir -p "gn/out" ; \
  84. unzip -o "$(DL_DIR)/$(GN_FILE)" -d "gn/out" ; \
  85. )
  86. endef
  87. define Build/Compile
  88. ( \
  89. cd "$(PKG_BUILD_DIR)/src" ; \
  90. . ../init_env.sh "$(ARCH)" "$(BOARD)" $(CPU_TYPE) $(CPU_SUBTYPE) "$(TOOLCHAIN_DIR)" ; \
  91. export naive_flags="$$$${naive_flags} $$$${naive_ccache_flags}" ; \
  92. mkdir -p "out" ; \
  93. ./gn/out/gn gen "out/Release" --args="$$$${naive_flags}" --script-executable="$(STAGING_DIR_HOSTPKG)/bin/python3" ; \
  94. $(STAGING_DIR_HOSTPKG)/bin/ninja -C "out/Release" naive ; \
  95. )
  96. endef
  97. define Package/naiveproxy/install
  98. $(INSTALL_DIR) $(1)/usr/bin
  99. $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/out/Release/naive $(1)/usr/bin/naive
  100. endef
  101. $(eval $(call Download,CLANG))
  102. $(eval $(call Download,GN_TOOL))
  103. $(eval $(call Download,PGO_PROF))
  104. $(eval $(call BuildPackage,naiveproxy))