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:=129.0.6668.81-2
  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:=c66ac95b0a685fb84f931a267873979cd59708e8966fb9764c53fe2deb24227e
  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:=20-init-1009-g7088a5ed-10
  48. CLANG_FILE:=clang-llvmorg-$(CLANG_VER).tar.xz
  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:=32ac9d9864a6bd99242f1a97778b3a074ac1151ce3eca369903f2ef5337c787a
  54. endef
  55. PGO_VER:=1723053597-b7a6f793b48020befd6a1e60819840a456c519b3-98f747673cbba839fedf299e6c76ac032fad32f0
  56. PGO_FILE:=chrome-linux-main-$(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:=f4df544116e10c5495148ee9afedbb07f4ee2659e461dbf0f69755b8d338ceec
  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) -xJf "$(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))