[lldb-dev] LLDB @ Mac OSX: build on Snow Leopard (still) supported? [patch]

Bjoern Kahl mls at bjoern-kahl.de
Wed Feb 5 15:42:11 PST 2014


Am 05.02.14 23:22, schrieb Jason Molenda:
> 
> On Feb 5, 2014, at 1:35 PM, Bjoern Kahl <mls at bjoern-kahl.de> wrote:
> 
>> Well, I am still on Snow Leopard, and I intent to stay there for the
>> foreseeable future. :-)
> 
> :) I think it's worth distinguishing between Snow Leopard build issues (e.g. the patch you attached) and issues of building a Mac OS X native lldb with a non-clang compiler like gcc 4.8 & the GNU libstdc++.  The last gcc release that Apple had (with Objective-C++ support) was 4.2.1 or so - which obviously won't work for lldb because of the C++11 use in the codebase.

 I am not sure I understand you correctly.

 Do you mean by "Mac OS X native lldb" to build with just the plain
 Mac OS X + Xcode installed?

 I agree, that would probably be close to impossible.


 Building with Mac OS X + some decent OSS environment (MacPorts,
 Homebrew, Fink, ...) shouldn't be to hard.  I don't think the problems
 I had should exists.

 In fact, I almost succeeded with the gcc-48, which has Objective-C
 support, but apparently not the latest, i.e. no "blocks" support, at
 least I found no option that enables this.

 Trying clang was a major disappointment, because without "--enable-libcpp"
 configure just complained about a to old libc++ (it couldn't find
 "atomic" header), and with "--enable-libcpp" configure completed but
 the build failed in the first file including cmath due to missing
 declarations of llrint() and llround().  I guess I could have just
 hacked the systems cmath instead of installing a separate toolchain
 and libc++ in /usr/local, but I didn't want to touch system files.



>> 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.
> 
> Where did you define CONFIG_HAS_PTHREAD_CHDIR for your build?  It might be easier to add something like

 :-) Nowhere.  The point was to have the pthread_chdir() code "ifdef'ed out"
 and use the variant for platforms that don't have these calls.

 My intention was to have a configure test, if the platform supports it
 and then have or have not a "#define" in config.h.  Conditioning on a
 vendor isn't optimal, because other platforms may at some point also
 develop that pthread feature.


> #if defined(__APPLE)
> #include <AvailabilityMacros.h>
> #if  MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_6
> // __pthread_chdir and __pthread_fchdir are only available on Mac OS X 10.7 and later
> #define CONFIG_HAS_PTHREAD_CHDIR
> #endif
> #endif
> 
> to common/Host.cpp.

 Looks good to me, and much simpler then a vendor neutral test in
 configure.  I've added it to my tree, using "<Availability.h>".


 Björn

-- 
|     Bjoern Kahl   +++   Siegburg   +++    Germany     |
| "googlelogin at -my-domain-"   +++   www.bjoern-kahl.de  |
| Languages: German, English, Ancient Latin (a bit :-)) |

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 356 bytes
Desc: OpenPGP digital signature
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20140206/2df2807e/attachment.sig>


More information about the lldb-dev mailing list