.. _module-pw_build_android:

================
pw_build_android
================
.. pigweed-module::
   :name: pw_build_android

``pw_build_android`` provides simple utilities and guidelines for building with
Soong.

----------
Quickstart
----------
Use the ``pw_android_common_backends`` ``cc_defaults`` in the Pigweed module
library or binary rule to use a preselected set of backends common to most
Android platform projects.

.. code-block:: javascript

   cc_binary {
       name: "my_app",
       host_supported: true,
       vendor: true,
       defaults: [
           "pw_android_common_backends",
       ],
       srcs: [
           "main.cc",
       ],
   }


----------------------------
Basic blueprint files format
----------------------------
All Pigweed Soong blueprint files must be named ``Android.bp``, and include the
folowing copyright header with the year adjusted and package.

.. code-block:: javascript

   // Copyright 2024 The Pigweed Authors
   //
   // Licensed under the Apache License, Version 2.0 (the "License"); you may not
   // use this file except in compliance with the License. You may obtain a copy of
   // the License at
   //
   //     https://www.apache.org/licenses/LICENSE-2.0
   //
   // Unless required by applicable law or agreed to in writing, software
   // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
   // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
   // License for the specific language governing permissions and limitations under
   // the License.

   package {
       default_applicable_licenses: ["external_pigweed_license"],
   }

The ``bpfmt`` tool in Android can be used to format a blueprint file, e.g.
``bpfmt -w Android.bp``.

.. _module-pw_build_android-common-backends:

-----------------------
Common Android backends
-----------------------
Soong doesn't provide a simple way to select custom Pigweed backends, as is
found in other build systems. Fortunately, most Android platform binaries will
likely use the same common set of backends. Thus, Pigweed provides a
``cc_defaults`` rule named ``pw_android_common_backends`` with a selected set of
common backends for Android platform binaries. This
``pw_android_common_backends`` rule will be used in all Pigweed modules and
backends defined using Soong.

This table lists the backends selected by this rule:

.. list-table:: ``pw_android_common_backends``
   :align: left
   :header-rows: 1

   * - Facade
     - Selected Backend
   * - :ref:`module-pw_assert`
     - :ref:`module-pw_assert_log`
   * - :ref:`module-pw_log`
     - :ref:`module-pw_log_android`
   * - :ref:`module-pw_chrono`
     - :ref:`module-pw_chrono_stl`
   * - :ref:`module-pw_sync`
     - :ref:`module-pw_sync_stl`
   * - :ref:`module-pw_thread`
     - :ref:`module-pw_thread_stl`

.. _module-pw_build_android-module-libraries:

----------------
Module libraries
----------------
Module libraries are defined as ``cc_library_static`` rules and include the
common Android backends via the ``pw_android_common_backends`` defaults.

.. note::

   Every dependency has to be added as ``whole_static_libs`` to avoid dropping
   symbols on transitive dependencies.

.. code-block:: javascript

   cc_library_static {
       name: "pw_<MODULE_NAME>",
       cpp_std: "c++20",
       export_include_dirs: ["public"],
       vendor_available: true,
       host_supported: true,
       defaults: [
           "pw_android_common_backends",
       ],
       header_libs: [
           // Header library list for all the libraries in #include directives.
       ],
       export_header_lib_headers: [
           // Header library list for all the libraries in #include directives
           // in public header files only.
           // These entries must also be present in header_libs.
       ],
       whole_static_libs: [
           // Static library list for all static library dependencies, listed as
           // whole libraries to avoid dropping symbols in transitive
           // dependencies.
       ],
       export_static_lib_headers: [
           // Static library list for static libraries in #include directives in
           // public header files only.
           // These entries must also be present in whole_static_libs.
       ],
       srcs: [
           // List of source (.cc) files.
       ],
   }

Module libraries with custom backends
-------------------------------------
If a Pigweed module needs to be used with a backend different than the common
Android backend, it should be defined as a ``cc_defaults`` rule following the
``pw_<MODULE_NAME>_no_backends`` name format, with the source files listed in a
``filegroup`` following the ``pw_<MODULE_NAME>_src_files`` name format and the
include directories defined as a ``cc_library_headers`` following the
``pw_<MODULE_NAME>_include_dirs`` name format. A ``cc_static_library`` with the
common Android backend should still be provided, which uses the mentioned
``cc_defaults``.

.. note::

   ``filegroup`` captures the absolute paths of the listed source files, so they
   can be addressed properly when the ``cc_defaults`` rule is used.

.. code-block:: javascript

   filegroup {
       name: "pw_<MODULE_NAME>_src_files",
       srcs: [
           // List of source (.cc) files.
       ],
   }

    cc_library_headers {
        name: "pw_<MODULE_NAME>_include_dirs",
        export_include_dirs: [
            "public",
        ],
        vendor_available: true,
        host_supported: true,
    }

   cc_defaults {
       name: "pw_<MODULE_NAME>_no_backends",
       cpp_std: "c++20",

       header_libs: [
           // Header library list for all the libraries in #include directives.
           "pw_<MODULE_NAME>_include_dirs"
       ],
       export_header_lib_headers: [
           // Header library list for all the libraries in #include directives
           // in public header files only.
           // These entries must also be present in header_libs.
       ],
       whole_static_libs: [
           // Static library list for all static library dependencies, listed as
           // whole libraries to avoid dropping symbols in transitive
           // dependencies.
       ],
       export_static_lib_headers: [
           // Static library list for static libraries in #include directives in
           // public header files only.
           // These entries must also be present in whole_static_libs.
       ],
       srcs: [
           "pw_<MODULE_NAME>_src_files",
       ],
   }

   cc_library_static {
       name: "pw_<MODULE_NAME>",
       cpp_std: "c++20",
       export_include_dirs: ["public"],
       defaults: [
           "pw_android_common_backends",
           "pw_<MODULE_NAME>_no_backends",
       ],
       vendor_available: true,
       host_supported: true,
   }

Module libraries with configurable build flags
----------------------------------------------
If a Pigweed module provides user-configurable build flags it should be defined
as a ``cc_defaults`` rule following the ``pw_<MODULE_NAME>_defaults`` name
format. This hints the user that the rule must be initialized with the desired
build flag values. Source files must be listed in a ``filegroup`` following the
``pw_<MODULE_NAME>_src_files`` name format and the include directories defined
as a ``cc_library_headers`` following the ``pw_<MODULE_NAME>_include_dirs`` name
format.

.. code-block:: javascript

   filegroup {
       name: "pw_<MODULE_NAME>_src_files",
       srcs: [
           // List of source (.cc) files.
       ],
   }

    cc_library_headers {
        name: "pw_<MODULE_NAME>_include_dirs",
        export_include_dirs: [
            "public",
        ],
        vendor_available: true,
        host_supported: true,
    }

   cc_defaults {
       name: "pw_<MODULE_NAME>_defaults",
       cpp_std: "c++20",

       header_libs: [
           // Header library list for all the libraries in #include directives.
           "pw_<MODULE_NAME>_include_dirs"
       ],
       export_header_lib_headers: [
           // Header library list for all the libraries in #include directives
           // in public header files only.
           // These entries must also be present in header_libs.
       ],
       whole_static_libs: [
           // Static library list for all static library dependencies, listed as
           // whole libraries to avoid dropping symbols in transitive
           // dependencies.
       ],
       export_static_lib_headers: [
           // Static library list for static libraries in #include directives in
           // public header files only.
           // These entries must also be present in whole_static_libs.
       ],
       srcs: [
           "pw_<MODULE_NAME>_src_files",
       ],
   }

A downstream user can instantiate the ``pw_<MODULE_NAME>_defaults`` rule as
follows.

.. note::

   To avoid collisions the rule using the ``cc_defaults`` must have a unique
   name that distinguishes it from other rule names in Pigweed and other
   projects. It is recommended to suffix the project name.

.. code-block:: javascript

   cc_library_static {
       name: "pw_<MODULE_NAME>_<PROJECT_NAME>",
       cflags: [
           "-DPW_<MODULE_NAME>_<FLAG_NAME>=<FLAG_VALUE>",
       ],
       defaults: [
           "pw_<MODULE_NAME>_defaults",
       ],
   }

-------
Facades
-------
All facades must be defined as ``cc_library_headers`` if they don’t have
``srcs`` list. The facade names follow the ``pw_<MODULE_NAME>.<FACADE_NAME>``.
In the case there is only one facade in the module or ``<MODULE_NAME>`` is
the same as ``<FACADE_NAME>`` follow ``pw_<MODULE_NAME>``, e.g. ``pw_log``.

.. note::
   Facade names should not be suffixed with ``_headers``.

.. code-block:: javascript

   cc_library_headers {
       name: "pw_<MODULE_NAME>.<FACADE_NAME>",
       cpp_std: "c++20",
       vendor_available: true,
       host_supported: true,
       export_include_dirs: ["public"],
   }

If a facade requires a ``srcs`` list, it must be defined as a ``cc_defaults``
rule instead, with the source files listed in a ``filegroup`` following the
``pw_<MODULE_NAME>.<FACADE_NAME>_files`` name format or
``pw_<MODULE_NAME>_files`` if applicable.

.. note::

   ``filegroup`` captures the absolute paths of the listed source files, so they
   can be addressed properly when the ``cc_defaults`` rule is used.

.. note::

   Facades cannot be defined as ``cc_static_library`` because it wouldn’t be
   possible to build the facade without a backend.

.. code-block:: javascript

   filegroup {
       name: "pw_<MODULE_NAME>.<FACADE_NAME>_files",
       srcs: [
           // List of source (.cc) files.
       ],
   }

   cc_defaults {
       name: "pw_<MODULE_NAME>.<FACADE_NAME>",
       cpp_std: "c++20",
       export_include_dirs: ["public"],
       srcs: [
           "pw_<MODULE_NAME>.<FACADE_NAME>_files",
       ],
   }

To assign a backend to a facade defined as ``cc_defaults`` the ``cc_defaults``
rule can be placed in the ``defaults`` list of a ``cc_static_library`` rule or
binary rule that lists the facade's backend as a dependency.

.. code-block:: javascript

   cc_static_library {
       name: "user_of_pw_<MODULE_NAME>.<FACADE_NAME>",
       cpp_std: "c++20",
       vendor_available: true,
       host_supported: true,
       defaults: [
           "pw_<MODULE_NAME>.<FACADE_NAME>",
       ],
       static_libs: [
           "backend_of_pw_<MODULE_NAME>.<FACADE_NAME>",
       ],
   }

Alternatively, the ``cc_defaults`` rule can be placed in the ``defaults`` list
of another ``cc_defaults`` rule where the latter rule may or may not list the
facade's backend. ``cc_defaults`` rules can be inherited many times. Facades
can be used as long as the backends are assigned in ``cc_static_library`` or
binary rules using the final ``cc_defaults`` as explained above.

--------
Backends
--------
Backends are defined the same way as
:ref:`module-pw_build_android-module-libraries`. They must follow the
``pw_<MODULE_NAME>.<FACADE_NAME>_<BACKEND_NAME>`` name format or
``pw_<MODULE_NAME>_<BACKEND_NAME>`` if applicable.
