aboutsummaryrefslogtreecommitdiff
path: root/graphics/netpbm/Makefile
blob: 9faf5f6088bf04580206ba458c773f74b99fbe8b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# Created by: Jean-Marc Zucconi <jmz@FreeBSD.org>

PORTNAME=	netpbm
DISTVERSION=	10.91.01
CATEGORIES=	graphics
MASTER_SITES=	https://github.com/t6/netpbm/releases/download/v${DISTVERSION}/

MAINTAINER=	ports@FreeBSD.org
COMMENT=	Toolkit for conversion of images between different formats

LICENSE=	GPLv2 IJG LGPL21 MIT PD
LICENSE_COMB=	multi
LICENSE_NAME_IJG=	Independent JPEG Group License
LICENSE_FILE_IJG=	${WRKSRC}/doc/copyright_summary
LICENSE_PERMS_IJG=	dist-mirror dist-sell pkg-mirror pkg-sell auto-accept

TEST_DEPENDS=	bash:shells/bash

# The port follows the advanced release series.  Upstream does not
# create tarballs for them, so we have to roll our own.  See
# http://netpbm.sourceforge.net/getting_netpbm.php.  To checkout the
# sources yourself see the netpbm-version-check and netpbm-fetch
# targets below.
USES=		ghostscript:test gmake perl5 shebangfix tar:xz
USE_LDCONFIG=	yes
USE_PERL5=	build test

SHEBANG_FILES=	buildtools/makeman converter/pbm/pbmtox10bm editor/pnmflip \
		editor/pnmquant editor/ppmfade editor/ppmquant editor/ppmshadow \
		generator/ppmrainbow test/*.test test/Available-Testprog \
		test/Execute-Tests

MAKEFILE=	GNUmakefile
MAKE_ARGS=	BINMODE=${BINMODE} \
		CC=${CC} \
		DATADIR=${DATADIR} \
		DATAMODE=${_SHAREMODE} \
		DIRMODE=755 \
		MANMODE=${MANMODE} \
		pkgdir=${STAGEDIR}${PREFIX} \
		SHAREMODE=${SHAREMODE}
INSTALL_TARGET=	install.bin install.lib install.data install.hdr \
		install.staticlib
TEST_ARGS=	pkgdir="${STAGEDIR}${PREFIX}" \
		resultdir="${WRKDIR}/tests" \
		RGBDEF="${STAGEDIR}${PREFIX}/share/netpbm/rgb.txt"
TEST_TARGET=	check
# Disable fragile tests.  tiff-flate-lzw-roundtrip's checksums are
# different on FreeBSD so the test fails.  The resulting and
# intermediary images look fine in spite of this.
_DISABLE_TESTS=	all-in-place palm-roundtrip pamdice pamexec pamhue \
		pammixmulti-identity pamtopdbimg pamvalidate pj-roundtrip \
		ps-alt-roundtrip tiff-flate-lzw-roundtrip

OPTIONS_DEFINE=		MANPAGES PERL STATIC SVGTOPAM X11
OPTIONS_DEFAULT=	MANPAGES PERL
OPTIONS_SUB=		yes

SVGTOPAM_DESC=	Build svgtopam
X11_DESC=	Build pamx

PERL_USE=		PERL5=run
STATIC_BUILD_DEPENDS=	jasper>0:graphics/jasper \
			jbigkit>0:graphics/jbigkit \
			png>0:graphics/png \
			tiff>0:graphics/tiff
STATIC_LIB_DEPENDS_OFF=	libjasper.so:graphics/jasper \
			libjbig.so:graphics/jbigkit \
			libpng.so:graphics/png \
			libtiff.so:graphics/tiff
STATIC_USES=		jpeg:build
STATIC_USES_OFF=	jpeg
SVGTOPAM_USES=		gnome
SVGTOPAM_USE=		GNOME=libxml2
SVGTOPAM_VARS_OFF=	_DISABLE_TESTS+=svgtopam
X11_USES=		xorg
X11_USE=		XORG=x11,xau,xcb,xdmcp

post-patch:
	@${REINPLACE_CMD} -e 's|misc|share/netpbm|g' ${WRKSRC}/common.mk
	@${REINPLACE_CMD} -e 's|pkg-config|false|g' ${WRKSRC}/GNUmakefile
	@${REINPLACE_CMD} ${_DISABLE_TESTS:@.test.@-e '/${.test.}/d'@} \
		${WRKSRC}/test/Test-Order

post-patch-STATIC-on:
	@${REINPLACE_CMD} -e 's|$$(LD)|$$(LD) -static|g' \
		-e 's@$$(NETPBMLIBFNAME)@libnetpbm.a@' \
		${WRKSRC}/common.mk

# Disable building svgtopam by default.  It is the only program that
# requires libxml2 and it is not useful in this day and age according
# to the author.  See the top of converter/other/svgtopam.c for more
# details.
post-patch-SVGTOPAM-off:
	@${REINPLACE_CMD} '/svgtopam/d' ${WRKSRC}/converter/other/Makefile

post-patch-X11-off:
	@${REINPLACE_CMD} '/pamx/d' ${WRKSRC}/other/Makefile

do-configure:
	@${CAT} ${WRKSRC}/config.mk.in ${FILESDIR}/config.mk > ${WRKSRC}/config.mk

post-install:
	@cd ${STAGEDIR}${PREFIX}/lib && ${LN} -sf libnetpbm.so.11 libnetpbm.so
	@${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libnetpbm.so
	@${RM} ${STAGEDIR}${PREFIX}/bin/manweb
	${INSTALL_DATA} ${WRKSRC}/lib/util/pm_c_util.h ${WRKSRC}/pm_config.h \
		${STAGEDIR}${PREFIX}/include/netpbm
	${MV} ${STAGEDIR}${PREFIX}/staticlink/libnetpbm.a ${STAGEDIR}${PREFIX}/lib
	${RMDIR} ${STAGEDIR}${PREFIX}/sharedlink ${STAGEDIR}${PREFIX}/staticlink

post-install-MANPAGES-on:
	${INSTALL_MAN} ${WRKSRC}/man/*.1 ${STAGEDIR}${PREFIX}/man/man1
	${INSTALL_MAN} ${WRKSRC}/man/*.3 ${STAGEDIR}${PREFIX}/man/man3
	${INSTALL_MAN} ${WRKSRC}/man/*.5 ${STAGEDIR}${PREFIX}/man/man5

.if defined(DEVELOPER)
# A lot of this is stolen from the netpbm OpenBSD port
NETPBM_REPO=	https://svn.code.sf.net/p/netpbm/code
NETPBM_SERIES=	advanced

netpbm-version-check:
	@REV=`svnlite info ${NETPBM_REPO}/${NETPBM_SERIES}/version.mk | sed -n 's/Last Changed Rev: //p'`; \
	VERSION=`(svnlite cat -r$$REV ${NETPBM_REPO}/${NETPBM_SERIES}/version.mk; \
			echo 'all:'; \
			echo '	@printf "%02d.%02d.%02d" \'; \
			echo '		$${NETPBM_MAJOR_RELEASE} \' ; \
			echo '		$${NETPBM_MINOR_RELEASE} \' ; \
			echo '		$${NETPBM_POINT_RELEASE} \' ; \
		) | make -f -`; \
	case `pkg version -t ${PORTVERSION} $$VERSION` in \
		'>') echo "Port version is greater than latest release $$VERSION"; exit 1 ;; \
		'<') echo "Run 'make NETPBM_REV=$$REV netpbm-fetch' to download netpbm $$VERSION" ;; \
	esac

netpbm-fetch:
	@svnlite export --force -r${NETPBM_REV} ${NETPBM_REPO}/${NETPBM_SERIES} netpbm-r${NETPBM_REV}
.endif

.include <bsd.port.mk>