Merge remote-tracking branch 'davisp/master'
diff --git a/.travis.yml b/.travis.yml
index 61a6d09..4a827cd 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,19 +1,10 @@
language: erlang
otp_release:
- - 21.0
- - 20.0
+ - 22.2.4
+ - 21.3.8.1
+ - 20.3.8.22
- 19.3
- - 19.2
- - 19.1
- - 19.0
- 18.3
- - 18.2
- 17.5
- - 17.4
- R16B03-1
- - R16B02
- - R15B03
- - R15B02
- - R14B04
- - R14B03
diff --git a/rebar.config b/rebar.config
index 396631e..b951b5e 100644
--- a/rebar.config
+++ b/rebar.config
@@ -7,13 +7,15 @@
]}.
{port_env, [
- {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)",
- "CFLAGS", "$CFLAGS -Ic_src/ -g -Wall -flto -Werror -O3"},
- {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)",
- "CXXFLAGS", "$CXXFLAGS -Ic_src/ -g -Wall -flto -Werror -O3"},
+ {".*", "FLTO_FLAG", ""},
{"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)",
- "LDFLAGS", "$LDFLAGS -flto -lstdc++"},
+ "CFLAGS", "$CFLAGS -Ic_src/ -g -Wall $FLTO_FLAG -Werror -O3"},
+ {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)",
+ "CXXFLAGS", "$CXXFLAGS -Ic_src/ -g -Wall $FLTO_FLAG -Werror -O3"},
+
+ {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)",
+ "LDFLAGS", "$LDFLAGS $FLTO_FLAG -lstdc++"},
%% OS X Leopard flags for 64-bit
{"darwin9.*-64$", "CXXFLAGS", "-m64"},
diff --git a/rebar.config.script b/rebar.config.script
index 42bc6ef..a5da769 100644
--- a/rebar.config.script
+++ b/rebar.config.script
@@ -9,10 +9,31 @@
[{d, 'HAVE_EQC'}]
end,
-case lists:keyfind(erl_opts, 1, CONFIG) of
+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.