Skip to content

Instantly share code, notes, and snippets.

@Wowfunhappy
Created August 22, 2025 18:17
Show Gist options
  • Select an option

  • Save Wowfunhappy/bd30a96f267d5458bb4b26d2ac342513 to your computer and use it in GitHub Desktop.

Select an option

Save Wowfunhappy/bd30a96f267d5458bb4b26d2ac342513 to your computer and use it in GitHub Desktop.
macports-libcxx + llvm 18 (on Mavericks)
# Updates macports-libcxx to to support C++20.
diff --git a/lang/macports-libcxx/Portfile b/lang/macports-libcxx/Portfile
index 2648853..f152a2a 100644
--- a/lang/macports-libcxx/Portfile
+++ b/lang/macports-libcxx/Portfile
@@ -16,10 +16,10 @@ long_description This port installs a recent libc++ from llvm \
# for now, we will leverage the already-built libc++ in the appropriate clang port
# later, we can build this independently if we choose to do so, much like libtapi
-# the clang-11 version in use when this port is updated will be used
-version 11.1.0
-set clangversion 11
-revision 0
+# the clang-18 version in use when this port is updated will be used
+version 18.1.8
+set clangversion 18
+revision 1
depends_build port:clang-${clangversion}
@@ -48,28 +48,30 @@ variant universal {}
destroot {
xinstall -d ${destroot}${prefix}/include/libcxx
- copy ${prefix}/libexec/llvm-${clangversion}/lib/c++/v1 ${destroot}${prefix}/include/libcxx/
+ copy ${prefix}/libexec/llvm-${clangversion}/include/c++/v1 ${destroot}${prefix}/include/libcxx/
# disable Apple libc++ availability tests, as we're using a new libc++ with these headers
system -W ${destroot}${prefix}/include/libcxx/v1 "patch -p0 < ${filespath}/patch-disable-availabilty.diff"
xinstall -d ${destroot}${prefix}/lib/libcxx
- copy ${prefix}/libexec/llvm-${clangversion}/lib/libc++.1.0.dylib ${destroot}${prefix}/lib/libcxx/libc++.1.0.dylib
+ copy ${prefix}/libexec/llvm-${clangversion}/lib/libc++/libc++.1.0.dylib ${destroot}${prefix}/lib/libcxx/libc++.1.0.dylib
system -W ${destroot}${prefix}/lib/libcxx/ "install_name_tool -id ${prefix}/lib/libcxx/libc++.1.0.dylib libc++.1.0.dylib"
- system -W ${destroot}${prefix}/lib/libcxx/ "install_name_tool -delete_rpath @loader_path/../lib libc++.1.0.dylib"
+ # LLVM 18's libc++ may not have rpaths to delete
+ catch {system -W ${destroot}${prefix}/lib/libcxx/ "install_name_tool -delete_rpath @loader_path/../lib libc++.1.0.dylib"}
system -W ${destroot}${prefix}/lib/libcxx/ "install_name_tool -change @rpath/libc++abi.1.dylib ${prefix}/lib/libcxx/libc++abi.1.dylib libc++.1.0.dylib"
system -W ${destroot}${prefix}/lib/libcxx/ "ln -s libc++.1.0.dylib libc++.1.dylib"
system -W ${destroot}${prefix}/lib/libcxx/ "ln -s libc++.1.dylib libc++.dylib"
- copy ${prefix}/libexec/llvm-${clangversion}/lib/libc++abi.1.0.dylib ${destroot}${prefix}/lib/libcxx/libc++abi.1.0.dylib
+ copy ${prefix}/libexec/llvm-${clangversion}/lib/libc++/libc++abi.1.0.dylib ${destroot}${prefix}/lib/libcxx/libc++abi.1.0.dylib
system -W ${destroot}${prefix}/lib/libcxx/ "install_name_tool -id ${prefix}/lib/libcxx/libc++abi.1.0.dylib libc++abi.1.0.dylib"
- system -W ${destroot}${prefix}/lib/libcxx/ "install_name_tool -delete_rpath @loader_path/../lib libc++abi.1.0.dylib"
+ # LLVM 18's libc++abi may not have rpaths to delete
+ catch {system -W ${destroot}${prefix}/lib/libcxx/ "install_name_tool -delete_rpath @loader_path/../lib libc++abi.1.0.dylib"}
system -W ${destroot}${prefix}/lib/libcxx/ "ln -s libc++abi.1.0.dylib libc++abi.1.dylib"
system -W ${destroot}${prefix}/lib/libcxx/ "ln -s libc++abi.1.dylib libc++abi.dylib"
- copy ${prefix}/libexec/llvm-${clangversion}/lib/libc++.a ${destroot}${prefix}/lib/libcxx/libc++.a
- copy ${prefix}/libexec/llvm-${clangversion}/lib/libc++abi.a ${destroot}${prefix}/lib/libcxx/libc++abi.a
- copy ${prefix}/libexec/llvm-${clangversion}/lib/libc++experimental.a ${destroot}${prefix}/lib/libcxx/libc++experimental.a
+ copy ${prefix}/libexec/llvm-${clangversion}/lib/libc++/libc++.a ${destroot}${prefix}/lib/libcxx/libc++.a
+ copy ${prefix}/libexec/llvm-${clangversion}/lib/libc++/libc++abi.a ${destroot}${prefix}/lib/libcxx/libc++abi.a
+ copy ${prefix}/libexec/llvm-${clangversion}/lib/libc++/libc++experimental.a ${destroot}${prefix}/lib/libcxx/libc++experimental.a
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment