summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorahze <ahze@df743ca5-7f9a-e211-a948-0013205c9059>2008-03-19 21:55:58 +0800
committerahze <ahze@df743ca5-7f9a-e211-a948-0013205c9059>2008-03-19 21:55:58 +0800
commit588965935a012afb8951ad6429a3f019ee5569b6 (patch)
tree400af59e51cd2743602784c54a98484a4bc96225
parent856d693480694c35c5536e7d7ead2954b4aff6bd (diff)
downloadmarcuscom-ports-588965935a012afb8951ad6429a3f019ee5569b6.tar
marcuscom-ports-588965935a012afb8951ad6429a3f019ee5569b6.tar.gz
marcuscom-ports-588965935a012afb8951ad6429a3f019ee5569b6.tar.bz2
marcuscom-ports-588965935a012afb8951ad6429a3f019ee5569b6.tar.lz
marcuscom-ports-588965935a012afb8951ad6429a3f019ee5569b6.tar.xz
marcuscom-ports-588965935a012afb8951ad6429a3f019ee5569b6.tar.zst
marcuscom-ports-588965935a012afb8951ad6429a3f019ee5569b6.zip
Chase liboil
git-svn-id: svn://creme-brulee.marcuscom.com/ports/trunk@10781 df743ca5-7f9a-e211-a948-0013205c9059
-rw-r--r--audio/pulseaudio/Makefile101
-rw-r--r--audio/pulseaudio/distinfo3
-rw-r--r--audio/pulseaudio/files/patch-configure36
-rw-r--r--audio/pulseaudio/files/patch-src_daemon_default.pa.in17
-rw-r--r--audio/pulseaudio/files/patch-src_daemon_main.c10
-rw-r--r--audio/pulseaudio/files/patch-src_modules_oss-util.c37
-rw-r--r--audio/pulseaudio/files/patch-src_pulse_introspect.c11
-rw-r--r--audio/pulseaudio/files/patch-src_pulse_thread-mainloop.c12
-rw-r--r--audio/pulseaudio/files/patch-src_pulse_util.c20
-rw-r--r--audio/pulseaudio/files/patch-src_pulsecore_atomic.h116
-rw-r--r--audio/pulseaudio/files/patch-src_pulsecore_core-util.c49
-rw-r--r--audio/pulseaudio/files/patch-src_pulsecore_pstream.c23
-rw-r--r--audio/pulseaudio/files/patch-src_pulsecore_shm.c11
-rw-r--r--audio/pulseaudio/files/patch-src_tests_rtpoll-test.c18
-rw-r--r--audio/pulseaudio/pkg-descr8
-rw-r--r--audio/pulseaudio/pkg-install63
-rw-r--r--audio/pulseaudio/pkg-plist145
-rw-r--r--graphics/vips/Makefile91
-rw-r--r--graphics/vips/Makefile.man549
-rw-r--r--graphics/vips/distinfo3
-rw-r--r--graphics/vips/files/patch-configure11
-rw-r--r--graphics/vips/files/patch-libsrc-conversion-im_tiff2vips.c15
-rw-r--r--graphics/vips/files/patch-libsrc-conversion-im_vips2tiff.c15
-rw-r--r--graphics/vips/files/patch-libsrc-iofuncs-predicate.c15
-rw-r--r--graphics/vips/files/patch-po-Makefile.in.in29
-rw-r--r--graphics/vips/pkg-descr9
-rw-r--r--graphics/vips/pkg-plist452
27 files changed, 1869 insertions, 0 deletions
diff --git a/audio/pulseaudio/Makefile b/audio/pulseaudio/Makefile
new file mode 100644
index 000000000..03fa74443
--- /dev/null
+++ b/audio/pulseaudio/Makefile
@@ -0,0 +1,101 @@
+# New ports collection makefile for: polypaudio
+# Date created: 29 October 2004
+# Whom: Joe Marcus Clarke <marcus@FreeBSD.org>
+#
+# $FreeBSD$
+# $MCom: ports/audio/pulseaudio/Makefile,v 1.7 2007/09/10 05:10:38 mezz Exp $
+#
+
+PORTNAME= pulseaudio
+PORTVERSION= 0.9.9
+PORTREVISION= 1
+CATEGORIES= audio
+MASTER_SITES= http://0pointer.de/lennart/projects/${PORTNAME}/
+
+MAINTAINER= gnome@FreeBSD.org
+COMMENT= Sound server for UNIX
+
+LIB_DEPENDS= samplerate.1:${PORTSDIR}/audio/libsamplerate \
+ oil-0.3.0:${PORTSDIR}/devel/liboil
+
+CONFLICTS= polypaudio-[1-9]*
+
+USE_GNOME= gnometarget gnomehack glib20 ltverhack
+USE_XLIB= yes
+USE_LDCONFIG= yes
+USE_AUTOTOOLS= libtool:15 libltdl:15
+USE_GMAKE= yes
+USE_GETOPT_LONG=yes
+CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \
+ LDFLAGS="-L${LOCALBASE}/lib" \
+ PTHREAD_CFLAGS="${PTHREAD_CFLAGS}" \
+ PTHREAD_LIBS="${PTHREAD_LIBS}" \
+ LIBS="-lm"
+
+CONFIGURE_ARGS= --localstatedir=/var \
+ --disable-lirc # untested
+
+OPTIONS= JACK "JACK audio support" Off \
+ AVAHI "Enable Avahi mDNS support" On \
+ HAL "Enable HAL support" On \
+ GCONF "Enable GConf support" On
+
+PULSE_VERSION= ${PORTVERSION:C/^([0-9]+\.[0-9]+).*/\1/}
+PLIST_SUB= PULSE_VERSION=${PULSE_VERSION}
+
+MAN1= esdcompat.1 pabrowse.1 pacat.1 pacmd.1 pactl.1 padsp.1 \
+ paplay.1 pasuspender.1 pax11publish.1 pulseaudio.1
+MAN5= default.pa.5 pulse-client.conf.5 pulse-daemon.conf.5
+
+.include <bsd.port.pre.mk>
+
+.if defined(WITH_JACK)
+LIB_DEPENDS+= jack.0:${PORTSDIR}/audio/jack
+PLIST_SUB+= JACK=""
+.else
+PLIST_SUB+= JACK="@comment "
+CONFIGURE_ARGS+=--disable-jack
+.endif
+
+.if !defined(WITHOUT_AVAHI)
+LIB_DEPENDS+= avahi-core.5:${PORTSDIR}/net/avahi-app
+PLIST_SUB+= AVAHI=""
+.else
+CONFIGURE_ARGS+=--disable-avahi
+PLIST_SUB+= AVAHI="@comment "
+.endif
+
+.if !defined(WITHOUT_HAL)
+LIB_DEPENDS+= hal.1:${PORTSDIR}/sysutils/hal
+PLIST_SUB+= HAL=""
+.else
+CONFIGURE_ARGS+=--disable-hal
+PLIST_SUB+= HAL="@comment "
+.endif
+
+.if !defined(WITHOUT_GCONF)
+USE_GNOME+= gconf2
+PLIST_SUB+= GCONF=""
+.else
+CONFIGURE_ARGS+=--disable-gconf
+PLIST_SUB+= GCONF="@comment "
+.endif
+
+post-patch:
+ @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
+ ${WRKSRC}/src/daemon/default.pa.in
+.if ${OSVERSION} < 700042
+ @${REINPLACE_CMD} -e 's|-Wl,-no-undefined||' \
+ ${WRKSRC}/src/Makefile.in
+.endif
+
+post-install:
+.for ii in default.pa daemon.conf client.conf
+ ${INSTALL_DATA} ${WRKSRC}/src/${ii} \
+ ${PREFIX}/etc/pulse/${ii}-dist
+.endfor
+.if !defined(PACKAGE_BUILDING)
+ @${SETENV} PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/audio/pulseaudio/distinfo b/audio/pulseaudio/distinfo
new file mode 100644
index 000000000..aa4f5aff7
--- /dev/null
+++ b/audio/pulseaudio/distinfo
@@ -0,0 +1,3 @@
+MD5 (pulseaudio-0.9.9.tar.gz) = 8fa6f7a9611bb194d94311764022b197
+SHA256 (pulseaudio-0.9.9.tar.gz) = 9caab8f9be8a371aea7cd0241aab7ffd4b1043fbc4a8f62736faea4229f11f7d
+SIZE (pulseaudio-0.9.9.tar.gz) = 1063448
diff --git a/audio/pulseaudio/files/patch-configure b/audio/pulseaudio/files/patch-configure
new file mode 100644
index 000000000..32d08b68d
--- /dev/null
+++ b/audio/pulseaudio/files/patch-configure
@@ -0,0 +1,36 @@
+--- configure.orig Sun Jul 8 18:17:17 2007
++++ configure Sun Jul 8 18:41:18 2007
+@@ -25255,6 +25255,7 @@ echo $ECHO_N "checking whether to check
+ check_inconsistencies=yes
+ case "${host_cpu}-${host_os}" in
+ *-darwin*) check_inconsistencies=no ;;
++ *-freebsd*) check_inconsistencies=no ;;
+ esac
+ if test x"$GCC" != xyes -o "x$check_inconsistencies" != xyes ; then
+ { echo "$as_me:$LINENO: result: no" >&5
+@@ -28924,9 +28925,9 @@ _ACEOF
+
+ else
+
+-{ { echo "$as_me:$LINENO: error: *** libatomic-ops headers not found" >&5
+-echo "$as_me: error: *** libatomic-ops headers not found" >&2;}
+- { (exit 1); exit 1; }; }
++#{ { echo "$as_me:$LINENO: error: *** libatomic-ops headers not found" >&5
++#echo "$as_me: error: *** libatomic-ops headers not found" >&2;}
++# { (exit 1); exit 1; }; }
+
+ fi
+
+@@ -28934,9 +28935,9 @@ done
+
+
+ # Win32 does not need the lib and breaks horribly if we try to include it
+-if test "x$os_is_win32" != "x1" ; then
+- LIBS="$LIBS -latomic_ops"
+-fi
++#if test "x$os_is_win32" != "x1" ; then
++# LIBS="$LIBS -latomic_ops"
++#fi
+
+ #### OSS support (optional) ####
+
diff --git a/audio/pulseaudio/files/patch-src_daemon_default.pa.in b/audio/pulseaudio/files/patch-src_daemon_default.pa.in
new file mode 100644
index 000000000..7abc21071
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_daemon_default.pa.in
@@ -0,0 +1,17 @@
+--- src/daemon/default.pa.in.orig 2007-10-28 13:18:27.000000000 -0400
++++ src/daemon/default.pa.in 2008-01-01 15:59:59.000000000 -0500
+@@ -19,10 +19,10 @@
+ .nofail
+
+ ### Load something into the sample cache
+-#load-sample-lazy x11-bell /usr/share/sounds/gtk-events/activate.wav
+-load-sample-lazy pulse-hotplug /usr/share/sounds/startup3.wav
+-#load-sample-lazy pulse-coldplug /usr/share/sounds/startup3.wav
+-#load-sample-lazy pulse-access /usr/share/sounds/generic.wav
++#load-sample-lazy x11-bell %%LOCALBASE%%/sounds/gtk-events/activate.wav
++load-sample-lazy pulse-hotplug %%LOCALBASE%%/share/sounds/startup3.wav
++#load-sample-lazy pulse-coldplug %%LOCALBASE%%/sounds/startup3.wav
++#load-sample-lazy pulse-access %%LOCALBASE%%/sounds/generic.wav
+
+ .fail
+
diff --git a/audio/pulseaudio/files/patch-src_daemon_main.c b/audio/pulseaudio/files/patch-src_daemon_main.c
new file mode 100644
index 000000000..1b96327a8
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_daemon_main.c
@@ -0,0 +1,10 @@
+--- src/daemon/main.c.orig Thu Jul 12 00:04:22 2007
++++ src/daemon/main.c Thu Jul 12 00:04:40 2007
+@@ -40,6 +40,7 @@
+ #include <unistd.h>
+ #include <locale.h>
+ #include <sys/types.h>
++#include <sys/stat.h>
+
+ #include <liboil/liboil.h>
+
diff --git a/audio/pulseaudio/files/patch-src_modules_oss-util.c b/audio/pulseaudio/files/patch-src_modules_oss-util.c
new file mode 100644
index 000000000..bf44d4fdd
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_modules_oss-util.c
@@ -0,0 +1,37 @@
+--- src/modules/oss-util.c.orig 2007-11-08 21:45:25.000000000 -0500
++++ src/modules/oss-util.c 2008-01-09 17:00:45.000000000 -0500
+@@ -44,6 +44,22 @@
+
+ #include "oss-util.h"
+
++#ifndef DSP_CAP_COPROC
++#define DSP_CAP_COPROC 0x00000800
++#endif
++#ifndef DSP_CAP_TRIGGER
++#define DSP_CAP_TRIGGER 0x00001000
++#endif
++#ifndef DSP_CAP_MMAP
++#define DSP_CAP_MMAP 0x00002000
++#endif
++#ifndef DSP_CAP_MULTI
++#define DSP_CAP_MULTI 0x00004000
++#endif
++#ifndef DSP_CAP_BIND
++#define DSP_CAP_BIND 0x00008000
++#endif
++
+ int pa_oss_open(const char *device, int *mode, int* pcaps) {
+ int fd = -1;
+ int caps;
+@@ -300,7 +316,11 @@ static int get_device_number(const char
+ int r;
+
+ if (!(p = rp = pa_readlink(dev))) {
++#ifdef ENOLINK
+ if (errno != EINVAL && errno != ENOLINK) {
++#else
++ if (errno != EINVAL) {
++#endif
+ r = -1;
+ goto finish;
+ }
diff --git a/audio/pulseaudio/files/patch-src_pulse_introspect.c b/audio/pulseaudio/files/patch-src_pulse_introspect.c
new file mode 100644
index 000000000..6681f70ca
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_pulse_introspect.c
@@ -0,0 +1,11 @@
+--- src/pulse/introspect.c.orig 2008-01-03 20:01:31.000000000 -0500
++++ src/pulse/introspect.c 2008-01-03 20:01:39.000000000 -0500
+@@ -26,6 +26,8 @@
+ #include <config.h>
+ #endif
+
++#include <string.h>
++
+ #include <pulse/context.h>
+
+ #include <pulsecore/gccmacro.h>
diff --git a/audio/pulseaudio/files/patch-src_pulse_thread-mainloop.c b/audio/pulseaudio/files/patch-src_pulse_thread-mainloop.c
new file mode 100644
index 000000000..72a0965dd
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_pulse_thread-mainloop.c
@@ -0,0 +1,12 @@
+--- src/pulse/thread-mainloop.c.orig 2008-01-01 17:23:28.000000000 -0500
++++ src/pulse/thread-mainloop.c 2008-01-01 17:25:00.000000000 -0500
+@@ -27,6 +27,9 @@
+ #endif
+
+ #include <signal.h>
++#ifndef OS_IS_WIN32
++#include <pthread.h>
++#endif
+ #include <stdio.h>
+
+ #ifdef HAVE_POLL_H
diff --git a/audio/pulseaudio/files/patch-src_pulse_util.c b/audio/pulseaudio/files/patch-src_pulse_util.c
new file mode 100644
index 000000000..2fa4de0bc
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_pulse_util.c
@@ -0,0 +1,20 @@
+--- src/pulse/util.c.orig 2008-01-01 17:29:31.000000000 -0500
++++ src/pulse/util.c 2008-01-01 17:29:00.000000000 -0500
+@@ -184,6 +184,17 @@ char *pa_get_binary_name(char *s, size_t
+ }
+
+ #endif
++#ifdef __FreeBSD__
++ {
++ char *rp;
++
++ if ((rp = pa_readlink("/proc/curproc/file"))) {
++ pa_strlcpy(s, pa_path_get_filename(rp), l);
++ pa_xfree(rp);
++ return s;
++ }
++ }
++#endif
+
+ #if defined(HAVE_SYS_PRCTL_H) && defined(PR_GET_NAME)
+ {
diff --git a/audio/pulseaudio/files/patch-src_pulsecore_atomic.h b/audio/pulseaudio/files/patch-src_pulsecore_atomic.h
new file mode 100644
index 000000000..06515b9f9
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_pulsecore_atomic.h
@@ -0,0 +1,116 @@
+--- src/pulsecore/atomic.h.orig 2008-01-23 19:44:20.000000000 -0500
++++ src/pulsecore/atomic.h 2008-03-15 14:48:41.000000000 -0400
+@@ -106,6 +106,113 @@ static inline int pa_atomic_ptr_cmpxchg(
+ return __sync_bool_compare_and_swap(&a->value, (long) old_p, (long) new_p);
+ }
+
++#elif defined(__FreeBSD__)
++
++#include <sys/cdefs.h>
++#include <sys/types.h>
++#include <sys/param.h>
++#include <machine/atomic.h>
++
++#if __FreeBSD_version < 600000
++#if defined(__i386__) || defined(__amd64__)
++#if defined(__amd64__)
++#define atomic_load_acq_64 atomic_load_acq_long
++#endif
++static inline u_int
++atomic_fetchadd_int(volatile u_int *p, u_int v)
++{
++ __asm __volatile(
++ " " __XSTRING(MPLOCKED) " "
++ " xaddl %0, %1 ; "
++ "# atomic_fetchadd_int"
++ : "+r" (v),
++ "=m" (*p)
++ : "m" (*p));
++
++ return (v);
++}
++#elif defined(__sparc64__)
++#define atomic_load_acq_64 atomic_load_acq_long
++#define atomic_fetchadd_int atomic_add_int
++#elif defined(__ia64__)
++#define atomic_load_acq_64 atomic_load_acq_long
++static inline uint32_t
++atomic_fetchadd_int(volatile uint32_t *p, uint32_t v)
++{
++ uint32_t value;
++
++ do {
++ value = *p;
++ } while (!atomic_cmpset_32(p, value, value + v));
++ return (value);
++}
++#endif
++#endif
++
++typedef struct pa_atomic {
++ volatile unsigned long value;
++} pa_atomic_t;
++
++#define PA_ATOMIC_INIT(v) { .value = (v) }
++
++static inline int pa_atomic_load(const pa_atomic_t *a) {
++ return (int) atomic_load_acq_int((unsigned int *) &a->value);
++}
++
++static inline void pa_atomic_store(pa_atomic_t *a, int i) {
++ atomic_store_rel_int((unsigned int *) &a->value, i);
++}
++
++static inline int pa_atomic_add(pa_atomic_t *a, int i) {
++ return atomic_fetchadd_int((unsigned int *) &a->value, i);
++}
++
++static inline int pa_atomic_sub(pa_atomic_t *a, int i) {
++ return atomic_fetchadd_int((unsigned int *) &a->value, -(i));
++}
++
++static inline int pa_atomic_inc(pa_atomic_t *a) {
++ return atomic_fetchadd_int((unsigned int *) &a->value, 1);
++}
++
++static inline int pa_atomic_dec(pa_atomic_t *a) {
++ return atomic_fetchadd_int((unsigned int *) &a->value, -1);
++}
++
++static inline int pa_atomic_cmpxchg(pa_atomic_t *a, int old_i, int new_i) {
++ return atomic_cmpset_int((unsigned int *) &a->value, old_i, new_i);
++}
++
++typedef struct pa_atomic_ptr {
++ volatile unsigned long value;
++} pa_atomic_ptr_t;
++
++#define PA_ATOMIC_PTR_INIT(v) { .value = (unsigned long) (v) }
++
++static inline void* pa_atomic_ptr_load(const pa_atomic_ptr_t *a) {
++#ifdef atomic_load_acq_64
++ return (void*) atomic_load_acq_ptr((unsigned long *) &a->value);
++#else
++ return (void*) atomic_load_acq_ptr((unsigned int *) &a->value);
++#endif
++}
++
++static inline void pa_atomic_ptr_store(pa_atomic_ptr_t *a, void *p) {
++#ifdef atomic_load_acq_64
++ atomic_store_rel_ptr(&a->value, (unsigned long) p);
++#else
++ atomic_store_rel_ptr((unsigned int *) &a->value, (unsigned int) p);
++#endif
++}
++
++static inline int pa_atomic_ptr_cmpxchg(pa_atomic_ptr_t *a, void *old_p, void* new_p) {
++#ifdef atomic_load_acq_64
++ return atomic_cmpset_ptr(&a->value, (unsigned long) old_p, (unsigned long) new_p);
++#else
++ return atomic_cmpset_ptr((unsigned int *) &a->value, (unsigned int) old_p, (unsigned int) new_p);
++#endif
++}
++
+ #elif defined(__GNUC__) && (defined(__amd64__) || defined(__x86_64__))
+
+ #error "The native atomic operations implementation for AMD64 has not been tested. libatomic_ops is known to not work properly on AMD64 and your gcc version is too old for the gcc-builtin atomic ops support. You have three options now: make the native atomic operations implementation for AMD64 work, fix libatomic_ops, or upgrade your GCC."
diff --git a/audio/pulseaudio/files/patch-src_pulsecore_core-util.c b/audio/pulseaudio/files/patch-src_pulsecore_core-util.c
new file mode 100644
index 000000000..cb91964ad
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_pulsecore_core-util.c
@@ -0,0 +1,49 @@
+--- src/pulsecore/core-util.c.orig Sun Jul 8 18:35:21 2007
++++ src/pulsecore/core-util.c Sun Jul 8 18:39:04 2007
+@@ -40,6 +40,7 @@
+ #include <time.h>
+ #include <ctype.h>
+ #include <sys/types.h>
++#include <sys/socket.h>
+ #include <sys/stat.h>
+ #include <sys/time.h>
+
+@@ -544,6 +545,7 @@ fail:
+ cap_free(caps);
+ }
+ #endif
++ ;
+ }
+
+ /* Reset the priority to normal, inverting the changes made by pa_raise_priority() */
+@@ -838,22 +840,22 @@ int pa_check_in_group(gid_t g) {
+ (advisory on UNIX, mandatory on Windows) */
+ int pa_lock_fd(int fd, int b) {
+ #ifdef F_SETLKW
+- struct flock flock;
++ struct flock pa_flock;
+
+ /* Try a R/W lock first */
+
+- flock.l_type = b ? F_WRLCK : F_UNLCK;
+- flock.l_whence = SEEK_SET;
+- flock.l_start = 0;
+- flock.l_len = 0;
++ pa_flock.l_type = b ? F_WRLCK : F_UNLCK;
++ pa_flock.l_whence = SEEK_SET;
++ pa_flock.l_start = 0;
++ pa_flock.l_len = 0;
+
+- if (fcntl(fd, F_SETLKW, &flock) >= 0)
++ if (fcntl(fd, F_SETLKW, &pa_flock) >= 0)
+ return 0;
+
+ /* Perhaps the file descriptor qas opened for read only, than try again with a read lock. */
+ if (b && errno == EBADF) {
+- flock.l_type = F_RDLCK;
+- if (fcntl(fd, F_SETLKW, &flock) >= 0)
++ pa_flock.l_type = F_RDLCK;
++ if (fcntl(fd, F_SETLKW, &pa_flock) >= 0)
+ return 0;
+ }
+
diff --git a/audio/pulseaudio/files/patch-src_pulsecore_pstream.c b/audio/pulseaudio/files/patch-src_pulsecore_pstream.c
new file mode 100644
index 000000000..b242e2e41
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_pulsecore_pstream.c
@@ -0,0 +1,23 @@
+--- src/pulsecore/pstream.c.orig 2007-10-28 15:13:53.000000000 -0400
++++ src/pulsecore/pstream.c 2008-01-01 16:14:18.000000000 -0500
+@@ -183,14 +183,17 @@ static void do_something(pa_pstream *p)
+ p->mainloop->defer_enable(p->defer_event, 0);
+
+ if (!p->dead && pa_iochannel_is_readable(p->io)) {
+- if (do_read(p) < 0)
++ if (do_read(p) < 0) {
+ goto fail;
+- } else if (!p->dead && pa_iochannel_is_hungup(p->io))
++ }
++ } else if (!p->dead && pa_iochannel_is_hungup(p->io)) {
+ goto fail;
++ }
+
+ if (!p->dead && pa_iochannel_is_writable(p->io)) {
+- if (do_write(p) < 0)
++ if (do_write(p) < 0) {
+ goto fail;
++ }
+ }
+
+ pa_pstream_unref(p);
diff --git a/audio/pulseaudio/files/patch-src_pulsecore_shm.c b/audio/pulseaudio/files/patch-src_pulsecore_shm.c
new file mode 100644
index 000000000..549091ccc
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_pulsecore_shm.c
@@ -0,0 +1,11 @@
+--- src/pulsecore/shm.c.orig 2007-10-28 15:13:53.000000000 -0400
++++ src/pulsecore/shm.c 2008-01-01 16:19:19.000000000 -0500
+@@ -80,7 +80,7 @@ struct shm_marker {
+ };
+
+ static char *segment_name(char *fn, size_t l, unsigned id) {
+- pa_snprintf(fn, l, "/pulse-shm-%u", id);
++ pa_snprintf(fn, l, "/tmp/pulse-shm-%u", id);
+ return fn;
+ }
+
diff --git a/audio/pulseaudio/files/patch-src_tests_rtpoll-test.c b/audio/pulseaudio/files/patch-src_tests_rtpoll-test.c
new file mode 100644
index 000000000..365ca8d2b
--- /dev/null
+++ b/audio/pulseaudio/files/patch-src_tests_rtpoll-test.c
@@ -0,0 +1,18 @@
+--- src/tests/rtpoll-test.c.orig 2008-01-03 20:03:03.000000000 -0500
++++ src/tests/rtpoll-test.c 2008-01-03 20:03:25.000000000 -0500
+@@ -45,6 +45,7 @@ static int worker(pa_rtpoll_item *w) {
+ }
+
+ int main(int argc, char *argv[]) {
++#ifdef SIGRTMIN
+ pa_rtpoll *p;
+ pa_rtpoll_item *i, *w;
+ struct pollfd *pollfd;
+@@ -86,6 +87,7 @@ int main(int argc, char *argv[]) {
+ pa_rtpoll_item_free(w);
+
+ pa_rtpoll_free(p);
++#endif
+
+ return 0;
+ }
diff --git a/audio/pulseaudio/pkg-descr b/audio/pulseaudio/pkg-descr
new file mode 100644
index 000000000..45634a1f7
--- /dev/null
+++ b/audio/pulseaudio/pkg-descr
@@ -0,0 +1,8 @@
+PulseAudio, previously known as Polypaudio, is a sound server for POSIX and
+Win32 systems. A sound server is basically a proxy for your sound applications.
+It allows you to do advanced operations on your sound data as it passes between
+your application and your hardware. Things like transferring the audio to a
+different machine, changing the sample format or channel count and mixing
+several sounds into one are easily achieved using a sound server.
+
+WWW: http://pulseaudio.org/
diff --git a/audio/pulseaudio/pkg-install b/audio/pulseaudio/pkg-install
new file mode 100644
index 000000000..2c316a5e6
--- /dev/null
+++ b/audio/pulseaudio/pkg-install
@@ -0,0 +1,63 @@
+#!/bin/sh
+
+case $2 in
+POST-INSTALL)
+ RGROUP=pulse-rt
+ SUSER=pulse
+ SGROUP=${SUSER}
+ AGROUP=pulse-access
+ SUID=563
+ RGID=557
+ SGID=${SUID}
+ AGID=564
+ PW=/usr/sbin/pw
+
+ if ${PW} group show "${RGROUP}" 2>/dev/null; then
+ echo "You already have a group \"${RGROUP}\", so I will use it."
+ else
+ if ${PW} groupadd ${RGROUP} -g ${RGID}; then
+ echo "Added group \"${RGROUP}\"."
+ else
+ echo "Adding group \"${RGROUP}\" failed..."
+ exit 1
+ fi
+ fi
+
+ if ${PW} group show "${SGROUP}" 2>/dev/null; then
+ echo "You already have a group \"${SGROUP}\", so I will use it."
+ else
+ if ${PW} groupadd ${SGROUP} -g ${SGID}; then
+ echo "Added group \"${SGROUP}\"."
+ else
+ echo "Adding group \"${SGROUP}\" failed..."
+ exit 1
+ fi
+ fi
+
+ if ${PW} group show "${AGROUP}" 2>/dev/null; then
+ echo "You already have a group \"${AGROUP}\", so I will use it."
+ else
+ if ${PW} groupadd ${AGROUP} -g ${AGID}; then
+ echo "Added group \"${AGROUP}\"."
+ else
+ echo "Adding group \"${AGROUP}\" failed..."
+ exit 1
+ fi
+ fi
+
+ if ${PW} user show "${SUSER}" 2>/dev/null; then
+ echo "You already have a user \"${SUSER}\", so I will use it."
+ else
+ if ${PW} useradd ${SUSER} -u ${SUID} -g ${SGROUP} -h - \
+ -d "/nonexistent" -s /sbin/nologin -c "PulseAudio System User"
+ then
+ echo "Added user \"${SUSER}\"."
+ else
+ echo "Adding user \"${SUSER}\" failed..."
+ exit 1
+ fi
+ fi
+
+ exit 0
+ ;;
+esac
diff --git a/audio/pulseaudio/pkg-plist b/audio/pulseaudio/pkg-plist
new file mode 100644
index 000000000..2b0c9e9b9
--- /dev/null
+++ b/audio/pulseaudio/pkg-plist
@@ -0,0 +1,145 @@
+bin/esdcompat
+%%AVAHI%%bin/pabrowse
+bin/pacat
+bin/pacmd
+bin/pactl
+bin/padsp
+bin/paplay
+bin/parec
+bin/pasuspender
+bin/pax11publish
+bin/pulseaudio
+@unexec if cmp -s %D/etc/pulse/client.conf %D/etc/pulse/client.conf-dist; then rm -f %D/etc/pulse/client.conf; fi
+etc/pulse/client.conf-dist
+@unexec if cmp -s %D/etc/pulse/daemon.conf %D/etc/pulse/daemon.conf-dist; then rm -f %D/etc/pulse/daemon.conf; fi
+etc/pulse/daemon.conf-dist
+@unexec if cmp -s %D/etc/pulse/default.pa %D/etc/pulse/default.pa-dist; then rm -f %D/etc/pulse/default.pa; fi
+etc/pulse/default.pa-dist
+etc/xdg/autostart/pulseaudio-module-xsmp.desktop
+%%AVAHI%%include/pulse/browser.h
+include/pulse/cdecl.h
+include/pulse/channelmap.h
+include/pulse/context.h
+include/pulse/def.h
+include/pulse/error.h
+include/pulse/glib-mainloop.h
+include/pulse/introspect.h
+include/pulse/mainloop-api.h
+include/pulse/mainloop-signal.h
+include/pulse/mainloop.h
+include/pulse/operation.h
+include/pulse/pulseaudio.h
+include/pulse/sample.h
+include/pulse/scache.h
+include/pulse/simple.h
+include/pulse/stream.h
+include/pulse/subscribe.h
+include/pulse/thread-mainloop.h
+include/pulse/timeval.h
+include/pulse/utf8.h
+include/pulse/util.h
+include/pulse/version.h
+include/pulse/volume.h
+include/pulse/xmalloc.h
+%%AVAHI%%lib/libpulse-browse.a
+%%AVAHI%%lib/libpulse-browse.la
+%%AVAHI%%lib/libpulse-browse.so
+%%AVAHI%%lib/libpulse-browse.so.0
+lib/libpulse-mainloop-glib.a
+lib/libpulse-mainloop-glib.la
+lib/libpulse-mainloop-glib.so
+lib/libpulse-mainloop-glib.so.0
+lib/libpulse-simple.a
+lib/libpulse-simple.la
+lib/libpulse-simple.so
+lib/libpulse-simple.so.0
+lib/libpulse.a
+lib/libpulse.la
+lib/libpulse.so
+lib/libpulse.so.0
+lib/libpulsecore.a
+lib/libpulsecore.la
+lib/libpulsecore.so
+lib/libpulsecore.so.5
+lib/libpulsedsp.so
+lib/pulse-%%PULSE_VERSION%%/modules/libauthkey-prop.so
+lib/pulse-%%PULSE_VERSION%%/modules/libauthkey.so
+%%AVAHI%%lib/pulse-%%PULSE_VERSION%%/modules/libavahi-wrap.so
+lib/pulse-%%PULSE_VERSION%%/modules/libcli.so
+%%HAL%%lib/pulse-%%PULSE_VERSION%%/modules/libdbus-util.so
+lib/pulse-%%PULSE_VERSION%%/modules/libiochannel.so
+lib/pulse-%%PULSE_VERSION%%/modules/libioline.so
+lib/pulse-%%PULSE_VERSION%%/modules/libipacl.so
+lib/pulse-%%PULSE_VERSION%%/modules/liboss-util.so
+lib/pulse-%%PULSE_VERSION%%/modules/libpacket.so
+lib/pulse-%%PULSE_VERSION%%/modules/libparseaddr.so
+lib/pulse-%%PULSE_VERSION%%/modules/libpdispatch.so
+lib/pulse-%%PULSE_VERSION%%/modules/libprotocol-cli.so
+lib/pulse-%%PULSE_VERSION%%/modules/libprotocol-esound.so
+lib/pulse-%%PULSE_VERSION%%/modules/libprotocol-http.so
+lib/pulse-%%PULSE_VERSION%%/modules/libprotocol-native.so
+lib/pulse-%%PULSE_VERSION%%/modules/libprotocol-simple.so
+lib/pulse-%%PULSE_VERSION%%/modules/libpstream-util.so
+lib/pulse-%%PULSE_VERSION%%/modules/libpstream.so
+lib/pulse-%%PULSE_VERSION%%/modules/librtp.so
+lib/pulse-%%PULSE_VERSION%%/modules/libsocket-client.so
+lib/pulse-%%PULSE_VERSION%%/modules/libsocket-server.so
+lib/pulse-%%PULSE_VERSION%%/modules/libsocket-util.so
+lib/pulse-%%PULSE_VERSION%%/modules/libstrlist.so
+lib/pulse-%%PULSE_VERSION%%/modules/libtagstruct.so
+lib/pulse-%%PULSE_VERSION%%/modules/libx11prop.so
+lib/pulse-%%PULSE_VERSION%%/modules/libx11wrap.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-cli-protocol-tcp.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-cli-protocol-unix.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-cli.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-combine.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-default-device-restore.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-detect.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-esound-compat-spawnfd.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-esound-compat-spawnpid.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-esound-protocol-tcp.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-esound-protocol-unix.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-esound-sink.so
+%%GCONF%%lib/pulse-%%PULSE_VERSION%%/modules/module-gconf.so
+%%HAL%%lib/pulse-%%PULSE_VERSION%%/modules/module-hal-detect.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-http-protocol-tcp.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-http-protocol-unix.so
+%%JACK%%lib/pulse-%%PULSE_VERSION%%/modules/module-jack-sink.so
+%%JACK%%lib/pulse-%%PULSE_VERSION%%/modules/module-jack-source.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-ladspa-sink.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-match.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-native-protocol-fd.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-native-protocol-tcp.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-native-protocol-unix.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-null-sink.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-oss.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-pipe-sink.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-pipe-source.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-remap-sink.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-rescue-streams.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-rtp-recv.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-rtp-send.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-simple-protocol-tcp.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-simple-protocol-unix.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-sine.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-suspend-on-idle.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-tunnel-sink.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-tunnel-source.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-volume-restore.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-x11-bell.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-x11-publish.so
+lib/pulse-%%PULSE_VERSION%%/modules/module-x11-xsmp.so
+%%AVAHI%%lib/pulse-%%PULSE_VERSION%%/modules/module-zeroconf-discover.so
+%%AVAHI%%lib/pulse-%%PULSE_VERSION%%/modules/module-zeroconf-publish.so
+%%AVAHI%%libdata/pkgconfig/libpulse-browse.pc
+libdata/pkgconfig/libpulse-mainloop-glib.pc
+libdata/pkgconfig/libpulse-simple.pc
+libdata/pkgconfig/libpulse.pc
+%%GCONF%%libexec/pulse/gconf-helper
+%%GCONF%%@dirrm libexec/pulse
+@dirrm lib/pulse-%%PULSE_VERSION%%/modules
+@dirrm lib/pulse-%%PULSE_VERSION%%
+@dirrm include/pulse
+@dirrmtry etc/xdg/autostart
+@dirrmtry etc/xdg
+@dirrm etc/pulse
diff --git a/graphics/vips/Makefile b/graphics/vips/Makefile
new file mode 100644
index 000000000..026a95ac4
--- /dev/null
+++ b/graphics/vips/Makefile
@@ -0,0 +1,91 @@
+# New ports collection makefile for: vips
+# Date created: 19 December 2003
+# Whom: Lev Serebryakov <lev@FreeBSD.org>
+#
+# $FreeBSD$
+#
+
+PORTNAME= vips
+PORTVERSION= 7.12.4
+PORTREVISION= 2
+CATEGORIES= graphics
+MASTER_SITES= http://www.vips.ecs.soton.ac.uk/vips-${PORTVERSION:R}/
+
+MAINTAINER= mi@aldan.algebra.com
+COMMENT= Free image processing system
+
+OPTIONS= MAGICK "Use ImageMagick for more image-types" ${IMPRESENT}
+OPTIONS+= LIBOIL "Use liboil for CPU-optimized primitives" on
+# Making Python a proper option awaits portmgr's resolving the current
+# chicken-and-egg problem of OPTIONS vs. USE_* knobs
+#OPTIONS+= PYTHON "Create Python bindings" ${PYPRESENT}
+
+BUILD_DEPENDS= ${SITE_PERL}/${PERL_ARCH}/XML/Parser.pm:${PORTSDIR}/textproc/p5-XML-Parser
+LIB_DEPENDS= fftw3:${PORTSDIR}/math/fftw3 \
+ jpeg:${PORTSDIR}/graphics/jpeg \
+ tiff:${PORTSDIR}/graphics/tiff \
+ IlmImf:${PORTSDIR}/graphics/OpenEXR \
+ png:${PORTSDIR}/graphics/png \
+ lcms:${PORTSDIR}/graphics/lcms
+
+IMPRESENT!= which mogrify > /dev/null && echo on || echo off
+PYPRESENT!= which python > /dev/null && echo on || echo off
+USE_GMAKE= yes
+USE_GETTEXT= yes
+USE_PERL5_BUILD= yes
+USE_GNOME= gnomehack glib20 pkgconfig pango libxml2
+USE_AUTOTOOLS= libtool:15
+USE_LDCONFIG= yes
+ALL_TARGET= -j`${SYSCTL} -n hw.ncpu`
+.if defined(NOPORTDOCS)
+# Don't extract doc/ subdirectory - the simplest way:
+EXTRACT_AFTER_ARGS= | ${TAR} -xpf - --exclude doc
+post-install:
+ ${RMDIR} ${DOCSDIR}
+.else
+# Don't extract html-ized man-pages in either case:
+EXTRACT_AFTER_ARGS= | ${TAR} -xpf - --exclude doc/html/man
+.endif
+PLIST_SUB+= VERSION=${PORTVERSION:R}
+
+CONFIGURE_ARGS= --without-x --mandir=${PREFIX}/man
+
+# This is used to generate the list of man-pages and MLINKS. It
+# looks through the available man-pages and filters out those,
+# which consist of ``.so another/page''. Instead of installing
+# these stubs, we handle them as MLINKS.
+# Only use this target, if upgrading the port.
+.PHONY: Makefile.man
+Makefile.man:
+ @${ECHO_MSG} "# This file is auto-generated" > $@
+ ${FIND} ${WRKSRC} -name '*.[13]' | ${XARGS} ${AWK} ' \
+ /\.so/ { \
+ page=substr($$2, 6, 100); \
+ sub(".*/", "", FILENAME); \
+ print "MLINKS+=\t" page "\t" FILENAME; \
+ nextfile; \
+ } { \
+ sub(".*/", "", FILENAME); \
+ ext = FILENAME; \
+ sub(".*\\.", "", ext); \
+ print "MAN" ext "+=\t" FILENAME; \
+ nextfile; \
+ }' >> $@
+
+.include "Makefile.man"
+
+.include <bsd.port.pre.mk>
+
+.if defined(WITH_MAGICK)
+LIB_DEPENDS+= Magick:${PORTSDIR}/graphics/ImageMagick
+.else
+CONFIGURE_ARGS+= --without-magick
+.endif
+
+.if defined(WITH_LIBOIL)
+LIB_DEPENDS+= oil:${PORTSDIR}/devel/liboil
+.else
+CONFIGURE_ARGS+= --without-liboil
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/graphics/vips/Makefile.man b/graphics/vips/Makefile.man
new file mode 100644
index 000000000..888615ee2
--- /dev/null
+++ b/graphics/vips/Makefile.man
@@ -0,0 +1,549 @@
+# This file is auto-generated
+MAN1+= batch_image_convert.1
+MAN1+= light_correct.1
+MAN1+= batch_rubber_sheet.1
+MAN1+= batch_crop.1
+MLINKS+= sines.1 squares.1
+MLINKS+= cooc.1 cooc_features.1
+MAN1+= cooc.1
+MAN1+= simcontr.1
+MAN1+= glds.1
+MAN1+= sines.1
+MLINKS+= glds.1 glds_features.1
+MAN1+= edvips.1
+MLINKS+= debugim.1 printlines.1
+MAN1+= vips.1
+MAN1+= debugim.1
+MAN1+= header.1
+MAN1+= binfile.1
+MAN1+= vdump.1
+MAN3+= im_maplut.3
+MLINKS+= im_histgr.3 im_identity.3
+MAN3+= im_histplot.3
+MLINKS+= im_tone_build.3 im_tone_map.3
+MAN3+= im_stdif.3
+MLINKS+= im_heq.3 im_hsp.3
+MAN3+= im_project.3
+MAN3+= im_tone_build.3
+MAN3+= im_invertlut.3
+MAN3+= im_histgr.3
+MAN3+= im_gammacorrect.3
+MAN3+= im_heq.3
+MLINKS+= im_tone_build.3 im_tone_analyse.3
+MLINKS+= im_histgr.3 im_histcum.3
+MLINKS+= im_histgr.3 im_histeq.3
+MAN3+= im_buildlut.3
+MLINKS+= im_histgr.3 im_histnD.3
+MLINKS+= im_histgr.3 im_identity_ushort.3
+MAN3+= im_hist.3
+MLINKS+= im_heq.3 im_lhisteq.3
+MLINKS+= im_histgr.3 im_histnorm.3
+MLINKS+= im_heq.3 im_lhisteq_raw.3
+MLINKS+= im_histgr.3 im_histspec.3
+MAN3+= im_lrmosaic.3
+MAN3+= im_match_linear_search.3
+MLINKS+= im_match_linear_search.3 im_match_linear.3
+MAN3+= im_similarity_area.3
+MLINKS+= im_similarity_area.3 im_similarity.3
+MLINKS+= im_global_balance.3 im_global_balance_float.3
+MAN3+= im_remosaic.3
+MLINKS+= im_lrmosaic.3 im_tbmosaic.3
+MAN3+= im_correl.3
+MAN3+= im_affine.3
+MLINKS+= im_lrmerge.3 im_tbmerge.3
+MAN3+= im_global_balance.3
+MAN3+= im_lrmerge.3
+MLINKS+= im_matinv.3 im_matmul.3
+MAN3+= im_matinv.3
+MAN3+= im_lu_decomp.3
+MLINKS+= im_matinv.3 im_mattrn.3
+MLINKS+= im_matinv.3 im_matcat.3
+MLINKS+= im_matinv.3 im_matinv_inplace.3
+MLINKS+= im_lu_decomp.3 im_lu_solve.3
+MLINKS+= im_offsets45.3 im_rotate_imask45.3
+MAN3+= im_lowpass.3
+MLINKS+= im_conv.3 im_shrink.3
+MAN3+= im_rank.3
+MLINKS+= im_conv.3 im_convsep.3
+MLINKS+= im_create_dmask.3 im_print_dmask.3
+MLINKS+= im_offsets45.3 im_rotate_dmask90.3
+MLINKS+= im_create_dmask.3 im_write_dmask.3
+MLINKS+= im_conv.3 im_convsepf_raw.3
+MAN3+= im_mpercent.3
+MLINKS+= im_offsets45.3 im_offsets90.3
+MLINKS+= im_create_dmask.3 im_free_dmask.3
+MAN3+= im_addgnoise.3
+MAN3+= im_gaussnoise.3
+MLINKS+= im_create_dmask.3 im_read_imask.3
+MLINKS+= im_conv.3 im_convsepf.3
+MLINKS+= im_create_dmask.3 im_dup_dmask.3
+MAN3+= im_conv.3
+MAN3+= im_sharpen.3
+MLINKS+= im_log_imask.3 im_log_dmask.3
+MAN3+= im_create_dmask.3
+MLINKS+= im_compass.3 im_maxvalue.3
+MLINKS+= im_conv.3 im_convf_raw.3
+MLINKS+= im_compass.3 im_gradient.3
+MLINKS+= im_create_dmask.3 im_write_dmask_name.3
+MLINKS+= im_create_dmask.3 im_write_imask.3
+MLINKS+= im_create_dmask.3 im_print_imask.3
+MLINKS+= im_create_dmask.3 im_dup_imask.3
+MLINKS+= im_create_dmask.3 im_scale_dmask.3
+MLINKS+= im_compass.3 im_lindetect.3
+MAN3+= im_stretch3.3
+MLINKS+= im_conv.3 im_convsub.3
+MLINKS+= im_create_dmask.3 im_free_imask.3
+MAN3+= im_embed.3
+MLINKS+= im_conv.3 im_convsep_raw.3
+MLINKS+= im_conv.3 im_convf.3
+MLINKS+= im_create_dmask.3 im_read_dmask.3
+MAN3+= im_log_imask.3
+MLINKS+= im_fastcor.3 im_spcor.3
+MAN3+= im_fastcor.3
+MLINKS+= im_create_dmask.3 im_write_imask_name.3
+MAN3+= im_compass.3
+MLINKS+= im_offsets45.3 im_rotate_dmask45.3
+MAN3+= im_gauss_dmask.3
+MAN3+= im_contrast_surface.3
+MLINKS+= im_offsets45.3 im_rotate_imask90.3
+MAN3+= im_zerox.3
+MAN3+= im_offsets45.3
+MLINKS+= im_compass.3 im_rank_image.3
+MLINKS+= im_gauss_dmask.3 im_gauss_imask.3
+MLINKS+= im_create_dmask.3 im_create_imask.3
+MLINKS+= im_create_dmask.3 im_norm_dmask.3
+MAN3+= im_conv_raw.3
+MLINKS+= im_contrast_surface.3 im_contrast_surface_raw.3
+MAN3+= im_zone.3
+MLINKS+= im_eye.3 im_feye.3
+MLINKS+= im_equal.3 im_glds_asm.3
+MLINKS+= im_quantim.3 im_spatres.3
+MAN3+= im_sines.3
+MLINKS+= im_cooc_matrix.3 im_cooc_correlation.3
+MAN3+= im_grey.3
+MAN3+= im_simcontr.3
+MLINKS+= im_zone.3 im_fzone.3
+MLINKS+= im_equal.3 im_glds_contrast.3
+MLINKS+= im_cooc_matrix.3 im_cooc_entropy.3
+MLINKS+= im_mean_std_int_buffer.3 im_mean_std_double_buffer.3
+MLINKS+= im_cooc_matrix.3 im_cooc_contrast.3
+MAN3+= im_benchmark.3
+MAN3+= im_mean_std_int_buffer.3
+MAN3+= im_cooc_matrix.3
+MAN3+= im_quantim.3
+MAN3+= im_eye.3
+MAN3+= im_glds_matrix.3
+MLINKS+= im_quantim.3 im_quantlut.3
+MLINKS+= im_grey.3 im_fgrey.3
+MLINKS+= im_grey.3 im_make_xy.3
+MLINKS+= im_equal.3 im_glds_entropy.3
+MLINKS+= im_cooc_matrix.3 im_cooc_asm.3
+MAN3+= im_dif_std.3
+MLINKS+= im_equal.3 im_glds_mean.3
+MLINKS+= im_region_buffer.3 im_region_position.3
+MLINKS+= im_meta.3 im_meta_get_int.3
+MAN3+= im_demand_hint.3
+MAN3+= im_setupout.3
+MLINKS+= im_iscomplex.3 im_istifftiled.3
+MLINKS+= im_meta.3 im_meta_set_int.3
+MLINKS+= im_list_add.3 im_list_map.3
+MLINKS+= im_render.3 im_cache.3
+MLINKS+= im_iocheck.3 im_incheck.3
+MLINKS+= im_list_add.3 im_list_remove.3
+MLINKS+= IM_REGION_ADDR.3 IM_REGION_N_ELEMENTS.3
+MLINKS+= im_malloc.3 im_add_evalend_callback.3
+MLINKS+= im_iscomplex.3 im_isMSBfirst.3
+MLINKS+= im_list_add.3 im_list_eq.3
+MAN3+= im_prepare.3
+MLINKS+= im_printdesc.3 im_Compression2char.3
+MLINKS+= im_init_world.3 im_get_option_group.3
+MAN3+= im_render.3
+MAN3+= im_printdesc.3
+MAN3+= im_image_sanity.3
+MLINKS+= im_list_add.3 im_list_append.3
+MAN3+= im_init_world.3
+MLINKS+= im_cp_desc.3 im_cp_descv.3
+MLINKS+= im_error.3 im_error_buffer.3
+MAN3+= im_iterate.3
+MLINKS+= im_error.3 im_error_clear.3
+MLINKS+= im_list_add.3 im_list_member.3
+MLINKS+= im_debugim.3 im_printlines.3
+MLINKS+= im_header.3 im_header_string.3
+MAN3+= im_mmapinrw.3
+MLINKS+= IM_REGION_ADDR.3 IM_REGION_LSKIP.3
+MLINKS+= im_header.3 im_header_get.3
+MLINKS+= im_iscomplex.3 im_isint.3
+MLINKS+= im_iscomplex.3 im_isfloat.3
+MLINKS+= im_wrapone.3 im_wrapmany.3
+MLINKS+= im_list_add.3 im_list_pos.3
+MAN3+= im_piocheck.3
+MLINKS+= im_header.3 im_header_int.3
+MAN3+= im_region_buffer.3
+MAN3+= im_iscomplex.3
+MLINKS+= im_printdesc.3 im_char2Compression.3
+MAN3+= IM_ARRAY.3
+MAN3+= im_cp_desc.3
+MAN3+= im_bits_of_fmt.3
+MLINKS+= im_header.3 im_header_map.3
+MLINKS+= IM_IMAGE_ADDR.3 IM_IMAGE_N_ELEMENTS.3
+MAN3+= im_error.3
+MLINKS+= im_iscomplex.3 im_ispartial.3
+MLINKS+= im_meta.3 im_meta_set_area.3
+MAN3+= im_makerw.3
+MAN3+= im_invalidate.3
+MLINKS+= im_open.3 im_open_local_array.3
+MLINKS+= im_list_add.3 im_list_fix.3
+MLINKS+= im_cp_desc.3 im_cp_desc_array.3
+MLINKS+= im_list_add.3 im_list_fold.3
+MAN3+= im_generate.3
+MLINKS+= im_region_buffer.3 im_region_region.3
+MLINKS+= im_header.3 im_header_double.3
+MLINKS+= im_list_add.3 im_list_free.3
+MLINKS+= im_meta.3 im_meta_get_double.3
+MLINKS+= IM_IMAGE_ADDR.3 IM_IMAGE_SIZEOF_LINE.3
+MLINKS+= im_iscomplex.3 im_ispng.3
+MAN3+= im_header.3
+MLINKS+= im_piocheck.3 im_poutcheck.3
+MAN3+= im_binfile.3
+MLINKS+= im_list_add.3 im_list_len.3
+MAN3+= im_open.3
+MLINKS+= im_rect_marginadjust.3 IM_RECT_HCENTRE.3
+MAN3+= im_malloc.3
+MLINKS+= im_error.3 error_exit.3
+MLINKS+= im_rect_marginadjust.3 im_rect_includesrect.3
+MLINKS+= im_rect_marginadjust.3 IM_RECT_BOTTOM.3
+MLINKS+= im_printdesc.3 im_BandFmt2char.3
+MLINKS+= im_render.3 im_render_fade.3
+MLINKS+= im_header.3 im_header_get_type.3
+MLINKS+= im_rect_marginadjust.3 im_rect_unionrect.3
+MLINKS+= im_iscomplex.3 im_amiMSBfirst.3
+MAN3+= im_meta.3
+MLINKS+= im_generate.3 im_stop_one.3
+MLINKS+= im_piocheck.3 im_pincheck.3
+MLINKS+= im_rect_marginadjust.3 im_rect_isempty.3
+MAN3+= im_setbuf.3
+MLINKS+= im_malloc.3 im_free.3
+MLINKS+= im_meta.3 im_meta_get_area.3
+MLINKS+= im_generate.3 im_start_one.3
+MLINKS+= im_malloc.3 im_add_close_callback.3
+MLINKS+= im_error.3 im_diag.3
+MLINKS+= im_meta.3 im_meta_get_type.3
+MLINKS+= im_meta.3 im_meta_get_blob.3
+MLINKS+= im_meta.3 im_meta_set_blob.3
+MLINKS+= im_rect_marginadjust.3 IM_RECT_VCENTRE.3
+MAN3+= im_iocheck.3
+MAN3+= im_openout.3
+MAN3+= im_debugim.3
+MLINKS+= im_rect_marginadjust.3 im_rect_includespoint.3
+MLINKS+= im_generate.3 im_stop_many.3
+MLINKS+= im_list_add.3 im_list_insert.3
+MLINKS+= im_iocheck.3 im_outcheck.3
+MLINKS+= im_meta.3 im_meta_get.3
+MLINKS+= im_prepare.3 im_prepare_many.3
+MAN3+= im_wrapone.3
+MLINKS+= im_meta.3 im_meta_set_string.3
+MAN3+= im_initdesc.3
+MLINKS+= IM_RINT.3 IM_MIN.3
+MLINKS+= im_concurrency_set.3 im_concurrency_get.3
+MLINKS+= im_open.3 im_open_local.3
+MLINKS+= im_list_add.3 im_list_index.3
+MLINKS+= IM_ARRAY.3 IM_NEW.3
+MAN3+= IM_REGION_ADDR.3
+MLINKS+= im_version.3 im_version_string.3
+MAN3+= im_init.3
+MLINKS+= im_list_add.3 im_list_map_rev.3
+MLINKS+= im_histlin.3 im_history_get.3
+MLINKS+= IM_IMAGE_ADDR.3 IM_IMAGE_SIZEOF_PEL.3
+MLINKS+= IM_IMAGE_ADDR.3 IM_IMAGE_SIZEOF_ELEMENT.3
+MLINKS+= im_iscomplex.3 im_isvips.3
+MLINKS+= im_iscomplex.3 im_isuint.3
+MLINKS+= im_demand_hint.3 im_demand_hint_array.3
+MLINKS+= im_printdesc.3 im_char2Coding.3
+MLINKS+= im_prepare.3 im_prepare_to.3
+MLINKS+= im_meta.3 im_meta_set_double.3
+MAN3+= im_histlin.3
+MLINKS+= im_rect_marginadjust.3 im_rect_equalsrect.3
+MAN3+= im_region_create.3
+MLINKS+= im_printdesc.3 im_Type2char.3
+MLINKS+= im_histlin.3 im_updatehist.3
+MLINKS+= im_generate.3 im_start_many.3
+MLINKS+= im_rect_marginadjust.3 im_rect_normalise.3
+MLINKS+= im_rect_marginadjust.3 im_rect_dup.3
+MLINKS+= im_rect_marginadjust.3 im_rect_intersectrect.3
+MLINKS+= im_error.3 im_warn.3
+MLINKS+= im_iscomplex.3 im_isjpeg.3
+MAN3+= im_partial.3
+MLINKS+= im_rect_marginadjust.3 IM_RECT_RIGHT.3
+MLINKS+= IM_RINT.3 IM_MAX.3
+MLINKS+= im_printdesc.3 im_char2BandFmt.3
+MAN3+= IM_RINT.3
+MAN3+= im_concurrency_set.3
+MAN3+= im_writeline.3
+MLINKS+= IM_ARRAY.3 IM_NUMBER.3
+MLINKS+= IM_REGION_ADDR.3 IM_REGION_SIZEOF_LINE.3
+MAN3+= im_close.3
+MAN3+= im_list_add.3
+MLINKS+= im_iscomplex.3 im_isppm.3
+MLINKS+= im_binfile.3 im_image.3
+MLINKS+= im_printdesc.3 im_char2Type.3
+MLINKS+= im_meta.3 im_meta_get_string.3
+MLINKS+= im_iscomplex.3 im_isscalar.3
+MLINKS+= im_iscomplex.3 im_isfile.3
+MLINKS+= im_generate.3 im_allocate_input_array.3
+MLINKS+= im_error.3 im_verror.3
+MAN3+= im_mmapin.3
+MAN3+= IM_IMAGE_ADDR.3
+MAN3+= im_rect_marginadjust.3
+MLINKS+= im_printdesc.3 im_Coding2char.3
+MLINKS+= im_malloc.3 im_add_eval_callback.3
+MAN3+= im_version.3
+MLINKS+= im_meta.3 im_meta_set.3
+MLINKS+= im_region_buffer.3 im_region_image.3
+MAN3+= im_guess_prefix.3
+MLINKS+= im_region_create.3 im_region_free.3
+MAN3+= im_dilate.3
+MLINKS+= im_dilate.3 im_dilate_raw.3
+MAN3+= im_cntlines.3
+MLINKS+= im_cntlines.3 im_profile.3
+MLINKS+= im_dilate.3 im_erode.3
+MLINKS+= im_dilate.3 im_erode_raw.3
+MAN3+= im_video_v4l1.3
+MLINKS+= im_equal.3 im_moreeqconst.3
+MLINKS+= im_equal.3 im_less.3
+MLINKS+= im_equal.3 im_equalconst.3
+MLINKS+= im_equal.3 im_moreeq_vec.3
+MLINKS+= im_equal.3 im_moreeq.3
+MLINKS+= im_equal.3 im_less_vec.3
+MLINKS+= im_equal.3 im_notequal.3
+MLINKS+= im_equal.3 im_lesseqconst.3
+MLINKS+= im_equal.3 im_more_vec.3
+MLINKS+= im_equal.3 im_notequal_vec.3
+MLINKS+= im_equal.3 im_notequalconst.3
+MLINKS+= im_equal.3 im_lesseq.3
+MAN3+= im_equal.3
+MLINKS+= im_equal.3 im_lesseq_vec.3
+MLINKS+= im_equal.3 im_lessconst.3
+MLINKS+= im_equal.3 im_more.3
+MLINKS+= im_equal.3 im_moreconst.3
+MLINKS+= im_equal.3 im_equal_vec.3
+MLINKS+= im_ifthenelse.3 im_blend.3
+MAN3+= im_ifthenelse.3
+MLINKS+= im_add.3 im_gaddim.3
+MLINKS+= im_exp10tra.3 im_exptra.3
+MLINKS+= im_remainder.3 im_remainderconst.3
+MLINKS+= im_exp10tra.3 im_logtra.3
+MLINKS+= im_costra.3 im_atantra.3
+MAN3+= im_bandmean.3
+MAN3+= im_floor.3
+MAN3+= im_costra.3
+MAN3+= im_avg.3
+MLINKS+= im_avg.3 im_maxpos.3
+MLINKS+= im_avg.3 im_deviate.3
+MLINKS+= im_exp10tra.3 im_expntra_vec.3
+MLINKS+= im_maxpos_vec.3 im_minpos_vec.3
+MLINKS+= im_avg.3 im_min.3
+MLINKS+= im_exp10tra.3 im_expntra.3
+MLINKS+= im_avg.3 im_max.3
+MAN3+= im_stats.3
+MAN3+= im_invert.3
+MAN3+= im_measure.3
+MAN3+= im_maxpos_vec.3
+MAN3+= im_lintra.3
+MAN3+= im_rint.3
+MLINKS+= im_add.3 im_gadd.3
+MLINKS+= im_exp10tra.3 im_log10tra.3
+MAN3+= im_exp10tra.3
+MLINKS+= im_lintra.3 im_lintra_vec.3
+MAN3+= im_ceil.3
+MLINKS+= im_cmulnorm.3 im_multiply.3
+MLINKS+= im_exp10tra.3 im_powtra_vec.3
+MAN3+= im_litecor.3
+MLINKS+= im_avg.3 im_minpos.3
+MLINKS+= im_costra.3 im_sintra.3
+MAN3+= im_add.3
+MAN3+= im_remainder.3
+MAN3+= im_abs.3
+MLINKS+= im_costra.3 im_asintra.3
+MAN3+= im_sign.3
+MLINKS+= im_costra.3 im_tantra.3
+MAN3+= im_subtract.3
+MLINKS+= im_costra.3 im_acostra.3
+MLINKS+= im_add.3 im_gfadd.3
+MAN3+= im_fav4.3
+MAN3+= im_cmulnorm.3
+MAN3+= im_divide.3
+MLINKS+= im_exp10tra.3 im_powtra.3
+MAN3+= im_andimage.3
+MLINKS+= im_andimage.3 im_eorimage.3
+MLINKS+= im_andimage.3 im_orimage.3
+MLINKS+= im_shiftleft.3 im_shiftright.3
+MLINKS+= im_andimage.3 im_andconst.3
+MLINKS+= im_andimage.3 im_orconst.3
+MLINKS+= im_andimage.3 im_eorconst.3
+MLINKS+= im_andimage.3 im_eor_vec.3
+MLINKS+= im_andimage.3 im_or_vec.3
+MAN3+= im_shiftleft.3
+MLINKS+= im_andimage.3 im_and_vec.3
+MLINKS+= im_paintrect.3 im_readpoint.3
+MLINKS+= im_flood.3 im_flood_blob.3
+MLINKS+= im_paintrect.3 im_lineset.3
+MLINKS+= im_paintrect.3 im_fastlineuser.3
+MAN3+= im_line.3
+MAN3+= im_insertplace.3
+MLINKS+= im_smudge.3 im_smear.3
+MLINKS+= im_paintrect.3 im_fastline.3
+MLINKS+= im_paintrect.3 im_plotmask.3
+MAN3+= im_smudge.3
+MAN3+= im_flood.3
+MAN3+= im_paintrect.3
+MAN3+= im_circle.3
+MLINKS+= im_paintrect.3 im_plotpoint.3
+MLINKS+= im_Lab2UCS.3 im_UCS2XYZ.3
+MAN3+= im_dE_fromdisp.3
+MLINKS+= im_Lab2UCS.3 im_XYZ2UCS.3
+MLINKS+= im_Lab2LabQ.3 im_LabS2Lab.3
+MAN3+= im_LabQ2disp.3
+MLINKS+= im_XYZ2disp.3 im_Yxy2XYZ.3
+MLINKS+= im_col_XYZ2rgb.3 im_col_display.3
+MLINKS+= im_dE_fromdisp.3 im_dE_fromXYZ.3
+MLINKS+= im_icc_transform.3 im_icc_ac2rc.3
+MLINKS+= im_Lab2LabQ.3 im_Lab2LabS.3
+MLINKS+= im_col_XYZ2rgb.3 im_col_Ch2ab.3
+MLINKS+= im_dE_fromLab.3 im_dE00_fromLab.3
+MLINKS+= im_LabQ2disp.3 im_LabQ2disp_table.3
+MAN3+= im_col_XYZ2rgb.3
+MLINKS+= im_XYZ2disp.3 im_LCh2UCS.3
+MLINKS+= im_XYZ2disp.3 im_Lab2LCh.3
+MLINKS+= im_Lab2UCS.3 im_LabQ2XYZ.3
+MLINKS+= im_col_XYZ2rgb.3 im_col_Cucs2C.3
+MLINKS+= im_Lab2UCS.3 im_UCS2Lab.3
+MLINKS+= im_dE_fromdisp.3 im_dECMC_fromdisp.3
+MLINKS+= im_col_XYZ2rgb.3 im_col_dECMC.3
+MAN3+= im_Lab2UCS.3
+MLINKS+= im_icc_transform.3 im_icc_present.3
+MLINKS+= im_icc_transform.3 im_icc_export.3
+MLINKS+= im_Lab2LabQ.3 im_LabQ2Lab.3
+MAN3+= im_dE_fromLab.3
+MAN3+= im_icc_transform.3
+MLINKS+= im_Lab2LabQ.3 im_LabQ2LabS.3
+MLINKS+= im_XYZ2disp.3 im_disp2XYZ.3
+MLINKS+= im_Lab2UCS.3 im_Lab2disp.3
+MLINKS+= im_LabQ2disp.3 im_LabQ2disp_build_table.3
+MAN3+= im_Lab2LabQ.3
+MLINKS+= im_Lab2LabQ.3 im_LabS2LabQ.3
+MLINKS+= im_col_XYZ2rgb.3 im_col_XYZ2Lab.3
+MLINKS+= im_col_XYZ2rgb.3 im_col_Ch2hucs.3
+MLINKS+= im_XYZ2disp.3 im_Lab2XYZ.3
+MLINKS+= im_XYZ2disp.3 im_LCh2Lab.3
+MLINKS+= im_icc_transform.3 im_icc_import.3
+MLINKS+= im_col_XYZ2rgb.3 im_col_Lab2XYZ.3
+MLINKS+= im_XYZ2disp.3 im_UCS2LCh.3
+MLINKS+= im_XYZ2disp.3 im_XYZ2Yxy.3
+MAN3+= im_lab_morph.3
+MLINKS+= im_col_XYZ2rgb.3 im_col_rgb2XYZ.3
+MLINKS+= im_icc_transform.3 im_icc_import_embedded.3
+MLINKS+= im_XYZ2disp.3 im_XYZ2sRGB.3
+MLINKS+= im_col_XYZ2rgb.3 im_col_pythagoras.3
+MLINKS+= im_icc_transform.3 im_icc_export_depth.3
+MLINKS+= im_XYZ2disp.3 im_sRGB2XYZ.3
+MLINKS+= im_XYZ2disp.3 im_XYZ2Lab.3
+MAN3+= im_XYZ2disp.3
+MLINKS+= im_Lab2UCS.3 im_disp2Lab.3
+MLINKS+= im_col_XYZ2rgb.3 im_col_ab2Ch.3
+MLINKS+= im_col_XYZ2rgb.3 im_col_L2Lucs.3
+MLINKS+= im_col_XYZ2rgb.3 im_col_C2Cucs.3
+MLINKS+= im_col_XYZ2rgb.3 im_col_Chucs2h.3
+MLINKS+= im_col_XYZ2rgb.3 im_col_Lucs2L.3
+MLINKS+= im_col_XYZ2rgb.3 im_col_make_tables_UCS.3
+MLINKS+= im_col_XYZ2rgb.3 im_col_make_tables_RGB.3
+MLINKS+= im_dE_fromLab.3 im_dECMC_fromLab.3
+MAN3+= im_raw2vips.3
+MLINKS+= im_msb.3 im_msb_band.3
+MLINKS+= im_rot180.3 im_flipver.3
+MLINKS+= im_tiff2vips.3 im_tiff2vips_header.3
+MLINKS+= im_vips2mask.3 im_mask2vips.3
+MLINKS+= im_clip.3 im_clip2s.3
+MAN3+= im_print.3
+MLINKS+= im_jpeg2vips.3 im_vips2jpeg.3
+MLINKS+= im_jpeg2vips.3 im_vips2bufjpeg.3
+MAN3+= im_msb.3
+MAN3+= im_copy.3
+MAN3+= im_recomb.3
+MLINKS+= im_clip.3 im_ri2c.3
+MLINKS+= im_clip.3 im_clip2us.3
+MLINKS+= im_png2vips.3 im_png2vips_header.3
+MAN3+= im_system.3
+MAN3+= im_lrjoin.3
+MAN3+= im_zoom.3
+MAN3+= im_rot180.3
+MLINKS+= im_clip.3 im_clip2d.3
+MLINKS+= im_thresh.3 im_slice.3
+MAN3+= im_text.3
+MLINKS+= im_ppm2vips.3 im_ppm2vips_header.3
+MAN3+= im_csv2vips.3
+MLINKS+= im_csv2vips.3 im_vips2csv.3
+MLINKS+= im_magick2vips.3 im_magick2vips_header.3
+MAN3+= im_extract.3
+MAN3+= im_png2vips.3
+MLINKS+= im_copy.3 im_copy_from.3
+MAN3+= im_thresh.3
+MLINKS+= im_exr2vips.3 im_exr2vips_header.3
+MLINKS+= im_jpeg2vips.3 im_vips2mimejpeg.3
+MAN3+= im_tile_cache.3
+MLINKS+= im_rot180.3 im_rot90.3
+MAN3+= im_clip.3
+MLINKS+= im_clip.3 im_clip2ui.3
+MAN3+= im_bandjoin.3
+MAN3+= im_subsample.3
+MLINKS+= im_clip.3 im_clip2fmt.3
+MAN3+= im_tiff2vips.3
+MLINKS+= im_bandjoin.3 im_gbandjoin.3
+MAN3+= im_ppm2vips.3
+MAN3+= im_black.3
+MLINKS+= im_rot180.3 im_rot270.3
+MLINKS+= im_clip.3 im_c2ps.3
+MAN3+= im_insert.3
+MLINKS+= im_copy.3 im_copy_swap.3
+MAN3+= im_exr2vips.3
+MAN3+= im_magick2vips.3
+MLINKS+= im_copy.3 im_copy_set_meta.3
+MLINKS+= im_iscomplex.3 im_istiff.3
+MLINKS+= im_copy.3 im_copy_morph.3
+MLINKS+= im_clip.3 im_clip2cm.3
+MLINKS+= im_copy.3 im_copy_set.3
+MLINKS+= im_rot180.3 im_fliphor.3
+MLINKS+= im_clip.3 im_c2rect.3
+MAN3+= im_rightshift_size.3
+MLINKS+= im_clip.3 im_c2imag.3
+MLINKS+= im_clip.3 im_c2real.3
+MLINKS+= im_extract.3 im_extract_bands.3
+MAN3+= im_analyze2vips.3
+MLINKS+= im_clip.3 im_clip2c.3
+MLINKS+= im_clip.3 im_clip2i.3
+MLINKS+= im_csv2vips.3 im_csv2vips_header.3
+MLINKS+= im_scale.3 im_scaleps.3
+MLINKS+= im_lrjoin.3 im_tbjoin.3
+MAN3+= im_falsecolour.3
+MAN3+= im_scale.3
+MLINKS+= im_ppm2vips.3 im_vips2ppm.3
+MLINKS+= im_clip.3 im_clip2f.3
+MLINKS+= im_tiff2vips.3 im_vips2tiff.3
+MAN3+= im_grid.3
+MLINKS+= im_jpeg2vips.3 im_jpeg2vips_header.3
+MLINKS+= im_extract.3 im_extract_areabands.3
+MAN3+= im_vips2mask.3
+MAN3+= im_jpeg2vips.3
+MLINKS+= im_clip.3 im_c2amph.3
+MAN3+= im_replicate.3
+MLINKS+= im_clip.3 im_clip2dcm.3
+MLINKS+= im_extract.3 im_extract_area.3
+MLINKS+= im_png2vips.3 im_vips2png.3
+MLINKS+= im_fwfft.3 im_invfft.3
+MLINKS+= im_fwfft.3 im_invfftr.3
+MAN3+= im_fwfft.3
+MAN3+= im_fractsurf.3
+MAN3+= im_flt_imag_freq.3
+MAN3+= im_disp_ps.3
+MAN3+= im_freqflt.3
+MAN3+= im_rotquad.3
+MAN3+= im_create_fmask.3
diff --git a/graphics/vips/distinfo b/graphics/vips/distinfo
new file mode 100644
index 000000000..b1d4a7d73
--- /dev/null
+++ b/graphics/vips/distinfo
@@ -0,0 +1,3 @@
+MD5 (vips-7.12.4.tar.gz) = 5399e1355172964f503ce1422e648ffd
+SHA256 (vips-7.12.4.tar.gz) = 82c4b1ae2299e1c63c50f549a2964d5cc5d4e9fdff8e95107bad3ff73a102e1e
+SIZE (vips-7.12.4.tar.gz) = 3469526
diff --git a/graphics/vips/files/patch-configure b/graphics/vips/files/patch-configure
new file mode 100644
index 000000000..2a60b6dcd
--- /dev/null
+++ b/graphics/vips/files/patch-configure
@@ -0,0 +1,11 @@
+--- configure.orig Wed Aug 23 05:33:19 2006
++++ configure
+@@ -5250,7 +5250,7 @@
+ #define GETTEXT_PACKAGE "$GETTEXT_PACKAGE"
+ _ACEOF
+
+-ALL_LINGUAS="en_GB malkovich"
++ALL_LINGUAS="en_GB"
+
+ case "$am__api_version" in
+ 1.01234)
diff --git a/graphics/vips/files/patch-libsrc-conversion-im_tiff2vips.c b/graphics/vips/files/patch-libsrc-conversion-im_tiff2vips.c
new file mode 100644
index 000000000..174f406af
--- /dev/null
+++ b/graphics/vips/files/patch-libsrc-conversion-im_tiff2vips.c
@@ -0,0 +1,15 @@
+--- libsrc/conversion/im_tiff2vips.c.orig Wed Aug 17 06:34:12 2005
++++ libsrc/conversion/im_tiff2vips.c
+@@ -157,6 +157,12 @@
+ #include <vips/vips.h>
+ #include <vips/thread.h>
+
++#undef D50_X0
++#undef D50_Y0
++#undef D50_Z0
++#undef D65_X0
++#undef D65_Y0
++#undef D65_Z0
+ #include <tiffio.h>
+
+ #ifdef WITH_DMALLOC
diff --git a/graphics/vips/files/patch-libsrc-conversion-im_vips2tiff.c b/graphics/vips/files/patch-libsrc-conversion-im_vips2tiff.c
new file mode 100644
index 000000000..21f8830e5
--- /dev/null
+++ b/graphics/vips/files/patch-libsrc-conversion-im_vips2tiff.c
@@ -0,0 +1,15 @@
+--- libsrc/conversion/im_vips2tiff.c.orig Fri Mar 3 03:06:32 2006
++++ libsrc/conversion/im_vips2tiff.c
+@@ -145,6 +145,12 @@
+
+ #include <vips/vips.h>
+
++#undef D50_X0
++#undef D50_Y0
++#undef D50_Z0
++#undef D65_X0
++#undef D65_Y0
++#undef D65_Z0
+ #include <tiffio.h>
+
+ #ifdef WITH_DMALLOC
diff --git a/graphics/vips/files/patch-libsrc-iofuncs-predicate.c b/graphics/vips/files/patch-libsrc-iofuncs-predicate.c
new file mode 100644
index 000000000..96f801099
--- /dev/null
+++ b/graphics/vips/files/patch-libsrc-iofuncs-predicate.c
@@ -0,0 +1,15 @@
+--- libsrc/iofuncs/predicate.c.orig Tue Feb 8 07:19:20 2005
++++ libsrc/iofuncs/predicate.c
+@@ -73,6 +73,12 @@
+ #include <vips/vips.h>
+
+ #ifdef HAVE_TIFF
++#undef D50_X0
++#undef D50_Y0
++#undef D50_Z0
++#undef D65_X0
++#undef D65_Y0
++#undef D65_Z0
+ #include <tiffio.h>
+ #endif /*HAVE_TIFF*/
+
diff --git a/graphics/vips/files/patch-po-Makefile.in.in b/graphics/vips/files/patch-po-Makefile.in.in
new file mode 100644
index 000000000..dd02c40e8
--- /dev/null
+++ b/graphics/vips/files/patch-po-Makefile.in.in
@@ -0,0 +1,29 @@
+--- po/Makefile.in.in.orig Thu Dec 14 16:41:02 2006
++++ po/Makefile.in.in Thu Dec 14 16:56:02 2006
+@@ -34,7 +34,7 @@
+ datarootdir = @datarootdir@
+ libdir = @libdir@
+ DATADIRNAME = @DATADIRNAME@
+-itlocaledir = $(prefix)/$(DATADIRNAME)/locale
++itlocaledir = ${datadir}/locale
+ subdir = po
+ install_sh = @install_sh@
+ # Automake >= 1.8 provides @mkdir_p@.
+@@ -44,15 +44,15 @@
+ INSTALL = @INSTALL@
+ INSTALL_DATA = @INSTALL_DATA@
+
+-GMSGFMT = @GMSGFMT@
+-MSGFMT = @MSGFMT@
++GMSGFMT = @INTLTOOL_MSGFMT@
++MSGFMT = @INTLTOOL_MSGFMT@
+ XGETTEXT = @XGETTEXT@
+ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+ MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
+ GENPOT = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
+
+ ALL_LINGUAS = @ALL_LINGUAS@
+
+ PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; fi)
+
diff --git a/graphics/vips/pkg-descr b/graphics/vips/pkg-descr
new file mode 100644
index 000000000..61e202676
--- /dev/null
+++ b/graphics/vips/pkg-descr
@@ -0,0 +1,9 @@
+VIPS's a free image processing system. It aims to be about half way between
+Excel and Photoshop. It's obviously much smaller than these two, but it's
+not a toy either (about 200k lines of code). It's very bad at photo
+retouching, but it's great (much better than programs like Photoshop, I
+think) at all the other things you use photoshop for. It's particularly
+good with large images (ie. images larger than the amount of RAM in your
+machine), and for working with colour.
+
+WWW: http://www.vips.ecs.soton.ac.uk/
diff --git a/graphics/vips/pkg-plist b/graphics/vips/pkg-plist
new file mode 100644
index 000000000..6e08afd69
--- /dev/null
+++ b/graphics/vips/pkg-plist
@@ -0,0 +1,452 @@
+bin/batch_crop
+bin/batch_image_convert
+bin/batch_rubber_sheet
+bin/binfile
+bin/cooc
+bin/cooc_features
+bin/debugim
+bin/edvips
+bin/find_mosaic
+bin/glds
+bin/glds_features
+bin/header
+bin/im_LCh2Lab
+bin/im_LCh2UCS
+bin/im_Lab2LCh
+bin/im_Lab2LabQ
+bin/im_Lab2LabS
+bin/im_Lab2UCS
+bin/im_Lab2XYZ
+bin/im_Lab2XYZ_temp
+bin/im_Lab2disp
+bin/im_LabQ2Lab
+bin/im_LabQ2LabS
+bin/im_LabQ2XYZ
+bin/im_LabQ2disp
+bin/im_LabS2Lab
+bin/im_LabS2LabQ
+bin/im_UCS2LCh
+bin/im_UCS2Lab
+bin/im_UCS2XYZ
+bin/im_XYZ2Lab
+bin/im_XYZ2Lab_temp
+bin/im_XYZ2UCS
+bin/im_XYZ2Yxy
+bin/im_XYZ2disp
+bin/im_XYZ2sRGB
+bin/im_Yxy2XYZ
+bin/im__find_lroverlap
+bin/im__find_tboverlap
+bin/im_abs
+bin/im_acostra
+bin/im_add
+bin/im_addgnoise
+bin/im_affine
+bin/im_analyze2vips
+bin/im_andimage
+bin/im_andimage_vec
+bin/im_andimageconst
+bin/im_asintra
+bin/im_atantra
+bin/im_avg
+bin/im_bandjoin
+bin/im_bandmean
+bin/im_benchmark
+bin/im_benchmark2
+bin/im_benchmarkn
+bin/im_bernd
+bin/im_binfile
+bin/im_black
+bin/im_blend
+bin/im_buildlut
+bin/im_c2amph
+bin/im_c2imag
+bin/im_c2ps
+bin/im_c2real
+bin/im_c2rect
+bin/im_cache
+bin/im_ceil
+bin/im_circle
+bin/im_clip
+bin/im_clip2c
+bin/im_clip2cm
+bin/im_clip2d
+bin/im_clip2dcm
+bin/im_clip2f
+bin/im_clip2fmt
+bin/im_clip2i
+bin/im_clip2s
+bin/im_clip2ui
+bin/im_clip2us
+bin/im_cmulnorm
+bin/im_cntlines
+bin/im_compass
+bin/im_contrast_surface
+bin/im_contrast_surface_raw
+bin/im_conv
+bin/im_conv_raw
+bin/im_convf
+bin/im_convf_raw
+bin/im_convsep
+bin/im_convsep_raw
+bin/im_convsepf
+bin/im_convsepf_raw
+bin/im_convsub
+bin/im_copy
+bin/im_copy_morph
+bin/im_copy_set
+bin/im_copy_set_meta
+bin/im_copy_swap
+bin/im_correl
+bin/im_costra
+bin/im_create_fmask
+bin/im_csv2vips
+bin/im_dE00_fromLab
+bin/im_dECMC_fromLab
+bin/im_dECMC_fromdisp
+bin/im_dE_fromLab
+bin/im_dE_fromXYZ
+bin/im_dE_fromdisp
+bin/im_deviate
+bin/im_dilate
+bin/im_dilate_raw
+bin/im_disp2Lab
+bin/im_disp2XYZ
+bin/im_disp_ps
+bin/im_divide
+bin/im_dmask_xsize
+bin/im_dmask_ysize
+bin/im_embed
+bin/im_eorimage
+bin/im_eorimage_vec
+bin/im_eorimageconst
+bin/im_equal
+bin/im_equal_vec
+bin/im_equalconst
+bin/im_erode
+bin/im_erode_raw
+bin/im_exp10tra
+bin/im_expntra
+bin/im_expntra_vec
+bin/im_exptra
+bin/im_exr2vips
+bin/im_extract
+bin/im_extract_area
+bin/im_extract_areabands
+bin/im_extract_band
+bin/im_extract_bands
+bin/im_eye
+bin/im_falsecolour
+bin/im_fastcor
+bin/im_fastcor_raw
+bin/im_fav4
+bin/im_feye
+bin/im_fgrey
+bin/im_fliphor
+bin/im_flipver
+bin/im_flood_blob_copy
+bin/im_floor
+bin/im_flt_image_freq
+bin/im_fractsurf
+bin/im_freqflt
+bin/im_fwfft
+bin/im_fzone
+bin/im_gadd
+bin/im_gammacorrect
+bin/im_gauss_dmask
+bin/im_gauss_imask
+bin/im_gaussnoise
+bin/im_gbandjoin
+bin/im_global_balance
+bin/im_global_balancef
+bin/im_grad_x
+bin/im_grad_y
+bin/im_gradcor
+bin/im_gradcor_raw
+bin/im_gradient
+bin/im_grey
+bin/im_grid
+bin/im_guess_prefix
+bin/im_header_double
+bin/im_header_get_type
+bin/im_header_int
+bin/im_header_string
+bin/im_heq
+bin/im_hist
+bin/im_histcum
+bin/im_histeq
+bin/im_histgr
+bin/im_histnD
+bin/im_histnorm
+bin/im_histplot
+bin/im_histspec
+bin/im_hsp
+bin/im_icc_ac2rc
+bin/im_icc_export
+bin/im_icc_export_depth
+bin/im_icc_import
+bin/im_icc_import_embedded
+bin/im_icc_present
+bin/im_icc_transform
+bin/im_identity
+bin/im_identity_ushort
+bin/im_ifthenelse
+bin/im_imask_xsize
+bin/im_imask_ysize
+bin/im_insert
+bin/im_insert_noexpand
+bin/im_insertplace
+bin/im_invert
+bin/im_invertlut
+bin/im_invfft
+bin/im_invfftr
+bin/im_ismonotonic
+bin/im_jpeg2vips
+bin/im_lab_morph
+bin/im_less
+bin/im_less_vec
+bin/im_lessconst
+bin/im_lesseq
+bin/im_lesseq_vec
+bin/im_lesseqconst
+bin/im_lhisteq
+bin/im_lhisteq_raw
+bin/im_lindetect
+bin/im_line
+bin/im_lineset
+bin/im_linreg
+bin/im_lintra
+bin/im_lintra_vec
+bin/im_litecor
+bin/im_log10tra
+bin/im_log_dmask
+bin/im_log_imask
+bin/im_logtra
+bin/im_lrjoin
+bin/im_lrmerge
+bin/im_lrmerge1
+bin/im_lrmosaic
+bin/im_lrmosaic1
+bin/im_magick2vips
+bin/im_make_xy
+bin/im_maplut
+bin/im_mask2vips
+bin/im_matcat
+bin/im_match_linear
+bin/im_match_linear_search
+bin/im_matinv
+bin/im_matmul
+bin/im_mattrn
+bin/im_max
+bin/im_maxpos
+bin/im_maxpos_avg
+bin/im_maxvalue
+bin/im_measure
+bin/im_min
+bin/im_minpos
+bin/im_more
+bin/im_more_vec
+bin/im_moreconst
+bin/im_moreeq
+bin/im_moreeq_vec
+bin/im_moreeqconst
+bin/im_mpercent
+bin/im_msb
+bin/im_msb_band
+bin/im_multiply
+bin/im_notequal
+bin/im_notequal_vec
+bin/im_notequalconst
+bin/im_orimage
+bin/im_orimage_vec
+bin/im_orimageconst
+bin/im_png2vips
+bin/im_point_bilinear
+bin/im_powtra
+bin/im_powtra_vec
+bin/im_ppm2vips
+bin/im_print
+bin/im_profile
+bin/im_project
+bin/im_rank
+bin/im_rank_image
+bin/im_rank_raw
+bin/im_read_dmask
+bin/im_recomb
+bin/im_remainder
+bin/im_remainderconst
+bin/im_remainderconst_vec
+bin/im_remosaic
+bin/im_replicate
+bin/im_resize_linear
+bin/im_ri2c
+bin/im_rightshift_size
+bin/im_rint
+bin/im_rot180
+bin/im_rot270
+bin/im_rot90
+bin/im_rotate_dmask45
+bin/im_rotate_dmask90
+bin/im_rotate_imask45
+bin/im_rotate_imask90
+bin/im_rotquad
+bin/im_sRGB2XYZ
+bin/im_scale
+bin/im_scaleps
+bin/im_sharpen
+bin/im_shiftleft
+bin/im_shiftright
+bin/im_shrink
+bin/im_sign
+bin/im_similarity
+bin/im_similarity_area
+bin/im_sintra
+bin/im_slice
+bin/im_spcor
+bin/im_spcor2
+bin/im_spcor2_raw
+bin/im_spcor_raw
+bin/im_stats
+bin/im_stdif
+bin/im_stdif_raw
+bin/im_stretch3
+bin/im_subsample
+bin/im_subtract
+bin/im_system
+bin/im_tantra
+bin/im_tbjoin
+bin/im_tbmerge
+bin/im_tbmerge1
+bin/im_tbmosaic
+bin/im_tbmosaic1
+bin/im_text
+bin/im_thresh
+bin/im_tiff2vips
+bin/im_tone_analyse
+bin/im_tone_build
+bin/im_tone_build_range
+bin/im_tone_map
+bin/im_version
+bin/im_version_string
+bin/im_video_test
+bin/im_video_v4l1
+bin/im_vips2csv
+bin/im_vips2jpeg
+bin/im_vips2mask
+bin/im_vips2mimejpeg
+bin/im_vips2png
+bin/im_vips2ppm
+bin/im_vips2tiff
+bin/im_zerox
+bin/im_zone
+bin/im_zoom
+bin/light_correct
+bin/mergeup
+bin/mitsub
+bin/printlines
+bin/shrink_width
+bin/simcontr
+bin/sines
+bin/spatres
+bin/squares
+bin/vdump
+bin/vips
+bin/vips-%%VERSION%%
+bin/vips2dj
+include/vips/VDisplay.h
+include/vips/VError.h
+include/vips/VImage.h
+include/vips/VMask.h
+include/vips/colour.h
+include/vips/debug.h
+include/vips/dispatch.h
+include/vips/fmask.h
+include/vips/history.h
+include/vips/intl.h
+include/vips/meta.h
+include/vips/mosaic.h
+include/vips/proto.h
+include/vips/r_access.h
+include/vips/rect.h
+include/vips/region.h
+include/vips/semaphore.h
+include/vips/struct.h
+include/vips/thread.h
+include/vips/threadgroup.h
+include/vips/time.h
+include/vips/util.h
+include/vips/vbuf.h
+include/vips/version.h
+include/vips/vips
+include/vips/vips.h
+include/vips/vipsc++.h
+include/vips/vipscpp.h
+lib/libvips.a
+lib/libvips.la
+lib/libvips.so
+lib/libvips.so.14
+lib/libvipsCC.a
+lib/libvipsCC.la
+lib/libvipsCC.so
+lib/libvipsCC.so.14
+libdata/pkgconfig/vips-%%VERSION%%.pc
+libdata/pkgconfig/vipsCC-%%VERSION%%.pc
+%%PORTDOCS%%%%DOCSDIR%%/html/figs/arch.png
+%%PORTDOCS%%%%DOCSDIR%%/html/figs/arch.svg
+%%PORTDOCS%%%%DOCSDIR%%/html/figs/interconvert.png
+%%PORTDOCS%%%%DOCSDIR%%/html/figs/interconvert.svg
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanual.css
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanual.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualch1.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualch2.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualch3.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualch4.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualli1.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualli2.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualli3.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualse1.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualse10.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualse11.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualse12.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualse13.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualse14.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualse15.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualse2.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualse3.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualse4.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualse5.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualse6.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualse7.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualse8.html
+%%PORTDOCS%%%%DOCSDIR%%/html/vipsmanualse9.html
+%%PORTDOCS%%%%DOCSDIR%%/pdf/vipsmanual.pdf
+share/locale/en_GB/LC_MESSAGES/vips7.mo
+%%DATADIR%%/vdump.pro
+%%DATADIR%%/vips2dj/cmyk/head1
+%%DATADIR%%/vips2dj/cmyk/head2
+%%DATADIR%%/vips2dj/cmyk/head3
+%%DATADIR%%/vips2dj/cmyk/head4
+%%DATADIR%%/vips2dj/cmyk/head5
+%%DATADIR%%/vips2dj/cmyk/head6
+%%DATADIR%%/vips2dj/lab/head1
+%%DATADIR%%/vips2dj/lab/head2
+%%DATADIR%%/vips2dj/lab/head3
+%%DATADIR%%/vips2dj/lab/head4
+%%DATADIR%%/vips2dj/lab/head5
+%%DATADIR%%/vips2dj/lab/head6
+%%DATADIR%%/vips2dj/mono/head1
+%%DATADIR%%/vips2dj/mono/head2
+%%DATADIR%%/vips2dj/mono/head3
+%%DATADIR%%/vips2dj/mono/head4
+%%DATADIR%%/vips2dj/mono/head5
+%%DATADIR%%/vips2dj/mono/head6
+@dirrm include/vips
+%%PORTDOCS%%@dirrm %%DOCSDIR%%/html/figs
+%%PORTDOCS%%@dirrm %%DOCSDIR%%/html
+%%PORTDOCS%%@dirrm %%DOCSDIR%%/pdf
+%%PORTDOCS%%@dirrm %%DOCSDIR%%
+@dirrm %%DATADIR%%/vips2dj/cmyk
+@dirrm %%DATADIR%%/vips2dj/lab
+@dirrm %%DATADIR%%/vips2dj/mono
+@dirrm %%DATADIR%%/vips2dj
+@dirrm %%DATADIR%%