Home | History | Annotate | Download | only in docs
      1 
      2 
      3 GLib's configure options and corresponding macros
      4 =================================================
      5 
      6 --enable-debug=no
      7 	-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS
      8 --enable-debug=minimum	[default for stable branches]
      9 	none
     10 --enable-debug=yes	[default for development branches]
     11 	-DG_ENABLE_DEBUG -g
     12 --enable-gc-friendly=yes
     13 	#define ENABLE_GC_FRIENDLY_DEFAULT 1
     14 --disable-mem-pools=yes
     15 	#define DISABLE_MEM_POOLS 1
     16 
     17 Besides these, there are some local feature specific options, but my main
     18 focus here is to concentrate on macros that affect overall GLib behaviour
     19 and/or third party code.
     20 
     21 
     22 Notes on GLib's internal and global macros
     23 ==========================================
     24 
     25 
     26 ENABLE_GC_FRIENDLY_DEFAULT
     27 	Newly allocated memory that isn't directly initialized, as well
     28 	as memory being freed should be reset to 0. The point here is to
     29 	allow memory checkers and similar programs that use bohem GC alike
     30 	algorithms to produce more accurate results.
     31 	This can also be accomplished by setting the environment variable
     32 	G_DEBUG=gc-friendly.
     33 DISABLE_MEM_POOLS
     34 	Many small chunks of memory are often allocated via collective pools
     35 	in GLib and are cached after release to speed up reallocations.
     36 	For sparse memory systems this behaviour is often inferior, so
     37 	memory pools can be disabled to avoid excessive caching and force
     38 	atomic maintenance of chunks through the g_malloc/g_free.
     39 	Code currently affected by this macro:
     40 	- GList, GSList, GNode allocations
     41 	- GMemChunks become basically non-effective
     42 	- GSignal disables all caching (potentially very slow)
     43 	- GType doesn't honour the GTypeInfo n_preallocs field anymore
     44 	- the GBSearchArray flag G_BSEARCH_ALIGN_POWER2 becomes non-functional
     45 G_DISABLE_ASSERT
     46 	The g_assert() and g_assert_not_reached() become non-functional
     47 	with this define. The motivation is to speed up end-user apps by
     48 	avoiding expensive checks.
     49 	This macro can affect third-party code. --enable-debug=no will only
     50 	disable the assertion macros for GLib itself, but third-party code
     51 	that passes -DG_DISABLE_ASSERT to the compiler upon its own build
     52 	will end up with the non-functional variants after including glib.h
     53 	as well.
     54 	NOTE: Code inside the assertion macros should not have side effects
     55 	that affect the operation of the program.
     56 G_DISABLE_CHECKS
     57 	This macro is similar to G_DISABLE_ASSERT, it affects third-party
     58 	code as mentioned above and the NOTE about G_DISABLE_ASSERT applies
     59 	too. The macros that become non-functional here are
     60 	g_return_if_fail(), g_return_val_if_fail(), g_return_if_reached() and
     61 	g_return_val_if_reached().
     62 	Additionally the glib_mem_profiler_table and g_mem_profile() from
     63 	gmem.h become non-functional if this macro is supplied.
     64 	This macro also switches off certain checks in the GSignal code.
     65 G_ENABLE_DEBUG
     66 	Quite a bit of additional debugging code is compiled into GLib for this
     67 	macro, and since it is a globally visible define, third-party code may
     68 	be affected by it similar to G_DISABLE_ASSERT.
     69 	The additional code executed/compiled for this macro currently involve:
     70 	- extra validity checks for GDate
     71 	- memory profiling traps in gmem.c (consult debugging.txt for details)
     72 	- BREAKPOINT abortion for fatal log levels in gmessage.c instead of
     73 	  plain abort() to allow debuggers trapping and overriding them
     74 	- added verbosity of gscanner.c to catch deprecated code paths
     75 	- added verbosity of gutils.c to catch deprecated code paths
     76 	- object ref/unref traps (consult debugging.txt) and object bookkeeping
     77 	  in gobject.c
     78 	- extra validity checks in gsignal.c
     79 
     80 
     81 2000/12/28	Tim Janik
     82