.. _module-pw_third_party_boringssl:

=========
BoringSSL
=========

The ``$dir_pw_third_party/boringssl`` module provides the build files to
compile and use BoringSSL. The source code of BoringSSL needs to be provided by
the user. It is recommended to download it via Git submodules.

-------------
Build support
-------------

This module provides support to compile BoringSSL with GN. This is required when
compiling backends modules that use BoringSSL, such as some facades in
:ref:`module-pw_crypto`

Submodule
=========

The recommended way to include BoringSSL source code is to add it as a
submodule:

.. code-block:: sh

  git submodule add https://boringssl.googlesource.com/boringssl/ \
      third_party/boringssl/src

GN
==
The GN build file depends on a generated file called ``BUILD.generated.gni``
with the list of the different types of source files for the selected BoringSSL
version.

.. code-block:: sh

  cd third_party/boringssl
  python src/util/generate_build_files.py gn

The GN variables needed are defined in
``$dir_pw_third_party/boringssl/boringssl.gni``:

#. Set the GN ``dir_pw_third_party_boringssl`` to the path of the BoringSSL
   installation.

   - If using the submodule path from above, add the following to the
     ``default_args`` in the project's ``.gn``:

     .. code-block::

       dir_pw_third_party_boringssl = "//third_party/boringssl/src"

#. Having a non-empty ``dir_pw_third_party_boringssl`` variable causes GN to
   attempt to include the ``BUILD.generated.gni`` file from the sources even
   during the bootstrap process before the source package is installed by the
   bootstrap process. To avoid this problem, set this variable to the empty
   string during bootstrap by adding it to the ``virtualenv.gn_args`` setting in
   the ``env_setup.json`` file:

   .. code-block:: json

     {
       "virtualenv": {
         "gn_args": [
           "dir_pw_third_party_boringssl=\"\""
         ]
       }
     }

#. Alternatively, set the GN ``pw_third_party_boringssl_ALIAS`` to your
   boringssl build target if you would like to use your own build target instead
   of the one provided by Pigweed. This should be used instead of
   ``dir_pw_third_party_boringssl``. This fixes diamond dependency conflicts
   caused by two build targets using the same source files.

After this is done a ``pw_source_set`` for the BoringSSL library is created at
``$dir_pw_third_party/boringssl``.
