Makefile 3.2 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:=121.0.6167.71-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:=8e6d3029a0249140595fab3d668103881689f6c7ef7c65230191f674a370b309
  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:=18-init-12938-geb1d5065-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:=fd1628fdb22157a7328c25802a745f17f92f5210a8b62591202deb92413f52e5
  54. endef
  55. PGO_VER:=6167-1705427108-cb39f8a22759d3159f79efc273ac8b13a0f3882a
  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:=7632c875db539cb1d4a0df6eb3acc9e155d2d477376dec1f815081bbae7cdd4f
  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))