From 62c1f886189ec81392d768fa21dc0ff6a9be1298 Mon Sep 17 00:00:00 2001 From: Dmitry Ilyin Date: Mon, 17 Oct 2022 14:44:10 +0300 Subject: [PATCH] Optimize zerotier-one size by applying reasonable compilation flags (#515) --- Makefile | 4 +- .../package/zerotier-one/0001-makefile.patch | 62 ++++++++++++++++--- general/package/zerotier-one/zerotier-one.mk | 6 +- 3 files changed, 60 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 6e4a0626..92415583 100644 --- a/Makefile +++ b/Makefile @@ -132,9 +132,9 @@ $(OUT_DIR)/toolchain-params.mk: $(OUT_DIR)/.config $(SCRIPTS_DIR)/create_toolcha # 2. Elaborate how to compile wireguard-linux-compat under GCC 12 without # this patch define remove-patches - $(if $(filter $(shell echo $(BR_VER)|cut -d. -f 1),2020),,rm general/package/all-patches/m4/0003-c-stack-stop-using-SIGSTKSZ.patch) + $(if $(filter $(shell echo $(BR_VER)|cut -d. -f 1),2020),,-rm general/package/all-patches/m4/0003-c-stack-stop-using-SIGSTKSZ.patch) - $(if $(filter $(BR_VER),2020.02.12 2021.02.12),rm general/package/all-patches/wireguard-linux-compat/remove_fallthrough.patch) + $(if $(filter $(BR_VER),2020.02.12 2021.02.12),-rm general/package/all-patches/wireguard-linux-compat/remove_fallthrough.patch) endef diff --git a/general/package/zerotier-one/0001-makefile.patch b/general/package/zerotier-one/0001-makefile.patch index 65b1fd8b..2a064112 100644 --- a/general/package/zerotier-one/0001-makefile.patch +++ b/general/package/zerotier-one/0001-makefile.patch @@ -1,18 +1,18 @@ ---- a/make-linux.mk 2022-04-29 20:05:45.861358153 +0300 -+++ b/make-linux.mk 2022-04-29 20:07:28.121520301 +0300 -@@ -25,8 +25,8 @@ +diff --git a/make-linux.mk b/make-linux.mk +index 3941573c..d7905cb1 100644 +--- a/make-linux.mk ++++ b/make-linux.mk +@@ -25,7 +25,7 @@ TIMESTAMP=$(shell date +"%Y%m%d%H%M") # otherwise build into binary as done on Mac and Windows. ONE_OBJS+=osdep/PortMapper.o override DEFS+=-DZT_USE_MINIUPNPC -MINIUPNPC_IS_NEW_ENOUGH=$(shell grep -sqr '.*define.*MINIUPNPC_VERSION.*"2..*"' /usr/include/miniupnpc/miniupnpc.h && echo 1) --#MINIUPNPC_IS_NEW_ENOUGH=$(shell grep -sqr '.*define.*MINIUPNPC_VERSION.*"2.."' /usr/include/miniupnpc/miniupnpc.h && echo 1) +MINIUPNPC_IS_NEW_ENOUGH=$(shell grep -sqr '.*define.*MINIUPNPC_VERSION.*"2..*"' $(STAGING_DIR)/usr/include/miniupnpc/miniupnpc.h && echo 1) -+#MINIUPNPC_IS_NEW_ENOUGH=$(shell grep -sqr '.*define.*MINIUPNPC_VERSION.*"2.."' $(STAGING_DIR)/usr/include/miniupnpc/miniupnpc.h && echo 1) + #MINIUPNPC_IS_NEW_ENOUGH=$(shell grep -sqr '.*define.*MINIUPNPC_VERSION.*"2.."' /usr/include/miniupnpc/miniupnpc.h && echo 1) ifeq ($(MINIUPNPC_IS_NEW_ENOUGH),1) override DEFS+=-DZT_USE_SYSTEM_MINIUPNPC - LDLIBS+=-lminiupnpc -@@ -34,7 +34,7 @@ - override DEFS+=-DMINIUPNP_STATICLIB -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -DOS_STRING=\"Linux\" -DMINIUPNPC_VERSION_STRING=\"2.0\" -DUPNP_VERSION_STRING=\"UPnP/1.1\" -DENABLE_STRNATPMPERR +@@ -34,7 +34,7 @@ else + override DEFS+=-DMINIUPNP_STATICLIB -DMINIUPNPC_SET_SOCKET_TIMEOUT -DMINIUPNPC_GET_SRC_ADDR -D_BSD_SOURCE -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600 -DOS_STRING="\"Linux\"" -DMINIUPNPC_VERSION_STRING="\"2.0\"" -DUPNP_VERSION_STRING="\"UPnP/1.1\"" -DENABLE_STRNATPMPERR ONE_OBJS+=ext/miniupnpc/connecthostport.o ext/miniupnpc/igd_desc_parse.o ext/miniupnpc/minisoap.o ext/miniupnpc/minissdpc.o ext/miniupnpc/miniupnpc.o ext/miniupnpc/miniwget.o ext/miniupnpc/minixml.o ext/miniupnpc/portlistingparse.o ext/miniupnpc/receivedata.o ext/miniupnpc/upnpcommands.o ext/miniupnpc/upnpdev.o ext/miniupnpc/upnperrors.o ext/miniupnpc/upnpreplyparse.o endif -ifeq ($(wildcard /usr/include/natpmp.h),) @@ -20,7 +20,31 @@ ONE_OBJS+=ext/libnatpmp/natpmp.o ext/libnatpmp/getgateway.o else LDLIBS+=-lnatpmp -@@ -316,8 +316,8 @@ +@@ -66,11 +66,11 @@ ifeq ($(ZT_DEBUG),1) + # C25519 in particular is almost UNUSABLE in -O0 even on a 3ghz box! + node/Salsa20.o node/SHA512.o node/C25519.o node/Poly1305.o: CXXFLAGS=-Wall -O2 -g -pthread $(INCLUDES) $(DEFS) + else +- CFLAGS?=-O3 -fstack-protector ++ CFLAGS?=-Os + override CFLAGS+=-Wall -Wno-deprecated -pthread $(INCLUDES) -DNDEBUG $(DEFS) +- CXXFLAGS?=-O3 -fstack-protector ++ CXXFLAGS?=-Os + override CXXFLAGS+=-Wall -Wno-deprecated -std=c++17 -pthread $(INCLUDES) -DNDEBUG $(DEFS) +- LDFLAGS=-pie -Wl,-z,relro,-z,now ++ LDFLAGS= + RUSTFLAGS=--release + endif + +@@ -291,7 +291,7 @@ override DEFS+=-D_MT_ALLOCATOR_H -D_POOL_ALLOCATOR_H -D_EXTPTR_ALLOCATOR_H -D_DE + + # Static builds, which are currently done for a number of Linux targets + ifeq ($(ZT_STATIC),1) +- override LDFLAGS+=-static ++ override LDFLAGS+=-static-libstdc++ + endif + + # For building an official semi-static binary on CentOS 7 +@@ -314,8 +314,8 @@ ifeq ($(ZT_ARCHITECTURE),3) override CXXFLAGS+=-march=armv5t -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm ZT_USE_ARM32_NEON_ASM_CRYPTO=0 else @@ -31,3 +55,23 @@ ZT_USE_ARM32_NEON_ASM_CRYPTO=0 endif endif +@@ -335,8 +335,8 @@ ifeq ($(ZT_USE_ARM32_NEON_ASM_CRYPTO),1) + endif + + # Position Independence +-override CFLAGS+=-fPIC -fPIE +-override CXXFLAGS+=-fPIC -fPIE ++override CFLAGS+=-flto ++override CXXFLAGS+=-flto + + .PHONY: all + all: one +@@ -360,7 +360,7 @@ zerotier-cli: zerotier-one + $(ONE_OBJS): zeroidc + + libzerotiercore.a: FORCE +- make CFLAGS="-O3 -fstack-protector -fPIC" CXXFLAGS="-O3 -std=c++17 -fstack-protector -fPIC" $(CORE_OBJS) ++ make CFLAGS="-Os" CXXFLAGS="-Os -std=c++17" $(CORE_OBJS) + ar rcs libzerotiercore.a $(CORE_OBJS) + ranlib libzerotiercore.a + diff --git a/general/package/zerotier-one/zerotier-one.mk b/general/package/zerotier-one/zerotier-one.mk index a7da87f1..3b97538f 100644 --- a/general/package/zerotier-one/zerotier-one.mk +++ b/general/package/zerotier-one/zerotier-one.mk @@ -4,7 +4,7 @@ # ################################################################################ -ZEROTIER_ONE_VERSION = 7e46c8359231b4aa55c5d739462c4e5682d35755 +ZEROTIER_ONE_VERSION = 1.10.1 ZEROTIER_ONE_SITE = $(call github,zerotier,ZeroTierOne,$(ZEROTIER_ONE_VERSION)) ZEROTIER_ONE_LICENSE = BUSL-1.1 ZEROTIER_ONE_LICENSE_FILES = LICENSE.txt @@ -13,6 +13,10 @@ ZEROTIER_ONE_MAKE_OPTS = ZT_STATIC=1 ZT_SSO_SUPPORTED=0 \ CC="$(TARGET_CC)" \ CXX="$(TARGET_CXX)" +ZEROTIER_ONE_DEPENDENCIES = \ + libminiupnpc \ + libnatpmp + define ZEROTIER_ONE_BUILD_CMDS $(MAKE) $(ZEROTIER_ONE_MAKE_OPTS) -C $(@D) all endef