.. raw:: html

  <style type="text/css">
    .none { background-color: #FFCCCC }
    .partial { background-color: #FFFF99 }
    .good { background-color: #CCFF99 }
  </style>

.. role:: none
.. role:: partial
.. role:: good

===============
Windows support
===============

LLD supports Windows operating system. When invoked as ``lld-link.exe`` or with
``-flavor link``, the driver for Windows operating system is used to parse
command line options, and it drives further linking processes. LLD accepts
almost all command line options that the linker shipped with Microsoft Visual
C++ (link.exe) supports.

The current status is that LLD is used to link production builds of large
real-world binaries such as Firefox and Chromium.

Development status
==================

Driver
  :good:`Mostly done`. Some exotic command line options that are not usually
  used for application development, such as ``/DRIVER``, are not supported.

Linking against DLL
  :good:`Done`. LLD can read import libraries needed to link against DLL. Both
  export-by-name and export-by-ordinal are supported.

Linking against static library
  :good:`Done`. The format of static library (.lib) on Windows is actually the
  same as on Unix (.a). LLD can read it.

Creating DLL
  :good:`Done`. LLD creates a DLL if ``/DLL`` option is given. Exported
  functions can be specified either via command line (``/EXPORT``) or via
  module-definition file (.def). Both export-by-name and export-by-ordinal are
  supported.

Windows resource files support
  :good:`Done`. If an ``.res`` file is given, LLD converts the file to a COFF
  file using LLVM's Object library.

Safe Structured Exception Handler (SEH)
  :good:`Done` for both x86 and x64.

Module-definition file
  :partial:`Partially done`. LLD currently recognizes these directives:
  ``EXPORTS``, ``HEAPSIZE``, ``STACKSIZE``, ``NAME``, and ``VERSION``.

Debug info
  :good:`Done`.  LLD can emit PDBs that are at parity with those generated by
  link.exe.  However, LLD does not support /DEBUG:FASTLINK.


Downloading LLD
===============

The Windows version of LLD is included in the `pre-built binaries of LLVM's
releases <https://releases.llvm.org/download.html>`_ and in the `LLVM Snapshot
Builds <https://llvm.org/builds/>`_.

Building LLD
============

Using Visual Studio IDE/MSBuild
-------------------------------

1. Check out LLVM and LLD from the LLVM SVN repository (or Git mirror),
#. run ``cmake -G "Visual Studio 12" <llvm-source-dir>`` from VS command prompt,
#. open LLVM.sln with Visual Studio, and
#. build ``lld`` target in ``lld executables`` folder

Alternatively, you can use msbuild if you don't like to work in an IDE::

  msbuild LLVM.sln /m /target:"lld executables\lld"

MSBuild.exe had been shipped as a component of the .NET framework, but since
2013 it's part of Visual Studio. You can find it at "C:\\Program Files
(x86)\\msbuild".

You can build LLD as a 64 bit application. To do that, open VS2013 x64 command
prompt and run cmake for "Visual Studio 12 Win64" target.

Using Ninja
-----------

1. Check out LLVM and LLD from the LLVM SVN repository (or Git mirror),
#. run ``cmake -G ninja <llvm-source-dir>`` from VS command prompt,
#. run ``ninja lld``
