| # Pigweed Sample Project | |
| [TOC] | |
| This repository outlines the recommended way of using Pigweed in a new or | |
| existing project. Feel free to fork this repository, or read it as a reference. | |
| For more information see the [Pigweed Getting started | |
| guide](https://pigweed.dev/docs/getting_started.html). | |
| Check back for more complex examples and features coming soon! | |
| ## Getting started | |
| Make sure you've set up [Pigweed's | |
| prerequisites](https://pigweed.dev/docs/getting_started.html#prerequisites). | |
| **If you're on Windows**, you can automate the initial setup by downloading the | |
| first-time setup script **from cmd.exe**: | |
| ```bat | |
| curl https://pigweed.googlesource.com/pigweed/sample_project/+/main/tools/setup_windows_prerequisites.bat?format=TEXT > setup_pigweed_prerequisites.b64 && certutil -decode -f setup_pigweed_prerequisites.b64 setup_pigweed_prerequisites.bat && del setup_pigweed_prerequisites.b64 | |
| ``` | |
| Then you can run the script with the following command **in cmd.exe**: | |
| ```bat | |
| setup_pigweed_prerequisites.bat | |
| ``` | |
| Note: You may see a few UAC prompts as the script installs Git, Python, and | |
| enables developer mode. | |
| Once that is done, you can clone this project with the following command: | |
| ```sh | |
| git clone https://pigweed.googlesource.com/pigweed/sample_project | |
| ``` | |
| ### Environment setup | |
| Pigweed uses a local development environment for most of its tools. This | |
| means tools are not installed to your machine, and are instead stored in a | |
| directory inside your project (Note: git ignores this directory). The tools | |
| are temporarily added to the PATH of the current shell session. | |
| To make sure the latest tooling has been fetched and set up, run the bootstrap | |
| command for your operating system: | |
| **Windows** | |
| ```bat | |
| bootstrap.bat | |
| ``` | |
| **Linux & Mac** | |
| ```sh | |
| source ./bootstrap.sh | |
| ``` | |
| After tooling updates, you might need to run bootstrap again to ensure the | |
| latest tools. | |
| After the initial bootstrap, you can use use the `activate` scripts to configure | |
| the current shell for development without doing a full update. | |
| **Windows** | |
| ```sh | |
| activate.bat | |
| ``` | |
| **Linux & Mac** | |
| ```sh | |
| source ./activate.sh | |
| ``` | |
| ### Building | |
| All of these commands must be run from inside an activated developer | |
| environment. See [Environment setup](#environment-setup) | |
| #### One-shot build | |
| To build the project, documentation, and tests, run the following command in | |
| an activated environment: | |
| ```sh | |
| pw build | |
| ``` | |
| #### Automatically build on file save | |
| Alternatively, if you'd like an automatic rebuild to trigger whenever you save | |
| changes to files, use `pw watch`: | |
| ```sh | |
| pw watch | |
| ``` | |
| ## Typical workflow | |
| When you pull latest repository changes, run bootstrap: | |
| ```sh | |
| source ./bootstrap.sh | |
| ``` | |
| If you're just launching a new shell session, you can activate instead: | |
| ```sh | |
| source ./activate.sh | |
| ``` | |
| and rebuild with: | |
| ```sh | |
| pw build | |
| ``` | |
| ## More info and Examples | |
| Extended documentation and examples are built along code changes. You can view | |
| them at `out/gn/docs/gen/docs/html/index.html`. |