Makefile 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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:=92.0.4515.107-1
  7. PKG_RELEASE:=$(AUTORELEASE)
  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:=d44e6d6efe2fe6ee0da9dafef427ee5971d4a253d8156ad8d7acab053d055463
  11. PKG_LICENSE:=BSD 3-Clause
  12. PKG_LICENSE_FILES:=LICENSE
  13. PKG_MAINTAINER:=Tianling Shen <[email protected]>
  14. PKG_BUILD_DEPENDS:=python3/host
  15. ifneq ($(wildcard $(TOPDIR)/feeds/packages/devel/ninja/ninja.mk),)
  16. PKG_BUILD_DEPENDS+= ninja/host
  17. endif
  18. PKG_USE_MIPS16:=0
  19. PKG_BUILD_PARALLEL:=1
  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/config
  32. depends on !(arc||armeb||mips||mips64||powerpc)
  33. endef
  34. define Package/naiveproxy
  35. SECTION:=net
  36. CATEGORY:=Network
  37. SUBMENU:=Web Servers/Proxies
  38. URL:=https://github.com/klzgrad/naiveproxy
  39. TITLE:=Make a fortune quietly
  40. DEPENDS:=+libatomic
  41. endef
  42. define Package/naiveproxy/description
  43. NaïveProxy uses Chrome's network stack to camouflage traffic with strong
  44. censorship resistance and low detectability. Reusing Chrome's stack also
  45. ensures best practices in performance and security.
  46. endef
  47. ifneq ($(CONFIG_CCACHE),)
  48. export CCACHE_SLOPPINESS=time_macros
  49. export CCACHE_BASEDIR=$(PKG_BUILD_DIR)/src
  50. export CCACHE_CPP2=yes
  51. export naive_ccache_flags=cc_wrapper="$(CCACHE)"
  52. endif
  53. CLANG_VER:=13-init-10392-gd3676d4b-2
  54. CLANG_FILE:=clang-llvmorg-$(CLANG_VER).tgz
  55. define Download/CLANG
  56. URL:=https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64
  57. URL_FILE:=$(CLANG_FILE)
  58. FILE:=$(CLANG_FILE)
  59. HASH:=4eb2ca84afcb7afdf1d96badec12b66edf109dacd2f4e900774f4584dd9bd609
  60. endef
  61. GN_VER:=39a87c0b36310bdf06b692c098f199a0d97fc810
  62. GN_FILE:=gn-git_revision-$(GN_VER).zip
  63. define Download/GN_TOOL
  64. URL:=https://chrome-infra-packages.appspot.com/dl/gn/gn/linux-amd64/+
  65. URL_FILE:=git_revision:$(GN_VER)
  66. FILE:=$(GN_FILE)
  67. HASH:=4c4400d81c00734f1b0ecd14b64ac3778dd939d29d807f13bd08a3c1f8ddc48b
  68. endef
  69. PGO_VER:=4515-1626533253-34e4718a21d6b148e3c9459b9f213fba5d58ef83
  70. PGO_FILE:=chrome-linux-$(PGO_VER).profdata
  71. define Download/PGO_PROF
  72. URL:=https://storage.googleapis.com.cnpmjs.org/chromium-optimization-profiles/pgo_profiles \
  73. https://storage.googleapis.com/chromium-optimization-profiles/pgo_profiles
  74. URL_FILE:=$(PGO_FILE)
  75. FILE:=$(PGO_FILE)
  76. HASH:=3c2acbecdc2a8ba58709954f29858cb2cff38c703f5f3a296e8c160fcfb53caf
  77. endef
  78. define Build/Prepare
  79. $(call Build/Prepare/Default)
  80. ( \
  81. cd $(PKG_BUILD_DIR)/src ; \
  82. mkdir -p "chrome/build/pgo_profiles" ; \
  83. $(CP) "$(DL_DIR)/$(PGO_FILE)" "chrome/build/pgo_profiles" ; \
  84. mkdir -p "third_party/llvm-build/Release+Asserts" ; \
  85. $(TAR) -xzf "$(DL_DIR)/$(CLANG_FILE)" -C "third_party/llvm-build/Release+Asserts" ; \
  86. mkdir -p "gn/out" ; \
  87. unzip -o "$(DL_DIR)/$(GN_FILE)" -d "gn/out" ; \
  88. )
  89. endef
  90. ifeq ($(NINJA),)
  91. NINJA = \
  92. MAKEFLAGS="$(MAKE_JOBSERVER)" \
  93. $(STAGING_DIR_HOSTPKG)/bin/ninja \
  94. $(if $(findstring c,$(OPENWRT_VERBOSE)),-v) \
  95. $(if $(MAKE_JOBSERVER),,-j1)
  96. endif
  97. define Build/Compile
  98. ( \
  99. cd "$(PKG_BUILD_DIR)/src" ; \
  100. . ../init_env.sh "$(ARCH)" $(CPU_TYPE) $(CPU_SUBTYPE) "$(TOOLCHAIN_DIR)" ; \
  101. export naive_flags+=" $$$${naive_ccache_flags}" ; \
  102. mkdir -p "out" ; \
  103. ./gn/out/gn gen "out/Release" --args="$$$${naive_flags}" --script-executable="$(PYTHON)" ; \
  104. )
  105. +$(NINJA) -C "$(PKG_BUILD_DIR)/src/out/Release" naive
  106. endef
  107. define Package/naiveproxy/install
  108. $(INSTALL_DIR) $(1)/usr/bin
  109. $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/out/Release/naive $(1)/usr/bin/naive
  110. endef
  111. $(eval $(call Download,CLANG))
  112. $(eval $(call Download,GN_TOOL))
  113. $(eval $(call Download,PGO_PROF))
  114. $(eval $(call BuildPackage,naiveproxy))