Re-implement `naga` development workflows using [`cargo xtask`]. Convert
`make` logic and shader test configuration as file with Bash variables
into an `xtask` crate and YAML files, respectively.
Pros:
* We now have a _portable_ workflow everywhere, which means Windows
folks and people who don't install `make` don't have to suffer.
😮💨
* Workflow logic is now relatively easy to inspect and change. Whew!
💁🏻♂️💦
* Contributors can use their existing Rust knowledge to contribute to
developer experience. 🎉
* `cargo xtask` is a relatively well-known convention for workflows in
the ecosystem.
* We can do fancy things like allow folks to run at different log levels
for workflows, depending on their tastes.
Cons:
* There's now a non-trivial compile step to project workflow.
Incremental rebuilds seem to be pretty short, though!
* Code is much more verbose than the (very) terse `make` implementation.
[`cargo xtask`]: https://github.com/matklad/cargo-xtask
* fix setup-dxc not found
* run validation-windows if its workflow file was changed
* run validation-macos if its workflow file was changed
* run validation-linux if its workflow file was changed
* run lazy if its workflow file was changed
* update to actions/checkout@v3
* update to actions/upload-artifact@v3
* remove minor version
* remove unmaintained actions-rs actions
* update to codecov/codecov-action@v3
* use ubuntu-latest
* use extra cargo/rust env vars
* use cargo-nextest
* check naga-fuzz
* only check on MSRV and minimal-versions
* add whitespace between steps
* rename to CI
* use cargo-llvm-cov to generate code coverage
Naga is now a workspace with `naga` and `cli` as its two members. The default
package for cargo commands is `cli`, so that `cargo run` will just run the CLI.
However, this has a few unexpected consequences:
- Now `cargo test` will just try to run `cli`'s tests, of which there are none.
Adding `"."` to the `default-members` list in the workspace's `Cargo.toml`
seems to fix this, without breaking `cargo run`.
- Even with `"."` added to `default-members`, `cargo test` will build `naga` by
default with the features requested for it in `cli/Cargo.toml`: all the front
and back ends, but no `serialize` or `deserialize`. This means that our CI job
meant to verify no-feature builds isn't doing that job any more. We need to
pass `--package naga` to `cargo test` to make it test naga directly.
* Add validation-windows yml for HLSL
Add workgroup size to hlsl-out
* Update Readme with Make target information
* Change runs on to windows-latest
* Remove snapshot file
* Basic glsl support
* Miscellaneous fixes and vertex shader works
* Added rudimentary texture and sampler support
* Basic preprocessor
* Added preprocessor if macros
* Pass tests and handle floats correctly
* Fix preprocessor if wrong precedence ordering when using macros
Refractor for the glsl parser
Partial primary expression parser
* Fix all clippy errors
* Cleanup
* Rollback formatting changes in lib.rs