Hi Jason, hi All, Am 04.02.14 23:17, schrieb Jason Molenda: > > On Feb 4, 2014, at 9:47 AM, Bjoern Kahl <[email protected]> wrote: > >> 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
foreseeable future. :-)
> 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.
Fixing toolchain:
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.
Björn
--
| Bjoern Kahl +++ Siegburg +++ Germany |
| "googlelogin@-my-domain-" +++ www.bjoern-kahl.de |
| Languages: German, English, Ancient Latin (a bit :-)) |
diff --git a/lib/Makefile b/lib/Makefile
index cfe4cd3..bb5c6a0 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -130,7 +130,7 @@ ifeq ($(HOST_OS),Darwin)
LLVMLibsOptions += -framework Foundation -framework CoreFoundation
LLVMLibsOptions += -framework CoreServices -framework Carbon -framework
Security
LLVMLibsOptions += -framework DebugSymbols $(PYTHON_BUILD_FLAGS) -lobjc
- LLVMLibsOptions += -lxml2
+ LLVMLibsOptions += -lxml2 -lpanel
ifneq ($(EXPORTED_SYMBOL_FILE),)
LLVMLibsOptions += -Wl,-exported_symbols_list
-Wl,"$(EXPORTED_SYMBOL_FILE)"
endif
diff --git a/source/Host/common/FileSpec.cpp b/source/Host/common/FileSpec.cpp
index 48f1ac7..1fb5e7b 100644
--- a/source/Host/common/FileSpec.cpp
+++ b/source/Host/common/FileSpec.cpp
@@ -8,6 +8,8 @@
//===----------------------------------------------------------------------===//
+#include <limits.h>
+
#ifndef _WIN32
#include <dirent.h>
#else
diff --git a/source/Host/common/Host.cpp b/source/Host/common/Host.cpp
index 62e4ee9..d211005 100644
--- a/source/Host/common/Host.cpp
+++ b/source/Host/common/Host.cpp
@@ -74,11 +74,13 @@
#define _POSIX_SPAWN_DISABLE_ASLR 0x0100
#endif
+#if defined (CONFIG_HAS_PTHREAD_CHDIR)
extern "C"
{
int __pthread_chdir(const char *path);
int __pthread_fchdir (int fildes);
}
+#endif
#endif
@@ -1781,7 +1783,7 @@ Host::LaunchProcessPosixSpawn (const char *exe_path,
ProcessLaunchInfo &launch_i
argv = (char * const*)tmp_argv;
}
-#if !defined (__APPLE__)
+#if !defined (CONFIG_HAS_PTHREAD_CHDIR)
// manage the working directory
char current_dir[PATH_MAX];
current_dir[0] = '\0';
@@ -1790,7 +1792,7 @@ Host::LaunchProcessPosixSpawn (const char *exe_path,
ProcessLaunchInfo &launch_i
const char *working_dir = launch_info.GetWorkingDirectory();
if (working_dir)
{
-#if defined (__APPLE__)
+#if defined (CONFIG_HAS_PTHREAD_CHDIR)
// Set the working directory on this thread only
if (__pthread_chdir (working_dir) < 0) {
if (errno == ENOENT) {
@@ -1899,7 +1901,7 @@ Host::LaunchProcessPosixSpawn (const char *exe_path,
ProcessLaunchInfo &launch_i
if (working_dir)
{
-#if defined (__APPLE__)
+#if defined (CONFIG_HAS_PTHREAD_CHDIR)
// No more thread specific current working directory
__pthread_fchdir (-1);
#else
diff --git a/source/Host/macosx/Host.mm b/source/Host/macosx/Host.mm
index fad2aaa..3895249 100644
--- a/source/Host/macosx/Host.mm
+++ b/source/Host/macosx/Host.mm
@@ -70,11 +70,14 @@
#define _POSIX_SPAWN_DISABLE_ASLR 0x0100
#endif
+#if defined(CONFIG_HAS_PTHREAD_CHDIR)
+/* The following is unused in this file, so is this extern declaration needed?
*/
extern "C"
{
int __pthread_chdir(const char *path);
int __pthread_fchdir (int fildes);
}
+#endif
using namespace lldb;
using namespace lldb_private;
signature.asc
Description: OpenPGP digital signature
_______________________________________________ lldb-dev mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
