scons: Add an "All" compound debug flag

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>
This commit is contained in:
Daniel R. Carvalho
2021-01-13 20:48:00 -03:00
committed by Daniel Carvalho
parent b8dfb95284
commit 83c8f1f5db
2 changed files with 20 additions and 1 deletions

View 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

View 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)