71 lines
1.7 KiB
Elixir
71 lines
1.7 KiB
Elixir
defmodule Chromaprint.MixProject do
|
|
use Mix.Project
|
|
|
|
def project do
|
|
[
|
|
app: :chromaprint,
|
|
version: "0.1.0",
|
|
elixir: "~> 1.20-rc",
|
|
start_permanent: Mix.env() == :prod,
|
|
deps: deps(),
|
|
compilers: [:elixir_make] ++ Mix.compilers(),
|
|
make_targets: ["all"],
|
|
make_clean: ["clean"],
|
|
make_env: &make_env/0
|
|
]
|
|
end
|
|
|
|
def application do
|
|
[
|
|
extra_applications: [:logger]
|
|
]
|
|
end
|
|
|
|
defp deps do
|
|
[
|
|
{:elixir_make, "~> 0.9", runtime: false},
|
|
]
|
|
end
|
|
|
|
defp make_env do
|
|
verify_chromaprint_source!()
|
|
|
|
%{
|
|
"ERTS_INCLUDE_DIR" => erts_include_dir(),
|
|
"CHROMAPRINT_USE_SYSTEM" =>
|
|
if(System.get_env("CHROMAPRINT_USE_SYSTEM") in ~w(1 true on ON YES yes),
|
|
do: "ON",
|
|
else: "OFF"
|
|
)
|
|
}
|
|
end
|
|
|
|
defp erts_include_dir do
|
|
Path.join([
|
|
:code.root_dir() |> to_string(),
|
|
"erts-#{:erlang.system_info(:version)}",
|
|
"include"
|
|
])
|
|
end
|
|
|
|
defp verify_chromaprint_source! do
|
|
use_system = System.get_env("CHROMAPRINT_USE_SYSTEM") in ~w(1 true on ON YES yes)
|
|
submodule_cmake = Path.join([__DIR__, "c_src", "chromaprint", "CMakeLists.txt"])
|
|
|
|
if not use_system and not File.exists?(submodule_cmake) do
|
|
Mix.raise("""
|
|
The chromaprint source submodule is missing at c_src/chromaprint/.
|
|
|
|
Either initialise it:
|
|
|
|
git submodule update --init c_src/chromaprint
|
|
|
|
Or, to link against a system-provided libchromaprint (recommended for
|
|
Nix and other sandboxed builds), set CHROMAPRINT_USE_SYSTEM=1 and ensure
|
|
chromaprint.h and libchromaprint can be found via the compiler's default
|
|
paths (or CHROMAPRINT_INCLUDE_DIR / CHROMAPRINT_LIB_DIR if not).
|
|
""")
|
|
end
|
|
end
|
|
end
|