Makefile 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  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:=104.0.5112.79-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:=1c0ef77d448eb0cb6b75bfcbda6cef09e93ddfcdf406dc88030d8ddf748639c5
  11. PKG_LICENSE:=BSD 3-Clause
  12. PKG_LICENSE_FILES:=LICENSE
  13. PKG_MAINTAINER:=Tianling Shen <[email protected]>
  14. ifneq ($(wildcard $(TOPDIR)/feeds/packages/devel/ninja/ninja.mk),)
  15. PKG_BUILD_DEPENDS+= ninja/host
  16. endif
  17. PKG_USE_MIPS16:=0
  18. PKG_BUILD_PARALLEL:=1
  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/Default
  31. URL:=https://github.com/klzgrad/naiveproxy
  32. DEPENDS:=@!(arc||armeb||mips||mips64||powerpc||TARGET_gemini) +libatomic
  33. endef
  34. define Package/naiveproxy
  35. $(call Package/naiveproxy/Default)
  36. SECTION:=net
  37. CATEGORY:=Network
  38. SUBMENU:=Web Servers/Proxies
  39. TITLE:=Make a fortune quietly
  40. endef
  41. define Package/libcronet
  42. $(call Package/naiveproxy/Default)
  43. SECTION:=libs
  44. CATEGORY:=Libraries
  45. TITLE:=The Chromium network stack library
  46. endef
  47. define Package/naiveproxy/description
  48. NaïveProxy uses Chrome's network stack to camouflage traffic with strong
  49. censorship resistance and low detectability. Reusing Chrome's stack also
  50. ensures best practices in performance and security.
  51. endef
  52. define Package/libcronet/description
  53. Cronet is the Chromium network stack made available to Android apps as a library.
  54. Cronet takes advantage of multiple technologies that reduce the latency and
  55. increase the throughput of the network requests that your app needs to work.
  56. endef
  57. ifneq ($(CONFIG_CCACHE),)
  58. export CCACHE_SLOPPINESS=time_macros
  59. export CCACHE_BASEDIR=$(PKG_BUILD_DIR)/src
  60. export CCACHE_CPP2=yes
  61. export naive_ccache_flags=cc_wrapper="$(CCACHE)"
  62. endif
  63. CLANG_VER:=11722-g3f3a235a-2
  64. CLANG_FILE:=clang-llvmorg-$(CLANG_VER).tgz
  65. define Download/CLANG
  66. URL:=https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64
  67. URL_FILE:=$(CLANG_FILE)
  68. FILE:=$(CLANG_FILE)
  69. HASH:=0a5a0fa88e0b907c5c5a9dc0f1ccc66d4d993be1cc232932a5fc1f6b362c1925
  70. endef
  71. GN_VER:=2ecd43a10266bd091c98e6dcde507c64f6a0dad3
  72. GN_FILE:=gn-git_revision-$(GN_VER).zip
  73. define Download/GN_TOOL
  74. URL:=https://chrome-infra-packages.appspot.com/dl/gn/gn/linux-amd64/+
  75. URL_FILE:=git_revision:$(GN_VER)
  76. FILE:=$(GN_FILE)
  77. HASH:=fe169001046d8f386aeadf690e2d711e643fb6501519eb57e7dfb64690ff2ba1
  78. endef
  79. PGO_VER:=5112-1659156285-2fb52df3d3b1ae50774185b21f856f82b58a35fa
  80. PGO_FILE:=chrome-linux-$(PGO_VER).profdata
  81. define Download/PGO_PROF
  82. URL:=https://storage.googleapis.com/chromium-optimization-profiles/pgo_profiles
  83. URL_FILE:=$(PGO_FILE)
  84. FILE:=$(PGO_FILE)
  85. HASH:=791a8df3733a00e0389bc7b45c4910bab70545d900b6896fe14a329abf2f8952
  86. endef
  87. define Build/Prepare
  88. $(call Build/Prepare/Default)
  89. ( \
  90. cd $(PKG_BUILD_DIR)/src ; \
  91. mkdir -p "chrome/build/pgo_profiles" ; \
  92. $(CP) "$(DL_DIR)/$(PGO_FILE)" "chrome/build/pgo_profiles" ; \
  93. mkdir -p "third_party/llvm-build/Release+Asserts" ; \
  94. $(TAR) -xzf "$(DL_DIR)/$(CLANG_FILE)" -C "third_party/llvm-build/Release+Asserts" ; \
  95. mkdir -p "gn/out" ; \
  96. unzip -o "$(DL_DIR)/$(GN_FILE)" -d "gn/out" ; \
  97. )
  98. endef
  99. define Build/Configure
  100. ( \
  101. pushd "$(PKG_BUILD_DIR)/src" ; \
  102. . ../init_env.sh "$(ARCH)" $(CPU_TYPE) $(CPU_SUBTYPE) "$(TOOLCHAIN_DIR)" ; \
  103. export naive_flags+=" $$$${naive_ccache_flags}" ; \
  104. mkdir -p "out" ; \
  105. ./gn/out/gn gen "out/Release" --args="$$$${naive_flags}" --script-executable="$(PYTHON)" ; \
  106. popd ; \
  107. )
  108. endef
  109. define Build/Compile
  110. $(if $(CONFIG_PACKAGE_naiveproxy), \
  111. ninja -C "$(PKG_BUILD_DIR)/src/out/Release" naive)
  112. $(if $(CONFIG_PACKAGE_libcronet), \
  113. ninja -C "$(PKG_BUILD_DIR)/src/out/Release" cronet)
  114. endef
  115. define Build/InstallDev
  116. $(INSTALL_DIR) $(1)/usr/include
  117. $(CP) \
  118. $(PKG_BUILD_DIR)/src/components/grpc_support/include/bidirectional_stream_c.h \
  119. $(PKG_BUILD_DIR)/src/components/cronet/native/generated/cronet.idl_c.h \
  120. $(PKG_BUILD_DIR)/src/components/cronet/native/include/cronet_c.h \
  121. $(PKG_BUILD_DIR)/src/components/cronet/native/include/cronet_export.h \
  122. $(1)/usr/include/
  123. endef
  124. define Package/naiveproxy/install
  125. $(INSTALL_DIR) $(1)/usr/bin
  126. $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/out/Release/naive $(1)/usr/bin/naive
  127. endef
  128. define Package/libcronet/install
  129. $(INSTALL_DIR) $(1)/usr/lib
  130. $(CP) $(PKG_BUILD_DIR)/src/out/Release/libcronet.so $(1)/usr/lib/
  131. endef
  132. $(eval $(call Download,CLANG))
  133. $(eval $(call Download,GN_TOOL))
  134. $(eval $(call Download,PGO_PROF))
  135. $(eval $(call BuildPackage,naiveproxy))
  136. $(eval $(call BuildPackage,libcronet))