aboutsummaryrefslogtreecommitdiff
path: root/graphics/netpbm/Makefile
blob: 7f66d240271e1061f061c82819f40c6933d93ba8 (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
141
142
143
# Created by: Jean-Marc Zucconi <jmz@FreeBSD.org>
# $FreeBSD$

PORTNAME=	netpbm
DISTVERSION=	10.86.03
CATEGORIES=	graphics
MASTER_SITES=	https://github.com/t6/netpbm/releases/download/v${DISTVERSION}/ \
		https://gitlab.com/tobiask/netpbm/uploads/4289d10d566221cabdbb0ba39f37e593/ \
		LOCAL/tobik

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

LICENSE=	IJG GPLv2 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
USE_LDCONFIG=	yes
USE_PERL5=	build test

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

MAKEFILE=	GNUmakefile
INSTALL_TARGET=	install.bin install.lib install.data install.hdr \
		install.staticlib
MAKE_ARGS=	pkgdir=${STAGEDIR}${PREFIX} \
		BINMODE=${BINMODE} \
		SHAREMODE=${SHAREMODE} \
		DATAMODE=${_SHAREMODE} \
		DIRMODE=755 \
		MANMODE=${MANMODE} \
		DATADIR=${DATADIR}
TEST_ARGS=	pkgdir="${STAGEDIR}${PREFIX}" \
		resultdir="${WRKDIR}/tests" \
		RGBDEF="${STAGEDIR}${PREFIX}/share/netpbm/rgb.txt"
TEST_TARGET=	check

# 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.
DISABLED_TESTS=	all-in-place tiff-flate-lzw-roundtrip ppmgauss \
		palm-roundtrip pamtopdbimg ps-alt-roundtrip \
		pammixmulti-identity

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

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

post-patch:
	@${REINPLACE_CMD} -e 's|misc|share/netpbm|g' ${WRKSRC}/common.mk
	@${REINPLACE_CMD} -e 's|$$(PKGDIR)/link|$$(PKGDIR)/lib|g' \
		-e 's|pkg-config|false|g' \
		${WRKSRC}/GNUmakefile ${WRKSRC}/lib/Makefile
.for test in ${DISABLED_TESTS}
	@${REINPLACE_CMD} -e '/${test}/d' ${WRKSRC}/test/Test-Order
.endfor

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>