# Template file for 'protobuf'
pkgname=protobuf
version=35.1
revision=1
build_style=cmake
configure_args="
 -Dprotobuf_BUILD_SHARED_LIBS=ON
 -Dprotobuf_BUILD_LIBPROTOC=ON
 -Dprotobuf_BUILD_TESTS=OFF"
# XXX: Tests require that the abseil-cpp provides absl::scoped_mock_log
hostmakedepends="pkg-config"
makedepends="zlib-devel gtest-devel abseil-cpp-devel"
short_desc="Protocol buffers compiler"
maintainer="Orphaned <orphan@voidlinux.org>"
license="BSD-3-Clause"
homepage="https://developers.google.com/protocol-buffers/"
changelog="https://raw.githubusercontent.com/google/protobuf/master/CHANGES.txt"
distfiles="https://github.com/protocolbuffers/protobuf/releases/download/v${version}/protobuf-${version}.tar.gz"
checksum=f0b6838e7522a8da96126d487068c959bc624926368f3024ac8fd03abd0a1ac4

# Switch to versioned package
replaces="protobuf18>=0 protobuf23>=0 protobuf24>=0
 protobuf25>=0 protobuf26>=0 protobuf28>=0"
conflicts="${replaces}"

if [ "$CROSS_BUILD" ]; then
	# needs host protoc
	hostmakedepends+=" ${pkgname}"
	configure_args+=" -Dprotobuf_PROTOC_EXE=/usr/bin/protoc"
fi

if [ "$CHECK_PKGS" ] && [ -z "$CROSS_BUILD" ]; then
	configure_args+=" -Dprotobuf_BUILD_TESTS=ON"
else
	configure_args+=" -Dprotobuf_BUILD_TESTS=OFF"
fi

post_install() {
	vlicense LICENSE
}

libprotobuf_package() {
	short_desc="Protocol buffers C++ library"
	pkg_install() {
		vmove "usr/lib/libprotobuf.so.*"
		vmove "usr/lib/libutf8_range.so.*"
		vmove "usr/lib/libutf8_validity.so.*"
		vlicense LICENSE
	}
}

libprotobuf-lite_package() {
	short_desc="Protocol buffers C++ library (lite version)"
	pkg_install() {
		vmove "usr/lib/libprotobuf-lite.so.*"
		vlicense LICENSE
	}
}

libprotoc_package() {
	short_desc="Protocol buffers compiler library"
	pkg_install() {
		vmove "usr/lib/libprotoc.so.*"
		vlicense LICENSE
	}
}

libprotoc-devel_package() {
	depends="libprotoc-${version}_${revision}"
	short_desc="Protocol buffers compiler library - development files"
	# Switch to versioned package
	replaces="libprotoc18-devel>=0 libprotoc23-devel>=0
	 libprotoc24-devel>=0 libprotoc25-devel>=0
	 libprotoc26-devel>=0 libprotoc28-devel>=0"
	conflicts="${replaces}"
	pkg_install() {
		vmove usr/lib/libprotoc.so
		vmove usr/include/google/protobuf/compiler
	}
}

protobuf-devel_package() {
	depends="zlib-devel
	 libprotobuf-${version}_${revision}
	 libprotobuf-lite-${version}_${revision}
	 libprotoc-devel-${version}_${revision}
	 abseil-cpp-devel"
	short_desc="Protocol buffers C++ library - development files"
	# Switch to versioned package
	replaces="protobuf18-devel>=0 protobuf23-devel>=0
	 protobuf24-devel>=0 protobuf25-devel>=0
	 protobuf26-devel>=0 protobuf28-devel>=0"
	conflicts="${replaces}"
	pkg_install() {
		vmove usr/include
		vmove usr/lib/libprotobuf.so
		vmove usr/lib/libprotobuf-lite.so
		vmove usr/lib/libutf8_range.so
		vmove usr/lib/libutf8_validity.so
		vmove usr/lib/pkgconfig
		vmove usr/lib/cmake
		# when cross-building something that uses this cmake file,
		# it barfs because it can't execute the target's protobuf binary
		vsed -i -e 's,${_IMPORT_PREFIX}/bin,/usr/bin,g' \
			"$PKGDESTDIR"/usr/lib/cmake/protobuf/protobuf-targets-none.cmake
		vmove "usr/lib/*.a"
	}
}
