gmic-3.2.6.ebuild

Download (3.4 KB)

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

EAPI=8

inherit toolchain-funcs

DESCRIPTION="GREYC's Magic Image Converter"
HOMEPAGE="https://gmic.eu/ https://github.com/GreycLab/gmic"
SRC_URI="https://gmic.eu/files/source/${PN}_${PV}.tar.gz"

LICENSE="CeCILL-2 GPL-3"
SLOT="0"
KEYWORDS="amd64 arm64 ~ppc64 ~riscv x86"
IUSE="cli curl ffmpeg fftw gimp graphicsmagick jpeg opencv openexr openmp png qt5 tiff X"

REQUIRED_USE="
	gimp? ( png fftw X )
	qt5? ( png fftw X )
"

MIN_QT_VER="5.2.0"
QT_DEPEND="
	>=dev-qt/qtcore-${MIN_QT_VER}:5
	>=dev-qt/qtgui-${MIN_QT_VER}:5
	>=dev-qt/qtnetwork-${MIN_QT_VER}:5
	>=dev-qt/qtwidgets-${MIN_QT_VER}:5
"
DEPEND="
	sys-libs/zlib:0=
	curl? ( net-misc/curl )
	fftw? ( sci-libs/fftw:3.0=[threads] )
	gimp? (
		media-gfx/gimp:0/2
		${QT_DEPEND}
	)
	graphicsmagick? ( media-gfx/graphicsmagick:= )
	jpeg? ( media-libs/libjpeg-turbo:= )
	opencv? ( >=media-libs/opencv-2.3.1a-r1:= )
	openexr? (
		dev-libs/imath:=
		media-libs/openexr:=
	)
	png? ( media-libs/libpng:= )
	qt5? ( ${QT_DEPEND} )
	tiff? ( media-libs/tiff:= )
	X? (
		x11-libs/libX11
		x11-libs/libXext
	)"
RDEPEND="${DEPEND}
	ffmpeg? ( media-video/ffmpeg:= )
"
BDEPEND="
	virtual/pkgconfig
	gimp? (
		dev-qt/linguist-tools:5
		media-gfx/gimp:0/2
	)
	qt5? ( dev-qt/linguist-tools:5 )
"

PATCHES=(
	"${FILESDIR}"/${PN}-3.1.6-ar_so.patch
	"${FILESDIR}"/${PN}-3.2.0-grep38.patch
	"${FILESDIR}"/${PN}-3.2.4-makefile_automagic.patch
	"${FILESDIR}"/${PN}-3.2.5-relative_rpath.patch
	"${FILESDIR}"/${PN}-3.2.6-makefile_target_deps.patch
)

pkg_pretend() {
	[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
}

pkg_setup() {
	[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
}

gmic_emake() {
	local mymakeargs=(
		CC="$(tc-getCC)"
		CXX="$(tc-getCXX)"
		STRIP="/bin/true"
		LIB="$(get_libdir)"
		OPT_CFLAGS="${CXXFLAGS}"
		OPT_LIBS="${LDFLAGS}"
		GMIC_USE_CURL=$(usex curl)
		GMIC_USE_EXR=$(usex openexr)
		GMIC_USE_FFTW=$(usex fftw)
		GMIC_USE_GRAPHICSMAGICK=$(usex graphicsmagick)
		GMIC_USE_JPEG=$(usex jpeg)
		GMIC_USE_OPENCV=$(usex opencv)
		GMIC_USE_OPENMP=$(usex openmp)
		GMIC_USE_PNG=$(usex png)
		GMIC_USE_TIFF=$(usex tiff)
		GMIC_USE_X11=$(usex X)
		QMAKE="qmake5"
	)

	# Possibly unnecessary since 3.2.0, just in case though.
	tc-is-clang && mymakeargs+=( OPENMP_LIBS="-lomp" )

	emake -j1 -C src \
		"${mymakeargs[@]}" \
		$@
}

src_compile() {
	gmic_emake lib
	gmic_emake libc
	use cli && gmic_emake cli_shared
	use gimp && gmic_emake gimp_shared
	use qt5 && gmic_emake gmic_qt_shared
}

src_install() {
	# See below for why this has to name a directory even if USE=-gimp
	local gimp_plugindir="/deleteme"
	if use gimp; then
		if type gimptool &>/dev/null; then
			gimp_plugindir="$(gimptool --gimpplugindir)/plug-ins"
		elif type gimptool-2.0 &>/dev/null; then
			gimp_plugindir="$(gimptool-2.0 --gimpplugindir)/plug-ins"
		elif type gimptool-2.99 &>/dev/null; then
			gimp_plugindir="$(gimptool-2.99 --gimpplugindir)/plug-ins"
		else
			die "Cannot find GIMP plugin directory"
		fi
	fi

	gmic_emake DESTDIR="${ED}" PLUGINDIR="${gimp_plugindir}" install

	# Upstream build scripts create PLUGINDIR and write some files to it
	# regardless of whether the GIMP plug-in has been built or not, or even
	# when they haven't been able to execute gimptool to get the base path.
	use gimp || rm -rf "${ED}/${gimp_plugindir}"

	# These are already gzipped in the source tarballs
	find "${ED}/usr/share/man" -name "*.gz" -exec gunzip {} \; || die
}

Thank you!