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 9650c7f615d39fbca602894ba32075306650f93a..1e765faad581025f642e44dce80baf18a9306a9f 100644 (file)
@@ -308,15 +308,19 @@ endif
 
 ### 3.10 popcnt
 ifeq ($(popcnt),yes)
 
 ### 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
 
 ### ==========================================================================
 endif
 
 ### ==========================================================================