scons: fix hook for 'deprecated' attribute
On the new release, the compilation is polluted by the same warning:
> ''deprecated' attribute directive ignored
It seems that the hook added in this patch does not work:
https://gem5-review.googlesource.com/c/public/gem5/+/45246/1..7
The snippet of code compile with TryCompile on g++{8,9}.
It probably comes from the fact that the compilation
only creates a warning and not an error.
By adding temporarily '-Werror' for this compilation test,
it filters the faulty gcc versions.
Change-Id: I2b8b7a1a7e06df437b76e98d212947f4f9452311
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/48843
Reviewed-by: Gabe Black <gabe.black@gmail.com>
Maintainer: Gabe Black <gabe.black@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
(cherry picked from commit a366e66272b7c4b01037d68a7723922b49f506cd)
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/50028
Maintainer: Bobby R. Bruce <bbruce@ucdavis.edu>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br>
diff --git a/src/base/SConsopts b/src/base/SConsopts
index ea11bd4..9fafd64 100644
--- a/src/base/SConsopts
+++ b/src/base/SConsopts
@@ -56,12 +56,21 @@
# alternative stacks.
conf.env['HAVE_VALGRIND'] = conf.CheckCHeader('valgrind/valgrind.h')
- conf.env['HAVE_DEPRECATED_NAMESPACE'] = conf.TryCompile('''
+
+# Check if the compiler supports the [[gnu::deprecated]] attribute
+# Create a temporary environment with -Werror in CCFLAGS
+werror_env = main.Clone()
+werror_env.Append(CCFLAGS=['-Werror'])
+with gem5_scons.Configure(werror_env) as conf:
+
+ # Store result in the main environment
+ main['HAVE_DEPRECATED_NAMESPACE'] = conf.TryCompile('''
int main() {return 0;}
namespace [[gnu::deprecated("Test namespace deprecation")]]
test_deprecated_namespace {}
''', '.cc')
- if not conf.env['HAVE_DEPRECATED_NAMESPACE']:
+
+ if not main['HAVE_DEPRECATED_NAMESPACE']:
warning("Deprecated namespaces are not supported by this compiler.\n"
"Please make sure to check the mailing list for deprecation "
"announcements.")