# Template file for 'protobuf25'
pkgname=protobuf25
version=3.14.0
revision=1
wrksrc="protobuf-${version}"
build_style=gnu-configure
hostmakedepends="pkg-config automake libtool"
makedepends="zlib-devel"
short_desc="Protocol buffers compiler"
maintainer="Andrew J. Hesford <ajh@sideband.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/archive/v${version}.tar.gz"
checksum=d0f5f605d0d656007ce6c8b5a82df3037e1d8fe8b121ed42e536f569dec16113

# Switch to versioned package
conflicts="protobuf18>=0 protobuf23>=0 protobuf24>=0"
replaces="protobuf<=3.11.4_1 ${conflicts}"

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

if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then
	makedepends+=" libatomic-devel"
	LDFLAGS+=" -latomic"
fi

pre_configure() {
	autoreconf -fi
}

do_configure() {
	# configure doesn't set proper linker flags when discovering pthread
	PTHREAD_LIBS="-pthread" PTHREAD_CFLAGS="-pthread" ./configure ${configure_args}
}

post_install() {
	vlicense LICENSE
}

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

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

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

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

protobuf25-devel_package() {
	depends="zlib-devel
	 libprotobuf25-${version}_${revision}
	 libprotobuf25-lite-${version}_${revision}"
	short_desc="Protocol buffers C++ library - development files"
	# Switch to versioned package
	conflicts="protobuf18-devel>=0 protobuf23-devel>=0 protobuf24-devel>=0"
	replaces="protobuf-devel<=3.11.4_1 ${conflicts}"
	pkg_install() {
		vmove usr/include
		vmove usr/lib/libprotobuf.a
		vmove usr/lib/libprotobuf-lite.a
		vmove usr/lib/libprotobuf.so
		vmove usr/lib/libprotobuf-lite.so
		vmove usr/lib/pkgconfig
	}
}

protobuf_package() {
	build_style=meta
	short_desc="Protocol buffers compiler (meta package)"
	depends="protobuf25"
}

protobuf-devel_package() {
	build_style=meta
	short_desc="Protocol buffers C++ library - development files (meta package)"
	depends="protobuf25-devel"
}

protobuf-lite_package() {
	build_style=meta
	short_desc="Protocol buffers C++ library - lite version (meta package)"
	depends="libprotobuf25-lite"
}

libprotoc-devel_package() {
	build_style=meta
	short_desc="Protocol buffers compiler library - development files (meta package)"
	depends="libprotoc25-devel"
}
