From 4a9917c9d12bab3f23fe0077992d5fdbf04eac71 Mon Sep 17 00:00:00 2001
From: Utz-Uwe Haus <uhaus@cray.com>
Date: Mon, 20 Sep 2021 11:36:37 +0200
Subject: [PATCH] Add --enable-developer configure flag, reduce default logging

Developer flag (off by default) sets high logging, ASAN by default, while
users by default will get only ERR debugging but DEBUG level messages built in by default.
---
 configure.ac      | 22 ++++++++++++++++++++--
 maestro/logging.c |  8 ++++++++
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index b5cc7284..bdc1e458 100644
--- a/configure.ac
+++ b/configure.ac
@@ -56,8 +56,25 @@ dnl silent automake requires version 1.11
 m4_ifdef([AM_SILENT_RULES],
 	 [AM_SILENT_RULES([yes])])
 
+AC_ARG_ENABLE([developer],
+              [AS_HELP_STRING([--enable-developer],
+	                      [Enable developer build (more logging, address santizer, ... (default: no))])],
+	      [enable_devel=$enabkeval],
+	      [enable_devel=no])
+AS_IF([test "x$enable_devel" != "xno"],
+	    [ dnl enable ASAN for developers
+              enable_asan=yes
+              dnl include NOISE level debugging ability, but default to DEBUG
+	      CPPFLAGS="-DMSTRO_DEFAULT_LOG_LEVEL=3 -DMSTRO_MAX_DEBUG_LEVEL=4 $CPPFLAGS"
+              
+            ],
+            [ dnl set logging to ERR, and limit logging to DEBUG
+	      CPPFLAGS="-DMSTRO_DEFAULT_LOG_LEVEL=0 -DMSTRO_MAX_DEBUG_LEVEL=3 $CPPFLAGS"
+            ])
+
+
 AC_ARG_ENABLE([numa],
-              [AS_HELP_STRING([--enable-numa],[Disable libnuma usage (default: use if detected)])],
+              [AS_HELP_STRING([--enable-numa],[Enable libnuma usage (default: use if detected)])],
 	      [enable_numa=$enableval],[enable_numa=yes])
 AS_IF([test "x$enable_numa" = xyes],
       [AC_CHECK_HEADERS([numa.h numaif.h],
@@ -155,7 +172,8 @@ else
 fi
 
 AC_ARG_ENABLE([asan],
-              AS_HELP_STRING([--enable-asan],[Enable Address Sanitizer support]))
+              AS_HELP_STRING([--enable-asan],
+			     [Enable Address Sanitizer support]))
 if test "x$enable_asan" = "xyes"; then
         BUILD_ASAN=yes
         AX_CHECK_COMPILE_FLAG([-fsanitize=address -fno-omit-frame-pointer -Wpedantic -Wextra ],
diff --git a/maestro/logging.c b/maestro/logging.c
index e2fa553f..756485f7 100644
--- a/maestro/logging.c
+++ b/maestro/logging.c
@@ -174,8 +174,16 @@ const char * const mstro_log_labels[MSTRO_log__MAX] = {
  *
  * Only messages with level <= g_debug_level will be printed
  *
+ * Defaults to the compile-time maximum supported log level
+ * (MSTRO_MAX_LOG_LEVEL), unless a specific compile value is defined
+ * for MSTRO_DEFAULT_LOG_LEVEL.
+ *
  **/
+#ifdef MSTRO_DEFAULT_LOG_LEVEL
+static int g_debug_level = MSTRO_DEFAULT_LOG_LEVEL;
+#else
 static int g_debug_level = MSTRO_MAX_LOG_LEVEL;
+#endif
 
 /** Log print color */
 static enum ansi_color_symbol g_log_color = MSTRO_COLOR_DEFAULT;
-- 
GitLab