remove_definitions(-DDEBUG_OUTPUT)
endif()
+# Should modernize the following somehow...
+set(ENABLE_SCOPE_TRACING OFF CACHE BOOL "Enable scope enter/leave messages for certain parts of the code.")
+if(ENABLE_SCOPE_TRACING)
+ add_definitions(-DSCOPE_TRACING)
+else()
+ remove_definitions(-DSCOPE_TRACING)
+endif()
+
set(SANITIZER_MODE "none" CACHE STRING "Build using a specific sanitizer (e.g. 'address', 'thread', 'leak', 'undefined'), depends on compiler; default none")
set(LINK_LIBCXX OFF CACHE BOOL "Link against LLVMs libc++")
#include <unistd.h>
+#ifdef SCOPE_TRACING
thread_local int ScopeTrace::indent = 0;
+explicit ScopeTrace::ScopeTrace(char const *func) : f(func) {
+ fprintf(stderr, "%lu %*s%s -->\n", pthread_self(), 2 * indent++, "", this->f);
+}
+ScopeTrace::~ScopeTrace() { fprintf(stderr, "%lu %*s%s <--\n", pthread_self(), 2 * --indent, "", this->f); }
+#endif
unique_fd::~unique_fd() {
if (this->fd != -1) {
#include <afb/afb-binding.h>
};
+#define CONCAT_(X, Y) X##Y
+#define CONCAT(X, Y) CONCAT_(X, Y)
+
#ifdef __GNUC__
#define ATTR_FORMAT(stringindex, firsttocheck) \
__attribute__((format(printf, stringindex, firsttocheck)))
#define logdebug(...)
#endif
-#ifdef NDEBUG
+#ifndef SCOPE_TRACING
#define ST()
#define STN(N)
#else
-#define CONCAT_(X, Y) X##Y
-#define CONCAT(X, Y) CONCAT_(X, Y)
-
#define ST() \
ScopeTrace __attribute__((unused)) CONCAT(trace_scope_, __LINE__)(__func__)
#define STN(N) \
struct ScopeTrace {
thread_local static int indent;
char const *f{};
- explicit ScopeTrace(char const *func) : f(func) {
- fprintf(stderr, "%lu %*s%s -->\n", pthread_self(), 2 * indent++, "", this->f);
- }
- ~ScopeTrace() { fprintf(stderr, "%lu %*s%s <--\n", pthread_self(), 2 * --indent, "", this->f); }
+ explicit ScopeTrace(char const *func);
+ ~ScopeTrace();
};
#endif