Makefile 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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:=101.0.4951.41-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:=890720b00ed81eacb11388b5c1a1d00c98182db6b57e87ba0053a5300aacfd5c
  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. URL:=https://github.com/klzgrad/naiveproxy
  35. TITLE:=Make a fortune quietly
  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:=15-init-3677-g8133778d-4
  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:=26d8c347253528e6dca471fa040d0e5e0f8eb55e6ec9671a673b88c723330a21
  56. endef
  57. GN_VER:=53ef169800760fdc09f0773bf380fe99eaeab339
  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:=beb261220f4195109297b1658212d041ffebef5a88b3194219659cf197840f77
  64. endef
  65. PGO_VER:=4951-1650389737-545882ae3e5c9e7f75e0781c8dc0d1eafb667efd
  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:=5b1490bb6176f0f70d19029701a2a2f8e26c9df01781db41b946659e3972892b
  72. endef
  73. define Build/Prepare
  74. $(call Build/Prepare/Default)
  75. ( \
  76. cd $(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. mkdir -p "gn/out" ; \
  82. unzip -o "$(DL_DIR)/$(GN_FILE)" -d "gn/out" ; \
  83. )
  84. endef
  85. define Build/Compile
  86. ( \
  87. cd "$(PKG_BUILD_DIR)/src" ; \
  88. . ../init_env.sh "$(ARCH)" $(CPU_TYPE) $(CPU_SUBTYPE) "$(TOOLCHAIN_DIR)" ; \
  89. export naive_flags+=" $$$${naive_ccache_flags}" ; \
  90. mkdir -p "out" ; \
  91. ./gn/out/gn gen "out/Release" --args="$$$${naive_flags}" --script-executable="$(PYTHON)" ; \
  92. ninja -C "out/Release" naive ; \
  93. )
  94. endef
  95. define Package/naiveproxy/install
  96. $(INSTALL_DIR) $(1)/usr/bin
  97. $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/out/Release/naive $(1)/usr/bin/naive
  98. endef
  99. $(eval $(call Download,CLANG))
  100. $(eval $(call Download,GN_TOOL))
  101. $(eval $(call Download,PGO_PROF))
  102. $(eval $(call BuildPackage,naiveproxy))