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:=139.0.7258.62-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:=25f8e5f04cd9a3caaaa5477e5b591162a811b25f0b2301c914fc99814b6c796b
  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:=21-init-11777-gfd3fecfc-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:=5f69279b3697166facfc354634157e0a8a32fa6e36864200ad8a8f85add3f3f6
  56. endef
  57. PGO_VER:=7258-1752969416-a528e01185d141ca77542255592e211024c33d34-b4ba555e3de319acd633d70ccd6c1d01f0460a1c
  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:=875f6573b0ca163e031d96b88f800a811e94e7ec3cc61af671b35a27d269e3c0
  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))