defmodule EKV.MixProject do
use Mix.Project
@version "0.1.0"
def project do
[
app: :ekv,
version: @version,
elixir: "~> 1.19",
elixirc_paths: elixirc_paths(Mix.env()),
start_permanent: Mix.env() == :prod,
compilers: [:elixir_make] ++ Mix.compilers(),
make_targets: ["all"],
make_clean: ["clean"],
make_precompiler: {:nif, CCPrecompiler},
make_precompiler_url:
"https://github.com/chrismccord/ekv/releases/download/v#{@version}/@{artefact_filename}",
make_precompiler_filename: "ekv_sqlite3_nif",
make_precompiler_nif_versions: ["2.16", "2.17"],
make_precompiler_priv_paths: ["ekv_sqlite3_nif.*"],
make_force_build: System.get_env("EKV_BUILD") in ["1", "true"] or Mix.env() in [:dev, :test],
cc_precompiler: [cleanup: "make clean"],
description: description(),
package: package(),
deps: deps()
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
def application do
[
extra_applications: [:logger],
mod: {EKV.Application, []}
]
end
defp description do
"""
Eventually consistent durable KV store backed by SQLite.
Data survives node restarts, node death, and network partitions.
Peer-to-peer replication across Erlang nodes with delta sync.
"""
end
defp package do
[
name: "ekv",
licenses: ["MIT"],
links: %{"GitHub" => "https://github.com/chrismccord/ekv"},
files: [
# "lib",
# "c_src/ekv_sqlite3_nif.c",
# "c_src/sqlite3.c",
# "c_src/sqlite3.h",
# "Makefile",
"mix.exs",
# "README.md",
# "LICENSE",
# "checksum-ekv.exs"
]
]
end
defp deps do
[
{:elixir_make, "~> 0.9", runtime: false},
{:cc_precompiler, "~> 0.1", runtime: false}
]
end
end