-
Notifications
You must be signed in to change notification settings - Fork 2
home
DiasFranciscoA edited this page Feb 10, 2026
·
7 revisions
Welcome to extgen, a schema-driven code generator for GameMaker native extensions.
From a single GMIDL input file, extgen can generate:
- GML bindings (plus optional runtime helpers)
- Native glue code for multiple platforms (Android / iOS / tvOS / consoles)
- A complete CMake project + presets to build your extension
- Optional docs output for downstream tooling
The goal: one source of truth → repeatable, consistent extension output.
extgen --init ./my-extensionThis creates:
config.jsonextgen.schema.json
Set:
- your GMIDL input (
input) - your output root (
root) - desired targets (
targets.*) - build emission (
build.emitCmake)
extgen --config ./my-extension/config.json- User Manual — how to run extgen, configure targets, and understand all schema options
- Build extgen — build the tool from CLI, Visual Studio, or VS Code
- Architecture / Developer Docs — project structure, emitters, pipeline, where to contribute
Your config.json is validated via extgen.schema.json.
If the schema validates, extgen should run reliably.
extgen is target-driven, not “language toggles driven”.
Enabling a target (like Windows or iOS) automatically implies the correct underlying emitters (like C++ where required).
Use profiles to control what gets emitted:
- Full → bindings + native glue + build system
- BindingsOnly → only bindings (no native/build output)
- BuildOnly → only build system (CMake / presets)
- If you're a user: start with User Manual
- If you're contributing: start with Architecture / Developer Docs
- If you’re building the tool: go to Build extgen
extgen is designed to be extended:
- new platforms
- new emitters
- improved templates
- better docs and examples
If you want to contribute, check Architecture / Developer Docs and follow the repository contribution guidelines.
Happy generating 🚀
GameMaker 2026