scons,debug: Implement the "All" flag in C++ and not scons.

Create an AllFlagsFlag class which inherits from the CompoundFlag class.
This class is a singleton, and the SimpleFlags install themselves in it
instead of having SCons collect them.

The allFlagsVersion global variable was supposed to be for debugging
according to a comment, but was actually an important part of the "All"
flags inner workings. It was not exposed in the header, but was
redefined/pulled through in src/python/pybind11/debug.cc. The
AllFlagsFlag class now tracks that value, and it can be accessed without
reaching behind the curtain.

This also somewhat decentralizes the debug flag building process in
SCons. The debug/flags.cc still includes all flags at once which
centralizes them, but at least now the "All" flag won't also.

Change-Id: I8430e0fe9022846aade028fb46c80777169a2007
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/48370
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br>
Reviewed-by: Nathanael Premillieu <nathanael.premillieu@huawei.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
This commit is contained in:
Gabe Black
2021-07-19 03:35:20 -07:00
parent 269258831e
commit 77a0372fe9
4 changed files with 61 additions and 33 deletions

View File

@@ -56,12 +56,6 @@ namespace py = pybind11;
namespace gem5
{
GEM5_DEPRECATED_NAMESPACE(Debug, debug);
namespace debug
{
extern int allFlagsVersion;
} // namespace debug
static void
output(const char *filename)
{
@@ -87,7 +81,8 @@ pybind_init_debug(py::module_ &m_native)
py::module_ m_debug = m_native.def_submodule("debug");
m_debug
.def("getAllFlagsVersion", []() { return debug::allFlagsVersion; })
.def("getAllFlagsVersion",
[]() { return debug::AllFlagsFlag::version(); })
.def("allFlags", &debug::allFlags, py::return_value_policy::reference)
.def("schedBreak", &schedBreak)