-
Notifications
You must be signed in to change notification settings - Fork 4
/
mix.exs
113 lines (98 loc) · 2.64 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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
defmodule MIDISynth.MixProject do
use Mix.Project
@version "0.4.1"
@source_url "https://github.com/fhunleth/midi_synth"
def project do
[
app: :midi_synth,
version: @version,
elixir: "~> 1.11",
package: package(),
compilers: [:elixir_make | Mix.compilers()],
aliases: [format: ["format", &format_c/1]],
make_targets: ["all"],
make_clean: ["clean"],
make_error_message: make_error_message(),
docs: docs(),
description: description(),
start_permanent: Mix.env() == :prod,
dialyzer: dialyzer(),
deps: deps(),
preferred_cli_env: %{
docs: :docs,
"hex.publish": :docs,
"hex.build": :docs,
credo: :test
}
]
end
def application do
[
extra_applications: [:logger]
]
end
defp description do
"MIDI synthesizer for Elixir"
end
defp package do
[
files: [
"lib",
"c_src/*.[ch]",
"c_src/Makefile",
"Makefile",
"mix.exs",
"README.md",
"LICENSE",
"CHANGELOG.md"
],
licenses: ["Apache-2.0"],
links: %{
"Changelog" => "#{@source_url}/blob/main/CHANGELOG.md",
"GitHub" => @source_url
}
]
end
defp deps do
[
{:elixir_make, "~> 0.6", runtime: false},
{:ex_doc, "~> 0.22", only: :docs, runtime: false},
{:dialyxir, "~> 1.2", only: :dev, runtime: false},
{:credo, "~> 1.2", only: :test, runtime: false},
{:credo_binary_patterns, "~> 0.2.6", only: :test, runtime: false}
]
end
defp dialyzer() do
[
flags: [:missing_return, :extra_return, :unmatched_returns, :error_handling, :underspecs]
]
end
defp docs do
[
extras: ["README.md", "CHANGELOG.md", "LICENSE"],
main: "readme",
source_ref: "v#{@version}",
source_url: @source_url,
skip_undefined_reference_warnings_on: ["CHANGELOG.md"]
]
end
defp format_c([]) do
astyle =
System.find_executable("astyle") ||
Mix.raise("""
Could not format C code since astyle is not available.
""")
System.cmd(astyle, ["-n", "c_src/*.c"], into: IO.stream(:stdio, :line))
end
defp format_c(_args), do: true
defp make_error_message() do
"""
This is usually due to not being able to find the fluidsynth library. Try
installing it and then rerun the build to see if that fixes the error.
On MacOS, run `brew install fluidsynth pkg-config`.
On Ubuntu, try `sudo apt install libfluidsynth-dev`
If this does not fix the issue, the C compiler error message right above
this help text may provide a clue.
"""
end
end