%% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*-
%% ex: ft=erlang ts=4 sw=4 et

%% Licensed under the Apache License, Version 2.0 (the "License"); you may not
%% use this file except in compliance with the License. You may obtain a copy of
%% the License at
%%
%%   http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
%% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
%% License for the specific language governing permissions and limitations under
%% the License.

Arch = erlang:system_info(system_architecture),

ICUConfig = fun(Args) ->
    {0, Value} = eunit_lib:command("icu-config " ++ Args),
    [C||C <- Value, C =/= $\n]
end,

GetFlag = fun(Name, Args) ->
        case os:getenv(Name) of
            false -> ICUConfig(Args);
            Val -> Val
        end
    end,

ICUCFLAGS = GetFlag("ICU_CFLAGS", "--cflags"),
ICUCXXFLAGS = GetFlag("ICU_CXXFLAGS", "--cxxflags"),
ICULDFLAGS = GetFlag("ICU_LDFLAGS", "--ldflags"),
ICUINCPATH = GetFlag("ICU_INCPATH", "--cppflags-searchpath"),


PortEnv = [{port_env, [
            {"CFLAGS",  ICUCFLAGS ++  " $CFLAGS " ++ ICUINCPATH},
            {"CXXFLAGS", ICUCXXFLAGS ++ " $CXXFLAGS " ++ ICUINCPATH},
            {"LDFLAGS",  ICULDFLAGS ++ " $LDFLAGS"}]},

           {port_specs, [
            {filename:join(["priv", Arch, "couch_collate.so"]),
            ["c_src/*.c"]}]}
],

lists:keymerge(1,lists:keysort(1, PortEnv), lists:keysort(1, CONFIG)).
