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:=131.0.6778.86-1
  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:=9f912ce03c7f1023e7774291c2bdd0a0c998832e49ed0d998bffa7714317e9f4
  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||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:=20-init-6794-g3dbd929e-1
  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:=ce5dea9d2f304d0f3ab07200cd2608711578f7254bf6e685bea8381c248b7686
  56. endef
  57. PGO_VER:=6778-1731431875-75e60acd68a20cf9cc2c5d6dfbb65ee7b4e60752-a75a9b0cd4f8d4a3bb5d3446daa63b14105e852e
  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:=93ae3d2a51eb03b8314523cde26d2324998e29e60452b242bca33afdc604bc12
  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_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))