according to the web page, building with XCode 3.x is supported, but
trying so result in build failures, both when using xcodebuild as well
as when following the (FreeBSD) "make" instructions.
So my question is:
Is building LLDB on Mac OSX Snow Leopard (still) supported?
If yes, how can I fix the build failures, preferably the make based
ones in the second part of this mail?
I think we need to update http://lldb.llvm.org/build.html and remove mentions of Xcode 3 -- and I don't think anyone has tried building current-lldb on Snow Leopard (Mac OS X 10.6) in a very long time and it is (clearly) not working. We've tried to keep it building for Mac OS X 10.7 ("Lion") because there are a few people still running Lion but I don't think we've heard from people using Snow Leopard.
Well, I am still on Snow Leopard, and I intent to stay there for the
Most of the active lldb developers are running the current Mac OS X 10.9 release ("Mavericks") - I don't think anyone has a system still running Snow Leopard. Greg would be better able to answer how receptive he would be to accepting patches to make it build on 10.6 again - but given that you have to use a non-Apple gcc release (so e.g. no Objective-C++ support) it may be a bit of work.
Actually, after a lot of tries, I succeeded to build current-lldb with
only minimal changes to its source. I had to touch only four files
(patch attached, but needs additional configure test):
lib/Makefile : added -lpanel
source/Host/common/FileSpec.cpp : added missing #include <limits.h>
source/Host/common/Host.cpp : worked around pthread_fchdir()
source/Host/macosx/Host.mm : worked around pthread_fchdir()
That's all for LLDB.
Attached patch contains these changes, but misses an appropriate
configure test. Unfortunately, I have no idea how configure scripts
are made or work, so can't help with the test.
The major work was, to get a working clang-3.5. Although provided
by MacPorts, a simple "port install clang-3.5" results in a toolchain
with partially broken libc++ so that, among other things, clang++
can't parse its own cmath header. But that is something I should
probably discuss with the clang / libcxx developers.
Here are all steps I needed to do:
- port install gcc-48
- svn checkout of llvm, clang, libcxx, libcxxabi into the prescribed tree:
llvm -+- projects -+- libcxx
> +- libcxxabi
+- tools --- clang
- cd llvm/projects
- patch libcxx and libcxxabi to install into /usr/local instead of /usr
(they don't honor the "--prefix" from configure)
- mkdir mybuild && cd mybuild
- ../llvm/configure --prefix=/usr/local --enable-cxx11
--enable-optimized CC=/opt/local/bin/gcc CXX=/opt/local/bin/g++
- make && sudo make install
- fix /usr/local/include/c++/v1/cmath
to "extern C" llrint and llround
- svn checkout lldb into llvm/tools/lldb
- ../llvm/configure --prefix=/usr/local --enable-cxx11 --enable-libcpp
--enable-optimized CC=/usr/local/bin/clang CXX=/usr/local/bin/clang++
- make && sudo make install
If someone wants it, I can put together a script that automates the
whole process including all patches / fixups.
lldb-patch-snowleopard.txt (2.82 KB)