2015-04-04 17:42:12 +02:00
|
|
|
defmodule Ejabberd.Mixfile do
|
|
|
|
use Mix.Project
|
|
|
|
|
|
|
|
def project do
|
|
|
|
[app: :ejabberd,
|
2016-06-23 15:23:28 +02:00
|
|
|
version: "16.06.0",
|
2016-01-24 10:19:28 +01:00
|
|
|
description: description,
|
2016-03-02 13:35:35 +01:00
|
|
|
elixir: "~> 1.2",
|
2015-04-04 17:42:12 +02:00
|
|
|
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"],
|
2016-07-26 12:17:37 +02:00
|
|
|
# Elixir tests are starting the part of ejabberd they need
|
|
|
|
aliases: [test: "test --no-start"],
|
2015-09-29 20:18:49 +02:00
|
|
|
package: package,
|
2015-04-04 17:42:12 +02:00
|
|
|
deps: deps]
|
|
|
|
end
|
|
|
|
|
2016-01-24 10:19:28 +01:00
|
|
|
defp description do
|
|
|
|
"""
|
|
|
|
Robust, ubiquitous and massively scalable Jabber / XMPP Instant Messaging platform.
|
|
|
|
"""
|
|
|
|
end
|
|
|
|
|
2015-04-04 17:42:12 +02:00
|
|
|
def application do
|
|
|
|
[mod: {:ejabberd_app, []},
|
2016-01-23 19:00:22 +01:00
|
|
|
applications: [:ssl],
|
|
|
|
included_applications: [:lager, :mnesia, :p1_utils, :cache_tab,
|
2016-02-03 19:03:17 +01:00
|
|
|
:fast_tls, :stringprep, :fast_xml,
|
2016-02-03 16:13:16 +01:00
|
|
|
:stun, :fast_yaml, :ezlib, :iconv,
|
2016-08-17 17:29:24 +02:00
|
|
|
:esip, :jiffy, :p1_oauth2, :eredis,
|
2016-01-06 12:27:43 +01:00
|
|
|
:p1_mysql, :p1_pgsql, :sqlite3]]
|
2015-04-04 17:42:12 +02:00
|
|
|
end
|
2015-09-29 20:19:35 +02:00
|
|
|
|
2015-04-04 17:42:12 +02:00
|
|
|
defp erlc_options do
|
2015-09-07 17:35:58 +02:00
|
|
|
# Use our own includes + includes from all dependencies
|
2015-09-07 17:55:54 +02:00
|
|
|
includes = ["include"] ++ Path.wildcard(Path.join("..", "/*/include"))
|
2015-09-07 17:35:58 +02:00
|
|
|
[:debug_info] ++ Enum.map(includes, fn(path) -> {:i, path} end)
|
2015-04-04 17:42:12 +02:00
|
|
|
end
|
2015-09-29 20:19:35 +02:00
|
|
|
|
2015-04-04 17:42:12 +02:00
|
|
|
defp deps do
|
2016-06-10 11:01:46 +02:00
|
|
|
[{:lager, "~> 3.0.0"},
|
2016-02-03 19:03:17 +01:00
|
|
|
{:p1_utils, "~> 1.0"},
|
2016-02-03 10:55:40 +01:00
|
|
|
{:cache_tab, "~> 1.0"},
|
|
|
|
{:stringprep, "~> 1.0"},
|
|
|
|
{:fast_yaml, "~> 1.0"},
|
2016-02-03 16:13:16 +01:00
|
|
|
{:fast_tls, "~> 1.0"},
|
2016-02-03 19:03:17 +01:00
|
|
|
{:fast_xml, "~> 1.1"},
|
2016-02-03 11:26:14 +01:00
|
|
|
{:stun, "~> 1.0"},
|
|
|
|
{:esip, "~> 1.0"},
|
2016-02-03 10:55:40 +01:00
|
|
|
{:jiffy, "~> 0.14.7"},
|
|
|
|
{:p1_oauth2, "~> 0.6.1"},
|
2016-02-03 11:10:11 +01:00
|
|
|
{:p1_mysql, "~> 1.0"},
|
2016-06-23 15:23:28 +02:00
|
|
|
{:p1_pgsql, "~> 1.1"},
|
2016-02-03 10:55:40 +01:00
|
|
|
{:sqlite3, "~> 1.1"},
|
2016-02-03 12:30:12 +01:00
|
|
|
{:ezlib, "~> 1.0"},
|
2016-02-03 11:17:16 +01:00
|
|
|
{:iconv, "~> 1.0"},
|
2016-02-03 10:55:40 +01:00
|
|
|
{:eredis, "~> 1.0"},
|
2016-07-19 12:35:45 +02:00
|
|
|
{:exrm, "~> 1.0.0", only: :dev},
|
|
|
|
# relx is used by exrm. Lock version as for now, ejabberd doesn not compile fine with
|
|
|
|
# version 3.20:
|
2016-07-26 12:17:37 +02:00
|
|
|
{:relx, "~> 3.19.0", only: :dev},
|
|
|
|
{:meck, "~> 0.8.4", only: :test},
|
2016-08-07 18:28:14 +02:00
|
|
|
{:moka, github: "processone/moka", tag: "1.0.5c", only: :test}]
|
2015-09-29 20:19:35 +02:00
|
|
|
end
|
2015-09-29 20:18:49 +02:00
|
|
|
|
|
|
|
defp package do
|
2016-01-24 10:07:12 +01:00
|
|
|
[# These are the default files included in the package
|
|
|
|
files: ["lib", "src", "priv", "mix.exs", "include", "README.md", "COPYING"],
|
|
|
|
maintainers: ["ProcessOne"],
|
|
|
|
licenses: ["GPLv2"],
|
|
|
|
links: %{"Site" => "https://www.ejabberd.im",
|
|
|
|
"Documentation" => "http://docs.ejabberd.im",
|
2016-02-08 11:50:04 +01:00
|
|
|
"Source" => "https://github.com/processone/ejabberd",
|
|
|
|
"ProcessOne" => "http://www.process-one.net/"}]
|
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}
|
2015-05-29 09:30:16 +02:00
|
|
|
error -> error
|
2015-04-06 12:39:21 +02:00
|
|
|
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
|