X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=docs%2FGettingStarted.rst;h=140210d1cc7c650de78419fb19d62929b1013ebe;hp=3d2ec1e99dc5d1fac09c806e42d9977d10e3b728;hb=e5639d354872c93df88343b208c238fbd701dd42;hpb=9802a6cbdc2ddcb445fc8620fd756654de6d85b4 diff --git a/docs/GettingStarted.rst b/docs/GettingStarted.rst index 3d2ec1e99dc..140210d1cc7 100644 --- a/docs/GettingStarted.rst +++ b/docs/GettingStarted.rst @@ -87,9 +87,10 @@ Here's the short story for getting up and running quickly with LLVM: * ``make check-all`` --- This run the regression tests to ensure everything is in working order. - * It is also possible to use CMake instead of the makefiles. With CMake it is - possible to generate project files for several IDEs: Xcode, Eclipse CDT4, - CodeBlocks, Qt-Creator (use the CodeBlocks generator), KDevelop3. + * It is also possible to use `CMake `_ instead of the makefiles. + With CMake it is possible to generate project files for several IDEs: + Xcode, Eclipse CDT4, CodeBlocks, Qt-Creator (use the CodeBlocks + generator), KDevelop3. * If you get an "internal compiler error (ICE)" or test failures, see `below`. @@ -114,7 +115,6 @@ LLVM is known to work on the following host platforms: ================== ===================== ============= OS Arch Compilers ================== ===================== ============= -AuroraUX x86\ :sup:`1` GCC Linux x86\ :sup:`1` GCC, Clang Linux amd64 GCC, Clang Linux ARM\ :sup:`4` GCC, Clang @@ -330,10 +330,23 @@ of this information from. .. _GCC wiki entry: http://gcc.gnu.org/wiki/InstallingGCC -Once you have a GCC toolchain, use it as your host compiler. Things should -generally "just work". You may need to pass a special linker flag, -``-Wl,-rpath,$HOME/toolchains/lib`` or some variant thereof to get things to -find the libstdc++ DSO in this toolchain. +Once you have a GCC toolchain, configure your build of LLVM to use the new +toolchain for your host compiler and C++ standard library. Because the new +version of libstdc++ is not on the system library search path, you need to pass +extra linker flags so that it can be found at link time (``-L``) and at runtime +(``-rpath``). If you are using CMake, this invocation should produce working +binaries: + +.. code-block:: console + + % mkdir build + % cd build + % CC=$HOME/toolchains/bin/gcc CXX=$HOME/toolchains/bin/g++ \ + cmake .. -DCMAKE_CXX_LINK_FLAGS="-Wl,-rpath,$HOME/toolchains/lib64 -L$HOME/toolchains/lib64" + +If you fail to set rpath, most LLVM binaries will fail on startup with a message +from the loader similar to ``libstdc++.so.6: version `GLIBCXX_3.4.20' not +found``. This means you need to tweak the -rpath linker flag. When you build Clang, you will need to give *it* access to modern C++11 standard library in order to use it as your new host in part of a bootstrap. @@ -680,7 +693,7 @@ The following options can be used to set or enable LLVM specific options: Enables optimized compilation (debugging symbols are removed and GCC optimization flags are enabled). Note that this is the default setting if you - are using the LLVM distribution. The default behavior of an Subversion + are using the LLVM distribution. The default behavior of a Subversion checkout is to use an unoptimized build (also known as a debug build). ``--enable-debug-runtime`` @@ -698,14 +711,12 @@ The following options can be used to set or enable LLVM specific options: Controls which targets will be built and linked into llc. The default value for ``target_options`` is "all" which builds and links all available targets. - The value "host-only" can be specified to build only a native compiler (no - cross-compiler targets available). The "native" target is selected as the - target of the build host. You can also specify a comma separated list of - target names that you want available in llc. The target names use all lower - case. The current set of targets is: + The "host" target is selected as the target of the build host. You can also + specify a comma separated list of target names that you want available in llc. + The target names use all lower case. The current set of targets is: - ``arm, cpp, hexagon, mips, mipsel, msp430, powerpc, ptx, sparc, spu, - systemz, x86, x86_64, xcore``. + ``aarch64, arm, arm64, cpp, hexagon, mips, mipsel, mips64, mips64el, msp430, + powerpc, nvptx, r600, sparc, systemz, x86, x86_64, xcore``. ``--enable-doxygen`` @@ -714,13 +725,6 @@ The following options can be used to set or enable LLVM specific options: generating the documentation can take a long time and producess 100s of megabytes of output. -``--with-udis86`` - - LLVM can use external disassembler library for various purposes (now it's used - only for examining code produced by JIT). This option will enable usage of - `udis86 `_ x86 (both 32 and 64 bits) - disassembler library. - To configure LLVM, follow these steps: #. Change directory into the object root directory: @@ -743,7 +747,7 @@ builds: Debug Builds - These builds are the default when one is using an Subversion checkout and + These builds are the default when one is using a Subversion checkout and types ``gmake`` (unless the ``--enable-optimized`` option was used during configuration). The build system will compile the tools and libraries with debugging information. To get a Debug Build using the LLVM distribution the @@ -1014,7 +1018,7 @@ This directory contains most of the source files of the LLVM system. In LLVM, almost all code exists in libraries, making it very easy to share code among the different `tools`_. -``llvm/lib/VMCore/`` +``llvm/lib/IR/`` This directory holds the core LLVM source files that implement core classes like Instruction and BasicBlock.