#include "obst.h"
#include "set.h"
+#ifdef WITH_LIBCORE
+
+#include "irargs_t.h"
+
+static void firm_dbg_default_printer(struct obstack *obst, const char *fmt, va_list args)
+{
+ static arg_env_t *env = NULL;
+
+ if(!env)
+ env = firm_get_arg_env();
+
+ lc_evoprintf(env, obst, fmt, args);
+
+}
+
+firm_dbg_module_t *firm_dbg_register(const char *name)
+{
+ return dbg_register_with_printer(name, firm_dbg_default_printer);
+}
+
+#else
+
static struct obstack dbg_obst;
static set *module_set;
obstack_free(&dbg_obst, mi);
}
}
+
+
+#endif /* WITH_LIBCORE */
#ifndef _FIRM_DEBUG_H
#define _FIRM_DEBUG_H
+#include "firm_config.h"
+
+#ifdef WITH_LIBCORE
+
+#include <libcore/debug.h>
+
+/* use the newer debug implementation in libcore */
+typedef dbg_module_t firm_dbg_module_t;
+
+extern firm_dbg_module_t *firm_dbg_register(const char *name);
+
+#define firm_dbg_set_mask(module, mask) dbg_set_mask(module, mask)
+#define firm_dbg_get_mask(module) dbg_get_mask(module)
+#define firm_dbg_set_file(module, file) dbg_set_file(module, file)
+
+#else
+/* use the builtin debug implementation */
+
#include <stdio.h>
enum firm_dbg_level_t {
- LEVEL_DEFAULT = 0, /**< Prints always. Use with DBG(). */
+ LEVEL_DEFAULT = 0, /**< Prints always. Use with DBG(). */
LEVEL_1 = 1,
LEVEL_2 = 2,
LEVEL_3 = 4,
LEVEL_4 = 8,
LEVEL_5 = 16,
- SET_LEVEL_1 = 1, /**< use with firm_dbg_set_mask(). */
+ SET_LEVEL_1 = 1, /**< use with firm_dbg_set_mask(). */
SET_LEVEL_2 = 3,
SET_LEVEL_3 = 7,
SET_LEVEL_4 = 15,
#define DBG(args)
#endif
+#endif /* WITH_LIBCORE */
-#endif
+#endif /* _FIRM_DEBUG_H */