I'm trying to build LLDB, and specifically the command line program, from the SVN trunk on OS X (10.9 + Xcode 5.0.2). The build instructions seem to suggest that this should be straightforward, but after selecting the "lldb-tool" scheme and starting the build as described, after a while I get a build failure with "'Python/Python.h' file not found', referring to the source file lldb-python.h.
I have installed Swig (via Homebrew), so as far as I know all dependencies should be met.
Apologies in advance if I've missed something obvious, but it's not clear to me how to proceed. Any help would be appreciated.
I didn't try yet to build it on Maverick, but do you have installed "command line tools" with Xcode ?
This kind of error appears when some tools try to use the default search path for header instead of using the SDK distributed with Xcode.
The usual workaround is to install "command line tools" which provide these headers.
You can force installation of the "command line tools" by running the following in the terminal, and then choosing install in the dialog that appears.
Of course, a better solution would be to investigate and figure out what part of the build system relies on this header and fix it to properly use the Xcode SDK.
Thanks for the reply. I do, however, already have the command-line tools installed.
I finally try to build it too, and encounter the same issue. And the problem is in fact that the SDK sold with Xcode no longer provide the Python framework.
See this tech note for details: Technical Note TN2328: Changes To Embedding Python Using Xcode 5.0
I believe if you select "Current MacOSX" instead of the 10.9 SDK, you should be able to build. Or you can remove the Python.framework that is in the SDK. I believe the problem is there is a Python.framework in the SDK, but it is empty (no headers). If you remote the empty Python.framework from the SDK, it should fall back to the installed version.
I hoped it would be so easy, but I don’t have any Python.framework dir in the SDK, and in Xcode 5/Maverick, the default for no SDKROOT value is now latest OS X version, which result in 10.9 SDK and not in current system files.
I just checked with a new simple project and make sure there where no value for SDKROOT, and the compiler is invoked with:
And there is nothing like “Current OS X” in the SDKROOT build setting.
Even adding the framework to the project does not solve this issue.
Until I find a better solution, I will create a Python.framework symlink in my SDK.
The “Base SDK” setting can be changed. Click on your Xcode project in the project navigator and be sure to click the “All” button at the top so you see all settings, not just the ones that are customized:
But making a symlink for the Python.framework should work just as well.
I’m not sure what version of Xcode you are using, but on Xcode 5.0.2 on Maverick, the Base SDK menu give only me these options:
No “Current OS X” option appears, and when I select “No SDK”, Xcode fallbacks to 10.9 SDK.
Looks like the "No SDK (Latest OS X)" is the one you want and already have selected. Did you still have to make a symlink in order for this to build?
Yeah, I hit the same problem recently with Mavericks / Xcode 5.0.2. I noticed that the Mac OS X 10.8 SDK in the Xcode.app bundle has the Python framework - the 10.9 SDK does not. If I change the Base SDK setting to "OS X 10.8", lldb builds. The diff for your project file after doing this will look something like
Many thanks for the replies. I played around with various settings for the Base SDK but couldn't get the build to succeed. In the end I got it working by following the instructions in the tech note that Jean-Daniel linked to.
I made the changes recommended in the technote and checked it in to TOT, r195557. lldb builds cleanly on a Mavericks / Xcode 5.0 install again.