2
0

Makefile 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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_REAL_VERSION:=143.0.7499.109-2
  7. PKG_VERSION:=$(subst -,.,$(PKG_REAL_VERSION))
  8. PKG_RELEASE:=1
  9. PKG_SOURCE:=$(PKG_NAME)-$(PKG_REAL_VERSION).tar.gz
  10. PKG_SOURCE_URL:=https://codeload.github.com/klzgrad/naiveproxy/tar.gz/v$(PKG_REAL_VERSION)?
  11. PKG_HASH:=07e3a44a73c92cc9df347b12a23a2420458b31917a7f6dfdb06e18590d9c1aea
  12. PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_REAL_VERSION)
  13. PKG_LICENSE:=BSD 3-Clause
  14. PKG_LICENSE_FILES:=LICENSE
  15. PKG_MAINTAINER:=Tianling Shen <[email protected]>
  16. PKG_BUILD_DEPENDS:=gn/host
  17. PKG_BUILD_PARALLEL:=1
  18. PKG_BUILD_FLAGS:=no-mips16
  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. TITLE:=Make a fortune quietly
  35. URL:=https://github.com/klzgrad/naiveproxy
  36. DEPENDS:=@!(arc||armeb||loongarch64||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:=22-init-8940-g4d4cb757-84
  50. CLANG_FILE:=clang-llvmorg-$(CLANG_VER).tar.xz
  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:=f6a487ffd0e56ba7a39b063d85d1f8ff7846514f50635785730cffb7368872ce
  56. endef
  57. PGO_VER:=7499-1764697213-c882935fa3cd65518c410503710d1c1528e41260-abb34356235cd297f57c1bb9c272d7f54dbe3bd8
  58. PGO_FILE:=chrome-linux-$(PGO_VER).profdata
  59. define Download/PGO_PROF
  60. URL:=https://storage.googleapis.com/chromium-optimization-profiles/pgo_profiles
  61. URL_FILE:=$(PGO_FILE)
  62. FILE:=$(PGO_FILE)
  63. HASH:=f983a4c13f1a4bffd2dca0b741b77c5bf57d67549a674df5854e935b16e9cf93
  64. endef
  65. define Build/Prepare
  66. $(call Build/Prepare/Default)
  67. ( \
  68. pushd $(PKG_BUILD_DIR)/src ; \
  69. mkdir -p "chrome/build/pgo_profiles" ; \
  70. $(CP) "$(DL_DIR)/$(PGO_FILE)" "chrome/build/pgo_profiles" ; \
  71. mkdir -p "third_party/llvm-build/Release+Asserts" ; \
  72. $(TAR) -xJf "$(DL_DIR)/$(CLANG_FILE)" -C "third_party/llvm-build/Release+Asserts" ; \
  73. echo -e "llvmorg-$(CLANG_VER)" > "third_party/llvm-build/Release+Asserts/cr_build_revision" ; \
  74. popd ; \
  75. )
  76. endef
  77. define Build/Configure
  78. ( \
  79. pushd "$(PKG_BUILD_DIR)/src" ; \
  80. . ../init_env.sh "$(ARCH)" $(CPU_TYPE) $(CPU_SUBTYPE) "$(TOOLCHAIN_ROOT_DIR)" ; \
  81. export naive_flags+=" $$$${naive_ccache_flags}" ; \
  82. mkdir -p "out" ; \
  83. gn gen "out/Release" --args="$$$${naive_flags}" --script-executable="$(PYTHON)" ; \
  84. popd ; \
  85. )
  86. endef
  87. define Build/Compile
  88. +$(NINJA) -C "$(PKG_BUILD_DIR)/src/out/Release" naive
  89. endef
  90. define Package/naiveproxy/install
  91. $(INSTALL_DIR) $(1)/usr/bin
  92. $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/out/Release/naive $(1)/usr/bin/naive
  93. endef
  94. $(eval $(call Download,CLANG))
  95. $(eval $(call Download,PGO_PROF))
  96. $(eval $(call BuildPackage,naiveproxy))