You may have noticed that current software sometimes requires newer libc++ features than the installed system libc++.dylib version can support.
The libcxx port has the capability to install a newer libc++.dylib, currently the libc++ that matches llvm-5.0, which is quite recent in terms of OS version. The libc++.dylib for llvm-7.0 should be no problem either, I have that one working locally. There was an ABI change at llvm-8.0 that might or might not break installed libc++ software, so have to check that version more carefully. If so, there may be a way to build with the old ABI enabled I understand. To allow the newer features to be accessed by clang, edit the "__config" file in the c++ includes for the clang version you're using, and disable Apple's availability tests that assume the system libc++.dylib is still installed. WIth a new libc++.dylib, some software that is currently disabled or broken on older systems will build, eg. mysql8. So far I have tested this on 10.7.5. $ port -v installed mysql8 The following ports are currently installed: mysql8 @8.0.21_0 (active) platform='darwin 11' archs='x86_64' date='2020-07-26T11:50:32-0700' Here are the steps: 1. install the new system roots (doesn't actually install the software into /usr ): sudo port -v -n upgrade --enforce-variants libcxx +replacemnt_libcxx +universal 2. save the old libc++: (for some systems, you will have to disable SIP) sudo cp /usr/lib/libc++.1.dylib /usr/lib/libc++.1.dylib.original sudo cp /usr/lib/libc++abi.dylib /usr/lib/libc++abi.dylib.original This also installs two cxxabi headers into /usr/linclude. These headers don't exist on 10.7.5, so don't need to be backed up it appears, but I haven't yet looked at all newer systems to see when they appeared, so you should check for them and back them up if they exist before you overwrite them: 3. Install the new libc++. cd / sudo tar xzvf /opt/local/var/system_roots/libcxx-5.0.1-4.tgz $ ls -la /usr/lib/libc++* -rwxr-xr-x 1 root admin 2280984 26 Jul 09:12 /usr/lib/libc++.1.dylib -rwxr-xr-x 1 root wheel 1621344 26 Jul 09:25 /usr/lib/libc++.1.dylib.original lrwxr-xr-x 1 root admin 14 26 Jul 09:12 /usr/lib/libc++.dylib -> libc++.1.dylib -rwxr-xr-x 1 root admin 478220 26 Jul 09:12 /usr/lib/libc++abi.dylib -rwxr-xr-x 1 root wheel 153840 26 Jul 09:26 /usr/lib/libc++abi.dylib.original $ ls -la /usr/include/*cxx* -rwxr-xr-x 1 root admin 2032 26 Jul 09:12 /usr/include/__cxxabi_config.h -rwxr-xr-x 1 root admin 6945 26 Jul 09:12 /usr/include/cxxabi.h 4. Then change macports-clang-N to ignore the Availability tests by editing the include/__config file for the clang version you're interested in using, for example for clang-9.0: bbedit /opt/local/libexec/llvm-9.0/include/c++/v1/__config and add this near the top: // for MacPorts, our installed libcxx does not require Apple system Availability tests #define _LIBCPP_DISABLE_AVAILABILITY If you run into trouble, you can change the libc++ dylib back to the original. Ken