Add README, improve build script help

This commit is contained in:
2024-04-14 02:30:19 -05:00
parent a9727ce0c1
commit 0d5ebaa7d9
2 changed files with 26 additions and 2 deletions

19
README.md Normal file
View File

@@ -0,0 +1,19 @@
# rust-sdl2-emscripten
This is an experimental repository while testing a Rust + SDL2 project built with Emscripten.
- [hello-rust-sdl2-wasm](https://github.com/awwsmm/hello-rust-sdl2-wasm) - A bit of a weird repository, I'm not sure that the creator knows Rust that well, but it compiles. Note that the `asmjs-unknown-emscripten` target is deprecated, and you should use `wasm32-unknown-emscripten` instead. You'll need to change all the files, flags etc. to make it match.
- [build.sh](./scripts/build.sh) - One of the core files in this repository, it builds the project with Emscripten. Note all the flags available for modifying the behavior of the build.
### Goals
- [X] Reproducible SDL2 Emscripten Builds
- This ensures that the project can iterate safely and be inspected in a safe environment, free from errors. Helps ensure errors are isolated to the machine or build script.
- [ ] SDL2 Image, TFF, Mixer Usage
- All of these libraries are common and necessary for a lot of projects. Ensuring they work is important.
- [ ] Example of External Javascript Interop
- The basic ability to provide some kind of Javascript binding would be important for a decent web-based project or game.
- The ability to use localStorage, fetch, or some browser-only API would be important.
- [ ] Windows, MacOS, Linux Builds
- Simple ability to provide multi-platform builds in addition to the WASM build.

View File

@@ -7,14 +7,19 @@ skip_emsdk='false'
clean='false'
print_usage() {
printf "Usage: -r RELEASE -d DEBUG -s SERVE\n"
printf "Usage: -erdsc\n"
printf " -e: Skip EMSDK setup (GitHub workflow only)\n"
printf " -r: Build in release mode\n"
printf " -d: Build in debug mode\n"
printf " -s: Serve the WASM files once built\n"
printf " -c: Clean the target/dist directory\n"
}
while getopts 'erdsc' flag; do
case "${flag}" in
e) skip_emsdk='true' ;;
r) release='true' ;;
d) release='false' ;;
d) release='false' ;; # doesn't actually do anything, but last flag wins
s) serve='true' ;;
c) clean='true' ;;
*)