|  | .. _docs-root: | 
|  |  | 
|  | ====================== | 
|  | Pigweed Sample Project | 
|  | ====================== | 
|  |  | 
|  | .. toctree:: | 
|  | :maxdepth: 1 | 
|  | :hidden: | 
|  |  | 
|  | Home <self> | 
|  | Examples <examples/docs> | 
|  | Customization <customization> | 
|  | Pigweed Docs <https://pigweed.dev> | 
|  | Mailing List <https://groups.google.com/forum/#!forum/pigweed> | 
|  | Chat Room <https://discord.gg/M9NSeTA> | 
|  | Source Code <https://cs.pigweed.dev/pigweed> | 
|  | Code Reviews <https://pigweed-review.googlesource.com> | 
|  | Issue Tracker <https://issues.pigweed.dev/issues?q=status:open> | 
|  |  | 
|  | 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**: | 
|  |  | 
|  | .. code-block:: batch | 
|  |  | 
|  | 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**: | 
|  |  | 
|  | .. code-block:: batch | 
|  |  | 
|  | 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: | 
|  |  | 
|  | .. code-block:: bash | 
|  |  | 
|  | 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: | 
|  |  | 
|  | .. tab-set:: | 
|  |  | 
|  | .. tab-item:: Linux | 
|  | :sync: linux | 
|  |  | 
|  | .. code-block:: bash | 
|  |  | 
|  | source ./bootstrap.sh | 
|  |  | 
|  | .. tab-item:: macOS | 
|  | :sync: macos | 
|  |  | 
|  | .. code-block:: bash | 
|  |  | 
|  | source ./bootstrap.sh | 
|  |  | 
|  | .. tab-item:: Windows | 
|  | :sync: windows | 
|  |  | 
|  | .. code-block:: batch | 
|  |  | 
|  | bootstrap.bat | 
|  |  | 
|  | 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. | 
|  |  | 
|  | .. tab-set:: | 
|  |  | 
|  | .. tab-item:: Linux | 
|  | :sync: linux | 
|  |  | 
|  | .. code-block:: bash | 
|  |  | 
|  | source ./activate.sh | 
|  |  | 
|  | .. tab-item:: macOS | 
|  | :sync: macos | 
|  |  | 
|  | .. code-block:: bash | 
|  |  | 
|  | source ./activate.sh | 
|  |  | 
|  | .. tab-item:: Windows | 
|  | :sync: windows | 
|  |  | 
|  | .. code-block:: batch | 
|  |  | 
|  | activate.bat | 
|  |  | 
|  | .. _docs-building: | 
|  |  | 
|  | 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: | 
|  |  | 
|  | .. code-block:: bash | 
|  |  | 
|  | 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``: | 
|  |  | 
|  | .. code-block:: bash | 
|  |  | 
|  | pw watch | 
|  |  | 
|  | ---------------- | 
|  | Typical workflow | 
|  | ---------------- | 
|  | When you pull latest repository changes, run bootstrap: | 
|  |  | 
|  | .. tab-set:: | 
|  |  | 
|  | .. tab-item:: Linux | 
|  | :sync: linux | 
|  |  | 
|  | .. code-block:: bash | 
|  |  | 
|  | source ./bootstrap.sh | 
|  |  | 
|  | .. tab-item:: macOS | 
|  | :sync: macos | 
|  |  | 
|  | .. code-block:: bash | 
|  |  | 
|  | source ./bootstrap.sh | 
|  |  | 
|  | .. tab-item:: Windows | 
|  | :sync: windows | 
|  |  | 
|  | .. code-block:: batch | 
|  |  | 
|  | bootstrap.bat | 
|  |  | 
|  | If you're just launching a new shell session, you can activate instead: | 
|  |  | 
|  | .. tab-set:: | 
|  |  | 
|  | .. tab-item:: Linux | 
|  | :sync: linux | 
|  |  | 
|  | .. code-block:: bash | 
|  |  | 
|  | source ./activate.sh | 
|  |  | 
|  | .. tab-item:: macOS | 
|  | :sync: macos | 
|  |  | 
|  | .. code-block:: bash | 
|  |  | 
|  | source ./activate.sh | 
|  |  | 
|  | .. tab-item:: Windows | 
|  | :sync: windows | 
|  |  | 
|  | .. code-block:: batch | 
|  |  | 
|  | activate.bat | 
|  |  | 
|  | and rebuild with: | 
|  |  | 
|  | .. code-block:: bash | 
|  |  | 
|  | pw build | 
|  |  | 
|  | ---------------------- | 
|  | More info and Examples | 
|  | ---------------------- | 
|  | Check out some introductory examples :ref:`here <examples-root>`! |