Current section
Files
Jump to
Current section
Files
ex_zstd_reloaded
mix.exs
mix.exs
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.4.0",
package: package(),
compilers: compilers(),
source_url: @source_url,
description: description(),
build_embedded: Mix.env() == :prod,
start_permanent: Mix.env() == :prod,
aliases: aliases(),
dialyzer: dialyzer()
]
end
defp deps(_),
do: [
{:ex_doc, ">= 0.0.0", only: [:dev], runtime: false},
{:credo, "~> 1.6", only: [:dev, :test], runtime: false},
{:dialyxir, "~> 1.0", only: [:dev, :test], runtime: false}
]
defp package,
do: [
name: "ex_zstd_reloaded",
files: [
"lib",
".formatter.exs",
"mix.exs",
"README.md",
"LICENSE",
"c_src",
"Makefile",
"vendor/zstd.tar.gz"
],
links: %{"Gitlab" => @source_url},
licenses: ["MIT"]
]
defp compilers,
do: [
:nif_ex_zstd,
:elixir,
:app
]
defp description,
do: "Elixir bindings to the Zstandard library"
defp aliases,
do: [
check: [
"format --check-formatted",
"credo",
"dialyzer"
]
]
defp dialyzer(),
do: [
plt_add_deps: :app_tree,
flags: [
:missing_return,
:unknown,
:unmatched_returns,
:overspecs
]
]
end
defmodule Mix.Tasks.Compile.NifExZstd do
def run(_args) do
{nproc, 0} = System.cmd("nproc", [])
nproc = String.trim_trailing(nproc, "\n")
erlang_dir = :code.root_dir()
{_, 0} = System.cmd("make", ["ERLANGDIR=#{erlang_dir}", "--jobs=#{nproc}"])
[Mix.Project.build_path(), "lib/ex_zstd/priv"]
|> Path.join()
|> tap(&File.mkdir_p!/1)
|> then(&File.cp!("priv/c_out/ex_zstd_nif.so", "#{&1}/ex_zstd_nif.so"))
:ok
end
def clean() do
{_, 0} = System.cmd("make", ["clean-all"])
end
end