X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FGettingStarted.rst;h=2585ce135ba652123a92415e850b46c13a1c1c88;hb=d8f59233d2bc9587950e22ed5294db6e9f1c9128;hp=75f0e60c41f370cf56a5759494fad0a846a38627;hpb=60085fb9cd9a30653d78b5e717f06341e6e4e009;p=oota-llvm.git diff --git a/docs/GettingStarted.rst b/docs/GettingStarted.rst index 75f0e60c41f..2585ce135ba 100644 --- a/docs/GettingStarted.rst +++ b/docs/GettingStarted.rst @@ -1,5 +1,5 @@ ==================================== -Getting Started with the LLVM System +Getting Started with the LLVM System ==================================== .. contents:: @@ -49,12 +49,25 @@ Here's the short story for getting up and running quickly with LLVM: * ``cd llvm/tools`` * ``svn co http://llvm.org/svn/llvm-project/cfe/trunk clang`` -#. Checkout Compiler-RT: +#. Checkout Compiler-RT (required to build the sanitizers): * ``cd where-you-want-llvm-to-live`` * ``cd llvm/projects`` * ``svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt`` +#. Checkout Libomp (required for OpenMP support): + + * ``cd where-you-want-llvm-to-live`` + * ``cd llvm/projects`` + * ``svn co http://llvm.org/svn/llvm-project/openmp/trunk openmp`` + +#. Checkout libcxx and libcxxabi **[Optional]**: + + * ``cd where-you-want-llvm-to-live`` + * ``cd llvm/projects`` + * ``svn co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx`` + * ``svn co http://llvm.org/svn/llvm-project/libcxxabi/trunk libcxxabi`` + #. Get the Test Suite Source Code **[Optional]** * ``cd where-you-want-llvm-to-live`` @@ -62,7 +75,7 @@ Here's the short story for getting up and running quickly with LLVM: * ``svn co http://llvm.org/svn/llvm-project/test-suite/trunk test-suite`` #. Configure and build LLVM and Clang: - + The usual build uses `CMake `_. If you would rather use autotools, see `Building LLVM with autotools `_. @@ -70,16 +83,16 @@ Here's the short story for getting up and running quickly with LLVM: * ``mkdir build`` * ``cd build`` * ``cmake -G [options] `` - + Some common generators are: * ``Unix Makefiles`` --- for generating make-compatible parallel makefiles. * ``Ninja`` --- for generating `Ninja ` - build files. + build files. Most llvm developers use Ninja. * ``Visual Studio`` --- for generating Visual Studio projects and solutions. * ``Xcode`` --- for generating Xcode projects. - + Some Common options: * ``-DCMAKE_INSTALL_PREFIX=directory`` --- Specify for *directory* the full @@ -125,20 +138,20 @@ Hardware LLVM is known to work on the following host platforms: ================== ===================== ============= -OS Arch Compilers +OS Arch Compilers ================== ===================== ============= -Linux x86\ :sup:`1` GCC, Clang -Linux amd64 GCC, Clang -Linux ARM\ :sup:`4` GCC, Clang -Linux PowerPC GCC, Clang -Solaris V9 (Ultrasparc) GCC -FreeBSD x86\ :sup:`1` GCC, Clang -FreeBSD amd64 GCC, Clang -MacOS X\ :sup:`2` PowerPC GCC -MacOS X x86 GCC, Clang -Cygwin/Win32 x86\ :sup:`1, 3` GCC -Windows x86\ :sup:`1` Visual Studio -Windows x64 x86-64 Visual Studio +Linux x86\ :sup:`1` GCC, Clang +Linux amd64 GCC, Clang +Linux ARM\ :sup:`4` GCC, Clang +Linux PowerPC GCC, Clang +Solaris V9 (Ultrasparc) GCC +FreeBSD x86\ :sup:`1` GCC, Clang +FreeBSD amd64 GCC, Clang +MacOS X\ :sup:`2` PowerPC GCC +MacOS X x86 GCC, Clang +Cygwin/Win32 x86\ :sup:`1, 3` GCC +Windows x86\ :sup:`1` Visual Studio +Windows x64 x86-64 Visual Studio ================== ===================== ============= .. note:: @@ -207,14 +220,14 @@ Unix utilities. Specifically: * **chmod** --- change permissions on a file * **cat** --- output concatenation utility * **cp** --- copy files -* **date** --- print the current date/time +* **date** --- print the current date/time * **echo** --- print to standard output * **egrep** --- extended regular expression search utility * **find** --- find files/dirs in a file system * **grep** --- regular expression search utility * **gzip** --- gzip command for distribution generation * **gunzip** --- gunzip command for distribution checking -* **install** --- install directories/files +* **install** --- install directories/files * **mkdir** --- create a directory * **mv** --- move (rename) files * **ranlib** --- symbol table builder for archive libraries @@ -521,13 +534,28 @@ If you want to check out clang too, run: % cd llvm/tools % git clone http://llvm.org/git/clang.git -If you want to check out compiler-rt too, run: +If you want to check out compiler-rt (required to build the sanitizers), run: .. code-block:: console % cd llvm/projects % git clone http://llvm.org/git/compiler-rt.git +If you want to check out libomp (required for OpenMP support), run: + +.. code-block:: console + + % cd llvm/projects + % git clone http://llvm.org/git/openmp.git + +If you want to check out libcxx and libcxxabi (optional), run: + +.. code-block:: console + + % cd llvm/projects + % git clone http://llvm.org/git/libcxx.git + % git clone http://llvm.org/git/libcxxabi.git + If you want to check out the Test Suite Source Code (optional), run: .. code-block:: console @@ -619,7 +647,7 @@ To set up clone from which you can submit code using ``git-svn``, run: % git config svn-remote.svn.fetch :refs/remotes/origin/master % git svn rebase -l -Likewise for compiler-rt and test-suite. +Likewise for compiler-rt, libomp and test-suite. To update this clone without generating git-svn tags that conflict with the upstream Git repo, run: @@ -633,7 +661,7 @@ upstream Git repo, run: git checkout master && git svn rebase -l) -Likewise for compiler-rt and test-suite. +Likewise for compiler-rt, libomp and test-suite. This leaves your working directories on their master branches, so you'll need to ``checkout`` each working branch individually and ``rebase`` it on top of its @@ -714,9 +742,9 @@ used by people developing LLVM. | | the configure script. The default list is defined | | | as ``LLVM_ALL_TARGETS``, and can be set to include | | | out-of-tree targets. The default value includes: | -| | ``AArch64, ARM, CppBackend, Hexagon, | -| | Mips, MSP430, NVPTX, PowerPC, AMDGPU, Sparc, | -| | SystemZ, X86, XCore``. | +| | ``AArch64, AMDGPU, ARM, BPF, CppBackend, Hexagon, | +| | Mips, MSP430, NVPTX, PowerPC, Sparc, SystemZ | +| | X86, XCore``. | +-------------------------+----------------------------------------------------+ | LLVM_ENABLE_DOXYGEN | Build doxygen-based documentation from the source | | | code This is disabled by default because it is | @@ -838,7 +866,7 @@ with the latest Xcode: .. code-block:: console - % cmake -G "Ninja" -DCMAKE_OSX_ARCHITECTURES=“armv7;armv7s;arm64" + % cmake -G "Ninja" -DCMAKE_OSX_ARCHITECTURES="armv7;armv7s;arm64" -DCMAKE_TOOLCHAIN_FILE=/cmake/platforms/iOS.cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_BUILD_RUNTIME=Off -DLLVM_INCLUDE_TESTS=Off -DLLVM_INCLUDE_EXAMPLES=Off -DLLVM_ENABLE_BACKTRACES=Off [options] @@ -881,7 +909,7 @@ Underneath that directory there is another directory with a name ending in For example: .. code-block:: console - + % cd llvm_build_dir % find lib/Support/ -name APFloat* lib/Support/CMakeFiles/LLVMSupport.dir/APFloat.cpp.o @@ -990,7 +1018,7 @@ different `tools`_. code generation. For example, the ``llvm/lib/Target/X86`` directory holds the X86 machine description while ``llvm/lib/Target/ARM`` implements the ARM backend. - + ``llvm/lib/CodeGen/`` This directory contains the major parts of the code generator: Instruction @@ -1075,7 +1103,7 @@ the `Command Guide `_. The archiver produces an archive containing the given LLVM bitcode files, optionally with an index for faster lookup. - + ``llvm-as`` The assembler transforms the human readable LLVM assembly to LLVM bitcode. @@ -1088,7 +1116,7 @@ the `Command Guide `_. ``llvm-link``, not surprisingly, links multiple LLVM modules into a single program. - + ``lli`` ``lli`` is the LLVM interpreter, which can directly execute LLVM bitcode @@ -1219,7 +1247,7 @@ Example with clang .. code-block:: console % ./hello - + and .. code-block:: console