diff --git a/graphics/Makefile b/graphics/Makefile index 85a6b206be59..7efbffdaa099 100644 --- a/graphics/Makefile +++ b/graphics/Makefile @@ -583,6 +583,7 @@ SUBDIR += mingplot SUBDIR += mirage SUBDIR += mmrecover + SUBDIR += mozjpeg SUBDIR += mscgen SUBDIR += mtpaint SUBDIR += multican diff --git a/graphics/mozjpeg/Makefile b/graphics/mozjpeg/Makefile new file mode 100644 index 000000000000..722d627e8bda --- /dev/null +++ b/graphics/mozjpeg/Makefile @@ -0,0 +1,120 @@ +# Created by: Horia Racoviceanu +# $FreeBSD$ + +PORTNAME= mozjpeg +PORTVERSION= 1.0 +CATEGORIES= graphics + +MAINTAINER= horia@racoviceanu.com +COMMENT= Fork of libjpeg-turbo with 'jpgcrush' functionality + +LICENSE= BSD3CLAUSE + +BUILD_DEPENDS= nasm:${PORTSDIR}/devel/nasm + +USE_GITHUB= yes +GH_ACCOUNT= mozilla +GH_TAGNAME= ${GH_COMMIT} +GH_COMMIT= febf346 + +USE_AUTOTOOLS= aclocal:env autoconf automake libtool +USE_LDCONFIG= ${PREFIX}/include/${PORTNAME} ${PREFIX}/lib/${PORTNAME} +GNU_CONFIGURE= yes +CONFIGURE_ARGS= --docdir=${PREFIX}/share/doc/${PORTNAME} \ + --includedir=${PREFIX}/include/${PORTNAME} \ + --libdir=${PREFIX}/lib/${PORTNAME} +LIBTOOL_ARGS+= --finish ${PREFIX}/lib/${PORTNAME} +LDFLAGS+= -L${PREFIX}/lib/${PORTNAME} + +PLIST_SUB= PORTNAME=${PORTNAME} \ + SOMAJORVERSION=${SOMAJORVERSION} + +PORTDOCS= * + +DOCSRCDIR1= ${WRKSRC}/doc/html +DOCSDIR1= ${DOCSDIR}/html + +DOCSRCDIR2= ${DOCSRCDIR1}/search +DOCSDIR2= ${DOCSDIR1}/search + +DOC_FILES= *.css *.html *.js *.png + +PORTEXAMPLES= * + +OPTIONS_DEFINE= DOCS EXAMPLES GCC SIMD TURBOJPEG + +OPTIONS_GROUP= ARITHMETIC_CODING +OPTIONS_GROUP_ARITHMETIC_CODING= DECODING ENCODING + +OPTIONS_MULTI= LIBRARIES +OPTIONS_MULTI_LIBRARIES= SHARED STATIC + +OPTIONS_SINGLE= API_ABI_EMULATION +OPTIONS_SINGLE_API_ABI_EMULATION= JPEG6B JPEG7 JPEG8 + +OPTIONS_DEFAULT= DECODING ENCODING GCC JPEG6B SHARED SIMD STATIC TURBOJPEG + +OPTIONS_SUB= yes + +GCC_DESC= Use the GNU Compiler Collection (GCC) for best performance +SIMD_DESC= Include SIMD extensions (MMX, SSE2, NEON) +TURBOJPEG_DESC= Include the TurboJPEG wrapper library and associated tests + +ENCODING_DESC= Enable arithmetic encoding +DECODING_DESC= Enable arithmetic decoding + +STATIC_DESC= Build static libraries +SHARED_DESC= Build shared libraries + +JPEG6B_DESC= API/ABI-compatible with libjpeg v6b +JPEG7_DESC= API/ABI-compatible with libjpeg v7 (implies arith-coding) +JPEG8_DESC= API/ABI-compatible with libjpeg v8 (implies arith-coding) + +GCC_USE= GCC=any +SIMD_CONFIGURE_WITH= simd +TURBOJPEG_CONFIGURE_WITH= turbojpeg + +JPEG7_CONFIGURE_WITH= jpeg7 +JPEG8_CONFIGURE_WITH= jpeg8 + +STATIC_CONFIGURE_ENABLE= static +SHARED_CONFIGURE_ENABLE= shared + +.include + +.if ${PORT_OPTIONS:MJPEG6B} +. if ! ${PORT_OPTIONS:MENCODING} +CONFIGURE_ARGS+= --without-arith-enc +. endif +. if ! ${PORT_OPTIONS:MDECODING} +CONFIGURE_ARGS+= --without-arith-dec +. endif +SOMAJORVERSION= 63 +.else +SOMAJORVERSION= 8 +.endif + +post-patch: + @${REINPLACE_CMD} -e "s|docdir = \$$(datadir)/doc|&/mozjpeg|; \ + s|exampledir = \$$(datadir)/doc|exampledir = ${EXAMPLESDIR}|" \ + ${WRKSRC}/Makefile.am + +run-autotools: run-autotools-autoreconf + +run-autotools-autoreconf: + cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOTOOLS_ENV} ${AUTORECONF} -fiv + +post-install: + @${MKDIR} ${STAGEDIR}${DOCSDIR2} + ${INSTALL_DATA} ${DOC_FILES:S|^|${DOCSRCDIR1}/|} ${STAGEDIR}${DOCSDIR1} + ${INSTALL_DATA} ${DOC_FILES:S|^|${DOCSRCDIR2}/|} ${STAGEDIR}${DOCSDIR2} + +.if ${PORT_OPTIONS:MSHARED} + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/${PORTNAME}/libjpeg.so.${SOMAJORVERSION} +.endif + +.if ${PORT_OPTIONS:MSHARED} && ${PORT_OPTIONS:MTURBOJPEG} + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/${PORTNAME}/libturbojpeg.so.1 +.endif + +.include diff --git a/graphics/mozjpeg/distinfo b/graphics/mozjpeg/distinfo new file mode 100644 index 000000000000..7e00de5948bc --- /dev/null +++ b/graphics/mozjpeg/distinfo @@ -0,0 +1,2 @@ +SHA256 (mozjpeg-1.0.tar.gz) = 6c4845d7fa0bddd77e4a209e8e81bde11af8524dcd2cb0bb10bfd9519548ec95 +SIZE (mozjpeg-1.0.tar.gz) = 1032706 diff --git a/graphics/mozjpeg/pkg-descr b/graphics/mozjpeg/pkg-descr new file mode 100644 index 000000000000..eab772213d24 --- /dev/null +++ b/graphics/mozjpeg/pkg-descr @@ -0,0 +1,19 @@ +MozJPEG is a fork of libjpeg-turbo with 'jpgcrush' functionality built in. + +The goal is to provide a production-quality JPEG encoder that improves +compression while maintaining compatibility with the vast majority of deployed +decoders. + +The 'jpgcrush' feature finds the progressive coding configuration which uses the +fewest bits. This most frequently reduces file size by 2-10%, but those are not +hard limits. Significantly greater reductions have been observed. + +Library configuration defaults are the same as for libjpeg-turbo, in order to +make transitions as painless as possible. There are new configuration options +for new features, but they are not enabled by default. + +The 'cjpeg' program defaults are not the same as for the equivalent program in +libjpeg-turbo. The 'cjpeg' defaults for mozjpeg are set to aggressively optimize +for smaller file sizes. + +WWW: https://github.com/mozilla/mozjpeg/ diff --git a/graphics/mozjpeg/pkg-plist b/graphics/mozjpeg/pkg-plist new file mode 100644 index 000000000000..60671e6af85d --- /dev/null +++ b/graphics/mozjpeg/pkg-plist @@ -0,0 +1,26 @@ +bin/cjpeg +bin/djpeg +bin/jpegtran +bin/rdjpgcom +%%TURBOJPEG%%bin/tjbench +bin/wrjpgcom +include/%%PORTNAME%%/jconfig.h +include/%%PORTNAME%%/jerror.h +include/%%PORTNAME%%/jmorecfg.h +include/%%PORTNAME%%/jpeglib.h +%%TURBOJPEG%%include/%%PORTNAME%%/turbojpeg.h +%%STATIC%%lib/%%PORTNAME%%/libjpeg.a +lib/%%PORTNAME%%/libjpeg.la +%%SHARED%%lib/%%PORTNAME%%/libjpeg.so +%%SHARED%%lib/%%PORTNAME%%/libjpeg.so.%%SOMAJORVERSION%% +%%STATIC%%%%TURBOJPEG%%lib/%%PORTNAME%%/libturbojpeg.a +%%TURBOJPEG%%lib/%%PORTNAME%%/libturbojpeg.la +%%SHARED%%%%TURBOJPEG%%lib/%%PORTNAME%%/libturbojpeg.so +%%SHARED%%%%TURBOJPEG%%lib/%%PORTNAME%%/libturbojpeg.so.1 +man/man1/cjpeg.1.gz +man/man1/djpeg.1.gz +man/man1/jpegtran.1.gz +man/man1/rdjpgcom.1.gz +man/man1/wrjpgcom.1.gz +@dirrm lib/%%PORTNAME%% +@dirrm include/%%PORTNAME%%