-
Notifications
You must be signed in to change notification settings - Fork 1
home
Francisco Dias edited this page Apr 9, 2026
·
7 revisions
extgen is a schema-driven code generator for GameMaker native extensions.
From a single GMIDL input file, extgen generates:
- GML bindings (plus optional runtime helpers)
- Native glue code for multiple platforms (Android / iOS / tvOS / consoles)
- A complete CMake project and presets
- Optional documentation output for downstream tooling
- NDA-compliant console configurations (user-specific SDK paths, gitignored)
The goal is a single source of truth that produces consistent, repeatable extension output across all targets.
extgen --init ./my-extensionThis creates:
config.jsonextgen.schema.json
Set your GMIDL input (input), output root (root), desired targets (targets.*), and build emission (build.emitCmake).
extgen --config ./my-extension/config.json- User Manual - running extgen, configuring targets, all schema options
- GMIDL Introduction - declaring functions, classes, and enums
- Implementation Workflow - recommended workflows for each target
- Console Setup - SDK configuration for Switch, PS4, and PS5
- Architecture / Developer Docs - project structure, emitters, pipeline, contribution guide
- Building extgen - building from CLI, Visual Studio, or VS Code
config.json is validated via extgen.schema.json. If the schema validates, extgen will run.
extgen is target-driven, not language-toggle driven. Enabling a target (such as Windows or iOS) automatically implies the correct underlying emitters - C++ where required, platform glue where needed.
Profiles control what categories of output are generated:
- Full - bindings + native glue + build system
- BindingsOnly - only bindings (no native/build output)
- BuildOnly - only build system (CMake / presets)
- For usage: start with the User Manual
- For contributing: start with Architecture / Developer Docs
- For building the tool: see Building extgen
GameMaker 2026