1PORTNAME= ImageMagick 2DISTVERSION= 7.1.1-26 3PORTREVISION= 4 4CATEGORIES= graphics perl5 5MASTER_SITES= https://ftp.acc.umu.se/mirror/imagemagick.org/ftp/releases/ \ 6 https://mirror.dogado.de/imagemagick/releases/ \ 7 https://mirror.checkdomain.de/imagemagick/releases/ \ 8 https://ftp.icm.edu.pl/pub/unix/graphics/ImageMagick/releases/ \ 9 https://imagemagick.org/archive/releases/ 10PKGNAMESUFFIX= 7 11 12MAINTAINER= ports@MidnightBSD.org 13COMMENT= Image processing tools 14WWW= https://imagemagick.org/ 15 16LICENSE= Apache-2.0 17LICENSE_FILE= ${WRKSRC}/LICENSE 18 19LIB_DEPENDS= libltdl.so:devel/libltdl \ 20 libzstd.so:archivers/zstd \ 21 libzip.so:archivers/libzip 22TEST_DEPENDS= gsfonts>=0:print/gsfonts 23 24FLAVORS= x11 nox11 25FLAVOR?= ${FLAVORS:[1]} 26FLAVORS_SUB= yes 27nox11_PKGNAMESUFFIX= 7-nox11 28 29# bin/Magick++-config 30CONFLICTS_INSTALL= ImageMagick6 ImageMagick6-nox11 \ 31 ImageMagick7 ImageMagick7-nox11 32 33# This port uses .la files, keep libtool:keepla! (magick/module.c) 34USES= cpe gettext-runtime gmake gnome libtool:keepla localbase \ 35 pathfix perl5 pkgconfig:both shebangfix tar:xz 36CPE_PRODUCT= imagemagick 37CPE_VENDOR= imagemagick 38SHEBANG_FILES= www/source/examples.pl 39GNU_CONFIGURE= yes 40GNU_CONFIGURE_MANPREFIX=${PREFIX}/share 41CONFIGURE_ENV= MAKE=${MAKE_CMD} 42CONFIGURE_ARGS= --without-dps \ 43 --with-zstd 44USE_LDCONFIG= yes 45USE_GNOME= libxml2 46 47SAMPLE_FILES= colors.xml delegates.xml log.xml mime.xml policy.xml \ 48 quantization-table.xml thresholds.xml type-apple.xml \ 49 type-dejavu.xml type-ghostscript.xml type-urw-base35.xml \ 50 type-windows.xml type.xml 51 52PLIST_SUB= PORTVERSION=${PORTVERSION:R} 53 54OPTIONS_SUB= yes 55OPTIONS_DEFINE= BZIP2 DOCS DJVU FFMPEG FFTW FLIF FONTCONFIG FPX FREETYPE \ 56 GRAPHVIZ GSLIB JPEG2000 JBIG JPEG JXL LCMS2 LZMA LQR MODULES \ 57 OPENEXR OPENMP PDF PERL PNG TIFF WEBP WMF THREADS \ 58 16BIT_PIXEL HDRI HEIF RAW 59OPTIONS_DEFAULT=16BIT_PIXEL BZIP2 FFTW FONTCONFIG FREETYPE HEIF \ 60 JPEG2000 JBIG JPEG JXL LCMS2 LZMA LQR MODULES OPENEXR PDF PERL PNG \ 61 TIFF WEBP WMF THREADS HDRI RAW 62 63.if ${FLAVOR:U} == x11 64# the SVG and PANGO plugins need X11 65OPTIONS_DEFINE+= PANGO RAQM SVG 66OPTIONS_DEFAULT+= RAQM SVG 67CONFIGURE_ARGS+= --with-x 68USES+= xorg 69USE_XORG= ice sm x11 xext xt 70.else 71CONFIGURE_ARGS+= --without-x 72.endif 73 74DJVU_DESC= DJVU format support (needs THREADS) 75GSLIB_DESC= libgs (Postscript SHLIB) support 76FFMPEG_DESC= VIDEO codec support as FFmpeg 77FLIF_DESC= Free Lossless Image Format support 78#SIMD_CONFIGURE_WITH= gcc-arch 79CONFIGURE_ARGS+= --without-gcc-arch 80 8116BIT_PIXEL_DESC= 16bit pixel support 8216BIT_PIXEL_CONFIGURE_OFF=--with-quantum-depth=8 8316BIT_PIXEL_VARS= _QBIT=Q16 8416BIT_PIXEL_VARS_OFF= _QBIT=Q8 85PLIST_SUB+= QBIT=${_QBIT} 86 87# Produce BZip compressed MIFF images 88BZIP2_DESC= bzip2 compressed MIFF images 89BZIP2_CONFIGURE_WITH= bzlib 90 91FFTW_CONFIGURE_WITH= fftw 92FFTW_LIB_DEPENDS= libfftw3.so:math/fftw3 93 94FONTCONFIG_CONFIGURE_WITH= fontconfig 95FONTCONFIG_LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig 96 97FREETYPE_CONFIGURE_WITH= freetype 98FREETYPE_LIB_DEPENDS= libfreetype.so:print/freetype2 99 100FLIF_CONFIGURE_WITH= flif 101FLIF_LIB_DEPENDS= libflif.so:graphics/flif 102 103# FPX (FlashPIX) images 104FPX_CONFIGURE_WITH= fpx 105FPX_LIB_DEPENDS= libfpx.so:graphics/libfpx 106 107GRAPHVIZ_CONFIGURE_WITH= gvc 108GRAPHVIZ_LIB_DEPENDS= libgvc.so:graphics/graphviz 109GRAPHVIZ_CFLAGS= -I${LOCALBASE}/include/graphviz 110GRAPHVIZ_LDFLAGS= -L${LOCALBASE}/lib/graphviz 111 112HEIF_CONFIGURE_WITH= heic 113HEIF_LIB_DEPENDS= libheif.so:graphics/libheif 114 115HDRI_DESC= High dynamic range images support 116HDRI_CONFIGURE_ENABLE= hdri 117HDRI_VARS= _HDRI=HDRI 118HDRI_VARS_OFF= _HDRI="" 119PLIST_SUB+= HDRI=${_HDRI} 120 121# JBIG images (lossless compression for bi-level images) 122JBIG_CONFIGURE_WITH= jbig 123JBIG_LIB_DEPENDS= libjbig.so:graphics/jbigkit 124 125JPEG_CONFIGURE_WITH= jpeg 126JPEG_USES= jpeg 127 128# JPEG2000 images (wavelet-based lossy compression) 129JPEG2000_DESC= OpenJPEG 2000 support via openjpeg 130JPEG2000_CONFIGURE_WITH=openjp2 131JPEG2000_LIB_DEPENDS= libopenjp2.so:graphics/openjpeg 132 133JXL_CONFIGURE_WITH= jxl 134JXL_LIB_DEPENDS= libjxl.so:graphics/libjxl 135 136LCMS2_CONFIGURE_WITH= lcms 137LCMS2_LIB_DEPENDS= liblcms2.so:graphics/lcms2 138 139LQR_CONFIGURE_WITH= lqr 140LQR_LIB_DEPENDS= liblqr-1.so:graphics/liblqr-1 141LQR_USE= gnome=glib20 142 143LZMA_CONFIGURE_WITH= lzma 144 145# Loadable coders, smaller executable, but PerlMagick not really works 146# ('make test' there works) 147MODULES_DESC= Modules support 148MODULES_CONFIGURE_WITH= modules 149 150PANGO_CONFIGURE_WITH= pango 151PANGO_USE= gnome=pango 152 153PNG_CONFIGURE_WITH= png 154PNG_LIB_DEPENDS= libpng.so:graphics/png 155 156RAQM_DESC= Complex text layout support 157RAQM_CONFIGURE_WITH= raqm 158RAQM_LIB_DEPENDS= libraqm.so:print/libraqm 159 160# libraw is by default liked to lcms2, whichs also ends up in IM regardless 161# of the IM LCMS option. 162RAW_DESC= RAW format support (implies the lcms2 option) 163RAW_CONFIGURE_WITH= raw 164RAW_LIB_DEPENDS= libraw_r.so:graphics/libraw 165RAW_IMPLIES= LCMS2 166 167SVG_DESC= SVG vector image format support (via librsvg, implies the x11 option) 168SVG_CONFIGURE_WITH= rsvg 169SVG_USE= gnome=cairo,gdkpixbuf,librsvg2 170 171TIFF_CONFIGURE_WITH= tiff 172TIFF_LIB_DEPENDS= libtiff.so:graphics/tiff 173 174WEBP_CONFIGURE_WITH= webp 175WEBP_LIB_DEPENDS= libwebp.so:graphics/webp 176 177.include <bsd.mport.options.mk> 178 179.if ${PORT_OPTIONS:MTHREADS} 180_IMAGEMAGICK_THREADS=yes 181_IMAGEMAGICK_THREADS_MSG=with threads 182. if exists(${PERL}) 183PERL_THREADED!= ${SH} -c 'case `perl --version` in *midnightbsd-thread*) ${ECHO_CMD} yes ;; esac'; ${ECHO_CMD} 184. else 185# if ${PERL} doesn't exists, assume we dealing with threaded perl. 186PERL_THREADED= yes 187. endif 188.else 189_IMAGEMAGICK_THREADS=no 190_IMAGEMAGICK_THREADS_MSG=without threads 191_IMAGEMAGICK_THREADS_IGNORE_MSG=. Define WITH_THREADS 192.endif 193 194.if ${PORT_OPTIONS:MPERL} 195CONFIGURE_ARGS+= --with-perl=${PERL} \ 196 --with-perl-options="MAKE=${MAKE_CMD}" 197PLIST_SUB+= WITH_PERL='' 198# PerlMagick does not work with threads, if perl is not threaded, and vice versa 199. if defined(PERL_THREADED) 200_IMAGEMAGICK_THREADS_PERL_MSG=Perl is threaded 201_IMAGEMAGICK_THREADS=yes 202. else 203_IMAGEMAGICK_THREADS_PERL_MSG=Perl is non-threaded 204_IMAGEMAGICK_THREADS_IGNORE_MSG=. ${_IMAGEMAGICK_THREADS_PERL_MSG}. Reinstall Perl with threads or undefine WITH_IMAGEMAGICK_PERL 205. if ${_IMAGEMAGICK_THREADS} == "yes" 206IGNORE=${_IMAGEMAGICK_THREADS_IGNORE_MSG} or undefine WITH_THREADS 207. endif 208_IMAGEMAGICK_THREADS=no 209. endif 210.else 211CONFIGURE_ARGS+= --without-perl 212PLIST_SUB+= WITH_PERL='@comment ' 213.endif 214 215.if ${_IMAGEMAGICK_THREADS} == "yes" 216CONFIGURE_ARGS+= --with-threads 217CONFIGURE_ENV+= PTHREAD_LIBS="-lpthread" 218LDFLAGS+= -lpthread 219.else 220CONFIGURE_ARGS+= --without-threads 221_IMAGEMAGICK_THREADS=no 222.endif 223 224# OpenMP 225.if ${PORT_OPTIONS:MOPENMP} 226. if ${_IMAGEMAGICK_THREADS} == "no" 227IGNORE=OpenMP requires threads${_IMAGEMAGICK_THREADS_IGNORE_MSG} 228. else 229CONFIGURE_ARGS+= --enable-openmp 230. endif 231.else 232CONFIGURE_ARGS+= --disable-openmp 233.endif 234.if defined(WITH_WINDOWS_FONT_DIR) 235CONFIGURE_ARGS+= --with-windows-font-dir=${WITH_WINDOWS_FONT_DIR} 236.endif 237 238.if ${PORT_OPTIONS:MOPENEXR} 239. if ${_IMAGEMAGICK_THREADS} == "no" 240IGNORE=OpenEXR requires threads. ${_IMAGEMAGICK_THREADS_IGNORE_MSG} 241. else 242LIB_DEPENDS+= libOpenEXR.so:graphics/openexr \ 243 libImath.so:math/Imath 244PLIST_SUB+= OPENEXR="" 245. endif 246.else 247CONFIGURE_ARGS+= --without-openexr 248PLIST_SUB+= OPENEXR="@comment " 249.endif 250 251.if ${PORT_OPTIONS:MDJVU} 252. if ${_IMAGEMAGICK_THREADS} == "no" 253IGNORE=DjVu requires threads${_IMAGEMAGICK_THREADS_IGNORE_MSG} 254. endif 255LIB_DEPENDS+= libdjvulibre.so:graphics/djvulibre 256PLIST_SUB+= DJVU="" 257.else 258CONFIGURE_ARGS+= --without-djvu 259PLIST_SUB+= DJVU="@comment " 260.endif 261 262.if ${PORT_OPTIONS:MGSLIB} 263CONFIGURE_ARGS+= --with-gslib 264. if ${FLAVOR:U} == x11 265USES+= ghostscript:x11 266. else 267USES+= ghostscript 268. endif 269.else 270CONFIGURE_ARGS+= --without-gslib 271.endif 272 273# WMF (Windows Meta File) images 274.if ${PORT_OPTIONS:MWMF} 275. if ${FLAVOR:U} == x11 276LIB_DEPENDS+= libwmf.so:graphics/libwmf 277. else 278LIB_DEPENDS+= libwmf.so:graphics/libwmf-nox11 279. endif 280CONFIGURE_ARGS+= --with-wmf=yes 281PLIST_SUB+= WMF="" 282.else 283CONFIGURE_ARGS+= --without-wmf 284PLIST_SUB+= WMF="@comment " 285.endif 286 287# PDF (Adobe Portable Document Format) support 288.if ${PORT_OPTIONS:MPDF} 289. if ${FLAVOR:U} == x11 290USES+= ghostscript:x11 291. else 292USES+= ghostscript 293. endif 294.endif 295 296.if ${PORT_OPTIONS:MPDF} || ${PORT_OPTIONS:MGSLIB} 297RUN_DEPENDS+= gsfonts>=0:print/gsfonts 298.endif 299 300.if ${PORT_OPTIONS:MFFMPEG} 301BUILD_DEPENDS+= ffmpeg:multimedia/ffmpeg 302RUN_DEPENDS+= ffmpeg:multimedia/ffmpeg 303.endif 304 305.if ${PORT_OPTIONS:MDOCS} 306INSTALL_TARGET= install-strip install-docDATA install-data-html 307.else 308INSTALL_TARGET= install-strip 309.endif 310 311.if ${PORT_OPTIONS:MTESTS} 312. if ${FLAVOR:U} == x11 313USES+= ghostscript:x11,build 314. else 315USES+= ghostscript:build 316. endif 317.endif 318 319post-patch: 320# strip library name of variable parts that can change due to 321# the HDRI and Q16 option 322 @${REINPLACE_CMD} -e 's|_@MAGICK_ABI_SUFFIX@||g; \ 323 s|\.@MAGICK_ABI_SUFFIX@||g' \ 324 ${WRKSRC}/Makefile.in 325 @${REINPLACE_CMD} -e 's|@\.@MAGICK_ABI_SUFFIX@|@|g' \ 326 ${WRKSRC}/PerlMagick/Makefile.PL.in \ 327 ${WRKSRC}/PerlMagick/quantum/Makefile.PL.in \ 328 ${WRKSRC}/Magick++/bin/Magick++-config.in \ 329 ${WRKSRC}/Magick++/lib/Magick++.pc.in \ 330 ${WRKSRC}/MagickCore/MagickCore-config.in \ 331 ${WRKSRC}/MagickCore/MagickCore.pc.in \ 332 ${WRKSRC}/MagickCore/ImageMagick.pc.in \ 333 ${WRKSRC}/MagickWand/MagickWand-config.in \ 334 ${WRKSRC}/MagickWand/MagickWand.pc.in 335 @${REINPLACE_CMD} -e '/^export PKG_CONFIG_LIBDIR/d' ${WRKSRC}/MagickWand/MagickWand-config.in 336 337pre-configure: 338.if defined(_IMAGEMAGICK_THREADS_PERL_MSG) 339 @${ECHO_CMD} '###################################################################' 340 @${ECHO_CMD} NOTICE: ${_IMAGEMAGICK_THREADS_PERL_MSG}. Building ImageMagick ${_IMAGEMAGICK_THREADS_MSG}. 341 @${ECHO_CMD} '###################################################################' 342.endif 343 344post-install: 345.for i in ${SAMPLE_FILES} 346 @${MV} ${PREFIX}/etc/ImageMagick-7/${i} \ 347 ${PREFIX}/etc/ImageMagick-7/${i}.sample 348.endfor 349 350.include <bsd.port.mk> 351