summaryrefslogtreecommitdiff
path: root/Rules.mak
diff options
context:
space:
mode:
Diffstat (limited to 'Rules.mak')
-rw-r--r--Rules.mak15
1 files changed, 13 insertions, 2 deletions
diff --git a/Rules.mak b/Rules.mak
index bf0d111e8..4b305a562 100644
--- a/Rules.mak
+++ b/Rules.mak
@@ -259,8 +259,19 @@ endif
OPTIMIZATION+=$(call check_gcc,-Os,-O2)
# Use the gcc 3.4 -funit-at-a-time optimization when available
OPTIMIZATION+=$(call check_gcc,-funit-at-a-time,)
-# gcc 4.x needs -fcombine, else building all sources at once fails
-OPTIMIZATION+=$(call check_gcc,-fcombine,)
+
+# we try to compile all sources at once into an object (IMA), but
+# gcc-3.3.x does not support it
+# gcc-3.4.x supports it, but does not need and support --combine
+# gcc-4.0.x supports it, supports the --combine flag, but does not need it
+# gcc-4.1(200506xx) supports it, but needs the --combine flag, else libs are useless
+GCC_VER?=$(shell $(CC) -dumpversion | cut -d . -f 1,2)
+ifeq ($(GCC_VER),3.3)
+# not supported
+DOMULTI=n
+else
+OPTIMIZATION+=$(call check_gcc,--combine,)
+endif
# Add a bunch of extra pedantic annoyingly strict checks
XWARNINGS=$(subst ",, $(strip $(WARNINGS))) -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing