DejaVu Game Maker Compiler
DejaVu is an in-progress LLVM-based GML and D&D compiler, mostly compatible with GameMaker. It currently exists as a C++ library, and as a plugin to LateralGM. It is capable of compiling a game's scripts and object events. Eventually it will be able to produce fullly compiled executables.
As a work in progress, DejaVu does not currently distribute compiled binaries. To build it from source requires several tools and libraries that should be available from your package manager or from their respective websites:
- LLVM - the compiler uses LLVM to generate code
- Clang - Clang is required to build the language runtime
- GNU Make - the compiler's Makefiles are based on GNU Make
- SWIG - SWIG is used to generate the bridge between the plugin and compiler
- Java Developmen Kit - the LateralGM plugin is written in Java
- Ant - Ant is used to compile the LateralGM plugin
Currently, DejaVu is not tested on Windows, but there is nothing inherently preventing it from being built or running on that platform. The MinGW toolchain should be able to support the required dependencies, although some modifications to the Makefiles and source code may be necessary. Contributions would be welcome.
DejaVu itself does not currently have any runtime dependencies. However, it currently reads game data through LateralGM:
Building and Installing
Once prerequisites are installed, DejaVu can be built by running
make. This should produce three files:
runtime.bc. The first two need to be in a directory next to LateralGM named
plugins and the third needs to be in its working directory.
Running LateralGM normally will load the DejaVu plugin, adding a menu and buttons that invoke DejaVu's compiler on the loaded game. The resulting file is an optimized LLVM bitcode module containing the generated code for the game's scripts and objects' events, including D&D actions.
DejaVu is available on GitHub, at github.com/rpjohnst/dejavu. Feel free to file bugs, submit pull requests, or fork the repository. It is available under the terms in
LICENSE (University of Illinois/NCSA Open Source License); the runtime is available under the terms in
runtime/LICENSE (MIT License).