| .. _target-host: |
| |
| ==== |
| host |
| ==== |
| The Pigweed host target is used for unit testing and some host side tooling. |
| |
| ---------- |
| Toolchains |
| ---------- |
| Pigweed several toolchains preconfigured for compiling for the host. |
| |
| .. list-table:: |
| |
| * - Toolchain name |
| - GN path |
| - Compiler |
| - Optimization |
| * - ``host_clang_debug`` |
| - ``//targets/host:host_clang_debug`` |
| - Clang |
| - ``-Og`` |
| * - ``host_clang_size_optimized`` |
| - ``//targets/host:host_clang_size_optimized`` |
| - Clang |
| - ``-Os`` |
| * - ``host_clang_speed_optimized`` |
| - ``//targets/host:host_clang_speed_optimized`` |
| - Clang |
| - ``-O2`` |
| * - ``host_gcc_debug`` |
| - ``//targets/host:host_gcc_debug`` |
| - GCC |
| - ``-Og`` |
| * - ``host_gcc_size_optimized`` |
| - ``//targets/host:host_gcc_size_optimized`` |
| - GCC |
| - ``-Os`` |
| * - ``host_gcc_speed_optimized`` |
| - ``//targets/host:host_gcc_speed_optimized`` |
| - GCC |
| - ``-O2`` |
| |
| These toolchains may be used directly by downstream projects if desired. For |
| upstream builds, Pigweed uses internal-only variants of these toolchains. The |
| upstream toolchains are defined in ``//targets/host/pigweed_internal`` and are |
| prefixed with ``pw_strict_``. The upstream toolchains may not be used by |
| downstream projects. |
| |
| Toolchains for other C++ standards |
| ================================== |
| Most Pigweed code requires C++17, but a few modules, such as ``pw_tokenizer``, |
| work with C++14. All Pigweed code is compatible with C++20. Pigweed defines |
| toolchains for testing with C++14 and C++20. |
| |
| * ``pw_strict_host_clang_debug_cpp14`` -- Builds with ``-std=c++14``. |
| * ``pw_strict_host_clang_size_optimized_cpp20`` -- Builds with ``-std=c++20``. |
| |
| These toolchains are only permitted for use in upstream pigweed, but downstream |
| users may create similar toolchains as needed. |
| |
| -------- |
| Building |
| -------- |
| To build for the host with a default configuration, invoke Ninja with the |
| top-level ``host`` group as the target to build. |
| |
| .. code-block:: sh |
| |
| $ ninja -C out host |
| |
| |
| ``host`` may be replaced with ``host_clang``, ``host_gcc``, |
| ``host_clang_debug``, etc. to build with a more specific host toolchain. Not all |
| toolchains are supported on all platforms. Unless working specifically on one |
| toolchain, it is recommended to use the default. |
| |
| ------------- |
| Running Tests |
| ------------- |
| Tests are automatically run as part of the host build, but if you desire to |
| manually run tests, you may invoke them from a shell directly. |
| |
| Example: |
| |
| .. code-block:: sh |
| |
| $ ./out/host_[compiler]_debug/obj/pw_status/status_test |
| |
| ---------- |
| RPC server |
| ---------- |
| The host target implements a system RPC server that runs over a local socket, |
| defaulting to port 33000. To communicate with a process running the host RPC |
| server, use ``pw rpc -s localhost:33000 <protos>``. |