rebar.config

{erl_opts, [
  debug_info,
  warnings_as_errors,
  warn_export_all,
  warn_export_vars,
  warn_missing_spec,
  warn_obsolete_guard,
  warn_shadow_vars,
  warn_untyped_record,
  warn_unused_import,
  warn_unused_vars
]}.

{deps, []}.

{plugins, [rebar3_hex, rebar3_ex_doc]}.

{pre_hooks, [{compile, "./c_src/build.sh"}]}.
{post_hooks, [{clean, "rm -f priv/knot.so"}]}.

{dialyzer, [{plt_extra_apps, []}]}.

{hex, [{doc, #{provider => ex_doc}}]}.
{ex_doc, [
  {api_reference, true},
  {extras, ["README.md", "CHANGELOG.md", "LICENSE"]},
  {main, "readme"},
  {source_url, "https://github.com/lpgauth/knot"}
]}.

{xref_checks, [
  deprecated_functions,
  deprecated_function_calls,
  locals_not_used,
  undefined_function_calls
]}.

{profiles, [
  {bench, [
    {deps, [
      %% granderl 0.1.5 on hex is broken on OTP 27+ AND lacks aarch64
      %% rdtsc support. Use lpgauth/granderl master (both fixes applied)
      %% for the bench-only comparison.
      {granderl, {git, "https://github.com/lpgauth/granderl.git", {branch, "master"}}},
      {timing, {git, "https://github.com/lpgauth/timing.git", {tag, "0.1.3"}}}
    ]},
    {extra_src_dirs, ["test"]}
  ]},
  {test, [
    {erl_opts, [nowarn_export_all, nowarn_missing_spec]},
    {extra_src_dirs, ["test"]}
  ]}
]}.