From 478cd2840bca3071468c071732e766cc3f05cc12 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Fri, 11 Jul 2025 11:07:47 -0700 Subject: [PATCH] add otel to mac & linux builds Off by default. set `ZT_OTEL=1` to enable --- make-linux.mk | 17 +++++++++++++++++ make-mac.mk | 23 ++++++++++++++++++++--- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/make-linux.mk b/make-linux.mk index f0f63161f..066f98a83 100644 --- a/make-linux.mk +++ b/make-linux.mk @@ -312,6 +312,14 @@ ifeq ($(ZT_SSO_SUPPORTED), 1) endif endif +OTEL_VERSION=1.21.0 +ifeq (${ZT_OTEL},1) + OTEL_INSTALL_DIR=ext/opentelemetry-cpp-${OTEL_VERSION}/localinstall + DEFS+=-DZT_OTEL + INCLUDES+=-I${OTEL_INSTALL_DIR}/include -Iext/opentelemetry-cpp/exporters/otlp/include + LIBS+=-L${OTEL_INSTALL_DIR}/lib -lopentelemetry_exporter_in_memory_metric -lopentelemetry_exporter_in_memory -lopentelemetry_exporter_ostream_logs -lopentelemetry_exporter_ostream_metrics -lopentelemetry_exporter_ostream_span -lopentelemetry_trace -lopentelemetry_common -lopentelemetry_resources -lopentelemetry_logs -lopentelemetry_metrics -lopentelemetry_version +endif + # Disable software updates by default on Linux since that is normally done with package management override DEFS+=-DZT_BUILD_PLATFORM=1 -DZT_BUILD_ARCHITECTURE=$(ZT_ARCHITECTURE) -DZT_SOFTWARE_UPDATE_DEFAULT="\"disable\"" @@ -417,6 +425,15 @@ manpages: FORCE doc: manpages +ifeq (${ZT_OTEL},1) +otel: + cd ext/opentelemetry-cpp-1.21.0 && mkdir -p localinstall && cmake -B build -S . -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$(shell pwd)/ext/opentelemetry-cpp-1.21.0/localinstall -DBUILD_TESTING=OFF -DOPENTELEMETRY_INSTALL=ON -DWITH_BENCHMARK=OFF -DWITH_EXAMPLES=OFF -DWITH_FUNC_TESTS=OFF + cd ext/opentelemetry-cpp-1.21.0/build && make install +else +otel: + @echo "OpenTelemetry not enabled, skipping build." +endif + clean: FORCE rm -rf *.a *.so *.o node/*.o controller/*.o osdep/*.o service/*.o ext/http-parser/*.o ext/miniupnpc/*.o ext/libnatpmp/*.o $(CORE_OBJS) $(ONE_OBJS) zerotier-one zerotier-idtool zerotier-cli zerotier-selftest build-* ZeroTierOneInstaller-* *.deb *.rpm .depend debian/files debian/zerotier-one*.debhelper debian/zerotier-one.substvars debian/*.log debian/zerotier-one doc/node_modules ext/misc/*.o debian/.debhelper debian/debhelper-build-stamp docker/zerotier-one rustybits/target diff --git a/make-mac.mk b/make-mac.mk index b8a9d6db9..35ccadb49 100644 --- a/make-mac.mk +++ b/make-mac.mk @@ -103,6 +103,14 @@ ifeq ($(ZT_VAULT_SUPPORT),1) LIBS+=-lcurl endif +OTEL_VERSION=1.21.0 +ifeq (${ZT_OTEL},1) + OTEL_INSTALL_DIR=ext/opentelemetry-cpp-${OTEL_VERSION}/localinstall + DEFS+=-DZT_OTEL + INCLUDES+=-I${OTEL_INSTALL_DIR}/include -Iext/opentelemetry-cpp/exporters/otlp/include + LIBS+=-L${OTEL_INSTALL_DIR}/lib -lopentelemetry_exporter_in_memory_metric -lopentelemetry_exporter_in_memory -lopentelemetry_exporter_ostream_logs -lopentelemetry_exporter_ostream_metrics -lopentelemetry_exporter_ostream_span -lopentelemetry_trace -lopentelemetry_common -lopentelemetry_resources -lopentelemetry_logs -lopentelemetry_metrics -lopentelemetry_version +endif + all: one ext/x64-salsa2012-asm/salsa2012.o: @@ -116,9 +124,9 @@ osdep/MacDNSHelper.o: osdep/MacDNSHelper.mm $(CXX) $(CXXFLAGS) -c osdep/MacDNSHelper.mm -o osdep/MacDNSHelper.o ifeq ($(ZT_CONTROLLER),1) -one: zeroidc smeeclient $(CORE_OBJS) $(ONE_OBJS) one.o mac-agent +one: otel zeroidc smeeclient $(CORE_OBJS) $(ONE_OBJS) one.o mac-agent else -one: zeroidc $(CORE_OBJS) $(ONE_OBJS) one.o mac-agent +one: otel zeroidc $(CORE_OBJS) $(ONE_OBJS) one.o mac-agent endif $(CXX) $(CXXFLAGS) -o zerotier-one $(CORE_OBJS) $(ONE_OBJS) one.o $(LIBS) rustybits/target/libzeroidc.a # $(STRIP) zerotier-one @@ -216,7 +224,16 @@ docker-release: _buildx docker buildx build --platform linux/386,linux/amd64,linux/arm/v7,linux/arm64,linux/mips64le,linux/ppc64le,linux/s390x -t zerotier/zerotier:${RELEASE_DOCKER_TAG} -t zerotier/zerotier:latest --build-arg VERSION=${RELEASE_VERSION} -f Dockerfile.release . --push clean: - rm -rf MacEthernetTapAgent *.dSYM build-* *.a *.pkg *.dmg *.o node/*.o controller/*.o service/*.o osdep/*.o ext/http-parser/*.o $(CORE_OBJS) $(ONE_OBJS) zerotier-one zerotier-idtool zerotier-selftest zerotier-cli zerotier doc/node_modules zt1_update_$(ZT_BUILD_PLATFORM)_$(ZT_BUILD_ARCHITECTURE)_* rustybits/target/ + rm -rf MacEthernetTapAgent *.dSYM build-* *.a *.pkg *.dmg *.o node/*.o controller/*.o service/*.o osdep/*.o ext/http-parser/*.o $(CORE_OBJS) $(ONE_OBJS) zerotier-one zerotier-idtool zerotier-selftest zerotier-cli zerotier doc/node_modules zt1_update_$(ZT_BUILD_PLATFORM)_$(ZT_BUILD_ARCHITECTURE)_* rustybits/target/ ext/opentelemetry-cpp-1.21.0/localinstall ext/opentelemetry-cpp-1.21.0/build + +ifeq (${ZT_OTEL},1) +otel: + cd ext/opentelemetry-cpp-1.21.0 && mkdir -p localinstall && cmake -B build -S . -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$(shell pwd)/ext/opentelemetry-cpp-1.21.0/localinstall -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DCMAKE_OSX_DEPLOYMENT_TARGET=${MACOS_VERSION_MIN} -DBUILD_TESTING=OFF -DOPENTELEMETRY_INSTALL=ON -DWITH_BENCHMARK=OFF -DWITH_EXAMPLES=OFF -DWITH_FUNC_TESTS=OFF + cd ext/opentelemetry-cpp-1.21.0/build && make install +else +otel: + @echo "OpenTelemetry not enabled, skipping build." +endif distclean: clean