Makefile 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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:=113.0.5672.62-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:=f8e86f5e9fc8985042d4fa8e0122b513f187cc878bfbabf133e520fa8d5f3410
  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. ifneq ($(wildcard $(TOPDIR)/feeds/packages/devel/ninja/ninja.mk),)
  16. PKG_BUILD_DEPENDS+= ninja/host
  17. endif
  18. PKG_BUILD_PARALLEL:=1
  19. PKG_USE_MIPS16:=0
  20. ifneq ($(CONFIG_CPU_TYPE)," ")
  21. CPU_TYPE:=$(word 1, $(subst +," ,$(CONFIG_CPU_TYPE)))
  22. CPU_SUBTYPE:=$(word 2, $(subst +, ",$(CONFIG_CPU_TYPE)))
  23. ifeq ($(CPU_SUBTYPE),)
  24. CPU_SUBTYPE:=""
  25. endif
  26. else
  27. CPU_TYPE:=""
  28. CPU_SUBTYPE:=""
  29. endif
  30. include $(INCLUDE_DIR)/package.mk
  31. define Package/naiveproxy
  32. SECTION:=net
  33. CATEGORY:=Network
  34. SUBMENU:=Web Servers/Proxies
  35. TITLE:=Make a fortune quietly
  36. URL:=https://github.com/klzgrad/naiveproxy
  37. DEPENDS:=@!(arc||armeb||mips||mips64||powerpc||TARGET_gemini) +libatomic
  38. endef
  39. define Package/naiveproxy/description
  40. NaïveProxy uses Chrome's network stack to camouflage traffic with strong
  41. censorship resistance and low detectability. Reusing Chrome's stack also
  42. ensures best practices in performance and security.
  43. endef
  44. ifneq ($(CONFIG_CCACHE),)
  45. export CCACHE_SLOPPINESS=time_macros
  46. export CCACHE_BASEDIR=$(PKG_BUILD_DIR)/src
  47. export CCACHE_CPP2=yes
  48. export naive_ccache_flags=cc_wrapper="$(CCACHE)"
  49. endif
  50. CLANG_VER:=17-init-4759-g547e3456-1
  51. CLANG_FILE:=clang-llvmorg-$(CLANG_VER).tgz
  52. define Download/CLANG
  53. URL:=https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64
  54. URL_FILE:=$(CLANG_FILE)
  55. FILE:=$(CLANG_FILE)
  56. HASH:=1949427e0030523dc86bdf4b63dac88228cfe05c57318be2d0b0b290297925f6
  57. endef
  58. PGO_VER:=5672-1682419203-4df9c2f8b97b0e23303fa2b15279906232abc306
  59. PGO_FILE:=chrome-linux-$(PGO_VER).profdata
  60. define Download/PGO_PROF
  61. URL:=https://storage.googleapis.com/chromium-optimization-profiles/pgo_profiles
  62. URL_FILE:=$(PGO_FILE)
  63. FILE:=$(PGO_FILE)
  64. HASH:=5fae812f617d882222cd5aa5620fb355583391127f608759b030c231b71d4c90
  65. endef
  66. define Build/Prepare
  67. $(call Build/Prepare/Default)
  68. ( \
  69. pushd $(PKG_BUILD_DIR)/src ; \
  70. mkdir -p "chrome/build/pgo_profiles" ; \
  71. $(CP) "$(DL_DIR)/$(PGO_FILE)" "chrome/build/pgo_profiles" ; \
  72. mkdir -p "third_party/llvm-build/Release+Asserts" ; \
  73. $(TAR) -xzf "$(DL_DIR)/$(CLANG_FILE)" -C "third_party/llvm-build/Release+Asserts" ; \
  74. echo -e "llvmorg-$(CLANG_VER)" > "third_party/llvm-build/Release+Asserts/cr_build_revision" ; \
  75. popd ; \
  76. )
  77. endef
  78. define Build/Configure
  79. ( \
  80. pushd "$(PKG_BUILD_DIR)/src" ; \
  81. . ../init_env.sh "$(ARCH)" $(CPU_TYPE) $(CPU_SUBTYPE) "$(TOOLCHAIN_DIR)" ; \
  82. export naive_flags+=" $$$${naive_ccache_flags}" ; \
  83. mkdir -p "out" ; \
  84. gn gen "out/Release" --args="$$$${naive_flags}" --script-executable="$(PYTHON)" ; \
  85. popd ; \
  86. )
  87. endef
  88. define Build/Compile
  89. ninja -C "$(PKG_BUILD_DIR)/src/out/Release" naive
  90. endef
  91. define Package/naiveproxy/install
  92. $(INSTALL_DIR) $(1)/usr/bin
  93. $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/out/Release/naive $(1)/usr/bin/naive
  94. endef
  95. $(eval $(call Download,CLANG))
  96. $(eval $(call Download,PGO_PROF))
  97. $(eval $(call BuildPackage,naiveproxy))