AcademySoftwareFoundation / openvdb

OpenVDB - Sparse volume data structure and tools
http://www.openvdb.org/
Mozilla Public License 2.0
2.62k stars 647 forks source link

[BUILD] OpenVDB fails to build with LLVM 18 #1804

Open onitake opened 4 months ago

onitake commented 4 months ago

Environment

Operating System: Debian Linux sid Version / Commit SHA: 11.0.0 Other: (e.g compiler, C++ standard etc.)

Describe the bug

OpenVDB fails to compile with any recent LLVM releases.

To Reproduce

Steps to reproduce the behavior:

  1. Build with LLVM 18.x
  2. See error:
    CMake Error at openvdb_ax/openvdb_ax/CMakeLists.txt:118 (message):
    OpenVDB AX does not currently support LLVM versions >= 16 due to opaque
    pointer changes in LLVM.  Found unsuitable LLVM version "18.1.5"

Expected behavior

OpenVDB should be compatible with recent stable LLVM releases. LLVM 16 was released two years ago, and the current version is 18.

Additional context

This incompatibility is currently causing problems on Debian, because LLVM 15 is planned for removal from the next stable release, and it's blocking a number of packages that depend on OpenVDB (Blender, for example).

See this bug report for more information: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1061216

What exactly is the problem with opaque pointers in OpenVDB / LLVM 16+ ?

Idclip commented 4 months ago

What exactly is the problem with opaque pointers in OpenVDB / LLVM 16+ ?

The opaque pointers change is a fundamental design/behaviour change in LLVM. OpenVDB AX will most likely crash using LLVM 16 and probably fail to compile entirely under LLVM 17/18. Most software that uses LLVM will have had to go through a similar transition. There are migration guidelines, but different projects will have different levels of complexity depending on their use of typed pointer components - and we use them a fair amount in AX.

https://llvm.org/docs/OpaquePointers.html

OpenVDB should be compatible with recent stable LLVM releases. LLVM 16 was released two years ago, and the current version is 18.

This is simply a resourcing issue, we haven't had the time to commit to updating. I will do my best to see if I can solve this in the short term but unfortunately can't make any deadline promises.