%%%------------------------------------------------------------------- %%% @author Evgeniy Khramtsov <ekhramtsov@process-one.net> %%% @copyright (C) 2013-2016, Evgeniy Khramtsov %%% @doc %%% %%% @end %%% Created : 1 May 2013 by Evgeniy Khramtsov <ekhramtsov@process-one.net> %%%------------------------------------------------------------------- Cfg = case file:consult(filename:join(filename:dirname(SCRIPT), "vars.config")) of {ok, Terms} -> Terms; _Err -> [] end, ProcessVars = fun(_F, [], Acc) -> lists:reverse(Acc); (F, [{Type, Var, Value} | Tail], Acc) when Type == if_var_true orelse Type == if_var_false -> Flag = Type == if_var_true, case proplists:get_bool(Var, Cfg) of V when V == Flag -> F(F, Tail, [Value | Acc]); _ -> F(F, Tail, Acc) end; (F, [{Type, Var, Match, Value} | Tail], Acc) when Type == if_var_match orelse Type == if_var_no_match -> case proplists:get_value(Var, Cfg) of V when V == Match -> F(F, Tail, [Value | Acc]); _ -> F(F, Tail, Acc) end; (F, [Other1 | Tail1], Acc) -> F(F, Tail1, [F(F, Other1, []) | Acc]); (F, Val, Acc) when is_tuple(Val) -> list_to_tuple(F(F, tuple_to_list(Val), Acc)); (_F, Other2, _Acc) -> Other2 end, CFLags = proplists:get_value(cflags, Cfg, ""), CPPFLags = proplists:get_value(cppflags, Cfg, ""), LDFLags = proplists:get_value(ldflags, Cfg, ""), ConfigureCmd = fun(Pkg, Flags) -> {'get-deps', "sh -c 'cd deps/" ++ Pkg ++ " && CFLAGS=\""++ CFLags ++"\" CPPFLAGS=\""++ CPPFLags ++"\" LDFLAGS=\""++ LDFLags ++"\"" ++ " ./configure " ++ Flags ++ "'"} end, Conf = ProcessVars(ProcessVars, CONFIG, []), Conf1 = case lists:keytake(post_hook_configure, 1, Conf) of {value, {_, Items}, Rest} -> [{post_hooks, [ConfigureCmd(Mod, string:join(Opts, " ")) || {Mod, Opts} <- Items]} | Rest]; _ -> Conf end, {ok, Cwd} = file:get_cwd(), TestConfigFile = filename:join([Cwd, "test", "config.ctc"]), TestConfig = case file:read_file_info(TestConfigFile) of {ok, _} -> "-userconfig ct_config_plain " ++ TestConfigFile ++ " "; _ -> "" end, Conf2 = [{ct_extra_params, "-ct_hooks cth_surefire " ++ TestConfig ++ "-include " ++ filename:join([Cwd, "tools"])} | Conf1], Conf3 = case lists:keytake(xref_exclusions, 1, Conf2) of {value, {_, Items2}, Rest2} -> [{xref_queries, [{lists:flatten(["(XC - UC) || (XU - X - B ", [[" - ", V] || V <- Items2], ")"]), []}]} | Rest2]; _ -> Conf2 end, Conf5 = case lists:keytake(floating_deps, 1, Conf3) of {value, {_, FloatingDeps}, Rest4} -> case lists:keytake(deps, 1, Rest4) of {value, {_, Deps}, Rest41} -> ND = lists:map(fun({DepName, Ver, {git, Repo, _Commit}}=Dep) -> case lists:member(DepName, FloatingDeps) of true -> {DepName, ".*", {git, Repo}}; _ -> Dep end; (Dep2) -> Dep2 end, Deps), [{deps, ND} | Rest41]; _ -> Rest4 end; _ -> Conf3 end, %io:format("ejabberd configuration:~n ~p~n", [Conf5]), Conf5. %% Local Variables: %% mode: erlang %% End: %% vim: set filetype=erlang tabstop=8: