# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI="7"

CMAKE_ECLASS=cmake
inherit cmake-multilib

DESCRIPTION="A JSON implementation in C"
HOMEPAGE="https://github.com/json-c/json-c/wiki"
SRC_URI="https://s3.amazonaws.com/json-c_releases/releases/${P}.tar.gz"

LICENSE="MIT"
SLOT="0/5"
KEYWORDS="*"
IUSE="doc static-libs threads"

PATCHES=(
	"${FILESDIR}/${PN}-0.14-cmake-static-libs.patch"
	"${FILESDIR}/${P}-security-fix.patch"
	"${FILESDIR}/${PN}-0.14-object-limitation.patch"
)

MULTILIB_WRAPPED_HEADERS=(
	/usr/include/json-c/config.h
)

src_prepare() {
	cmake_src_prepare
}

multilib_src_configure() {
	local mycmakeargs=(
		-DBUILD_DOCUMENTATION=$(multilib_native_usex doc)
		-DBUILD_STATIC_LIBS=$(usex static-libs)
		-DDISABLE_WERROR=ON
		-DENABLE_THREADING=$(usex threads)
	)

	cmake_src_configure
}

multilib_src_compile() {
	cmake_src_compile
}

multilib_src_test() {
	multilib_is_native_abi && cmake_src_test
}

multilib_src_install_all() {
	use doc && HTML_DOCS=( "${S}"/doc/html/. )
	einstalldocs
}
