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:=102.0.5005.61-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:=725d4ab5898691c3c21c8116f6251a9d34ed36b11ac3a20fcb4bbd057c0a434d
  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:=15-init-7570-gba4537b2-1
  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:=40090455226011c896ecae5770c55a06deb39849f8b6a3c167e7ced843154073
  70. endef
  71. GN_VER:=fd9f2036f26d83f9fcfe93042fb952e5a7fe2167
  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:=8c75d5371934b9bde92f17ab41e83f9c2a7817c4c527b0093e68d609821200c4
  78. endef
  79. PGO_VER:=5005-1652783756-51c73d0c010d6007ebdf3ca8150e9544cb705cc6
  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:=d85a1683a1eb53c6efd8cf5f5423e275d531fe41807fb875a60a4f93de50b45f
  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))