blob: 376fe77a7ad57308061829b4db65c563c9313ae4 (
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
# Created by: stas
# $FreeBSD$
PORTNAME= rawtherapee
PORTVERSION= 5.7
PORTREVISION= 1
CATEGORIES= graphics
MASTER_SITES= http://rawtherapee.com/shared/source/
MAINTAINER= mandree@FreeBSD.org
COMMENT= Powerful RAW image processing application
LICENSE= GPLv3
LIB_DEPENDS= \
liblensfun.so:graphics/lensfun \
libcanberra-gtk.so:audio/libcanberra \
libcanberra-gtk3.so:audio/libcanberra-gtk3 \
libexpat.so:textproc/expat2 \
libfftw3.so:math/fftw3 \
libfftw3f.so:math/fftw3-float \
libfontconfig.so:x11-fonts/fontconfig \
libfreetype.so:print/freetype2 \
libiptcdata.so:graphics/libiptcdata \
liblcms2.so:graphics/lcms2 \
libpng.so:graphics/png \
libsigc-2.0.so:devel/libsigc++20 \
libtiff.so:graphics/tiff
USES= cmake desktop-file-utils compiler:gcc-c++11-lib gnome \
jpeg localbase:ldflags pkgconfig tar:xz
DOS2UNIX_REGEX= .*\.(cc|h)
USE_GNOME= gtkmm30 librsvg2
# Binutils required for LTO (base ar/nm/ld/ranlib don't work)
USE_BINUTILS= yes
# As of 2019-09-29, this port is known to be miscompiled by clang90
# (SIGSEGV or SIBGUS).
#
# FreeBSD 11.2/12.0's base clang 6.0.1 emits worse code with
# considerably higher processing times, and on i386 additional calls to
# __atomic_*(), so we shall stick to GCC 9.x for now
USE_GCC= 9+
_LTO_FLAGS= -flto=${MAKE_JOBS_NUMBER}
# gcc needs -flto=${MAKE_JOBS_NUMBER} for parallel link (fixed in GCC 10?)
# and does not understand -flto=thin
#
# llvm/clang needs -flto=thin and will automatically parallelize the link
#
# XXX re _AR/_RANLIB: might be worth checking if plain binutils is good
_AR= ${CC:S/gcc/gcc-ar/}
_RANLIB= ${CC:S/gcc/gcc-ranlib/}
CFLAGS+= -I${LOCALBASE}/include -fPIC ${_LTO_FLAGS} ${_OPT_FLAGS}
LDFLAGS+= -Wl,--as-needed -lpthread ${_LTO_FLAGS} ${_OPT_FLAGS}
CMAKE_ARGS+= -DDOCDIR="${DOCSDIR}" \
-DCREDITSDIR="${DOCSDIR}" \
-DLICENCEDIR="${DOCSDIR}" \
-DDESKTOPDIR="${DESKTOPDIR}" \
-DDATADIR="${DATADIR}" \
-DCACHE_NAME_SUFFIX="" \
-Wno-dev \
-DCMAKE_AR:FILEPATH=${_AR} \
-DCMAKE_RANLIB:FILEPATH=${_RANLIB} \
-DCMAKE_POLICY_DEFAULT_CMP0056:STRING=NEW
# 3.4.x: CMAKE_EXE_LINKER_FLAGS is not passed to TRY_COMPILE by default
# any more. The CMP0056 policy must be explicitly set to NEW to ensure
# linker flags are passed. Else -lomp is not found with clang.
# See: https://cmake.org/cmake/help/v3.4/policy/CMP0056.html
INSTALLS_ICONS= yes
.if defined(PACKAGE_BUILDING) && empty(CFLAGS:M-march*) && (${ARCH} == i386 || ${ARCH} == amd64 || ${ARCH} == aarch64)
# this gets translated to -mtune=generic, see ${WRKSRC}/ProcessorTargets.cmake
# and as of GCC 8.3, it appears that among FreeBSD's supported architectures,
# only the three listed above support this GCC option.
CMAKE_ARGS+= -DPROC_TARGET_NUMBER="1"
.endif
.if "${WITH_CCACHE_BUILD}" == "yes" && !defined(NO_CCACHE)
CMAKE_ARGS+= -DCMAKE_C_COMPILER_LAUNCHER=${CCACHE_BIN} \
-DCMAKE_CXX_COMPILER_LAUNCHER=${CCACHE_BIN}
.endif
RTDIR= ${PREFIX}/libdata/${PORTNAME}
OPTIONS_DEFINE= DOCS NATIVE
OPTIONS_DEFINE_i386= DOCS NATIVE OPENMP
OPTIONS_DEFINE_amd64= DOCS NATIVE OPENMP
OPTIONS_DEFAULT= OPENMP
OPENMP_DESC= Enable OpenMP parallel processing (i386/amd64 only)
NATIVE_DESC= Use -march=native (avoid for generic packages!)
OPENMP_CMAKE_BOOL= OPTION_OMP
.include <bsd.port.options.mk>
# -------------------------------------------------------------------
.if (${OPSYS} == FreeBSD) && (${OSVERSION} >= 1300000)
# don't waste everybody's time with Tier-2 and moving targets.
# might add ARM64 or SPARC64 later on if they are established by the
# time FreeBSD 12 is out.
ONLY_FOR_ARCHS= amd64
ONLY_FOR_ARCHS_REASON=Only amd64 is supported on non-released FreeBSD versions.
.endif
.if ${PORT_OPTIONS:MNATIVE}
CMAKE_ARGS+= -DPROC_TARGET_NUMBER="2"
.endif
.if !empty(PORT_OPTIONS:MOPENMP) && !empty(OPTIONS_DEFINE:MOPENMP)
LIB_DEPENDS+= libomp.so:devel/openmp
OPENMP_FLAGS= -lm -lomp
LDFLAGS+= ${OPENMP_FLAGS}
.endif
.if defined(WITH_DEBUG)
STRIP=
.endif
_OPT_FLAGS= -O3 -funroll-loops
# GCC >= 5.4 includes -fexpensive-optimizations in -O2 already
.if (${ARCH} == i386) || (${ARCH} == amd64)
# and SSE2 has been around since the years 2000...2003 latest
_OPT_FLAGS+= -msse2
.endif
# workaround for values on the stack that cause SIGBUS on SSE2:
.if ${ARCH} == i386
_OPT_FLAGS+= -mstackrealign
.endif
# -------------------------------------------------------------------
.include <bsd.port.pre.mk>
post-patch:
@${REINPLACE_CMD} -e 's#DESTINATION "$${CMAKE_INSTALL_PREFIX}/share/man/man1"#DESTINATION "${MANPREFIX}/man/man1/"#' \
${WRKSRC}/CMakeLists.txt
TESTIMAGES= ${FILESDIR}/../testimages
# paranoia: run rawtherapee --help to be sure it finds all its
# shared libraries (this hinges on proper RPATH setting and propagation)
post-install:
@${ECHO_MSG} "===> Running smoke tests"
@(set -x ; TMP=$$(${MKTEMP} -d -t ${PORTNAME}) && trap "rc=$$? ; ${RM} -rf \"$$TMP\" ; exit \$$rc" 0 && \
${SETENV} LANG= LC_ALL=C LANGUAGE= DISPLAY= HOME="$$TMP" ${STAGEDIR}${PREFIX}/bin/rawtherapee --help 2>&1 \
| ${EGREP} -q "RawTherapee, version ${PKGVERSION:C/_.*//:C/,.*//}|cannot open display:" && \
${SETENV} LANG= LC_ALL=C LANGUAGE= DISPLAY= HOME="$$TMP" ${STAGEDIR}${PREFIX}/bin/rawtherapee-cli --version 2>&1 \
| ${EGREP} -q "RawTherapee, version ${PKGVERSION:C/_.*//:C/,.*//}" && \
if test -n "$(TESTIMAGES)" ; then \
time ${SETENV} LANG= LC_ALL=C LANGUAGE= DISPLAY= HOME="$$TMP" ${STAGEDIR}${PREFIX}/bin/rawtherapee-cli \
-o "$$TMP" -q -f -c $(TESTIMAGES) && \
time ${SETENV} LANG= LC_ALL=C LANGUAGE= DISPLAY= HOME="$$TMP" ${STAGEDIR}${PREFIX}/bin/rawtherapee-cli \
-o "$$TMP" -q -s -Y -c $(TESTIMAGES) ; \
fi )
.include <bsd.port.post.mk>
|