oneDPL icon indicating copy to clipboard operation
oneDPL copied to clipboard

libc++-14 incompatibility

Open dbs4261 opened this issue 9 months ago • 3 comments

Hi folks, looks like there is an issue with using gcc-14. When compiling Open3d using oneApi with gcc-14, I am getting a build error. I've traced it to oneapi/dpl/pstl/algorithm_impl.h. It seems to be an issue with the macro #if (_PSTL_UDR_PRESENT || _ONEDPL_UDR_PRESENT) (actual error: error: operator '||' has no left operand). Now, I'm reporting the bug here because _PSTL_UDR_PRESENT is defined in pstl_config.h but that is never included. My IDE is telling me that the definition is coming instead from pstl_config.h libc++-14 shown below:

#if (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1900) || \
    (!defined(__INTEL_COMPILER) && _PSTL_GCC_VERSION >= 40900) || \
    (defined(_OPENMP) && _OPENMP >= 201307)
#    define _PSTL_UDR_PRESENT
#endif

#if (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 1900 && __INTEL_COMPILER_BUILD_DATE >= 20180626) || \
    (!defined(__INTEL_COMPILER) && _PSTL_GCC_VERSION >= 100000)
#   define _PSTL_UDS_PRESENT
#endif

Now, in all versions of the file included in my oneApi installation have a value after _PSTL_UDR_PRESENT. This is also the case with libc++-13. So the fix might need to be made on that end.

dbs4261 avatar May 24 '24 19:05 dbs4261