[lldb-dev] LLDB @ Mac OSX: build on Snow Leopard (still) supported?
Greg Clayton
gclayton at apple.com
Tue Feb 4 09:52:57 PST 2014
Try:
svn co http://llvm.org/svn/llvm-project/lldb/trunk lldb
cd lldb
xcodebuild -configuration Debug
The current LLDB and clang sources require C++11, and I am not sure how good the C++11 compiler was on SnowLeopard.
Greg
On Feb 4, 2014, at 9:47 AM, Bjoern Kahl <mls at bjoern-kahl.de> wrote:
>
> Dear All,
>
> 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?
>
>
> First, trying XCode as suggested on http://lldb.llvm.org/build.html,
> failed as follows:
>
> ----------------------------------------
>
>
> The links for Xcode builds point to non-existing / wrong pages, but
> that let aside, a simple SVN checkout
>
>> "svn co http://llvm.org/svn/llvm-project/lldb/trunk lldb"
>
> and then running
>
>> "cd lldb && xcodebuild -project lldb.xcodeproj -target lldb-tool"
>
> tries a "BuildAndIntegration" build, picking "/Developer/usr/bin/clang"
> as compiler (correct for XCode 3.x on Snow Leopard) but complains
> "clang: error: unable to execute command: clang-cc is not executable"
>
>
> Instead of stopping, it proceeds to checkout llvm and starts compiling
> that which generates tons of errors, first few cited here (paths
> shortened):
>
>> missing archive: '/.../lldb/build/llvm/x86_64/Release/lib/libclang.a'
>> missing archive:
> '/.../lldb/build/llvm/x86_64/Release/lib/libclangAnalysis.a'
>> missing archive: '/.../lldb/build/llvm/x86_64/Release/lib/libclangAST.a'
>
> several more of that follow, then (paths shortened)
>
>> % cd '/.../lldb/build/llvm/x86_64' && make -j2 clang-only VERBOSE=1
> NO_RUNTIME_LIBS=1 PROJECT_NAME='llvm'
>> make: *** No rule to make target `clang-only'. Stop.
>> error: making llvm and clang child exited with value 2
>
> it should stop here, but instead goes on (paths shortened):
>
>> CompileC
>> build/lldb.build/BuildAndIntegration/lldb-core.build/Objects-normal/x86_64/DynamicLibrary.o
>> source/Host/common/DynamicLibrary.cpp normal x86_64 c++
>> com.apple.compilers.llvmgcc42
>> cd /.../lldb
>> setenv LANG en_US.US-ASCII
>> /Developer/usr/bin/llvm-gcc-4.2 -x c++ -arch x86_64
>> -fmessage-length=0 -pipe -Wno-trigraphs -fpascal-strings -fasm-blocks
>> -Os -Wmissing-field-initializers -Wreturn-type -Wnon-virtual-dtor
>> -Woverloaded-virtual -Wmissing-braces -Wparentheses -Wunused-label
>> -Wunused-variable -Wunused-value -Wuninitialized -Wnewline-eof
>> -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS
>> -DLLDB_CONFIGURATION_BUILD_AND_INTEGRATION -gdwarf-2 -iquote
>> /.../lldb/build/lldb.build/BuildAndIntegration/lldb-core.build/liblldb-core-generated-files.hmap
>> -
>> -I/.../lldb/build/lldb.build/BuildAndIntegration/lldb-core.build/liblldb-core-own-target-headers.hmap
>> -
>> -I/.../lldb/build/lldb.build/BuildAndIntegration/lldb-core.build/liblldb-core-all-target-headers.hmap
>> -iquote
>> /.../lldb/build/lldb.build/BuildAndIntegration/lldb-core.build/liblldb-core-project-headers.hmap
>> -Wreorder -F/.../lldb/build/BuildAndIntegration
>> -F/System/Library/PrivateFrameworks -iquote/.../lldb/include
>> -iquote/.../lldb/source -iquote/.../lldb/llvm/include
>> -iquote/.../lldb/llvm/tools/clang/include
>> -iquote/.../lldb/build/llvm/x86_64/include
>> -iquote/.../lldb/build/llvm/x86_64/tools/clang/include
>> -I/.../lldb/build/BuildAndIntegration/include -I/usr/include/libxml2
>> -
>> -I/.../lldb/build/lldb.build/BuildAndIntegration/lldb-core.build/DerivedSources/x86_64
>> -
>> -I/.../lldb/build/lldb.build/BuildAndIntegration/lldb-core.build/DerivedSources
>> -
>> -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7
>> -fno-rtti -Wglobal-constructors -flimit-debug-info -Wparentheses
>> -DLLDB_USE_BUILTIN_DEMANGLER -c
>> /.../lldb/source/Host/common/DynamicLibrary.cpp -o
>> /.../lldb/build/lldb.build/BuildAndIntegration/lldb-core.build/Objects-normal/x86_64/DynamicLibrary.o
>>
>> In file included from /.../lldb/source/Host/common/DynamicLibrary.cpp:10:
>> /.../lldb/include/lldb/Core/Error.h:14:36: error:
>> llvm/Support/DataTypes.h: No such file or directory
>
>
> Which is not really surprising, given that it failed to build a
> newer llvm & clang before.
>
>
>
> Second try, autoconf & make build:
>
> ----------------------------------------
>
>
> Following the instruction for FreeBSD leads significantly further,
> successfully building llvm and clang. However it dies in the MacOSX
> specific parts of LLDB:
>
> Build environment:
>
> Snow Leopard 10.6.8 with XCode 3.2.6 and latest MacPorts of today
> installed.
>
> libcxx, libcxxabi, gcc / g++ 4.8 installed by MacPorts and up to date.
> llvm-3.5, clang-3.5 from SVN
>
> Attempted build:
>
> Following the instructions on the web page, I did:
>
> - a svn checkout of llvm trunk into ${myllvm}
>
> - a svn checkout of clang into ${myllvm}/tools/clang
>
> - a svn checkout of lldb into ${myllvm}/tools/lldb
>
> - created build directory at ${llvm}/../myBuild as ${mybuild}
>
> - cd ${mybuild}
>
> - configured as ${myllvm}/configure --enable-cxx11 --enable-optimized
> CC=/opt/local/bin/gcc CXX=/opt/local/bin/g++
>
> This picks up gcc-4.8
>
> - make CC=/opt/local/bin/gcc CXX=/opt/local/bin/g++
>
> This sequence built llvm and clang.
>
>
> The LLDB build failed in file "source/Host/common/FileSpec.cpp" due to
> missing definition of "PATH_MAX".
>
> I had to:
>
> - adding "#include <limits.h>" at the top of the file to let the build
> proceed.
>
> The LLDB build finally failed in file "source/Host/macosx/Host.mm",
> because g++-4.8 can not compile the closures in function
> StartMonitoringChildProcess(). In fact, it already does not see the
> block variant of "::dispatch_source_set_cancel_handler", it only sees
> the function variant ::dispatch_source_set_cancel_handler_f, and
> complains about an undeclared symbol.
>
>
> If I comment out the offending lines (thereby breaking LLDB), then the
> build completes until final linker step of "liblldb.dylib". Linking
> fails with missing "-ledit" for libedit and "-lpanel" for the pannels
> extension to ncurses.
>
> Adding the missing linker options, then link fails with
> pthread_chdir() and pthread_fchdir() undefined. These interfaces do
> not exists on Snow Leopard, there seems to be no library that exports
> this functions.
>
>
> Using clang:
>
> Compiling with clang-3.5 fails because it can't parse the c++ stdlib
> header due to missing support for the "atomic" header. (Message:
> ".../include/lldb/Utility/SharingPtr.h:22:10: fatal error:
> 'atomic' file not found"
>
>
> Trying the llvm_3.4 release instead of trunk:
>
> Compiling with gcc-4.8 has the same problems as the SVN trunk version,
> except different symbol missing when linking liblldb.dylib: -ledit
> and -lpanel are apparently unneeded, but instead of it misses
> SystemRuntimeMacOSX::Initialize() and SystemRuntimeMacOSX::Terminate()
>
>
> Questions:
>
> Would it be possible to implement the handling of child process in
> standard C/C++ instead of Objective-C++ so g++-4.8 can compile it (or
> at least using the function interface instead of the blocks interface)?
>
>
> Shouldn't clang be able to compile LLDB, i.e. support all needed
> interfaces including "atomic"
> -- or --
> how can clang be taught to use an appropriate c++ stdlib which includes
> "atomic"?
>
>
> Why do I need to checkout *and* *compile* a separate llvm and clang
> tree to build LLDB, even when the system has an installed llvm and
> clang?
>
>
> Any hints are most appreciated
>
> Björn
>
> --
> | Bjoern Kahl +++ Siegburg +++ Germany |
> | "googlelogin at -my-domain-" +++ www.bjoern-kahl.de |
> | Languages: German, English, Ancient Latin (a bit :-)) |
>
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
More information about the lldb-dev
mailing list