GN C++ Frontend SDK
Prerequisites
Supported host platforms and build systems
The GN C++ Frontend SDK samples only support Linux hosts and the GN build system.
Supported Fuchsia device CPU architectures
Fuchsia devices or emulators must have one of the following CPU architectures to run Fuchsia:
x64
arm64
Setup
Install required dependencies:
sudo apt-get install curl unzip python2
Clone the samples repo and submodules:
git clone https://fuchsia.googlesource.com/samples --recursive
Note: If you have already cloned this repo without the
--recursive
flag you can download the submodules:git submodule update --init --recursive
Change directory to the root of the repo and run the tests:
cd samples
./scripts/setup-and-test.sh
This script:
- Downloads additional build tool dependencies (may take 5-30 minutes)
- Builds the samples
- Runs tests on your host
If the script fails with an error, address the issue and run the script again.
Testing on a Fuchsia compatible device
Note: This guide assumes a x64
Fuchsia compatible device. For Fuchsia compatible ARM devices
replace x64
with arm64
and generic-x64
and generic-arm64
or other compatible image name in
the instructions below. For a full list of available images install gsutil
and run: gsutil ls gs://fuchsia/development/$(gsutil cat gs://fuchsia/development/LATEST_LINUX)/images
Setup your device and install Zedboot: Find the instructions for your device (e.g. a NUC or Pixelbook) to setup and install Zedboot on your device.
From the
samples
directory, create Ninja build files for the samples by running the following command:buildtools/linux64/gn gen out/generic-x64 --args='target_os="fuchsia" target_cpu="x64"'
Build the samples by executing the Ninja build files you created in the previous step:
buildtools/linux64/ninja -C out/generic-x64
Make sure your Fuchsia device is booted to Zedboot and connected to your host machine the pave your device:
third_party/fuchsia-sdk/bin/fpave.sh --image generic-x64
Start a package server from your host machine:
third_party/fuchsia-sdk/bin/fserve.sh --image generic-x64
To publish your packages open another another terminal window and run:
third_party/fuchsia-sdk/bin/fpublish.sh out/generic-x64/hello_far.far
third_party/fuchsia-sdk/bin/fpublish.sh out/generic-x64/rot13_server.far
third_party/fuchsia-sdk/bin/fpublish.sh out/generic-x64/rot13_client.far
Run the sample components on your Fuchsia device:
SSH to the device:
third_party/fuchsia-sdk/bin/fssh.sh
Once SSHed into the device, run the hello world component on the device:
run fuchsia-pkg://fuchsia.com/hello_world#meta/hello_world.cmx
Run the rot13 server:
run fuchsia-pkg://fuchsia.com/rot13_server#meta/rot13_server.cmx
In a new terminal window on your host machine, open a new ssh connection to your device, and run the rot13 client:
third_party/fuchsia-sdk/bin/fssh.sh
run fuchsia-pkg://fuchsia.com/rot13_client#meta/rot13_client.cmx