defmodule ExZstd.MixProject do use Mix.Project @source_url "https://gitlab.com/chrooti/ex_zstd" def project do [ app: :ex_zstd, deps: deps(Mix.env()), elixir: "~> 1.7", version: "0.3.2", package: package(), compilers: compilers(), source_url: @source_url, description: description(), build_embedded: Mix.env() == :prod, start_permanent: Mix.env() == :prod ] end defp deps(_), do: [ {:ex_doc, ">= 0.0.0", only: :dev, runtime: false} ] defp package, do: [ name: "ex_zstd_reloaded", files: [ "lib", ".formatter.exs", "mix.exs", "README.md", "LICENSE", "c_src", "Makefile" ], links: %{"Gitlab" => @source_url}, licenses: ["BSD-4-Clause"] ] defp compilers, do: [ :nif_ex_zstd, :elixir, :app ] defp description do "Elixir bindings to the Zstandard library" end end defmodule Mix.Tasks.Compile.NifExZstd do def run(_args) do artifact_path = Path.join([Mix.Project.build_path(), "lib", "ex_zstd", "priv"]) with {nproc, 0} <- System.cmd("nproc", []), nproc <- nproc |> String.trim_trailing("\n"), {_, 0} = System.cmd("make", ["-j", nproc]) do System.cmd("make", ["install", "DESTDIR=#{artifact_path}"]) :ok else _ -> :error end end def clean() do {_, 0} = System.cmd("make", ["clean"]) end end