forked from tsutsu/signal_handler
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmix.exs
58 lines (47 loc) · 1.28 KB
/
mix.exs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
defmodule Mix.Tasks.Compile.SignalHandlerMakefile do
@shortdoc "Compiles the SignalHandler NIF"
use Mix.Task
@include_path Path.join([:code.root_dir(), ["erts-", :erlang.system_info(:version)], "include"])
def run(_) do
if Mix.env() == :test, do: File.rm_rf("priv")
unless File.regular?("priv/signal_handler.so") do
File.mkdir("priv")
{result, error_code} =
System.cmd("make", ["priv/signal_handler.so"],
stderr_to_stdout: true,
env: [{"ERTS_INCLUDE_PATH", @include_path}]
)
IO.binwrite(result)
if error_code != 0 do
raise Mix.Error,
message: """
Could not run `make`.
Please check if `make` and either `clang` or `gcc` are installed
"""
end
end
Mix.Project.build_structure()
:ok
end
end
defmodule System.SignalHandler.Mixfile do
use Mix.Project
def project do
[
app: :signal_handler,
version: "0.1.1",
elixir: "~> 1.3",
build_embedded: Mix.env() == :prod,
start_permanent: Mix.env() == :prod,
compilers: [:signal_handler_makefile, :elixir, :app],
deps: deps()
]
end
def application do
[
mod: {System.SignalHandler, []},
applications: [:logger]
]
end
defp deps, do: []
end