Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Expand pre-req instructions in hello_world readme. #351

Merged
merged 4 commits into from
May 10, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 51 additions & 31 deletions cargo/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,52 +6,72 @@ It can build programs written in Rust, manage assets, build package for Playdate
Usually it builds static or dynamic libraries for sim and hardware,
but also it can build executable binaries for hardware and this method produces highly optimized output with dramatically minimized size (thanks to DCE & LTO)\*.

\* For executable binaries use `--no-gcc` argument._
\* _For executable binaries use `--no-gcc` argument._

### Platform specific pre-req install instructions

MacOS:

1. Install the [PlaydateSDK](https://play.date/dev/) (by default installs into `~/Developer/PlaydateSDK`)
1. Set PLAYDATE_SDK_PATH env var: `export PLAYDATE_SDK_PATH="$HOME/Developer/PlaydateSDK"`
1. Install cmake: `brew install cmake`
1. Install rust nightly: `rustup toolchain install nightly`
1. Arm toolchain is included with PlaydateSDK.

Ubuntu Linux:
1. Install the [PlaydateSDK](https://play.date/dev/) - remember where you extracted it.
1. Set PLAYDATE_SDK_PATH env var: `export PLAYDATE_SDK_PATH="/path/to/PlaydateSDK-2.x.x/"`
1. Install cmake: `sudo apt-get install cmake`
1. Install rust nightly: `rustup toolchain install nightly`
1. Install arm toolchain: `sudo apt-get install gcc-arm-none-eabi`
1. Install libudev: `sudo apt-get install libudev-dev`

Windows:
1. Install the [PlaydateSDK](https://play.date/dev/) (by default installs into `~/Documents/PlaydateSDK`)
1. Set PLAYDATE_SDK_PATH
1. windows+r, run: `sysdm.cpl`
2. Advanced Tab -> Environment Variables -> New
3. Variable name: `PLAYDATE_SDK_PATH`
4. Variable value: `C:\Users\username\Documents\PlaydateSDK`
1. Install CMake: [cmake downloads](https://cmake.org/download/)
1. Install rust nightly: `rustup toolchain install nightly`
1. Install arm toolchain: [arm gnu toolchain downloads](https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads). Filename will be like 'arm-gnu-toolchain-13.2.rel1-mingw-w64-i686-arm-none-eabi.exe'.
1. Add arm toolchain and cmake to PATH environment:
1. windows+r, run: `sysdm.cpl`
2. Advanced Tab -> Environment Variables.
3. Find `Path` and click `Edit`
4. Click `New` and add `C:\Program Files\CMake\bin`
4. Click `New` and add `C:\Program Files (x86)\Arm GNU Toolchain arm-none-eabi\13.2 Rel1\bin`



## Prerequisites

To build `cargo-playdate` you're need:
1. Rust __nightly__ toolchain

To build programs using `cargo-playdate` you need:
1. Rust __nightly__ toolchain
1. [Playdate SDK][sdk]
- Ensure that env var `PLAYDATE_SDK_PATH` points to the SDK root
1. Follow the [official documentation][doc-prerequisites]
- Ensure that `arm-none-eabi-gcc` or `gcc-arm-none-eabi` in your `PATH`

<!-- TODO: Make gcc optional -->

To run on sim or dev with `cargo-playdate`:
1. Linux only:
- `libudev`, follow [instructions for udev crate][udev-crate-deps].
1. Windows only:
- `powershell` (used as fallback)
See also: [Inside Playdate with C: Prerequisites](https://sdk.play.date/Inside%20Playdate%20with%20C.html#_prerequisites)

[sdk]: https://play.date/dev/#cardSDK
[doc-prerequisites]: https://sdk.play.date/Inside%20Playdate%20with%20C.html#_prerequisites
[rusb]: https://crates.io/crates/rusb


## Installation
## Cargo-Playdate Installation

```bash
cargo install cargo-playdate
# or
cargo install --git="https://github.com/boozook/playdate.git" --bin=cargo-playdate
cargo +nightly install cargo-playdate
cargo +nightly playdate --version
```

Or install to use bleeding edge bits from a local git clone:
```bash
mkdir ~/code
cd ~/code
git clone https://github.com/boozook/playdate.git
cargo +nightly install --path="$HOME/code/playdate/cargo" cargo-playdate
```

## Hello World

Generate new project using `new` or `init` command.

```bash
mkdir hello-world && cd $_
cargo playdate init --lib --full-metadata --deps="playdate"
cargo playdate run
mkdir -p ~/code/pd-hello/
cd ~/code/pd-hello/
cargo +nightly playdate init --lib --full-metadata --deps="playdate"
cargo +nightly playdate run
```

> Note, there are more options for this command, e.g. `--deps="sys:git, controls:git"`.
Expand Down
Loading