X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fcommon%2Fdebug.h;h=26ceb6e2fa2d9e86599f9d18640dfe59548f8714;hb=af54b3443c1b7a152638788f50b45272e4888e10;hp=2f0c53aff2c1782d40592003a4d474d6187bd59b;hpb=35ed8c5d87f3eb7b564f89782b8e197b3f04cd67;p=libfirm diff --git a/ir/common/debug.h b/ir/common/debug.h index 2f0c53aff..26ceb6e2f 100644 --- a/ir/common/debug.h +++ b/ir/common/debug.h @@ -7,21 +7,54 @@ #ifndef _FIRM_DEBUG_H #define _FIRM_DEBUG_H +#include "firm_config.h" + +#ifdef WITH_LIBCORE + +#define DBG(x) _LC_DBG(x) +#include + +/* use the newer debug implementation in libcore */ +typedef lc_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) lc_dbg_set_mask(module, mask) +#define firm_dbg_get_mask(module) lc_dbg_get_mask(module) +#define firm_dbg_set_file(module, file) lc_dbg_set_file(module, file) + +#define LEVEL_DEFAULT LC_LEVEL_DEFAULT +#define LEVEL_1 LC_LEVEL_1 +#define LEVEL_2 LC_LEVEL_2 +#define LEVEL_3 LC_LEVEL_3 +#define LEVEL_4 LC_LEVEL_4 +#define LEVEL_5 LC_LEVEL_5 +#define SET_LEVEL_1 LC_SET_LEVEL_1 +#define SET_LEVEL_2 LC_SET_LEVEL_2 +#define SET_LEVEL_3 LC_SET_LEVEL_3 +#define SET_LEVEL_4 LC_SET_LEVEL_4 +#define SET_LEVEL_5 LC_SET_LEVEL_5 +#define SET_LEVEL_ALL LC_SET_LEVEL_ALL + +#else +/* use the builtin debug implementation */ + #include 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, - SET_LEVEL_5 = 31 + SET_LEVEL_5 = 31, + SET_LEVEL_ALL = SET_LEVEL_5 }; typedef struct _firm_dbg_module_t firm_dbg_module_t; @@ -63,19 +96,21 @@ unsigned firm_dbg_get_mask(const firm_dbg_module_t *module); */ void firm_dbg_set_file(firm_dbg_module_t *module, FILE *file); +#define _DBG_MAIN(func,args) \ + _firm_dbg_print_msg(__FILE__, __LINE__, func, _firm_dbg_make_msg args) /* If we have C99 use the __func__ variable for calling functions name. */ #if defined(__STD_VERSION__) && __STD_VERSION >= 199901L -#define _DBG(args) _firm_dbg_print_msg(__FILE__, __LINE__, __func__, _firm_dbg_make_msg args) +#define _DBG(args) _DBG_MAIN(__func__, args) #else /* Else, check for gcc and use the proprietary __FUNCTION__ macro. */ #ifdef __GNUC__ -#define _DBG(args) _firm_dbg_print_msg(__FILE__, __LINE__, __FUNCTION__, _firm_dbg_make_msg args) +#define _DBG(args) _DBG_MAIN(__FUNCTION__, args) #else /* Else go without the name of the calling function. */ -#define _DBG(args) _firm_dbg_print_msg(__FILE__, __LINE__, "", _firm_dbg_make_msg args) +#define _DBG(args) _DBG_MAIN("", args) #endif #endif @@ -86,7 +121,7 @@ void firm_dbg_set_file(firm_dbg_module_t *module, FILE *file); */ #define DBG_RETAIL(args) _DBG(args) -#ifdef DEBUG +#ifdef DEBUG_libfirm /** * Issue a debug message. @@ -117,5 +152,6 @@ void firm_dbg_set_file(firm_dbg_module_t *module, FILE *file); #define DBG(args) #endif +#endif /* WITH_LIBCORE */ -#endif +#endif /* _FIRM_DEBUG_H */