Rewrite link time optimization in Makefile
authorMarco Costalba <mcostalba@gmail.com>
Sat, 12 Nov 2011 09:10:01 +0000 (10:10 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 12 Nov 2011 10:55:45 +0000 (11:55 +0100)
Instead of binding link time optimization to the choice of
popcount support, do the right thing and add -flto option
when gcc 4.5 or later is detected.

Although it should be supported also under mingw, it happens
that it doesn't, at least on my 4.6.1 due to some known bugs.

Thanks to Mike for helping me with this patch.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/Makefile

index 9650c7f..1e765fa 100644 (file)
@@ -308,15 +308,19 @@ endif
 
 ### 3.10 popcnt
 ifeq ($(popcnt),yes)
-       CXXFLAGS += -DUSE_POPCNT
-
-    ### For gcc we add also msse3 support and Link Time Optimization, note that
-    ### this is a mix of compile and link time options because the lto link phase
-    ### needs access to the optimization flags.
-    ifeq ($(comp),gcc)
-        CXXFLAGS += -msse3 -flto
-        LDFLAGS += $(CXXFLAGS)
-    endif
+       CXXFLAGS += -msse3 -DUSE_POPCNT
+endif
+
+### 3.11 Link Time Optimization, it works since gcc 4.5 but not on mingw.
+### This is a mix of compile and link time options because the lto link phase
+### needs access to the optimization flags.
+ifeq ($(comp),gcc)
+       GCC_MAJOR := `gcc -dumpversion | cut -f1 -d.`
+       GCC_MINOR := `gcc -dumpversion | cut -f2 -d.`
+       ifeq (1,$(shell expr \( $(GCC_MAJOR) \> 4 \) \| \( $(GCC_MAJOR) \= 4 \& $(GCC_MINOR) \>= 5 \)))
+               CXXFLAGS += -flto
+               LDFLAGS += $(CXXFLAGS)
+       endif
 endif
 
 ### ==========================================================================