# Contributor: Severin Neumann <neumanns@cisco.com>
# Maintainer: Severin Neumann <neumanns@cisco.com>
pkgname=opentelemetry-cpp
pkgver=1.19.0
pkgrel=4
_opentelemetryproto_ver=1.5.0
pkgdesc="OpenTelemetry C++"
url="https://opentelemetry.io/"
arch="all !s390x" # failing test (TraceIdRatioBasedSampler.ShouldSampleWithoutContext)
license="Apache-2.0"
depends_dev="
	$pkgname=$pkgver-r$pkgrel
	$pkgname-exporter-otlp-common=$pkgver-r$pkgrel
	$pkgname-exporter-otlp-grpc=$pkgver-r$pkgrel
	$pkgname-exporter-otlp-http=$pkgver-r$pkgrel
	$pkgname-exporter-zipkin=$pkgver-r$pkgrel
	"
makedepends="
	abseil-cpp-dev
	c-ares-dev
	cmake
	curl-dev
	grpc-dev
	nlohmann-json
	protobuf-dev
	re2-dev
	samurai
	"
checkdepends="
	benchmark-dev
	gtest-dev
	"
subpackages="
	$pkgname-dev
	$pkgname-exporter-otlp-common
	$pkgname-exporter-otlp-grpc
	$pkgname-exporter-otlp-http
	$pkgname-exporter-zipkin
	"
source="
	https://github.com/open-telemetry/opentelemetry-cpp/archive/v$pkgver/opentelemetry-cpp-v$pkgver.tar.gz
	opentelemetry-proto-$_opentelemetryproto_ver.tar.gz::https://github.com/open-telemetry/opentelemetry-proto/archive/refs/tags/v$_opentelemetryproto_ver.tar.gz
	"

build() {
	cmake -B build -G Ninja -Wno-dev \
		-DOTELCPP_PROTO_PATH="$srcdir/opentelemetry-proto-$_opentelemetryproto_ver" \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DBUILD_SHARED_LIBS=ON \
		-DBUILD_TESTING="$(want_check && echo ON || echo OFF)" \
		-DBUILD_W3CTRACECONTEXT_TEST="$(want_check && echo ON || echo OFF)" \
		-DCMAKE_BUILD_TYPE=None \
		-DWITH_ABSEIL=ON \
		-DWITH_STL=ON \
		-DWITH_EXAMPLES=OFF \
		-DWITH_ZPAGES=OFF \
		-DWITH_OTLP_GRPC=ON \
		-DWITH_OTLP_HTTP=ON \
		-DWITH_ZIPKIN=ON \
		-DWITH_PROMETHEUS=OFF \
		-DWITH_LOGS_PREVIEW=OFF \
		-DWITH_ASYNC_EXPORT_PREVIEW=OFF \
		-DWITH_METRICS_EXEMPLAR_PREVIEW=OFF
	cmake --build build
}

check() {
	ctest --test-dir build -j1 -E '(trace.FastRandomNumberGeneratorTest.GenerateUniqueNumbers)'
}

package() {
	DESTDIR="$pkgdir" cmake --install build
}

common() {
	pkgdesc="OpenTelemetry C++ OTLP Common Libraries"
	depends="$pkgname=$pkgver-r$pkgrel"
	amove usr/lib/libopentelemetry_otlp*
}

http() {
	pkgdesc="OpenTelemetry C++ OTLP HTTP exporter"
	depends="$pkgname=$pkgver-r$pkgrel $pkgname-exporter-otlp-common=$pkgver-r$pkgrel"
	amove usr/lib/libopentelemetry_exporter_otlp_http*
}

grpc() {
	pkgdesc="OpenTelemetry C++ OTLP gRPC exporter"
	depends="$pkgname=$pkgver-r$pkgrel $pkgname-exporter-otlp-common=$pkgver-r$pkgrel"
	amove usr/lib/libopentelemetry_exporter_otlp_grpc*
}

zipkin() {
	pkgdesc="OpenTelemetry C++ OTLP Zipkin exporter"
	depends="$pkgname=$pkgver-r$pkgrel"
	amove usr/lib/libopentelemetry_exporter_zipkin*
}

sha512sums="
639ca462dc2f3633f6b9c7b89000276d08ddbe1ee9d4322ac6568ad07d198000cf3c7c5d940e10db8142494b984f1f969956524cc2df4a65d072f4c10f367ddb  opentelemetry-cpp-v1.19.0.tar.gz
8a3f95543c6093300f0c54f31bf050137d0c6f1d867a7cda7af066b83572643e636b33a9b53e297f8c309bc262dde63cf7c10f515e0fe0cbbce1d12fafbe2482  opentelemetry-proto-1.5.0.tar.gz
"
