2015-04-04 17:42:12 +02:00
|
|
|
defmodule Ejabberd.Mixfile do
|
|
|
|
use Mix.Project
|
|
|
|
|
|
|
|
def project do
|
|
|
|
[app: :ejabberd,
|
|
|
|
version: "15.03.0",
|
|
|
|
elixir: "~> 1.0",
|
|
|
|
elixirc_paths: ["lib"],
|
|
|
|
compile_path: ".",
|
2015-04-06 12:29:11 +02:00
|
|
|
compilers: [:asn1] ++ Mix.compilers,
|
2015-04-04 17:42:12 +02:00
|
|
|
erlc_options: erlc_options,
|
2015-04-06 12:29:11 +02:00
|
|
|
erlc_paths: ["asn1", "src"],
|
2015-04-04 17:42:12 +02:00
|
|
|
deps: deps]
|
|
|
|
end
|
|
|
|
|
|
|
|
def application do
|
|
|
|
[mod: {:ejabberd_app, []},
|
|
|
|
applications: [:kernel, :stdlib]]
|
|
|
|
end
|
|
|
|
|
|
|
|
defp erlc_options do
|
|
|
|
includes = Path.wildcard(Path.join("..", "/*/include"))
|
|
|
|
[:debug_info, {:d, :NO_EXT_LIB}] ++ Enum.map(includes, fn(path) -> {:i, path} end)
|
|
|
|
end
|
|
|
|
|
|
|
|
defp deps do
|
|
|
|
[
|
|
|
|
{:p1_xml, github: "processone/xml"},
|
|
|
|
{:p1_logger, github: "processone/p1_logger"},
|
|
|
|
{:p1_yaml, github: "processone/p1_yaml"},
|
|
|
|
{:p1_tls, github: "processone/tls"},
|
|
|
|
{:p1_stringprep, github: "processone/stringprep"},
|
|
|
|
{:p1_zlib, github: "processone/zlib"},
|
|
|
|
{:p1_cache_tab, github: "processone/cache_tab"},
|
|
|
|
{:p1_utils, github: "processone/p1_utils"},
|
|
|
|
{:p1_iconv, github: "processone/eiconv"},
|
2015-04-06 12:29:11 +02:00
|
|
|
{:esip, github: "processone/p1_sip"},
|
|
|
|
{:p1_stun, github: "processone/stun"},
|
2015-04-04 17:42:12 +02:00
|
|
|
{:ehyperloglog, github: "vaxelfel/eHyperLogLog"},
|
|
|
|
{:p1_mysql, github: "processone/mysql"},
|
|
|
|
{:p1_pgsql, github: "processone/pgsql"},
|
2015-04-06 12:29:11 +02:00
|
|
|
{:eredis, github: "wooga/eredis"}
|
2015-04-04 17:42:12 +02:00
|
|
|
]
|
|
|
|
end
|
|
|
|
end
|
2015-04-06 12:29:11 +02:00
|
|
|
|
|
|
|
defmodule Mix.Tasks.Compile.Asn1 do
|
|
|
|
use Mix.Task
|
|
|
|
alias Mix.Compilers.Erlang
|
|
|
|
|
|
|
|
@recursive true
|
|
|
|
@manifest ".compile.asn1"
|
|
|
|
|
|
|
|
def run(args) do
|
|
|
|
{opts, _, _} = OptionParser.parse(args, switches: [force: :boolean])
|
|
|
|
|
|
|
|
project = Mix.Project.config
|
|
|
|
source_paths = project[:asn1_paths] || ["asn1"]
|
|
|
|
dest_paths = project[:asn1_target] || ["src"]
|
|
|
|
mappings = Enum.zip(source_paths, dest_paths)
|
|
|
|
options = project[:asn1_options] || []
|
|
|
|
|
|
|
|
Erlang.compile(manifest(), mappings, :asn1, :erl, opts[:force], fn
|
|
|
|
input, output ->
|
|
|
|
options = options ++ [:noobj, outdir: Erlang.to_erl_file(Path.dirname(output))]
|
2015-04-06 12:39:21 +02:00
|
|
|
case :asn1ct.compile(Erlang.to_erl_file(input), options) do
|
|
|
|
:ok -> {:ok, :done}
|
|
|
|
error -> error
|
|
|
|
end
|
2015-04-06 12:29:11 +02:00
|
|
|
end)
|
|
|
|
end
|
|
|
|
|
|
|
|
def manifests, do: [manifest]
|
|
|
|
defp manifest, do: Path.join(Mix.Project.manifest_path, @manifest)
|
|
|
|
|
|
|
|
def clean, do: Erlang.clean(manifest())
|
|
|
|
end
|