From b90bdcf8d0330d6472b6bf99bfa594f706879c16 Mon Sep 17 00:00:00 2001 From: Andreas Hansson Date: Sun, 10 Aug 2014 05:38:56 -0400 Subject: [PATCH] scons: Warn for incompatible gcc and binutils It seems gcc >4.8 does not get along well with binutils <= 2.22, and to help users this patch adds a warning with an indication for how to fix the issue. It might even be worth adding a Exit(-1) and stop the build. --- SConstruct | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/SConstruct b/SConstruct index 6a44f3a94..d5f56b22a 100755 --- a/SConstruct +++ b/SConstruct @@ -580,6 +580,22 @@ if main['GCC']: main['GCC_VERSION'] = gcc_version + # gcc from version 4.8 and above generates "rep; ret" instructions + # to avoid performance penalties on certain AMD chips. Older + # assemblers detect this as an error, "Error: expecting string + # instruction after `rep'" + if compareVersions(gcc_version, "4.8") > 0: + as_version = readCommand([main['AS'], '-v', '/dev/null'], + exception=False).split() + + if not as_version or compareVersions(as_version[-1], "2.23") < 0: + print termcap.Yellow + termcap.Bold + \ + 'Warning: This combination of gcc and binutils have' + \ + ' known incompatibilities.\n' + \ + ' If you encounter build problems, please update ' + \ + 'binutils to 2.23.' + \ + termcap.Normal + # Add the appropriate Link-Time Optimization (LTO) flags # unless LTO is explicitly turned off. Note that these flags # are only used by the fast target.