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.
* 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.
ninja_syntax.py should be writing native
platform paths instead of converting
things to unix paths.
Separately, fixed type errors introduced
by the previous commit.
This allows projects to specify external libraries more easily.
Particularly useful for common libraries shared between decomp projects,
enabling the use of submodules/subtrees to deduplicated decomp efforts