The OPENMP option forces GraphicsMagick to be built with GCC via USES=compiler:gcc-c++11-lib.
GCC 6 builds C++ code with -std=gnu++14 by default instead of -std=gnu++98 it used before. This causes libGraphicsMagick++.so to be generated with a relocation for `operator delete(void*, size_t)', which is new in C++14, instead of the traditional `operator delete(void*)'.
This works fine for GraphicsMagick itself, but not for ports that depend on it, which are generally built with base's clang (which does not default to C++14 at least at the moment), which leads to linking errors such as the ones in the bugs this one is marked as blocking. For example, graphics/cimg:
/usr/local/lib/libGraphicsMagick++.so: undefined reference to `operator delete(void*, unsigned long)'
c++: error: linker command failed with exit code 1 (use -v to see invocation)
Created attachment 184792 [details]
The attached patch forces the use of C++03 (which was the default before) when the OPENMP option is enabled. This generates a relocation for the older `operator delete' overload in libGraphicsMagick++.so.
graphics/cimg, graphics/photivo and textproc/htmltolatex all built fine on HEAD-amd64 with clang after building GraphicsMagick with GCC 6.
A commit references this bug:
Date: Sun Jul 30 13:16:46 UTC 2017
New revision: 446932
Use C++03 for OPENMP option
Submitted by: rakuco