GLib's configure options and corresponding macros
=================================================

--buildtype={plain,release,minsize,custom}
	none
--buildtype={debug,debugoptimized}	[debugoptimized is the default]
	-DG_ENABLE_DEBUG -g

Available to define yourself:
	-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS

Besides these, there are some local feature specific options, but my main
focus here is to concentrate on macros that affect overall GLib behaviour
and/or third party code.


Notes on GLib's internal and global macros
==========================================

G_DISABLE_ASSERT
	The g_assert() and g_assert_not_reached() become non-functional
	with this define. The motivation is to speed up end-user apps by
	avoiding expensive checks.
	This macro can affect third-party code. Defining it when building GLib
	will only disable the assertion macros for GLib itself, but third-party code
	that passes -DG_DISABLE_ASSERT to the compiler upon its own build
	will end up with the non-functional variants after including glib.h
	as well.
	NOTE: Code inside the assertion macros should not have side effects
	that affect the operation of the program.
G_DISABLE_CHECKS
	This macro is similar to G_DISABLE_ASSERT, it affects third-party
	code as mentioned above and the NOTE about G_DISABLE_ASSERT applies
	too. The macros that become non-functional here are
	g_return_if_fail(), g_return_val_if_fail(), g_return_if_reached() and
	g_return_val_if_reached().
	Additionally the glib_mem_profiler_table and g_mem_profile() from
	gmem.h become non-functional if this macro is supplied.
	This macro also switches off certain checks in the GSignal code.
G_ENABLE_DEBUG
	Quite a bit of additional debugging code is compiled into GLib for this
	macro, and since it is a globally visible define, third-party code may
	be affected by it similar to G_DISABLE_ASSERT.
	The additional code executed/compiled for this macro currently involve:
	- extra validity checks for GDate
	- memory profiling traps in gmem.c (consult debugging.txt for details)
	- BREAKPOINT abortion for fatal log levels in gmessage.c instead of
	  plain abort() to allow debuggers trapping and overriding them
	- added verbosity of gscanner.c to catch deprecated code paths
	- added verbosity of gutils.c to catch deprecated code paths
	- object ref/unref traps (consult debugging.txt) and object bookkeeping
	  in gobject.c
	- extra validity checks in gsignal.c