% This file is part of Jiffy released under the MIT license.
% See the LICENSE file for more information.
%
% Only run the EQC checks when EQC is present.

HaveEQC = code:which(eqc) =/= non_existing,

ErlOpts = if not HaveEQC -> []; true ->
    [{d, 'HAVE_EQC'}]
end,

Config1 = case lists:keyfind(erl_opts, 1, CONFIG) of
    {erl_opts, Opts} ->
        NewOpts = {erl_opts, Opts ++ ErlOpts},
        lists:keyreplace(erl_opts, 1, CONFIG, NewOpts);
    false ->
        CONFIG ++ [{erl_opts, ErlOpts}]
end,

case os:type() of
    {unix, _} ->
        CC = case os:getenv("CC") of
            false -> "cc";
            Else -> Else
        end,
        FLTO_CHECK = "echo 'int main(int argc, char *argv[]) {return 0;}' | "
                ++ CC ++ " -c -x c -o /dev/null -flto -",
        case os:cmd(FLTO_CHECK) of
            [] ->
                {port_env, PortEnv} = lists:keyfind(port_env, 1, Config1),
                NewFlag = {".*", "FLTO_FLAG", "-flto"},
                NewPortEnv = lists:keyreplace("FLTO_FLAG", 2, PortEnv, NewFlag),
                lists:keyreplace(port_env, 1, Config1, {port_env, NewPortEnv});
            _ ->
                Config1
        end;
    _ ->
        Config1
end.
