scons: Add an "All" compound debug flag
authorDaniel R. Carvalho <odanrc@yahoo.com.br>
Wed, 13 Jan 2021 23:48:00 +0000 (20:48 -0300)
committerDaniel Carvalho <odanrc@yahoo.com.br>
Wed, 3 Feb 2021 11:57:07 +0000 (11:57 +0000)
Add an "All" compound debug flag, which encapsulates all
debug flags.

Since this is the broadest compound flag, allowing users
to include it would imply in extremely generic includes.
Moreover, it is highly unlikely that any correct C++ code
would ever use all debug flags. Therefore, a header file
for this flag is not generated to force users to directly
include only the debug flags they need.

Change-Id: If40f2f708be1495fa2b2380266164d5d44d7cffa
Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/39077
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Nathanael Premillieu <nathanael.premillieu@huawei.com>
Maintainer: Bobby R. Bruce <bbruce@ucdavis.edu>

src/SConscript
src/python/m5/debug.py

index 6637b1f1411cc6b961c3511388e6cefa72556416..81a1b4d09e8b373d82da125cccc5fffc82c5145b 100644 (file)
@@ -633,6 +633,19 @@ def CompoundFlag(name, flags, desc=None):
 def DebugFormatFlag(name, desc=None):
     DebugFlag(name, desc, True)
 
+# Create a compound debug flag that encapsulates all flags: "All". This
+# flag should not be used within C++ code - it is a compound meta flag
+def _createAllDebugFlag():
+    simple_flags = []
+    for name,flag in sorted(debug_flags.items()):
+        n, compound, desc, fmt = flag
+        assert n == name
+        if not compound and not fmt:
+            simple_flags.append(n)
+
+    CompoundFlag("All", simple_flags,
+        "Controls all debug flags. It should not be used within C++ code.")
+
 Export('DebugFlag')
 Export('CompoundFlag')
 Export('DebugFormatFlag')
@@ -1174,6 +1187,8 @@ namespace Debug {
 
     code.write(str(target[0]))
 
+# Generate the files for the debug and debug-format flags
+_createAllDebugFlag()
 for name,flag in sorted(debug_flags.items()):
     n, compound, desc, fmt = flag
     assert n == name
index fbcb62487037a72d2b76dc0dab0183b3d47ee0f7..d808850cc8dfcf794f58ff5dc02a01d853b2a3a4 100644 (file)
@@ -43,7 +43,11 @@ def help():
     for name, flag in filter(lambda kv: isinstance(kv[1], CompoundFlag),
                              sorted_flags):
         print("    %s: %s" % (name, flag.desc))
-        printList([ c.name for c in flag.kids() ], indent=8)
+        # The list of kids for flag "All" is too long, so it is not printed
+        if name != "All":
+            printList([ c.name for c in flag.kids() ], indent=8)
+        else:
+            print("        All Base Flags")
     print()
     print("Formatting Flags:")
     for name, flag in filter(lambda kv: isinstance(kv[1], SimpleFlag)