freebsd-ports/graphics/ImageMagick/Makefile
2008-07-28 12:24:44 +00:00

385 lines
11 KiB
Makefile

# New ports collection makefile for: ImageMagick
# Date created: 15 November 1994
# Whom: torstenb
#
# $FreeBSD$
#
PORTNAME= ImageMagick
DISTVERSION= 6.4.2-5
CATEGORIES= graphics perl5
MASTER_SITES= ftp://ftp.imagemagick.org/pub/ImageMagick/ \
ftp://gd.tuwien.ac.at/pub/graphics/ImageMagick/ \
ftp://ftp.carnet.hr/misc/imagemagick/ \
ftp://ftp.fu-berlin.de/unix/X11/graphics/ImageMagick/ \
ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/ \
ftp://ftp.u-aizu.ac.jp/pub/graphics/image/ImageMagick/imagemagick.org/ \
ftp://zoffy.asahi-net.or.jp/pub/graphics/ImageMagick/ \
ftp://ftp.nluug.nl/pub/ImageMagick/ \
ftp://ftp.sunet.se/pub/multimedia/graphics/ImageMagick/ \
ftp://ftp.fifi.org/pub/ImageMagick/ \
${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR= imagemagick
MAINTAINER= mm@FreeBSD.org
COMMENT= Image processing tools
WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION:R}
USE_BZIP2= yes
USE_PERL5= yes
USE_GNOME= gnomehack gnometarget pkgconfig
USE_AUTOTOOLS= libltdl:15
# For some reason, using our libtool breaks the build into pieces:
#USE_AUTOTOOLS+= libtool:15
GNU_CONFIGURE= yes
CONFIGURE_ENV= CPPFLAGS="${CPPFLAGS}" LDFLAGS="${LDFLAGS}"
CONFIGURE_ARGS= --enable-shared --without-dps
USE_LDCONFIG= yes
MAN1= ImageMagick.1 Magick++-config.1 Magick-config.1 Wand-config.1 \
animate.1 conjure.1 compare.1 composite.1 convert.1 display.1 \
MagickCore-config.1 MagickWand-config.1 \
identify.1 import.1 mogrify.1 montage.1 stream.1
CPPFLAGS= -I${LOCALBASE}/include
LDFLAGS= -L${LOCALBASE}/lib
PLIST_SUB+= PORTVERSION=${PORTVERSION:R}
OPTIONS= X11 "X11 support" on \
IMAGEMAGICK_TESTS "Run bundled self-tests after build" on \
IMAGEMAGICK_OPENMP "Enable OpenMP for SMP" off \
IMAGEMAGICK_PERL "Perl support" on \
IMAGEMAGICK_MODULES "Modules support (broken)" off \
IMAGEMAGICK_BZLIB "Bzlib support" on \
IMAGEMAGICK_16BIT_PIXEL "16bit pixel support" on \
IMAGEMAGICK_DJVU "DJVU format support (needs threads)" off \
IMAGEMAGICK_LCMS "LCMS support" on \
IMAGEMAGICK_HDRI "High Dynamic Range Images (HDRI)" off \
IMAGEMAGICK_TTF "Freetype support" on \
IMAGEMAGICK_FONTCONFIG "Fontconfig support" on \
IMAGEMAGICK_JPEG "JPG format support" on \
IMAGEMAGICK_OPENEXR "OpenEXR support (needs threads)" off \
IMAGEMAGICK_PNG "PNG format support" on \
IMAGEMAGICK_TIFF "TIFF format support" on \
IMAGEMAGICK_FPX "FPX format support" on \
IMAGEMAGICK_JBIG "JBIG format support" on \
IMAGEMAGICK_JPEG2000 "JPEG2000 format support" on \
IMAGEMAGICK_DOT "GraphViz dot graphs support" off \
IMAGEMAGICK_WMF "WMF format support" off \
IMAGEMAGICK_SVG "SVG format support" off \
IMAGEMAGICK_PDF "PDF format support" on \
IMAGEMAGICK_GSLIB "libgs (Postscript SHLIB) support" off
.include <bsd.port.pre.mk>
.if defined(WITH_GHOSTSCRIPT_GNU) && !defined(WITHOUT_IMAGEMAGICK_PDF)
IGNORE= requires newer version of ghostscript
.endif
.if defined(WITH_IMAGEMAGICK_HDRI)
CONFIGURE_ARGS+= --enable-hdri
.else
CONFIGURE_ARGS+= --disable-hdri
.endif
.if defined(WITH_IMAGEMAGICK_OPENMP)
CONFIGURE_ARGS+= --enable-openmp
.else
CONFIGURE_ARGS+= --disable-openmp
.endif
.if !defined(WITHOUT_IMAGEMAGICK_PERL)
CONFIGURE_ARGS+= --with-perl=${PERL5}
PLIST_SUB+= WITH_PERL=''
MAN3= Image::Magick.3
MAN3PREFIX= ${PREFIX}/lib/perl5/${PERL_VERSION}
.else
CONFIGURE_ARGS+= --without-perl
PLIST_SUB+= WITH_PERL='@comment '
.endif
# PerlMagick not works with threads, if perl is not threaded, and vice versa
.if defined(WITH_IMAGEMAGICK_THREADS) || \
(!defined(WITHOUT_IMAGEMAGICK_PERL) && \
defined(PERL_THREADED) && ${PERL_THREADED} == "true")
CONFIGURE_ARGS+= --with-threads
CONFIGURE_ENV+= PTHREAD_CFLAGS="${PTHREAD_CFLAGS}" PTHREAD_LIBS="${PTHREAD_LIBS}"
LDFLAGS+= ${PTHREAD_LIBS}
WITH_IMAGEMAGICK_THREADS=yes
.else
CONFIGURE_ARGS+= --without-threads
.undef WITH_IMAGEMAGICK_THREADS
.if defined(WITH_IMAGEMAGICK_DJVU)
. warning DjVu requires threads and will not be supported
. undef WITH_IMAGEMAGICK_DJVU
.endif
.endif
# Faster, but poor quality
.if defined(WITHOUT_IMAGEMAGICK_16BIT_PIXEL)
CONFIGURE_ARGS+= --with-quantum-depth=8
PLIST_SUB+= QBIT='Q8'
.else
PLIST_SUB+= QBIT='Q16'
.endif
.if defined(WITH_WINDOWS_FONT_DIR)
CONFIGURE_ARGS+= --with-windows-font-dir=${WITH_WINDOWS_FONT_DIR}
.endif
# Loadable coders, smaller executable, but PerlMagick not really works
# ('make test' there works)
.if defined(WITH_IMAGEMAGICK_MODULES)
CONFIGURE_ARGS+= --with-modules
PLIST_SUB+= MODULES=''
.else
CONFIGURE_ARGS+= --without-modules
PLIST_SUB+= MODULES='@comment '
.endif
.if !defined(WITHOUT_IMAGEMAGICK_OPENEXR)
LIB_DEPENDS+= IlmImf:${PORTSDIR}/graphics/OpenEXR
PLIST_SUB+= OPENEXR=""
.else
CONFIGURE_ARGS+= --without-openexr
PLIST_SUB+= OPENEXR="@comment "
.endif
.if !defined(WITHOUT_IMAGEMAGICK_DJVU)
. if defined(WITHOUT_X11)
LIB_DEPENDS+= djvulibre:${PORTSDIR}/graphics/djvulibre-nox11
. else
LIB_DEPENDS+= djvulibre:${PORTSDIR}/graphics/djvulibre
. endif
PLIST_SUB+= DJVU=""
.else
CONFIGURE_ARGS+= --without-djvu
PLIST_SUB+= DJVU="@comment "
.endif
.if !defined(WITHOUT_IMAGEMAGICK_JPEG)
LIB_DEPENDS+= jpeg:${PORTSDIR}/graphics/jpeg
PLIST_SUB+= JPEG=""
.else
CONFIGURE_ARGS+= --without-jpeg
PLIST_SUB+= JPEG="@comment "
.endif
.if !defined(WITHOUT_IMAGEMAGICK_PNG)
LIB_DEPENDS+= png:${PORTSDIR}/graphics/png
PLIST_SUB+= PNG=""
.else
CONFIGURE_ARGS+= --without-png
PLIST_SUB+= PNG="@comment "
.endif
.if !defined(WITHOUT_IMAGEMAGICK_TIFF)
LIB_DEPENDS+= tiff:${PORTSDIR}/graphics/tiff
PLIST_SUB+= TIFF=""
.else
CONFIGURE_ARGS+= --without-tiff
PLIST_SUB+= TIFF="@comment "
.endif
.if defined(WITH_IMAGEMAGICK_GSLIB)
CONFIGURE_ARGS+= --with-gslib
USE_GHOSTSCRIPT= yes
.else
CONFIGURE_ARGS+= --without-gslib
.endif
# Produce BZip compressed MIFF images
.if defined(WITHOUT_IMAGEMAGICK_BZLIB)
CONFIGURE_ARGS+= --without-bzlib
.endif
# FPX (FlashPIX) images
.if !defined(WITHOUT_IMAGEMAGICK_FPX)
LIB_DEPENDS+= fpx.[2-9]:${PORTSDIR}/graphics/libfpx
CONFIGURE_ARGS+= --with-fpx
PLIST_SUB+= FPX=""
.else
CONFIGURE_ARGS+= --without-fpx
PLIST_SUB+= FPX="@comment "
.endif
# JBIG images (lossless compression for bi-level images)
.if !defined(WITHOUT_IMAGEMAGICK_JBIG)
LIB_DEPENDS+= jbig:${PORTSDIR}/graphics/jbigkit
PLIST_SUB+= JBIG=""
.else
CONFIGURE_ARGS+= --without-jbig
PLIST_SUB+= JBIG="@comment "
.endif
# JPEG2000 images (wavelet-based lossy compression)
.if !defined(WITHOUT_IMAGEMAGICK_JPEG2000)
LIB_DEPENDS+= jasper:${PORTSDIR}/graphics/jasper
PLIST_SUB+= JPEG2000=""
.else
CONFIGURE_ARGS+= --without-jp2
PLIST_SUB+= JPEG2000="@comment "
.endif
# GraphViz dot graphs
.if defined(WITH_IMAGEMAGICK_DOT)
LIB_DEPENDS+= gvc:${PORTSDIR}/graphics/graphviz
CFLAGS+= -I${LOCALBASE}/include/graphviz
LDFLAGS+= -L${LOCALBASE}/lib/graphviz
.else
CONFIGURE_ARGS+= --without-gvc
.endif
# LCMS (Little CMS) color management
.if !defined(WITHOUT_IMAGEMAGICK_LCMS)
LIB_DEPENDS+= lcms:${PORTSDIR}/graphics/lcms
.else
CONFIGURE_ARGS+= --without-lcms
.endif
# Freetype (TrueType Font) support
.if !defined(WITHOUT_IMAGEMAGICK_TTF)
LIB_DEPENDS+= freetype:${PORTSDIR}/print/freetype2
USE_GHOSTSCRIPT= yes
CONFIGURE_ARGS+= --with-freetype
.else
CONFIGURE_ARGS+= --without-freetype
.endif
# Fontconfig support
.if !defined(WITHOUT_IMAGEMAGICK_FONTCONFIG)
LIB_DEPENDS+= fontconfig:${PORTSDIR}/x11-fonts/fontconfig
CONFIGURE_ARGS+= --with-fontconfig
CONFIGURE_ENV+= FONTCONFIG_CFLAGS="-I${LOCALBASE}/include" \
FONTCONFIG_LIBS="-L${LOCALBASE}/lib"
MAKE_ENV+= FONTCONFIG_CFLAGS="-I${LOCALBASE}/include"
.else
CONFIGURE_ARGS+= --without-fontconfig
.endif
# WMF (Windows Meta File) images
.if defined(WITH_IMAGEMAGICK_WMF)
.if defined(WITHOUT_X11)
IGNORE= WMF support requires X11 libraries, please unset WITHOUT_X11
.else
LIB_DEPENDS+= wmf:${PORTSDIR}/graphics/libwmf
CONFIGURE_ARGS+= --with-wmf=yes
.endif
.else
CONFIGURE_ARGS+= --without-wmf
.endif
# SVG (Scalable Vector Graphics) images and MSL (Magick Scripting Language)
# both require XML
.if defined(WITH_IMAGEMAGICK_SVG) || !defined(WITHOUT_IMAGEMAGICK_MSL)
USE_GNOME+= libxml2
CONFIGURE_ARGS+= --with-xml
.else
CONFIGURE_ARGS+= --without-xml
.endif
.if defined(WITH_IMAGEMAGICK_SVG)
.if defined(WITHOUT_X11)
IGNORE= SVG support requires X11 libraries, please unset WITHOUT_X11
.endif
LIB_DEPENDS+= rsvg-2:${PORTSDIR}/graphics/librsvg2
CONFIGURE_ARGS+= --with-rsvg
CONFIGURE_ENV+= RSVG_CFLAGS="-I${LOCALBASE}/include/librsvg-2" \
RSVG_LIBS="-L${LOCALBASE}/lib"
.else
CONFIGURE_ARGS+= --without-rsvg
.endif
# PDF (Adobe Portable Document Format) support
.if !defined(WITHOUT_IMAGEMAGICK_PDF)
USE_GHOSTSCRIPT= yes
.endif
.if defined(WITHOUT_X11)
PKGNAMESUFFIX+= -nox11
CONFIGURE_ARGS+= --without-x
PLIST_SUB+= X11='@comment '
.else
CONFLICTS+= display-[0-9]*
CONFIGURE_ARGS+= --with-x
USE_XORG= xext xt
PLIST_SUB+= X11=''
.endif
.if ${ARCH} == sparc64 && ${OSVERSION} < 700000
USE_GCC= 4.2+
.endif
.if defined(NOPORTDOCS)
INSTALL_TARGET= install
.else
INSTALL_TARGET= install install-data-html
.endif
post-patch:
# prevent perllocal.pod from being written
@${REINPLACE_CMD} -e "/PERL/s|install$$|pure_install|" ${WRKSRC}/Makefile.in
# remove the autogenerated Magick.c so it will be regenerated from
# Magick.xs on _this_ system:
@${RM} -f ${WRKSRC}/PerlMagick/Magick.c
@${PERL} -pi -e 's|^tagnames=|#tagnames=|g ; \
s|lcms/lcms.h|lcms.h|g ; \
s|lcms_lcms_h|lcms_h|g' ${CONFIGURE_WRKSRC}/${CONFIGURE_SCRIPT}
# version neither libraries nor directories
@${FIND} ${WRKSRC} -name "Makefile.in" | ${XARGS} ${PERL} -pi -e \
's|pkgdocdir =.*$$|pkgdocdir = ${DOCSDIR}/|g ; \
s|-\$$\(VERSION\)||; \
s| install-data-html||g'
# do not version lib directories
@${PERL} -pi -e 's|^(MagickLibSubdir).*$$|\1="ImageMagick"|' \
${CONFIGURE_WRKSRC}/${CONFIGURE_SCRIPT}
@${PERL} -pi -e 's|lcms/lcms.h|lcms.h|g' ${WRKSRC}/magick/transform.c
@${PERL} -pi -e 's|<malloc.h>|<stdlib.h>|g' ${WRKSRC}/ltdl/ltdl.c
@${PERL} -pi -e 's|timestamp: %ld|timestamp: %d|g' \
${WRKSRC}/magick/xwindow.c
.if defined(WITH_IMAGEMAGICK_THREADS)
. for i in Magick++/lib/ImageMagick++.pc.in wand/Wand.pc.in magick/ImageMagick.pc.in
@${PERL} -pi -e 's|^(Libs.+)$$|\1 ${PTHREAD_LIBS}|; \
s|^(Cflags.+)$$|\1 ${PTHREAD_CFLAGS}|' \
${WRKSRC}/${i}
. endfor
.endif
# deprecated gvCleanup
@${REINPLACE_CMD} -e "s|gvCleanup|gvFreeContext|g" \
${WRKSRC}/coders/dot.c
post-install:
.if defined(WITHOUT_IMAGEMAGICK_16BIT_PIXEL)
@${TOUCH} ${PREFIX}/lib/ImageMagick-${PORTVERSION:R}/modules-Q8/coders/.keep
@${TOUCH} ${PREFIX}/lib/ImageMagick-${PORTVERSION:R}/modules-Q8/filters/.keep
.else
@${TOUCH} ${PREFIX}/lib/ImageMagick-${PORTVERSION:R}/modules-Q16/coders/.keep
@${TOUCH} ${PREFIX}/lib/ImageMagick-${PORTVERSION:R}/modules-Q16/filters/.keep
.endif
test check:
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} limits -m 20m ${MAKE} check
.if !defined(WITHOUT_IMAGEMAGICK_TESTS)
. for m in TTF
. if defined(WITHOUT_IMAGEMAGICK_$m)
. warning Absence of $m breaks self-tests. Disabling them.
WITHOUT_IMAGEMAGICK_TESTS=yes
. endif
. endfor
.endif
.if !defined(WITHOUT_IMAGEMAGICK_TESTS)
. for m in MODULES HDRI
. if defined(WITH_IMAGEMAGICK_$m)
. warning Presence of $m breaks self-tests. Disabling them.
WITHOUT_IMAGEMAGICK_TESTS=yes
. endif
. endfor
.endif
.if !defined(WITHOUT_IMAGEMAGICK_TESTS)
post-build: test
.endif
.include <bsd.port.post.mk>