diff options
author | Mickael Remond <mremond@process-one.net> | 2015-06-30 00:14:18 +0300 |
---|---|---|
committer | Mickael Remond <mremond@process-one.net> | 2015-06-30 00:14:18 +0300 |
commit | df57a07dd5d760d7956500caa3262ff84538a560 (patch) | |
tree | 7a1b13361ba03e3c825bf2af83c3f9342c7f9e75 /mix.exs | |
parent | 3c12d1a9603af01e57ba45ecef498ec8f1e7a0c6 (diff) |
Keep the version hardcoded in mix.exs file
Generated the mix.exs file through configure is not possible when using mix, as
it does not run configure after having downloaded the dependencies.
#621
Diffstat (limited to 'mix.exs')
-rw-r--r-- | mix.exs | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/mix.exs b/mix.exs new file mode 100644 index 000000000..c93a08811 --- /dev/null +++ b/mix.exs @@ -0,0 +1,77 @@ +defmodule Ejabberd.Mixfile do + use Mix.Project + + def project do + [app: :ejabberd, + version: "15.06", + elixir: "~> 1.0", + elixirc_paths: ["lib"], + compile_path: ".", + compilers: [:asn1] ++ Mix.compilers, + erlc_options: erlc_options, + erlc_paths: ["asn1", "src"], + 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"}, + {:esip, github: "processone/p1_sip"}, + {:p1_stun, github: "processone/stun"}, + {:ehyperloglog, github: "vaxelfel/eHyperLogLog"}, + {:p1_mysql, github: "processone/mysql"}, + {:p1_pgsql, github: "processone/pgsql"}, + {:eredis, github: "wooga/eredis"} + ] + end +end + +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))] + case :asn1ct.compile(Erlang.to_erl_file(input), options) do + :ok -> {:ok, :done} + error -> error + end + end) + end + + def manifests, do: [manifest] + defp manifest, do: Path.join(Mix.Project.manifest_path, @manifest) + + def clean, do: Erlang.clean(manifest()) +end |