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:=140.0.7339.123-3
  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:=c69c4b256957a9c88f8cfd11ffe5954727682ee02cdc7c7b4564b181f898e4dc
  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||loongarch64||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-16348-gbd809ffb-15
  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:=b448a78b42740352a37b458115a9482f213097bbf28f1f839e72cab829bdfa6d
  56. endef
  57. PGO_VER:=main-1752989296-3dc3c84b1ea64dfbadeca18145c6e823bab3ff87-3a0e503d2bd87771c1e55103ac2a9a7b59a7411b
  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:=97dcc3060a7ea38abffffc128e030d16bed0992810a551cef740d56f1eb1f09b
  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_ROOT_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))