==================================================================
Getting Started with the LLVM System using Microsoft Visual Studio
==================================================================


.. contents::
   :local:


Overview
========
Welcome to LLVM on Windows! This document only covers LLVM on Windows using
Visual Studio, not WSL, mingw or cygwin. In order to get started, you first need
to know some basic information.

LLVM is composed of many different projects. The first piece is the
LLVM suite. This contains all of the tools, libraries, and header files needed
to use LLVM. It contains an assembler, disassembler, bitcode analyzer, and
bitcode optimizer. It also contains basic regression tests that can be used to
test the LLVM tools and the Clang front end.

The second piece is the `Clang <https://clang.llvm.org/>`_ front end.  This
component compiles C, C++, Objective C, and Objective C++ code into LLVM
bitcode. Clang typically uses LLVM libraries to optimize the bitcode and emit
machine code. LLVM fully supports the COFF object file format, which is
compatible with all other existing Windows toolchains.

This document does not discuss other LLVM projects.


Requirements
============
Before you begin to use the LLVM system, review the requirements given
below.  This may save you some trouble by knowing ahead of time what hardware
and software you will need.

Hardware
--------
Any system that can adequately run Visual Studio 2019 is fine. The LLVM
source tree, including the git index, consumes approximately 3GB.
Object files, libraries, and executables consume approximately 5GB in
Release mode and much more in Debug mode. An SSD drive and >16GB RAM are
recommended.


Software
--------
You will need `Visual Studio <https://visualstudio.microsoft.com/>`_ 2019 or
later, with the latest Update installed. Visual Studio Community Edition
suffices.

You will also need the `CMake <http://www.cmake.org/>`_ build system since it
generates the project files you will use to build with. CMake is bundled with
Visual Studio 2019 so a separate installation is not required. If you do install
CMake separately, Visual Studio 2022 will require CMake Version 3.21 or later.

If you would like to run the LLVM tests you will need `Python
<http://www.python.org/>`_. Version 3.8 and newer are known to work. You can
install Python with Visual Studio 2019, from the Microsoft store or from
the `Python web site <http://www.python.org/>`_. We recommend the latter since it
allows you to adjust installation options.

You will need `Git for Windows <https://git-scm.com/>`_ with bash tools, too.
Git for Windows is also bundled with Visual Studio 2019.


Getting Started
===============
Here's the short story for getting up and running quickly with LLVM.
These instructions were tested with Visual Studio 2019 and Python 3.9.6:

1. Download and install `Visual Studio <https://visualstudio.microsoft.com/>`_.
2. In the Visual Studio installer, Workloads tab, select the
   **Desktop development with C++** workload. Under Individual components tab,
   select **Git for Windows**.
3. Complete the Visual Studio installation.
4. Download and install the latest `Python 3 release <http://www.python.org/>`_.
5. In the first install screen, select both **Install launcher for all users**
   and **Add Python to the PATH**. This will allow installing psutil for all
   users for the regression tests and make Python available from the command
   line.
6. In the second install screen, select (again) **Install for all users** and
   if you want to develop `lldb <https://lldb.llvm.org/>`_, selecting
   **Download debug binaries** is useful.
7. Complete the Python installation.
8. Run a "Developer Command Prompt for VS 2019" **as administrator**. This command
    prompt provides the correct path and environment variables to Visual Studio and
    the installed tools.
9. In the terminal window, type the commands:

   .. code-block:: bat

     c:
     cd \

  You may install the llvm sources in a location other than ``c:\llvm`` but do not
  install into a path containing spaces (e.g., ``c:\Documents and Settings\...``)
  as it will fail.

10. Register the Microsoft Debug Interface Access (DIA) DLLs:

    .. code-block:: bat

     regsvr32 "%VSINSTALLDIR%\DIA SDK\bin\msdia140.dll"
     regsvr32 "%VSINSTALLDIR%\DIA SDK\bin\amd64\msdia140.dll"

 The DIA library is required for LLVM PDB tests and
 `LLDB development <https://lldb.llvm.org/resources/build.html>`_.

11. Install psutil and obtain the LLVM source code:

    .. code-block:: bat

     pip install psutil
     git clone https://github.com/llvm/llvm-project.git llvm

 Instead of ``git clone`` you may download a compressed source distribution
 from the `releases page <https://github.com/llvm/llvm-project/releases>`_.
 Select the last link: ``Source code (zip)`` and unpack the downloaded file using
 Windows Explorer built-in zip support or any other unzip tool.

12. Finally, configure LLVM using CMake:

    .. code-block:: bat

       cmake -S llvm\llvm -B build -DLLVM_ENABLE_PROJECTS=clang -DLLVM_TARGETS_TO_BUILD=X86 -Thost=x64
       exit

   ``LLVM_ENABLE_PROJECTS`` specifies any additional LLVM projects you want to
   build while ``LLVM_TARGETS_TO_BUILD`` selects the compiler targets. If
   ``LLVM_TARGETS_TO_BUILD`` is omitted by default all targets are built
   slowing compilation and using more disk space.
   See the :doc:`LLVM CMake guide <CMake>` for detailed information about
   how to configure the LLVM build.

   The ``cmake`` command line tool is bundled with Visual Studio but its GUI is
   not. You may install `CMake <http://www.cmake.org/>`_ to use its GUI to change
   CMake variables or modify the above command line.

   * Once CMake is installed then the simplest way is to just start the
     CMake GUI, select the directory where you have LLVM extracted to, and
     the default options should all be fine.  One option you may really
     want to change, regardless of anything else, might be the
     ``CMAKE_INSTALL_PREFIX`` setting to select a directory to INSTALL to
     once compiling is complete, although installation is not mandatory for
     using LLVM.  Another important option is ``LLVM_TARGETS_TO_BUILD``,
     which controls the LLVM target architectures that are included on the
     build.
   * CMake generates project files for all build types. To select a specific
     build type, use the Configuration manager from the VS IDE or the
     ``/property:Configuration`` command-line option when using MSBuild.
   * By default, the Visual Studio project files generated by CMake use the
     32-bit toolset. If you are developing on a 64-bit version of Windows and
     want to use the 64-bit toolset, pass the ``-Thost=x64`` flag when
     generating the Visual Studio solution. This requires CMake 3.8.0 or later.

13. Start Visual Studio and select configuration:

   In the directory you created the project files will have an ``llvm.sln``
   file, just double-click on that to open Visual Studio. The default Visual
   Studio configuration is **Debug** which is slow and generates a huge amount
   of debug information on disk. For now, we recommend selecting **Release**
   configuration for the LLVM project which will build the fastest or
   **RelWithDebInfo** which is also several time larger than Release.
   Another technique is to build all of LLVM in Release mode and change
   compiler flags, disabling optimization and enabling debug information, only
   for specific libraries or source files you actually need to debug.

14. Test LLVM in Visual Studio:

   You can run LLVM tests by merely building the project "check-all". The test
   results will be shown in the VS output window. Once the build succeeds, you
   have verified a working LLVM development environment!

   You should not see any unexpected failures, but you will see many unsupported
   tests and expected failures:

   ::

    114>Testing Time: 1124.66s
    114>  Skipped          :    39
    114>  Unsupported      : 21649
    114>  Passed           : 51615
    114>  Expectedly Failed:    93
    ========== Build: 114 succeeded, 0 failed, 321 up-to-date, 0 skipped ==========``

Alternatives to manual installation
===================================
Instead of the steps above, to simplify the installation procedure you can use
`Chocolatey <https://chocolatey.org/>`_ as package manager.
After the `installation <https://chocolatey.org/install>`_ of Chocolatey,
run these commands in an admin shell to install the required tools:

.. code-block:: bat

   choco install -y git cmake python3
   pip3 install psutil

There is also a Windows
`Dockerfile <https://github.com/llvm/llvm-zorg/blob/main/buildbot/google/docker/windows-base-vscode2019/Dockerfile>`_
with the entire build toolchain. This can be used to test the build with a
toolchain different from your host installation or to create build servers.

Next steps
==========
1. Read the documentation.
2. Seriously, read the documentation.
3. Remember that you were warned twice about reading the documentation.

Test LLVM on the command line:
------------------------------
The LLVM tests can be run by changing directory to the llvm source
directory and running:

.. code-block:: bat

  c:\llvm> python ..\build\Release\bin\llvm-lit.py llvm\test

This example assumes that Python is in your ``PATH`` variable, which would be
after **Add Python to the PATH** was selected during Python installation.
If you had opened a command window prior to Python installation, you would
have to close and reopen it to get the updated ``PATH``.

A specific test or test directory can be run with:

.. code-block:: bat

  c:\llvm> python ..\build\Release\bin\llvm-lit.py llvm\test\Transforms\Util

Build the LLVM Suite:
---------------------
* The projects may still be built individually, but to build them all do
  not just select all of them in batch build (as some are meant as
  configuration projects), but rather select and build just the
  ``ALL_BUILD`` project to build everything, or the ``INSTALL`` project,
  which first builds the ``ALL_BUILD`` project, then installs the LLVM
  headers, libs, and other useful things to the directory set by the
  ``CMAKE_INSTALL_PREFIX`` setting when you first configured CMake.
* The Fibonacci project is a sample program that uses the JIT. Modify the
  project's debugging properties to provide a numeric command-line argument
  or run it from the command line.  The program will print the
  corresponding fibonacci value.


Links
=====
This document is just an **introduction** to how to use LLVM to do some simple
things... there are many more interesting and complicated things that you can
do that aren't documented here (but we'll gladly accept a patch if you want to
write something up!).  For more information about LLVM, check out:

* `LLVM homepage <https://llvm.org/>`_
* `LLVM doxygen tree <https://llvm.org/doxygen/>`_
* Additional information about the LLVM directory structure and tool chain
  can be found on the main :doc:`GettingStarted` page.
* If you are having problems building or using LLVM, or if you have any other
  general questions about LLVM, please consult the
  :doc:`Frequently Asked Questions <FAQ>` page.
