Skip to content

rpjohnst/dejavu-llvm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

Build Dependencies

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

Windows

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.

Runtime Dependencies

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: dejavu.jar, dejavu.so, and 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

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.

Contact Information

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).