# Copyright 2020 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2

EAPI=7

inherit meson cros-fuzzer cros-sanitizers

DESCRIPTION="eSCL and WSD SANE backend"
HOMEPAGE="https://github.com/alexpevzner/sane-airscan"
LICENSE="GPL-2"
SLOT="0/${PVR}"
KEYWORDS="*"
IUSE="asan fuzzer"

COMMON_DEPEND="
	dev-libs/libxml2:=
	media-gfx/sane-backends:=
	media-libs/libjpeg-turbo:=
	media-libs/libpng:=
	net-dns/avahi:=
	net-libs/libsoup:=
"
DEPEND="${COMMON_DEPEND}"
RDEPEND="${COMMON_DEPEND}"

# SHA-1 or tag will both work.
GIT_REF="${PV}"
SRC_URI="https://github.com/alexpevzner/sane-airscan/archive/${GIT_REF}.tar.gz -> ${PN}-${GIT_REF}.tar.gz"
S="${WORKDIR}/${PN}-${GIT_REF}"

FUZZERS=(
	"fuzzer-query"
	"fuzzer-uri"
	"fuzzer-xml"
)

PATCHES=(
	"${FILESDIR}/${PN}-0.9.20-noasan.patch"
	"${FILESDIR}/${PN}-0.9.26-add_justify.patch"
)

src_configure() {
	sanitizers-setup-env || die
	fuzzer-setup-binary || die
	meson_src_configure
}

src_compile() {
	if use fuzzer; then
		meson_src_compile "${FUZZERS[@]}"
	else
		meson_src_compile
	fi
}

src_install() {
	if ! use fuzzer; then
		dobin "${BUILD_DIR}/airscan-discover"

		exeinto "/usr/$(get_libdir)/sane"
		doexe "${BUILD_DIR}/libsane-airscan.so.1"

		insinto "/etc/sane.d"
		newins "${FILESDIR}/airscan.conf" "airscan.conf"

		insinto "/etc/sane.d/dll.d"
		newins "${S}/dll.conf" "airscan.conf"
	fi

	# Safe to call even if the fuzzer isn't built because this won't do
	# anything unless we have USE=fuzzer.
	for fuzzer in "${FUZZERS[@]}"; do
		# Rename fuzzers before install because the upstream target
		# names ended up being different from our naming scheme.
		local compat_name="airscan_${fuzzer#fuzzer-}_fuzzer"
		mv "${BUILD_DIR}/${fuzzer}" "${BUILD_DIR}/${compat_name}"
		fuzzer_install "${FILESDIR}/fuzzers.owners" \
			"${BUILD_DIR}/${compat_name}"
	done

	# Include sane-airscan/airscan.h in header
	mkdir "${BUILD_DIR}/sane-airscan"
	cp "${S}/airscan.h" "${BUILD_DIR}/sane-airscan"
	doheader -r "${BUILD_DIR}/sane-airscan"
}
