diff options
Diffstat (limited to 'rebar.config.script')
-rw-r--r-- | rebar.config.script | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/rebar.config.script b/rebar.config.script new file mode 100644 index 000000000..9ab6ef9ea --- /dev/null +++ b/rebar.config.script @@ -0,0 +1,132 @@ +%%%------------------------------------------------------------------- +%%% @author Evgeniy Khramtsov <ekhramtsov@process-one.net> +%%% @copyright (C) 2013, Evgeniy Khramtsov +%%% @doc +%%% +%%% @end +%%% Created : 1 May 2013 by Evgeniy Khramtsov <ekhramtsov@process-one.net> +%%%------------------------------------------------------------------- +Cfg = case file:consult("vars.config") of + {ok, Terms} -> + Terms; + _Err -> + [] + end, + +Macros = lists:flatmap( + fun({roster_gateway_workaround, true}) -> + [{d, 'ROSTER_GATEWAY_WORKAROUND'}]; + ({transient_supervisors, true}) -> + [{d, 'NO_TRANSIENT_SUPERVISORS'}]; + ({nif, true}) -> + [{d, 'NIF'}]; + ({db_type, mssql}) -> + [{d, 'mssql'}]; + ({lager, true}) -> + [{d, 'LAGER'}]; + (_) -> + [] + end, Cfg), + +DebugInfo = case lists:keysearch(debug, 1, Cfg) of + {value, {debug, true}} -> + [debug_info]; + _ -> + [] + end, + +HiPE = case lists:keysearch(hipe, 1, Cfg) of + {value, {hipe, true}} -> + [native]; + _ -> + [] + end, + +Includes = [{i, "include"}, + {i, filename:join(["deps", "p1_xml", "include"])}], + +SrcDirs = lists:foldl( + fun({tools, true}, Acc) -> + [tools|Acc]; + (_, Acc) -> + Acc + end, [], Cfg), + +Deps = [{p1_logger, ".*", {git, "git://github.com/processone/p1_logger"}}, + {p1_cache_tab, ".*", {git, "git://github.com/processone/cache_tab"}}, + {p1_tls, ".*", {git, "git://github.com/processone/tls"}}, + {p1_stringprep, ".*", {git, "git://github.com/processone/stringprep"}}, + {p1_xml, ".*", {git, "git://github.com/processone/xml"}}, + {xmlrpc, ".*", {git, "git://github.com/rds13/xmlrpc"}}], + +ConfigureCmd = fun(Pkg, Flags) -> + {'get-deps', + "sh -c 'cd deps/" ++ Pkg ++ + " && ./configure" ++ Flags ++ "'"} + end, + +XMLFlags = lists:foldl( + fun({nif, true}, Acc) -> + Acc ++ " --enable-nif"; + ({full_xml, true}, Acc) -> + Acc ++ " --enable-full-xml"; + (_, Acc) -> + Acc + end, "", Cfg), + +PostHooks = [ConfigureCmd("p1_tls", ""), + ConfigureCmd("p1_stringprep", ""), + ConfigureCmd("p1_xml", XMLFlags)], + +CfgDeps = lists:flatmap( + fun({mysql, true}) -> + [{p1_mysql, ".*", {git, "git://github.com/processone/mysql"}}]; + ({pgsql, true}) -> + [{p1_pgsql, ".*", {git, "git://github.com/processone/pgsql"}}]; + ({pam, true}) -> + [{p1_pam, ".*", {git, "git://github.com/processone/epam"}}]; + ({zlib, true}) -> + [{p1_zlib, ".*", {git, "git://github.com/processone/zlib"}}]; + ({stun, true}) -> + [{p1_stun, ".*", {git, "git://github.com/processone/stun"}}]; + ({json, true}) -> + [{jiffy, ".*", {git, "git://github.com/davisp/jiffy"}}]; + ({iconv, true}) -> + [{p1_iconv, ".*", {git, "git://github.com/processone/eiconv"}}]; + ({http, true}) -> + [{ibrowse, ".*", {git, "git://github.com/cmullaparthi/ibrowse"}}, + {lhttpc, ".*", {git, "git://github.com/esl/lhttpc"}}]; + ({lager, true}) -> + [{lager, ".*", {git, "git://github.com/basho/lager"}}]; + (_) -> + [] + end, Cfg), + +CfgPostHooks = lists:flatmap( + fun({pam, true}) -> + [ConfigureCmd("p1_pam", "")]; + ({zlib, true}) -> + [ConfigureCmd("p1_zlib", "")]; + ({iconv, true}) -> + [ConfigureCmd("p1_iconv", "")]; + (_) -> + [] + end, Cfg), + +{ok, Cwd} = file:get_cwd(), + +Config = [{erl_opts, Includes ++ Macros ++ HiPE ++ DebugInfo ++ + [{src_dirs, [asn1, src | SrcDirs]}]}, + {sub_dirs, ["rel"]}, + {ct_extra_params, "-include " + ++ filename:join([Cwd, "tools"]) ++ " " + ++ filename:join([Cwd, "deps", "p1_xml", "include"])}, + {post_hooks, PostHooks ++ CfgPostHooks}, + {deps, Deps ++ CfgDeps}], +%%io:format("ejabberd configuration:~n ~p~n", [Config]), +Config. + +%% Local Variables: +%% mode: erlang +%% End: +%% vim: set filetype=erlang tabstop=8: |