Project template for decomp-toolkit
Go to file
Nathan 75697a8e6d
Add support for generating clangd `compile_commands.json` config (#38)
* 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>
2024-10-12 16:50:12 -06:00
.github.example/workflows Oops, missed a char 2024-08-12 18:13:09 -06:00
.vscode Add support for generating clangd `compile_commands.json` config (#38) 2024-10-12 16:50:12 -06:00
assets Initial commit 2023-10-04 23:30:39 -04:00
config/GAMEID Documentation updates 2024-09-17 19:20:51 -06:00
docs Documentation updates 2024-09-17 19:20:51 -06:00
orig/GAMEID Initial commit 2023-10-04 23:30:39 -04:00
tools Add support for generating clangd `compile_commands.json` config (#38) 2024-10-12 16:50:12 -06:00
.flake8 Fix `pyright` complaints and run `black` (#12) 2024-02-29 11:21:44 -07:00
.gitattributes Sync various changes from other repos & minor updates 2023-11-21 20:14:25 -05:00
.gitignore Add support for generating clangd `compile_commands.json` config (#38) 2024-10-12 16:50:12 -06:00
LICENSE Relicense under CC0 2023-11-21 20:25:35 -05:00
README.example.md Add support for generating clangd `compile_commands.json` config (#38) 2024-10-12 16:50:12 -06:00
README.md Update projects list 2024-06-20 22:46:43 -06:00
configure.py Revamp progress output with objdiff report 2024-09-30 22:32:17 -06:00

README.md

decomp-toolkit Project Template

If starting a new GameCube / Wii decompilation project, this repository can be used as a scaffold.

See decomp-toolkit for background on the concept and more information on the tooling used.

Documentation

General:

References

Projects using this structure:

Features

  • Few external dependencies: Just python for the generator and ninja for the build system. See Dependencies.
  • Simple configuration: Everything lives in config.yml, symbols.txt, and splits.txt.
  • Multi-version support: Separate configurations for each game version, and a configure.py --version flag to switch between them.
  • Feature-rich analyzer: Many time-consuming tasks are automated, allowing you to focus on the decompilation itself. See Analyzer features.
  • REL support: RELs each have their own symbols.txt and splits.txt, and will automatically be built and linked against the main binary.
  • No manual assembly: decomp-toolkit handles splitting the DOL into relocatable objects based on the configuration. No game assets are committed to the repository.
  • Progress calculation and upload script for frogress.
  • Integration with objdiff for a diffing workflow.
  • CI workflow template for GitHub Actions.

Project structure

  • configure.py - Project configuration and generator script.
  • config/[GAMEID] - Configuration files for each game version.
  • config/[GAMEID]/build.sha1 - SHA-1 hashes for each built artifact, for final verification.
  • build/ - Build artifacts generated by the the build process. Ignored by .gitignore.
  • orig/[GAMEID] - Original game files, extracted from the disc. Ignored by .gitignore.
  • orig/[GAMEID]/.gitkeep - Empty checked-in file to ensure the directory is created on clone.
  • src/ - C/C++ source files.
  • include/ - C/C++ header files.
  • tools/ - Scripts shared between projects.

Temporary, delete when done:

  • config/GAMEID/config.example.yml - Example configuration file and documentation.
  • docs/ - Documentation for decomp-toolkit configuration.
  • README.md - This file, replace with your own. For a template, see README.example.md.
  • LICENSE - This repository is licensed under the CC0 license. Replace with your own if desired.