lib/zig_precompiler.ex

defmodule Kinda.Precompiler do
  @behaviour ElixirMake.Precompiler

  @impl true
  def current_target, do: RustlerPrecompiled.target()

  @impl true
  def all_supported_targets(_), do: ~w(
    aarch64-apple-darwin
    x86_64-unknown-linux-gnu
  )

  @impl true
  def build_native(args) do
    {:ok, t} = current_target()
    System.put_env("KINDA_NIF_TARGET", t)
    ElixirMake.Compiler.compile(args)
  end

  @impl true
  def precompile(args, _target) do
    ElixirMake.Compiler.compile(args)
    :ok
  end
end