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.
Toolchain name |
GN path |
Compiler |
Optimization |
|
|
Clang |
|
|
|
Clang |
|
|
|
Clang |
|
|
|
GCC |
|
|
|
GCC |
|
|
|
GCC |
|
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.
$ 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:
$ ./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>
.