aboutsummaryrefslogtreecommitdiff
path: root/graphics/darktable/Makefile
blob: 6443be79af46e2b9a1568965676e275333f063fb (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
144
145
146
147
PORTNAME=	darktable
PORTVERSION=	5.4.1
CATEGORIES=	graphics
MASTER_SITES=	https://github.com/darktable-org/${PORTNAME}/releases/download/release-${PORTVERSION:C/\.rc/rc/}/

MAINTAINER=	dumbbell@FreeBSD.org
COMMENT=	Virtual lighttable and darkroom for photographers
WWW=		https://www.darktable.org/

LICENSE=	GPLv3

ONLY_FOR_ARCHS=		aarch64 amd64 powerpc64le
ONLY_FOR_ARCHS_REASON=	uses 64-bit address space

BUILD_DEPENDS=	iso-codes>=0:misc/iso-codes \
		p5-Pod-Parser>=0:textproc/p5-Pod-Parser \
		po4a-translate:textproc/po4a \
		xsltproc:textproc/libxslt \
		bash:shells/bash
LIB_DEPENDS=	libavif.so:graphics/libavif \
		libcolord-gtk.so:graphics/colord-gtk \
		libcolord.so:graphics/colord \
		libcurl.so:ftp/curl \
		libexiv2.so:graphics/exiv2 \
		libgphoto2.so:graphics/libgphoto2 \
		libharfbuzz.so:print/harfbuzz \
		libheif.so:graphics/libheif \
		libicui18n.so:devel/icu \
		libImath.so:math/Imath \
		libjasper.so:graphics/jasper \
		libjson-glib-1.0.so:devel/json-glib \
		libjxl_threads.so:graphics/libjxl \
		liblcms2.so:graphics/lcms2 \
		liblensfun.so:graphics/lensfun \
		libOpenEXR.so:graphics/openexr \
		libopenjp2.so:graphics/openjpeg \
		libosmgpsmap-1.0.so:x11-toolkits/osm-gps-map \
		libpng.so:graphics/png \
		libpugixml.so:textproc/pugixml \
		libsoup-2.4.so:devel/libsoup \
		libtiff.so:graphics/tiff \
		libwebp.so:graphics/webp

# Note that compiler-related Uses are defined later in this Makefile, based on
# the value of `${ARCH}`.
USES=		cmake desktop-file-utils gl gnome jpeg lua perl5 pkgconfig sdl \
		shebangfix sqlite tar:xz xorg
USE_GL=		gl
USE_GNOME=	cairo gtk30 intltool librsvg2 libxml2
USE_LDCONFIG=	${PREFIX}/lib/${PORTNAME}
USE_SDL=	sdl2
USE_XORG=	ice sm x11 xext xrandr

SHEBANG_FILES=	tools/*.sh

CMAKE_ARGS+=	-DBINARY_PACKAGE_BUILD=1 -DUSE_PORTMIDI:BOOL=OFF

CMAKE_BOOL+=	BUILD_CMSTEST USE_AVIF USE_CAMERA_SUPPORT USE_HEIF \
		USE_ISOBMFF USE_KWALLET USE_LUA USE_MAP USE_OPENEXR \
		USE_OPENJPEG USE_WEBP RAWSPEED_ENABLE_LTO

# darktable wraps pthread lock/release functions, causing false
# compiler warnings from -Wthread-safety-analysis. Kill this warning.
CFLAGS+=	-fopenmp -Wno-thread-safety-analysis

WRKSRC=		${WRKDIR}/${PORTNAME}-${PORTVERSION:C/\.rc/~rc/}

OPTIONS_DEFINE=		DOCS GMIC GRAPHMAGICK IMAGEMAGICK LIBSECRET NLS PRINT TOOLS
OPTIONS_DEFAULT=	PRINT
OPTIONS_SUB=		yes

GMIC_DESC=		Support G'Mic-compressed LUT in lut3d
LIBSECRET_DESC=		Support libsecret as password backend
TOOLS_DESC=		Install additional scripts

GMIC_LIB_DEPENDS=	libgmic.so:graphics/gmic
GMIC_CMAKE_BOOL=	USE_GMIC

GRAPHMAGICK_LIB_DEPENDS=libGraphicsMagick.so:graphics/GraphicsMagick
GRAPHMAGICK_CMAKE_BOOL=	USE_GRAPHICSMAGICK

IMAGEMAGICK_USES=	magick:7
IMAGEMAGICK_CMAKE_BOOL=	USE_IMAGEMAGICK

LIBSECRET_LIB_DEPENDS=	libsecret-1.so:security/libsecret
LIBSECRET_CMAKE_BOOL=	USE_LIBSECRET

# FIXME: Even with NLS turned off, darktable(1) is still linked to
# libintl.so.
NLS_USES=		gettext
NLS_USES_OFF=		gettext-runtime
NLS_CMAKE_BOOL=		USE_NLS
NLS_LDFLAGS=		-L${LOCALBASE}/lib -lintl

PRINT_LIB_DEPENDS=	libcups.so:print/cups
PRINT_CMAKE_BOOL=	BUILD_PRINT

TOOLS_BUILD_DEPENDS=	exiftool:graphics/p5-Image-ExifTool
TOOLS_RUN_DEPENDS=	exiftool:graphics/p5-Image-ExifTool

.include <bsd.port.options.mk>

.if ${ARCH} == aarch64 || ${ARCH} == powerpc64le
CMAKE_ARGS+=	-DUSE_OPENCL:BOOL=OFF
CXXFLAGS+=	-DGDK_DISABLE_DEPRECATED
PLIST_SUB+=	NO_OPENCL="@comment "
.else
PLIST_SUB+=	NO_OPENCL=""
.endif

.if ${ARCH} == powerpc64le
LDFLAGS+=	-lexecinfo
USES+=		compiler:gcc-c++11-lib
.else
USES+=		compiler:c++11-lib
.endif
# `llvm:build` must be added after `compiler:*` above. Otherwise it triggers
# the following warning from Mk/compiler.mk:
#
#     make: .../Mk/Uses/compiler.mk:86: warning: Command "/usr/local/llvm19/bin/clang --version" exited with status 127
#     make: .../Mk/Uses/compiler.mk:134: warning: Command "/usr/local/llvm19/bin/clang++ -### /dev/null 2>&1" exited with status 127
USES+=		llvm:build

.include <bsd.port.pre.mk>

# work around CMAKE/CCACHE flaw (cmake stomps over ccache)
.if "${WITH_CCACHE_BUILD}" == "yes" && !defined(NO_CCACHE)
CMAKE_ARGS+=	-DCMAKE_C_COMPILER_LAUNCHER=${CCACHE_BIN} \
		-DCMAKE_CXX_COMPILER_LAUNCHER=${CCACHE_BIN}
.endif

.if defined(WITH_DEBUG)
CMAKE_BUILD_TYPE=	RelWithDebInfo
STRIP=
.endif

# darktable defines the __XOPEN_SOURCE preprocessor macro, which
# restricts symbol visibility on FreeBSD and causes compilation failures
# on, for instance, the cups_print module, because u_char remains
# undefined. Remove _XOPEN_SOURCE maro definitions.
post-patch:
	${REINPLACE_CMD} '/add_definitions."-D_XOPEN_SOURCE=.*"/d' ${WRKSRC}/CMakeLists.txt

post-install-TOOLS-off:
	@${RM} -f ${STAGEDIR}${DATADIR}/tools/extract_wb_from_images.sh

.include <bsd.port.post.mk>