Current section
Files
Jump to
Current section
Files
README.md
# Exray**Raylib Bindings for the Elixir Programming Language**## ! IMPORTANT NOTICE !### As of 0.5.0, Exray's NIFs will need to be compiled _manually_.### Please see [information on compilation below!](#compiling-exray-nifs)## Installation### Adding Exray to your mix.exs dependenciesThis package can be installed by adding `exray` to your list of dependencies in `mix.exs`:```elixirdef deps do [ {:exray, "~> 0.5.0"} ]end```Or, if you're adventurous and don't care if things break, using the git version:```elixirdef deps do [ {:exray, git: "https://github.com/FatigueDev/exray"} # You can also set `ref: "(commit SHA ID)"`, like so to use a specific commit! # {:exray, git: "https://github.com/FatigueDev/exray", ref: "c9c46aa645b0c0964e6d28dc24d6557ee7d258a3"} ]end```## Compiling Exray NIFs### Set and forgetOnce added to your dependencies, you will need to compile the bindings by running:\`mix compile.exray`You only need to compile once, so once it compiles successfully you don't have to worry about compiling again unless you update your version or are [creating a fork](#compile-every-single-time-slow-as-hell).In the case the `mix compile.exray` task fails, run it again. Seriously, sometimes it doesn't work first try due to BEAM Code caching. Whenever there is ANY version update, run `mix compile.exray` to recompile the NIFs. Specs may change, backend calls may change. It's a rolling WIP build until it is feature complete, effectively.### Compile every single time (Slow as hell)So you plan to make a fork, I suppose- And you don't want to run `mix compile.exray` every time.\Easy fix, just go to your `mix.exs`, under your `project` config and add the `compilers` key with this new value:```elixirdef project do [ # ... compilers: [:exray] ++ Mix.compilers(), # ... ]end```What this will do is prepend the mix task `compile.exray` before your own compilers, making it so that every time you `mix`, you're rebuilding your NIFs.### Why do I have to compile the NIFs manually now?As the modules grew in Exray, so too did the compilation times. I've put some work into making it so that you can [compile once](#compile-exrays-nif-bindings---set-and-forget) and have your code reload without having to recompile every single one of the likely hundreds of NIFs that are popping up. This is a **very** good quality of life change and will save you a whole heaping helping of time in the long run. Of course, if you liked compiling every time or you're working on a fork, you can always [compile every time you mix](#compile-exrays-nif-bindings---compile-every-single-time-slow-as-hell).