summaryrefslogtreecommitdiff
path: root/config.lib
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-08-04 00:45:53 +0000
committerrubidium <rubidium@openttd.org>2007-08-04 00:45:53 +0000
commit8037a1cc2db799ea0c439c538def946c592f0721 (patch)
tree2c7efe202fe2fc2868c03e722aa5e4435614f4d9 /config.lib
parentb3bed1eda1001aa5cabe3df4f8686cc1f42bb2b8 (diff)
downloadopenttd-8037a1cc2db799ea0c439c538def946c592f0721.tar.xz
(svn r10779) -Fix: GCC 4.2 makes (by default for -O2, -O3 and -Os) an assumption that signed integers do not overflow, whereas it is very likely that some of the legacy code does so. It furthermore breaks with the assumed standard (the behaviour is not actually defined in the standard) about the behaviour when signed integers wrap.
Diffstat (limited to 'config.lib')
-rw-r--r--config.lib8
1 files changed, 8 insertions, 0 deletions
diff --git a/config.lib b/config.lib
index e84f48d91..e814df7ef 100644
--- a/config.lib
+++ b/config.lib
@@ -838,6 +838,14 @@ make_cflags_and_ldflags() {
CFLAGS="$CFLAGS -fno-strict-aliasing"
fi
+ # GCC 4.2+ automatically assumes that signed overflows do
+ # not occur in signed arithmetics, whereas we are not
+ # sure that they will not happen. It furthermore complains
+ # about it's own optimized code in some places.
+ if [ $cc_version -ge 42 ]; then
+ CFLAGS="$CFLAGS -fno-strict-overflow"
+ fi
+
if [ "$os" != "CYGWIN" ] && [ "$os" != "FREEBSD" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then
LIBS="$LIBS -lpthread"
LIBS="$LIBS -lrt"