towerops/lib/mix/tasks/compile.towerops_nif.ex

33 lines
675 B
Elixir

defmodule Mix.Tasks.Compile.ToweropsNif do
@moduledoc """
Compiles the towerops_nif C NIF.
"""
use Mix.Task.Compiler
@impl true
def run(_args) do
{result, _exit_code} = System.cmd("make", [], cd: "c_src", stderr_to_stdout: true, into: IO.stream())
case result do
"" ->
{:ok, []}
_ ->
# Output was produced, so the build ran
{:ok, []}
end
rescue
e ->
Mix.shell().error("Failed to compile C NIF: #{inspect(e)}")
{:error, []}
end
@impl true
def clean do
{_result, _exit_code} = System.cmd("make", ["clean"], cd: "c_src", stderr_to_stdout: true)
:ok
rescue
_ -> :ok
end
end