aboutsummaryrefslogtreecommitdiff
path: root/rebar.config.script
blob: f342a6c9075a524a6904e1de286b3d44e7de126a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
%%%-------------------------------------------------------------------
%%% @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}} ->
                    [];
                _ ->
                    [no_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_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"}},
        {p1_yaml, ".*", {git, "git://github.com/processone/p1_yaml"}},
        {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_yaml", ""),
             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"}}];
               ({lager, false}) ->
                    [{p1_logger, ".*", {git, "git://github.com/processone/p1_logger"}}];
               (_) ->
                    []
            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"]},
          {keep_build_info, true},
          {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: