Makefile 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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:=125.0.6422.35-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:=fd1fdab08aa00f19fb6ca1cb80cc132ab5a8d2bd3c95fa4ba41b3d79fbc88ebd
  11. PKG_LICENSE:=BSD 3-Clause
  12. PKG_LICENSE_FILES:=LICENSE
  13. PKG_MAINTAINER:=Tianling Shen <[email protected]>
  14. PKG_BUILD_DEPENDS:=gn/host
  15. PKG_BUILD_PARALLEL:=1
  16. PKG_BUILD_FLAGS:=no-mips16
  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
  29. SECTION:=net
  30. CATEGORY:=Network
  31. SUBMENU:=Web Servers/Proxies
  32. TITLE:=Make a fortune quietly
  33. URL:=https://github.com/klzgrad/naiveproxy
  34. DEPENDS:=@!(arc||armeb||mips||mips64||powerpc||TARGET_gemini) +libatomic
  35. endef
  36. define Package/naiveproxy/description
  37. NaïveProxy uses Chrome's network stack to camouflage traffic with strong
  38. censorship resistance and low detectability. Reusing Chrome's stack also
  39. ensures best practices in performance and security.
  40. endef
  41. ifneq ($(CONFIG_CCACHE),)
  42. export CCACHE_SLOPPINESS=time_macros
  43. export CCACHE_BASEDIR=$(PKG_BUILD_DIR)/src
  44. export CCACHE_CPP2=yes
  45. export naive_ccache_flags=cc_wrapper="$(CCACHE)"
  46. endif
  47. CLANG_VER:=19-init-8091-gab037c4f-1
  48. CLANG_FILE:=clang-llvmorg-$(CLANG_VER).tgz
  49. define Download/CLANG
  50. URL:=https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64
  51. URL_FILE:=$(CLANG_FILE)
  52. FILE:=$(CLANG_FILE)
  53. HASH:=6b797d118cc593eca0f2e568169295a5a9b65ddabed2de34b9a201a4bb7990f5
  54. endef
  55. PGO_VER:=6422-1715102072-9bdbfa29f2bb1ff28f0f031b98501a1193b8d03b-13cfbf145656b369f9c23bff70ab2fb07e1e2fdb
  56. PGO_FILE:=chrome-linux-$(PGO_VER).profdata
  57. define Download/PGO_PROF
  58. URL:=https://storage.googleapis.com/chromium-optimization-profiles/pgo_profiles
  59. URL_FILE:=$(PGO_FILE)
  60. FILE:=$(PGO_FILE)
  61. HASH:=5a0b3d3f75c536cade97f15a71c17424c868948fa26a8267488bd588756b66af
  62. endef
  63. define Build/Prepare
  64. $(call Build/Prepare/Default)
  65. ( \
  66. pushd $(PKG_BUILD_DIR)/src ; \
  67. mkdir -p "chrome/build/pgo_profiles" ; \
  68. $(CP) "$(DL_DIR)/$(PGO_FILE)" "chrome/build/pgo_profiles" ; \
  69. mkdir -p "third_party/llvm-build/Release+Asserts" ; \
  70. $(TAR) -xzf "$(DL_DIR)/$(CLANG_FILE)" -C "third_party/llvm-build/Release+Asserts" ; \
  71. echo -e "llvmorg-$(CLANG_VER)" > "third_party/llvm-build/Release+Asserts/cr_build_revision" ; \
  72. popd ; \
  73. )
  74. endef
  75. define Build/Configure
  76. ( \
  77. pushd "$(PKG_BUILD_DIR)/src" ; \
  78. . ../init_env.sh "$(ARCH)" $(CPU_TYPE) $(CPU_SUBTYPE) "$(TOOLCHAIN_DIR)" ; \
  79. export naive_flags+=" $$$${naive_ccache_flags}" ; \
  80. mkdir -p "out" ; \
  81. gn gen "out/Release" --args="$$$${naive_flags}" --script-executable="$(PYTHON)" ; \
  82. popd ; \
  83. )
  84. endef
  85. define Build/Compile
  86. +$(NINJA) -C "$(PKG_BUILD_DIR)/src/out/Release" naive
  87. endef
  88. define Package/naiveproxy/install
  89. $(INSTALL_DIR) $(1)/usr/bin
  90. $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/out/Release/naive $(1)/usr/bin/naive
  91. endef
  92. $(eval $(call Download,CLANG))
  93. $(eval $(call Download,PGO_PROF))
  94. $(eval $(call BuildPackage,naiveproxy))