From 83c8f1f5db3fd798da29784f6155ae2dd2d63ed8 Mon Sep 17 00:00:00 2001 From: "Daniel R. Carvalho" Date: Wed, 13 Jan 2021 20:48:00 -0300 Subject: [PATCH] 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 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/39077 Tested-by: kokoro Reviewed-by: Nathanael Premillieu Maintainer: Bobby R. Bruce --- src/SConscript | 15 +++++++++++++++ src/python/m5/debug.py | 6 +++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/SConscript b/src/SConscript index 6637b1f14..81a1b4d09 100644 --- a/src/SConscript +++ b/src/SConscript @@ -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 diff --git a/src/python/m5/debug.py b/src/python/m5/debug.py index fbcb62487..d808850cc 100644 --- a/src/python/m5/debug.py +++ b/src/python/m5/debug.py @@ -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) -- 2.30.2