llvm / clang / cctools / ld64 version consistency question

Ken Cunningham ken.cunningham.webuse at gmail.com
Wed Jul 27 06:22:24 PDT 2016

Dear smart people,

Having run into an unexpected problem with clang-3.7 segfaulting not long ago after a 3.7 minor version update, and then an interesting libLTO incorrect "version error" when I tried to upgrade the compiler chain from clang-3.7 to clang-3.8, I'd like to have a slightly better understanding of how these tools fit together.

There is a port select mechanism for clang, and a port select mechanism for llvm. But would it be fair to say you would always do both of them together, ie if you're switching to clang-3.8, you'll also need to switch to llvm-3.8? This seems pretty obvious, and I always do switch both when I do it. Should the port select mechanism just do that automatically for both if you ask it do it for one?

Also, cctools and ld64 also have a specific variant for each version of llvm, it appears from the following command.

sudo port -v -n upgrade --enforce-variants cctools -llvm33 -llvm34 +llvm37 configure.compiler=macports-clang-3.7
sudo port -v upgrade --enforce-variants ld64 -llvm33 -llvm34 +llvm37 configure.compiler=macports-clang-3.7

So is it also the case that if you're switching clang versions (and then llvm versions) you need to run commands like the following to bring your cctools and ld64 variants into sync?

And finally, for those of us who have installed libc++ on older systems, just to clarify that libc++ is a fixed entity, and it does not change or need to change with any of the above - build it once, install it, and leave it alone, basically?

Hope this question is clear. Thanks,

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-dev/attachments/20160727/14e76c6e/attachment.html>

More information about the macports-dev mailing list