summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2022-02-24 21:34:40 +0100
committerBadlop <badlop@process-one.net>2022-02-24 21:39:20 +0100
commitf721374321e1a6772d10583ea613b20de75edcc6 (patch)
treea2b611efccb8e1992c9012da47152a962f4b754a
parentFix bug introduced in 8d8a3177 (#3782) (diff)
Determine compile definitions based on Erlang version
This gives a clear definition of what erlang versions require each workaround, instead of depending on the actual workaround details. The lib module was removed in OTP 21.0, and the formatting options were moved to erl_error. The uri_string module was introduced in OTP 21.0.
-rw-r--r--mix.exs15
-rw-r--r--rebar.config4
2 files changed, 5 insertions, 14 deletions
diff --git a/mix.exs b/mix.exs
index 00659b34..4e61b0dc 100644
--- a/mix.exs
+++ b/mix.exs
@@ -50,15 +50,6 @@ defmodule Ejabberd.MixProject do
++ cond_apps()]
end
- defp if_function_exported(mod, fun, arity, okResult) do
- :code.ensure_loaded(mod)
- if :erlang.function_exported(mod, fun, arity) do
- okResult
- else
- []
- end
- end
-
defp if_version_above(ver, okResult) do
if :erlang.system_info(:otp_release) > ver do
okResult
@@ -82,15 +73,15 @@ defmodule Ejabberd.MixProject do
cond_options() ++
Enum.map(includes, fn (path) -> {:i, path} end) ++
if_version_above('20', [{:d, :DEPRECATED_GET_STACKTRACE}]) ++
+ if_version_above('20', [{:d, :HAVE_URI_STRING}]) ++
+ if_version_above('20', [{:d, :HAVE_ERL_ERROR}]) ++
if_version_below('21', [{:d, :USE_OLD_HTTP_URI}]) ++
if_version_below('22', [{:d, :LAGER}]) ++
if_version_below('21', [{:d, :NO_CUSTOMIZE_HOSTNAME_CHECK}]) ++
if_version_below('23', [{:d, :USE_OLD_CRYPTO_HMAC}]) ++
if_version_below('23', [{:d, :USE_OLD_PG2}]) ++
if_version_below('24', [{:d, :COMPILER_REPORTS_ONLY_LINES}]) ++
- if_version_below('24', [{:d, :SYSTOOLS_APP_DEF_WITHOUT_OPTIONAL}]) ++
- if_function_exported(:uri_string, :normalize, 1, [{:d, :HAVE_URI_STRING}]) ++
- if_function_exported(:erl_error, :format_exception, 6, [{:d, :HAVE_ERL_ERROR}])
+ if_version_below('24', [{:d, :SYSTOOLS_APP_DEF_WITHOUT_OPTIONAL}])
defines = for {:d, value} <- result, do: {:d, value}
result ++ [{:d, :ALL_DEFS, defines}]
end
diff --git a/rebar.config b/rebar.config
index eb51d129..6343a006 100644
--- a/rebar.config
+++ b/rebar.config
@@ -107,6 +107,8 @@
{erl_opts, [nowarn_deprecated_function,
{i, "include"},
{if_version_above, "20", {d, 'DEPRECATED_GET_STACKTRACE'}},
+ {if_version_above, "20", {d, 'HAVE_ERL_ERROR'}},
+ {if_version_above, "20", {d, 'HAVE_URI_STRING'}},
{if_version_below, "21", {d, 'USE_OLD_HTTP_URI'}},
{if_version_below, "22", {d, 'LAGER'}},
{if_version_below, "21", {d, 'NO_CUSTOMIZE_HOSTNAME_CHECK'}},
@@ -121,8 +123,6 @@
{if_var_true, roster_gateway_workaround, {d, 'ROSTER_GATEWAY_WORKAROUND'}},
{if_var_true, sip, {d, 'SIP'}},
{if_var_true, stun, {d, 'STUN'}},
- {if_have_fun, {erl_error, format_exception, 6}, {d, 'HAVE_ERL_ERROR'}},
- {if_have_fun, {uri_string, normalize, 1}, {d, 'HAVE_URI_STRING'}},
{src_dirs, [src,
{if_rebar3, sql},
{if_var_true, tools, tools},