This deduplicates dependencies on custom build rules by writing
them once and using phony targets to collect them.
Uses order_only instead of implicit dependencies to avoid
rebuilding source files when a custom build rule is dirty.
Cleans up typing issues in ninja_syntax.py.
This new setup flow allows users to copy their disc image into
`orig/GAMEID`, run a build, then delete the disc image to save space.
The new `object_base` config option specifies where the disc image is
searched for. Updated README.example.md with new setup instructions,
removing references to Dolphin Emulator.
* Implement support for generating clangd `compile_commands.json` config
* Add example .clangd file
* Tidy .gitignore and add entries for clangd and other things
* couple things i forgot to remove
* Change indent level to 2
* Centralize file type checking logic
* Refactor flag replacments to fix `-lang=` flags not being handled
* Move language flag fallback addition to `generate_build_ninja`
* Remove file type flags from .clangd example
* Remove clangd compiler defines option
Projects which need it can define things themselves in .clangd
* Move global clangd flags to tools/project.py & update vscode config
---------
Co-authored-by: Luke Street <luke@street.dev>
Progress output now displays % matched, which measures 100% matched
functions across _all_ files, including files that aren't
complete/linked.
Due to this change, all source files need to be built in order to
calculate progress during a normal `ninja` run. In other words,
this makes the `all_source` build the default behavior.
The progress display can be disabled via `configure.py --no-progress`
or `config.progress = False`. This will only compile the source files
needed to link the matching DOL.
Additionally, progress information is automatically emitted as a job
summary in GitHub Actions, so it can be viewed without opening the
build logs.