# Contributor: Łukasz Jendrysik <scadu@yandex.com>
# Contributor: Carlo Landmeter <clandmeter@alpinelinux.org>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=imagemagick
_pkgname=ImageMagick
pkgver=7.1.1.44
pkgrel=0
_pkgver=${pkgver%.*}-${pkgver##*.}
_abiver=7
pkgdesc="Collection of tools and libraries for many image formats"
url="https://imagemagick.org/"
arch="all"
license="ImageMagick"
options="libtool"
depends_dev="$pkgname=$pkgver-r$pkgrel"
install="$pkgname.post-upgrade"
makedepends="
	chrpath
	fftw-dev
	fontconfig-dev
	freetype-dev
	ghostscript-dev
	lcms2-dev
	libheif-dev
	libjpeg-turbo-dev
	libpng-dev
	libraw-dev
	librsvg-dev
	libtool
	libwebp-dev
	libx11-dev
	libxext-dev
	libxml2-dev
	pango-dev
	perl-dev
	tiff-dev
	zlib-dev
	"
checkdepends="freetype fontconfig ghostscript ghostscript-fonts lcms2 graphviz"
subpackages="
	$pkgname-doc
	$pkgname-static
	$pkgname-dev
	$pkgname-c++:_cxx
	$pkgname-libs
	$pkgname-perlmagick:_perlmagick
	$pkgname-perlmagick-doc:_perlmagick_doc
	$pkgname-heic
	$pkgname-jpeg
	$pkgname-pango
	$pkgname-pdf
	$pkgname-raw
	$pkgname-svg
	$pkgname-tiff
	$pkgname-webp
	"
source="https://imagemagick.org/archive/releases/ImageMagick-$_pkgver.tar.xz"
builddir="$srcdir/$_pkgname-$_pkgver"

case "$CARCH" in
s390x)
	;;
*)
	makedepends="$makedepends libjxl-dev"
	subpackages="$subpackages $pkgname-jxl"
	_jxl="--with-jxl"
	;;
esac

# secfixes:
#   7.1.1.21-r0:
#     - CVE-2023-5341
#   7.1.0.52-r0:
#     - CVE-2022-44267
#     - CVE-2022-44268
#   7.1.0.47-r0:
#     - CVE-2022-3213
#   7.1.0.30-r0:
#     - CVE-2022-1115
#     - CVE-2022-1114
#     - CVE-2022-2719
#   7.1.0.24-r0:
#     - CVE-2022-0284
#   7.1.0.10-r0:
#     - CVE-2021-39212
#   7.1.0.0-r0:
#     - CVE-2021-34183
#   7.0.11.9-r0:
#     - CVE-2021-3574
#   7.0.11.1-r0:
#     - CVE-2021-20241
#     - CVE-2021-20243
#     - CVE-2021-20244
#     - CVE-2021-20245
#     - CVE-2021-20246
#     - CVE-2021-20309
#     - CVE-2021-20310
#     - CVE-2021-20311
#     - CVE-2021-20312
#     - CVE-2021-20313
#   7.0.10.57-r0:
#     - CVE-2021-20176
#     - CVE-2021-20224
#   7.0.10.42-r0:
#     - CVE-2020-29599
#   7.0.10.35-r0:
#     - CVE-2020-27560
#   7.0.10.31-r0:
#     - CVE-2021-3596
#     - CVE-2022-28463
#     - CVE-2022-32545
#     - CVE-2022-32546
#     - CVE-2022-32547
#   7.0.10.18-r0:
#     - CVE-2020-13902
#   7.0.10.8-r0:
#     - CVE-2020-19667
#   7.0.10.0-r0:
#     - CVE-2020-10251
#   7.0.9.7-r0:
#     - CVE-2019-19952
#   7.0.8.62-r0:
#     - CVE-2019-17547
#   7.0.8.56-r0:
#     - CVE-2019-17541
#     - CVE-2019-17540
#     - CVE-2019-14981
#     - CVE-2019-13454
#   7.0.8.53-r0:
#     - CVE-2019-13391
#     - CVE-2019-13311
#     - CVE-2019-13310
#     - CVE-2019-13309
#     - CVE-2019-13308
#     - CVE-2019-13307
#     - CVE-2019-13306
#     - CVE-2019-13305
#     - CVE-2019-13304
#     - CVE-2019-13303
#     - CVE-2019-13302
#     - CVE-2019-13301
#     - CVE-2019-13300
#     - CVE-2019-13299
#     - CVE-2019-13298
#     - CVE-2019-13297
#     - CVE-2019-13296
#     - CVE-2019-13295
#     - CVE-2019-13137
#     - CVE-2019-13136
#     - CVE-2019-13135
#     - CVE-2019-13134
#     - CVE-2019-13133
#   7.0.8.44-r0:
#     - CVE-2019-19949
#     - CVE-2019-19948
#     - CVE-2019-16713
#     - CVE-2019-16712
#     - CVE-2019-16711
#     - CVE-2019-15141
#     - CVE-2019-15140
#     - CVE-2019-15139
#     - CVE-2019-14980
#     - CVE-2019-11598
#     - CVE-2019-11597
#     - CVE-2019-11472
#   7.0.8.38-r0:
#     - CVE-2019-9956
#     - CVE-2019-16710
#     - CVE-2019-16709
#     - CVE-2019-16708
#     - CVE-2019-10650
#     - CVE-2019-10649

build() {
	# pretty much doubles the performance
	CFLAGS="$CFLAGS -O2" \
	CXXFLAGS="$CXXFLAGS -O2" \
	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--prefix=/usr \
		--sysconfdir=/etc \
		--mandir=/usr/share/man \
		--infodir=/usr/share/info \
		--enable-static \
		--with-fftw \
		--with-gs-font-dir=/usr/share/fonts/Type1 \
		--with-gslib \
		--with-hdri \
		--with-heic \
		--with-modules \
		--with-perl \
		--with-perl-options="INSTALLDIRS=vendor INSTALLVENDORARCH=/usr/lib/perl5/vendor_perl NO_PACKLIST=1 NO_PERLLOCAL=1" \
		--with-png \
		--with-rsvg \
		--with-threads \
		--with-tiff \
		--with-webp \
		--with-x \
		--with-xml \
		$_jxl
	make
}

check() {
	make check
}

package() {
	make DESTDIR="$pkgdir" install
	if ! [ -e "$pkgdir"/usr/lib/libMagickCore-$_abiver.Q16HDRI.so ]; then
		error "Has ABI verision changed? (current is $_abiver)"
		return 1
	fi

	# we cannot let abuild delete the *.la files due to we need *.la
	# for the modules
	rm "$pkgdir"/usr/lib/*.la
}

heic() {
	pkgdesc="$pkgdesc (HEIC support modules)"
	install_if="$pkgname=$pkgver-r$pkgrel libheif"
	amove usr/lib/ImageMagick-*/modules-*/coders/heic.*
}

jpeg() {
	pkgdesc="$pkgdesc (JPEG support modules)"
	install_if="$pkgname=$pkgver-r$pkgrel libjpeg-turbo"
	amove usr/lib/ImageMagick-*/modules-*/coders/jpeg.*
}

raw() {
	pkgdesc="$pkgdesc (RAW support modules)"
	install_if="$pkgname=$pkgver-r$pkgrel libraw"
	amove usr/lib/ImageMagick-*/modules-*/coders/dng.*
}

jxl() {
	pkgdesc="$pkgdesc (JpegXL support modules)"
	install_if="$pkgname=$pkgver-r$pkgrel libjxl"
	amove usr/lib/ImageMagick-*/modules-*/coders/jxl.*
}

pango() {
	pkgdesc="$pkgdesc (pango support modules)"
	install_if="$pkgname=$pkgver-r$pkgrel pango"
	amove usr/lib/ImageMagick-*/modules-*/coders/pango.*
}

pdf() {
	pkgdesc="$pkgdesc (PDF support modules)"
	install_if="$pkgname=$pkgver-r$pkgrel ghostscript"
	amove \
		usr/lib/ImageMagick-*/modules-*/coders/pdf.* \
		usr/lib/ImageMagick-*/modules-*/coders/ps.*
}

svg() {
	pkgdesc="$pkgdesc (SVG support modules)"
	install_if="$pkgname=$pkgver-r$pkgrel librsvg"
	amove usr/lib/ImageMagick-*/modules-*/coders/svg.*
}

tiff() {
	pkgdesc="$pkgdesc (TIFF support modules)"
	install_if="$pkgname=$pkgver-r$pkgrel tiff"
	amove usr/lib/ImageMagick-*/modules-*/coders/tiff.*
}

webp() {
	pkgdesc="$pkgdesc (WebP support modules)"
	install_if="$pkgname=$pkgver-r$pkgrel libwebp"
	amove usr/lib/ImageMagick-*/modules-*/coders/webp.*
}

_cxx() {
	pkgdesc="ImageMagick Magick++ library (C++ bindings)"
	amove usr/lib/libMagick++*.so.*
}

_perlmagick() {
	pkgdesc="PerlMagick Perl Modules for ImageMagick"
	amove usr/lib/perl5
	# Strip all the rpath that include /home
	scanelf --recursive --rpath "$subpkgdir" | awk '/home/{print $3;}' | xargs chrpath -d
}

doc() {
	default_doc

	# move these man pages in _perlmagick_doc() below
	mkdir -p "$pkgdir"/usr/share/man/man3
	mv -v "$subpkgdir"/usr/share/man/man3/*.3pm.gz \
		"$pkgdir"/usr/share/man/man3/
	rmdir "$subpkgdir"/usr/share/man/man3 2>/dev/null || :
}

_perlmagick_doc() {
	pkgdesc="PerlMagick Perl Module Documentation for ImageMagick"
	install_if="docs $pkgname-perlmagick=$pkgver-r$pkgrel"

	amove usr/share/man/man3/*.3pm.gz
}

sha512sums="
8897c81477c768d2136ba2c8f06072d6d84924596a8693497dc1884b05a9c508a2c7de1cfd782d393134cee2e70a81b9869033978619d3506cddd81fc31e2df4  ImageMagick-7.1.1-44.tar.xz
"
