diff --git a/graphics/darktable/Makefile b/graphics/darktable/Makefile index cae03ceb4345..cc27afcf1618 100644 --- a/graphics/darktable/Makefile +++ b/graphics/darktable/Makefile @@ -1,161 +1,151 @@ PORTNAME= darktable PORTVERSION= 4.0.1 -PORTREVISION= 2 +PORTREVISION= 3 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= libcolord-gtk.so:graphics/colord-gtk \ libcolord.so:graphics/colord \ libcurl.so:ftp/curl \ libexiv2.so:graphics/exiv2 \ libharfbuzz.so:print/harfbuzz \ libicui18n.so:devel/icu \ libjasper.so:graphics/jasper \ libjson-glib-1.0.so:devel/json-glib \ liblcms2.so:graphics/lcms2 \ liblensfun.so:graphics/lensfun \ libpng.so:graphics/png \ libpugixml.so:textproc/pugixml \ libsoup-2.4.so:devel/libsoup \ libtiff.so:graphics/tiff -USES= cmake compiler:c++14-lang desktop-file-utils gl gnome jpeg \ - perl5 pkgconfig sdl shebangfix sqlite tar:xz xorg +USES= cmake compiler:gcc-c++11-lib desktop-file-utils gl gnome jpeg \ + llvm:14,build 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 +USE_GCC= yes + CMAKE_ARGS+= -DBINARY_PACKAGE_BUILD=1 \ -DBUILD_CMSTEST:BOOL=ON \ -DUSE_KWALLET:BOOL=ON CFLAGS+= -fopenmp LDFLAGS+= -L${LOCALBASE}/lib WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION:C/\.rc/~rc/} OPTIONS_DEFINE= AVIF DOCS GEO GPHOTO GMIC GRAPHMAGICK HEIF LIBSECRET LTO \ LUA NLS OPENEXR OPENJPEG PRINT TOOLS WEBP OPTIONS_DEFAULT= AVIF GEO GPHOTO HEIF LTO LUA OPENEXR OPENJPEG PRINT WEBP OPTIONS_SUB= yes GEO_DESC= Support geotagging GMIC_DESC= Support G'Mic-compressed LUT in lut3d LIBSECRET_DESC= Support libsecret as password backend GEO_LIB_DEPENDS= libosmgpsmap-1.0.so:x11-toolkits/osm-gps-map GEO_CMAKE_BOOL= USE_MAP GMIC_LIB_DEPENDS= libgmic.so:graphics/gmic GMIC_CMAKE_BOOL= USE_GMIC GPHOTO_LIB_DEPENDS= libgphoto2.so:graphics/libgphoto2 GPHOTO_CMAKE_BOOL= USE_CAMERA_SUPPORT GRAPHMAGICK_LIB_DEPENDS=libGraphicsMagick.so:graphics/GraphicsMagick GRAPHMAGICK_CMAKE_BOOL= USE_GRAPHICSMAGICK AVIF_LIB_DEPENDS= libavif.so:graphics/libavif AVIF_CMAKE_BOOL= USE_AVIF HEIF_LIB_DEPENDS= libheif.so:graphics/libheif HEIF_CMAKE_BOOL= USE_HEIF LIBSECRET_LIB_DEPENDS= libsecret-1.so:security/libsecret LIBSECRET_CMAKE_BOOL= USE_LIBSECRET LTO_CMAKE_BOOL= RAWSPEED_ENABLE_LTO LUA_USES= lua:54 LUA_CMAKE_BOOL= USE_LUA # 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 OPENEXR_LIB_DEPENDS= libOpenEXR.so:graphics/openexr \ libImath.so:math/Imath OPENEXR_CFLAGS= -I${LOCALBASE}/include/Imath OPENEXR_CMAKE_BOOL= USE_OPENEXR OPENJPEG_LIB_DEPENDS= libopenjp2.so:graphics/openjpeg OPENJPEG_CMAKE_BOOL= USE_OPENJPEG PRINT_LIB_DEPENDS= libcups.so:print/cups PRINT_CMAKE_BOOL= BUILD_PRINT TOOLS_DESC= Install additional scripts TOOLS_BUILD_DEPENDS= exiftool:graphics/p5-Image-ExifTool TOOLS_RUN_DEPENDS= exiftool:graphics/p5-Image-ExifTool WEBP_LIB_DEPENDS= libwebp.so:graphics/webp WEBP_CMAKE_BOOL= USE_WEBP .include .if ${ARCH} == aarch64 CMAKE_ARGS+= -DUSE_OPENCL:BOOL=OFF CXXFLAGS+= -DGDK_DISABLE_DEPRECATED PLIST_SUB+= NO_OPENCL="@comment " .else PLIST_SUB+= NO_OPENCL="" .endif .include -.if ${CHOSEN_COMPILER_TYPE} == clang && ${OPSYS} == FreeBSD || ${ARCH} == "i386" -LLVM_DEFAULT= 13 -BUILD_DEPENDS+= clang${LLVM_DEFAULT}:devel/llvm${LLVM_DEFAULT} -CC= ${LOCALBASE}/bin/clang${LLVM_DEFAULT} -CPP= ${LOCALBASE}/bin/clang-cpp${LLVM_DEFAULT} -CXX= ${LOCALBASE}/bin/clang++${LLVM_DEFAULT} -LD= ${LOCALBASE}/bin/ld.lld${LLVM_DEFAULT} -BINARY_ALIAS+= ld.lld=${LOCALBASE}/bin/ld.lld${LLVM_DEFAULT} -BINARY_ALIAS+= llvm-objcopy=${LOCALBASE}/bin/llvm-objcopy${LLVM_DEFAULT} -BINARY_ALIAS+= llvm-ar=${LOCALBASE}/bin/llvm-ar${LLVM_DEFAULT} -BINARY_ALIAS+= llvm-ranlib=${LOCALBASE}/bin/llvm-ranlib${LLVM_DEFAULT} -.endif - # 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 diff --git a/graphics/darktable/files/patch-src_common_extra__optimizations.h b/graphics/darktable/files/patch-src_common_extra__optimizations.h new file mode 100644 index 000000000000..8bacc37406e0 --- /dev/null +++ b/graphics/darktable/files/patch-src_common_extra__optimizations.h @@ -0,0 +1,22 @@ +--- src/common/extra_optimizations.h.orig 2022-12-14 15:18:18 UTC ++++ src/common/extra_optimizations.h +@@ -17,19 +17,3 @@ + */ + + #pragma once +- +-/* Enable extra optimizations on GCC by including this header at the very +- * beginning of your *.c file (before any other includes). This applies +- * these optimizations for all of the source file. +- * +- * we use finite-math-only because divisions by zero are manually avoided +- * in the code, the rest is loop reorganization and vectorization optimization +- **/ +- +-#if defined(__GNUC__) +-#pragma GCC optimize ("unroll-loops", "split-loops", \ +- "loop-nest-optimize", "tree-loop-im", \ +- "tree-loop-ivcanon", "ira-loop-pressure", \ +- "variable-expansion-in-unroller", \ +- "ivopts", "finite-math-only") +-#endif diff --git a/graphics/darktable/files/patch-src_common_iop__order.c b/graphics/darktable/files/patch-src_common_iop__order.c new file mode 100644 index 000000000000..a9d9238e7156 --- /dev/null +++ b/graphics/darktable/files/patch-src_common_iop__order.c @@ -0,0 +1,26 @@ +--- src/common/iop_order.c.orig 2023-01-26 22:08:42 UTC ++++ src/common/iop_order.c +@@ -36,23 +36,6 @@ static void _ioppr_reset_iop_order(GList *iop_order_li + + static void _ioppr_reset_iop_order(GList *iop_order_list); + +-/** Note : +- * we do not use finite-math-only and fast-math because divisions by zero are not manually avoided in the code +- * fp-contract=fast enables hardware-accelerated Fused Multiply-Add +- * the rest is loop reorganization and vectorization optimization +- **/ +-#if defined(__GNUC__) +-#pragma GCC optimize ("unroll-loops", "tree-loop-if-convert", \ +- "tree-loop-distribution", "no-strict-aliasing", \ +- "loop-interchange", "loop-nest-optimize", "tree-loop-im", \ +- "unswitch-loops", "tree-loop-ivcanon", "ira-loop-pressure", \ +- "split-ivs-in-unroller", "variable-expansion-in-unroller", \ +- "split-loops", "ivopts", "predictive-commoning",\ +- "tree-loop-linear", "loop-block", "loop-strip-mine", \ +- "fp-contract=fast", \ +- "tree-vectorize") +-#endif +- + const char *iop_order_string[] = + { + N_("custom"), diff --git a/graphics/darktable/files/patch-src_common_iop__profile.c b/graphics/darktable/files/patch-src_common_iop__profile.c new file mode 100644 index 000000000000..86ede0dec073 --- /dev/null +++ b/graphics/darktable/files/patch-src_common_iop__profile.c @@ -0,0 +1,27 @@ +--- src/common/iop_profile.c.orig 2023-01-26 22:13:13 UTC ++++ src/common/iop_profile.c +@@ -32,24 +32,6 @@ + #include + #include + +-/** Note : +- * we do not use finite-math-only and fast-math because divisions by zero are not manually avoided in the code +- * fp-contract=fast enables hardware-accelerated Fused Multiply-Add +- * the rest is loop reorganization and vectorization optimization +- **/ +-#if defined(__GNUC__) +-#pragma GCC optimize ("unroll-loops", "tree-loop-if-convert", \ +- "tree-loop-distribution", "no-strict-aliasing", \ +- "loop-interchange", "loop-nest-optimize", "tree-loop-im", \ +- "unswitch-loops", "tree-loop-ivcanon", "ira-loop-pressure", \ +- "split-ivs-in-unroller", "variable-expansion-in-unroller", \ +- "split-loops", "ivopts", "predictive-commoning",\ +- "tree-loop-linear", "loop-block", "loop-strip-mine", \ +- "fp-contract=fast", \ +- "tree-vectorize") +-#endif +- +- + static void _mark_as_nonmatrix_profile(dt_iop_order_iccprofile_info_t *const profile_info) + { + profile_info->matrix_in[0][0] = NAN; diff --git a/graphics/darktable/files/patch-src_develop_blends_blendif__lab.c b/graphics/darktable/files/patch-src_develop_blends_blendif__lab.c new file mode 100644 index 000000000000..8b00387f1b6f --- /dev/null +++ b/graphics/darktable/files/patch-src_develop_blends_blendif__lab.c @@ -0,0 +1,18 @@ +--- src/develop/blends/blendif_lab.c.orig 2023-01-26 22:14:31 UTC ++++ src/develop/blends/blendif_lab.c +@@ -16,15 +16,6 @@ + along with darktable. If not, see . + */ + +-#if defined(__GNUC__) +-#pragma GCC optimize("unroll-loops", "tree-loop-if-convert", "tree-loop-distribution", "no-strict-aliasing", \ +- "loop-interchange", "loop-nest-optimize", "tree-loop-im", "unswitch-loops", \ +- "tree-loop-ivcanon", "ira-loop-pressure", "split-ivs-in-unroller", "tree-loop-vectorize", \ +- "variable-expansion-in-unroller", "split-loops", "ivopts", "predictive-commoning", \ +- "tree-loop-linear", "loop-block", "loop-strip-mine", "finite-math-only", "fp-contract=fast", \ +- "fast-math", "no-math-errno") +-#endif +- + #include "common/colorspaces_inline_conversions.h" + #include "common/imagebuf.h" + #include "common/math.h" diff --git a/graphics/darktable/files/patch-src_develop_blends_blendif__raw.c b/graphics/darktable/files/patch-src_develop_blends_blendif__raw.c new file mode 100644 index 000000000000..7adff9b17074 --- /dev/null +++ b/graphics/darktable/files/patch-src_develop_blends_blendif__raw.c @@ -0,0 +1,18 @@ +--- src/develop/blends/blendif_raw.c.orig 2023-01-26 22:18:41 UTC ++++ src/develop/blends/blendif_raw.c +@@ -16,15 +16,6 @@ + along with darktable. If not, see . + */ + +-#if defined(__GNUC__) +-#pragma GCC optimize("unroll-loops", "tree-loop-if-convert", "tree-loop-distribution", "no-strict-aliasing", \ +- "loop-interchange", "loop-nest-optimize", "tree-loop-im", "unswitch-loops", \ +- "tree-loop-ivcanon", "ira-loop-pressure", "split-ivs-in-unroller", "tree-loop-vectorize", \ +- "variable-expansion-in-unroller", "split-loops", "ivopts", "predictive-commoning", \ +- "tree-loop-linear", "loop-block", "loop-strip-mine", "finite-math-only", "fp-contract=fast", \ +- "fast-math", "no-math-errno") +-#endif +- + #include "common/imagebuf.h" + #include "common/math.h" + #include "develop/blend.h" diff --git a/graphics/darktable/files/patch-src_develop_blends_blendif__rgb__hsl.c b/graphics/darktable/files/patch-src_develop_blends_blendif__rgb__hsl.c new file mode 100644 index 000000000000..aa2beea3ffdf --- /dev/null +++ b/graphics/darktable/files/patch-src_develop_blends_blendif__rgb__hsl.c @@ -0,0 +1,18 @@ +--- src/develop/blends/blendif_rgb_hsl.c.orig 2023-01-26 22:19:10 UTC ++++ src/develop/blends/blendif_rgb_hsl.c +@@ -16,15 +16,6 @@ + along with darktable. If not, see . + */ + +-#if defined(__GNUC__) +-#pragma GCC optimize("unroll-loops", "tree-loop-if-convert", "tree-loop-distribution", "no-strict-aliasing", \ +- "loop-interchange", "loop-nest-optimize", "tree-loop-im", "unswitch-loops", \ +- "tree-loop-ivcanon", "ira-loop-pressure", "split-ivs-in-unroller", "tree-loop-vectorize", \ +- "variable-expansion-in-unroller", "split-loops", "ivopts", "predictive-commoning", \ +- "tree-loop-linear", "loop-block", "loop-strip-mine", "finite-math-only", "fp-contract=fast", \ +- "fast-math", "no-math-errno") +-#endif +- + #include "common/colorspaces_inline_conversions.h" + #include "common/imagebuf.h" + #include "common/math.h" diff --git a/graphics/darktable/files/patch-src_develop_blends_blendif__rgb__jzczhz.c b/graphics/darktable/files/patch-src_develop_blends_blendif__rgb__jzczhz.c new file mode 100644 index 000000000000..f3198d84e67f --- /dev/null +++ b/graphics/darktable/files/patch-src_develop_blends_blendif__rgb__jzczhz.c @@ -0,0 +1,18 @@ +--- src/develop/blends/blendif_rgb_jzczhz.c.orig 2023-01-26 22:19:33 UTC ++++ src/develop/blends/blendif_rgb_jzczhz.c +@@ -16,15 +16,6 @@ + along with darktable. If not, see . + */ + +-#if defined(__GNUC__) +-#pragma GCC optimize("unroll-loops", "tree-loop-if-convert", "tree-loop-distribution", "no-strict-aliasing", \ +- "loop-interchange", "loop-nest-optimize", "tree-loop-im", "unswitch-loops", \ +- "tree-loop-ivcanon", "ira-loop-pressure", "split-ivs-in-unroller", "tree-loop-vectorize", \ +- "variable-expansion-in-unroller", "split-loops", "ivopts", "predictive-commoning", \ +- "tree-loop-linear", "loop-block", "loop-strip-mine", "finite-math-only", "fp-contract=fast", \ +- "fast-math", "no-math-errno") +-#endif +- + #include "common/colorspaces_inline_conversions.h" + #include "common/imagebuf.h" + #include "develop/blend.h" diff --git a/graphics/darktable/files/patch-src_iop_channelmixerrgb.c b/graphics/darktable/files/patch-src_iop_channelmixerrgb.c new file mode 100644 index 000000000000..a16cc77221d5 --- /dev/null +++ b/graphics/darktable/files/patch-src_iop_channelmixerrgb.c @@ -0,0 +1,26 @@ +--- src/iop/channelmixerrgb.c.orig 2023-01-27 09:33:55 UTC ++++ src/iop/channelmixerrgb.c +@@ -49,23 +49,6 @@ DT_MODULE_INTROSPECTION(3, dt_iop_channelmixer_rgb_par + + DT_MODULE_INTROSPECTION(3, dt_iop_channelmixer_rgb_params_t) + +-/** Note : +- * we use finite-math-only and fast-math because divisions by zero are manually avoided in the code +- * fp-contract=fast enables hardware-accelerated Fused Multiply-Add +- * the rest is loop reorganization and vectorization optimization +- **/ +-#if defined(__GNUC__) +-#pragma GCC optimize ("unroll-loops", "tree-loop-if-convert", \ +- "tree-loop-distribution", "no-strict-aliasing", \ +- "loop-interchange", "loop-nest-optimize", "tree-loop-im", \ +- "unswitch-loops", "tree-loop-ivcanon", "ira-loop-pressure", \ +- "split-ivs-in-unroller", "variable-expansion-in-unroller", \ +- "split-loops", "ivopts", "predictive-commoning",\ +- "tree-loop-linear", "loop-block", "loop-strip-mine", \ +- "finite-math-only", "fp-contract=fast", "fast-math", \ +- "tree-vectorize", "no-math-errno") +-#endif +- + + #define CHANNEL_SIZE 4 + #define INVERSE_SQRT_3 0.5773502691896258f diff --git a/graphics/darktable/files/patch-src_iop_filmicrgb.c b/graphics/darktable/files/patch-src_iop_filmicrgb.c new file mode 100644 index 000000000000..40e16290108b --- /dev/null +++ b/graphics/darktable/files/patch-src_iop_filmicrgb.c @@ -0,0 +1,24 @@ +--- src/iop/filmicrgb.c.orig 2023-01-27 09:19:36 UTC ++++ src/iop/filmicrgb.c +@@ -94,21 +94,6 @@ DT_MODULE_INTROSPECTION(6, dt_iop_filmicrgb_params_t) + * */ + + +-/** Note : +- * we use finite-math-only and fast-math because divisions by zero are manually avoided in the code +- * fp-contract=fast enables hardware-accelerated Fused Multiply-Add +- * the rest is loop reorganization and vectorization optimization +- **/ +-#if defined(__GNUC__) +-#pragma GCC optimize("unroll-loops", "tree-loop-if-convert", "tree-loop-distribution", "no-strict-aliasing", \ +- "loop-interchange", "loop-nest-optimize", "tree-loop-im", "unswitch-loops", \ +- "tree-loop-ivcanon", "ira-loop-pressure", "split-ivs-in-unroller", \ +- "variable-expansion-in-unroller", "split-loops", "ivopts", "predictive-commoning", \ +- "tree-loop-linear", "loop-block", "loop-strip-mine", "finite-math-only", "fp-contract=fast", \ +- "fast-math", "no-math-errno") +-#endif +- +- + typedef enum dt_iop_filmicrgb_methods_type_t + { + DT_FILMIC_METHOD_NONE = 0, // $DESCRIPTION: "no" diff --git a/graphics/darktable/files/patch-src_iop_negadoctor.c b/graphics/darktable/files/patch-src_iop_negadoctor.c new file mode 100644 index 000000000000..6b27db770ffb --- /dev/null +++ b/graphics/darktable/files/patch-src_iop_negadoctor.c @@ -0,0 +1,20 @@ +--- src/iop/negadoctor.c.orig 2023-01-27 09:34:21 UTC ++++ src/iop/negadoctor.c +@@ -40,17 +40,6 @@ + #include + #include + +-#if defined(__GNUC__) +-#pragma GCC optimize ("unroll-loops", "tree-loop-if-convert", \ +- "tree-loop-distribution", "no-strict-aliasing", \ +- "loop-interchange", "loop-nest-optimize", "tree-loop-im", \ +- "unswitch-loops", "tree-loop-ivcanon", "ira-loop-pressure", \ +- "split-ivs-in-unroller", "variable-expansion-in-unroller", \ +- "split-loops", "ivopts", "predictive-commoning",\ +- "tree-loop-linear", "loop-block", "loop-strip-mine", \ +- "finite-math-only", "fp-contract=fast", "fast-math") +-#endif +- + /** DOCUMENTATION + * + * This module allows to invert scanned negatives and simulate their print on paper, based on Kodak Cineon