Index: head/graphics/darktable/Makefile =================================================================== --- head/graphics/darktable/Makefile +++ head/graphics/darktable/Makefile @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= darktable -PORTVERSION= 2.2.1 +PORTVERSION= 2.2.2 CATEGORIES= graphics MASTER_SITES= https://github.com/darktable-org/${PORTNAME}/releases/download/release-${PORTVERSION:C/\.rc/rc/}/ @@ -95,21 +95,26 @@ .include -.if ${ARCH} == amd64 && ${COMPILER_TYPE} == clang -# Enable OpenMP support with Clang 3.7. -BUILD_DEPENDS+= clang37:devel/llvm37 -RUN_DEPENDS+= clang37:devel/llvm37 - -CPP= clang-cpp37 -CC= clang37 -CXX= clang++37 +.if ${ARCH} == amd64 && ${CHOSEN_COMPILER_TYPE} == clang +# Enable OpenMP support with Clang 3.9. +LLVM_VER= 39 +BUILD_DEPENDS+= clang${LLVM_VER}:devel/llvm${LLVM_VER} + +CPP= clang-cpp${LLVM_VER} +CC= clang${LLVM_VER} +CXX= clang++${LLVM_VER} # FIXME: At least in 3.7.0 and 3.7.1, Clang doesn't find libomp.so # itself. Furthermore, there may be a regression in 3.7.1 because we now -# need to explicitly link to libm.so as well. -OPENMP_FLAGS= -L${LOCALBASE}/llvm37/lib -lm -lomp +# need to explicitly link to libm.so as well. This remains true with +# Clang 3.9.1. +OPENMP_FLAGS= -L${LOCALBASE}/llvm${LLVM_VER}/lib -lm -lomp LDFLAGS+= ${OPENMP_FLAGS} +# Depend on devel/openmp instead of the full LLVM at runtime. Required +# for a consistent libomp experience. +LIB_DEPENDS+= libomp.so.0:devel/openmp + # Last but not least, there is a second change or regression in CMake # 3.4.x: CMAKE_EXE_LINKER_FLAGS is not passed to TRY_COMPILE by default # anymore. The CMP0056 policy must be explicitly set to NEW to ensure Index: head/graphics/darktable/distinfo =================================================================== --- head/graphics/darktable/distinfo +++ head/graphics/darktable/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1483541541 -SHA256 (darktable-2.2.1.tar.xz) = da843190f08e02df19ccbc02b9d1bef6bd242b81499494c7da2cccdc520e24fc -SIZE (darktable-2.2.1.tar.xz) = 3058236 +TIMESTAMP = 1485537770 +SHA256 (darktable-2.2.2.tar.xz) = 766d7d734e7bd5a33f6a6932a43b15cc88435c64ad9a0b20410ba5b4706941c2 +SIZE (darktable-2.2.2.tar.xz) = 3079424 Index: head/graphics/darktable/files/patch-src_CMakeLists.txt =================================================================== --- head/graphics/darktable/files/patch-src_CMakeLists.txt +++ head/graphics/darktable/files/patch-src_CMakeLists.txt @@ -1,6 +1,6 @@ ---- src/CMakeLists.txt.orig 2016-12-31 12:42:13 UTC +--- src/CMakeLists.txt.orig 2017-01-27 11:03:43 UTC +++ src/CMakeLists.txt -@@ -254,7 +254,7 @@ if(USE_OPENJPEG) +@@ -257,7 +257,7 @@ if(USE_OPENJPEG) add_definitions("-DHAVE_OPENJPEG") list(APPEND SOURCES "common/imageio_j2k.c") @@ -9,7 +9,7 @@ list(APPEND LIBS ${OpenJPEG_LIBRARIES}) endif(OpenJPEG_FOUND) endif(USE_OPENJPEG) -@@ -415,8 +415,9 @@ if(NOT CUSTOM_CFLAGS) +@@ -418,8 +418,9 @@ if(NOT CUSTOM_CFLAGS) #-g MUST be set for ALL builds, or there will be no support for them when bugs happen set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MARCH} ${DT_REQ_INSTRUCTIONS} -g") set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O2") @@ -20,7 +20,7 @@ if(BUILD_SSE2_CODEPATHS) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpmath=sse") endif() -@@ -429,8 +430,9 @@ if(NOT CUSTOM_CFLAGS) +@@ -432,8 +433,9 @@ if(NOT CUSTOM_CFLAGS) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MARCH} ${DT_REQ_INSTRUCTIONS} -g") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2") Index: head/graphics/darktable/files/patch-src_develop_imageop__math.c =================================================================== --- head/graphics/darktable/files/patch-src_develop_imageop__math.c +++ head/graphics/darktable/files/patch-src_develop_imageop__math.c @@ -0,0 +1,18 @@ +--- src/develop/imageop_math.c.orig 2017-01-27 11:03:43 UTC ++++ src/develop/imageop_math.c +@@ -195,13 +195,13 @@ void dt_iop_clip_and_zoom_mosaic_half_si + + const float fy = (y + roi_out->y) * px_footprint; + const int miny = CLAMPS((int)floorf(fy - px_footprint), 0, roi_in->height-3); +- const int maxy = MIN(roi_in->height-1, (int)ceilf(fy + px_footprint)); ++ const int maxy = MIN(roi_in->height-2, (int)ceilf(fy + px_footprint)); + + float fx = roi_out->x * px_footprint; + for(int x = 0; x < roi_out->width; x++, fx += px_footprint, outc++) + { + const int minx = CLAMPS((int)floorf(fx - px_footprint), 0, roi_in->width-3); +- const int maxx = MIN(roi_in->width-1, (int)ceilf(fx + px_footprint)); ++ const int maxx = MIN(roi_in->width-2, (int)ceilf(fx + px_footprint)); + + const int c = FC(y, x, filters); + int num = 0;