Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

support both R14 'behaviours' and R15+ 'callback info'

  • Loading branch information...
commit a96ae5dc597cbc01515c75fea9f41a6d79be91b3 1 parent a558084
@ericbmerritt ericbmerritt authored
Showing with 34 additions and 2 deletions.
  1. +1 −2  Makefile
  2. +15 −0 rebar.config.script
  3. +18 −0 src/rcl_provider.erl
View
3  Makefile
@@ -81,8 +81,7 @@ $(DEPS_PLT):
--apps erts kernel stdlib -r deps
dialyzer: $(DEPS_PLT)
- dialyzer --plt $(DEPS_PLT) --fullpath -Wrace_conditions \
- -I include -pa $(CURDIR)/ebin --src src
+ dialyzer --fullpath --plt $(DEPS_PLT) -I include -Wrace_conditions -r ./ebin
typer:
typer --plt $(DEPS_PLT) -r ./src
View
15 rebar.config.script
@@ -0,0 +1,15 @@
+{match, [ErtsNumber]} = re:run(erlang:system_info(otp_release), "R(\\d+).+", [{capture, [1], list}]),
+ErtsVsn = erlang:list_to_integer(ErtsNumber),
+Opts1 = case lists:keysearch(erl_opts, 1, CONFIG) of
+ {value, {erl_opts, Opts0}} ->
+ Opts0;
+ false ->
+ []
+ end,
+Opts2 = if
+ ErtsVsn >= 15 ->
+ [{d, have_callback_support} | Opts1];
+ true ->
+ Opts1
+ end,
+lists:keystore(erl_opts, 1, CONFIG, {erl_opts, Opts2}).
View
18 src/rcl_provider.erl
@@ -41,10 +41,28 @@
-opaque t() :: {?MODULE, module()}.
+
+-ifdef(have_callback_support).
+
-callback init(rcl_state:t()) -> {ok, rcl_state:t()} | relcool:error().
-callback do(rcl_state:t()) -> {ok, rcl_state:t()} | relcool:error().
-callback format_error(Reason::term()) -> iolist().
+-else.
+
+%% In the case where R14 or lower is being used to compile the system
+%% we need to export a behaviour info
+-export([behaviour_info/1]).
+-spec behaviour_info(atom()) -> [{atom(), arity()}] | undefined.
+behaviour_info(callbacks) ->
+ [{init, 1},
+ {do, 1},
+ {format_error, 1}];
+behaviour_info(_) ->
+ undefined.
+
+-endif.
+
%%%===================================================================
%%% API
%%%===================================================================
Please sign in to comment.
Something went wrong with that request. Please try again.