base: Add compiler macros to add deprecation warnings
authorAndreas Sandberg <Andreas.Sandberg@ARM.com>
Wed, 11 Feb 2015 15:23:24 +0000 (10:23 -0500)
committerAndreas Sandberg <Andreas.Sandberg@ARM.com>
Wed, 11 Feb 2015 15:23:24 +0000 (10:23 -0500)
Gcc and clang both provide an attribute that can be used to flag a
function as deprecated at compile time. This changeset adds a gem5
compiler macro for that compiler feature. The macro can be used to
indicate that a legacy API within gem5 has been deprecated and provide
a graceful migration to the new API.

src/SConscript
src/base/compiler.hh

index cffc4d157fb3c6f6af8d007b0573c83e9ca8b3ca..a479464a1108c256a4d54f80254eafda46c3d021 100755 (executable)
@@ -1061,7 +1061,12 @@ def makeEnv(env, label, objsfx, strip = False, **kwargs):
             new_env.Append(LINKFLAGS='-fsanitize=undefined')
 
     werror_env = new_env.Clone()
-    werror_env.Append(CCFLAGS='-Werror')
+    # Treat warnings as errors but white list some warnings that we
+    # want to allow (e.g., deprecation warnings).
+    werror_env.Append(CCFLAGS=['-Werror',
+                               '-Wno-error=deprecated-declarations',
+                               '-Wno-error=deprecated',
+                               ])
 
     def make_obj(source, static, extra_deps = None):
         '''This function adds the specified source to the correct
index b1fea055cf836cdee3ca840dfe0c3549cedcefc0..1a104dd879a360dd041e57cc202da94b99fe435d 100644 (file)
@@ -80,6 +80,8 @@
 #  define M5_VAR_USED __attribute__((unused))
 #  define M5_ATTR_PACKED __attribute__ ((__packed__))
 #  define M5_NO_INLINE __attribute__ ((__noinline__))
+#  define M5_DEPRECATED __attribute__((deprecated))
+#  define M5_DEPRECATED_MSG(MSG) __attribute__((deprecated(MSG)))
 #endif
 
 #if defined(__clang__)