summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2007-11-13 10:37:24 +0000
committerCarl Hetherington <carl@carlh.net>2007-11-13 10:37:24 +0000
commita313924b771513efb49663eb2004f1aac4e7121d (patch)
treedb33eb3256ea629836b715a5b1bead3e63ce91ae /libs
parent89f1f09c04bf1f782b2430bc8f1ed35109ce0f72 (diff)
Re-add glibmm2 properly.
git-svn-id: svn://localhost/ardour2/trunk@2644 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/glibmm2/AUTHORS20
-rw-r--r--libs/glibmm2/CHANGES33
-rw-r--r--libs/glibmm2/COPYING515
-rw-r--r--libs/glibmm2/ChangeLog1648
-rw-r--r--libs/glibmm2/INSTALL236
-rw-r--r--libs/glibmm2/Makefile.am64
-rw-r--r--libs/glibmm2/Makefile.in713
-rw-r--r--libs/glibmm2/NEWS399
-rw-r--r--libs/glibmm2/README4
-rw-r--r--libs/glibmm2/README.win3265
-rw-r--r--libs/glibmm2/SConscript48
-rw-r--r--libs/glibmm2/aclocal.m47432
-rw-r--r--libs/glibmm2/build_shared/Makefile_build.am_fragment71
-rw-r--r--libs/glibmm2/build_shared/Makefile_build_extra.am_fragment40
-rw-r--r--libs/glibmm2/build_shared/Makefile_build_gensrc.am_fragment66
-rw-r--r--libs/glibmm2/build_shared/Makefile_gensrc.am_fragment62
-rw-r--r--libs/glibmm2/build_shared/Makefile_gensrc_platform.am_fragment25
-rw-r--r--libs/glibmm2/config.h6
-rw-r--r--libs/glibmm2/config.h.in5
-rw-r--r--libs/glibmm2/config.log1284
-rw-r--r--libs/glibmm2/config.status1319
-rw-r--r--libs/glibmm2/configure23012
-rw-r--r--libs/glibmm2/configure.in302
-rw-r--r--libs/glibmm2/glib/Makefile609
-rw-r--r--libs/glibmm2/glib/Makefile.am14
-rw-r--r--libs/glibmm2/glib/Makefile.in609
-rw-r--r--libs/glibmm2/glib/README1
-rw-r--r--libs/glibmm2/glib/glibmm-2.4.pc11
-rw-r--r--libs/glibmm2/glib/glibmm-2.4.pc.in11
-rw-r--r--libs/glibmm2/glib/glibmm.h73
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/class.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/containers.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/convert.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/date.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/debug.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/dispatcher.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/error.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/exception.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/exceptionhandler.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/fileutils.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/init.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/interface.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/iochannel.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/keyfile.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/main.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/markup.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/miscutils.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/module.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/object.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/objectbase.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/optioncontext.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/optionentry.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/optiongroup.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/pattern.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/property.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/propertyproxy.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/propertyproxy_base.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/quark.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/random.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/shell.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/signalproxy.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/signalproxy_connectionnode.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/spawn.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/streamiochannel.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/stringutils.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/thread.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/threadpool.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/timer.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/timeval.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/unicode.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/ustring.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/utility.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/value.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/value_basictypes.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/value_custom.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/wrap.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/.deps/wrap_init.Plo1
-rw-r--r--libs/glibmm2/glib/glibmm/Makefile908
-rw-r--r--libs/glibmm2/glib/glibmm/Makefile.am105
-rw-r--r--libs/glibmm2/glib/glibmm/Makefile.in908
-rw-r--r--libs/glibmm2/glib/glibmm/arrayhandle.h522
-rw-r--r--libs/glibmm2/glib/glibmm/class.cc117
-rw-r--r--libs/glibmm2/glib/glibmm/class.h77
-rw-r--r--libs/glibmm2/glib/glibmm/containerhandle_shared.h373
-rw-r--r--libs/glibmm2/glib/glibmm/containers.cc33
-rw-r--r--libs/glibmm2/glib/glibmm/containers.h372
-rw-r--r--libs/glibmm2/glib/glibmm/convert.cc436
-rw-r--r--libs/glibmm2/glib/glibmm/convert.h361
-rw-r--r--libs/glibmm2/glib/glibmm/date.cc381
-rw-r--r--libs/glibmm2/glib/glibmm/date.h454
-rw-r--r--libs/glibmm2/glib/glibmm/debug.cc21
-rw-r--r--libs/glibmm2/glib/glibmm/debug.h85
-rw-r--r--libs/glibmm2/glib/glibmm/dispatcher.cc463
-rw-r--r--libs/glibmm2/glib/glibmm/dispatcher.h103
-rw-r--r--libs/glibmm2/glib/glibmm/error.cc198
-rw-r--r--libs/glibmm2/glib/glibmm/error.h92
-rw-r--r--libs/glibmm2/glib/glibmm/exception.cc40
-rw-r--r--libs/glibmm2/glib/glibmm/exception.h42
-rw-r--r--libs/glibmm2/glib/glibmm/exceptionhandler.cc163
-rw-r--r--libs/glibmm2/glib/glibmm/exceptionhandler.h48
-rw-r--r--libs/glibmm2/glib/glibmm/fileutils.cc226
-rw-r--r--libs/glibmm2/glib/glibmm/fileutils.h482
-rw-r--r--libs/glibmm2/glib/glibmm/helperlist.h165
-rw-r--r--libs/glibmm2/glib/glibmm/i18n.h30
-rw-r--r--libs/glibmm2/glib/glibmm/init.cc34
-rw-r--r--libs/glibmm2/glib/glibmm/init.h39
-rw-r--r--libs/glibmm2/glib/glibmm/interface.cc95
-rw-r--r--libs/glibmm2/glib/glibmm/interface.h72
-rw-r--r--libs/glibmm2/glib/glibmm/iochannel.cc889
-rw-r--r--libs/glibmm2/glib/glibmm/iochannel.h766
-rw-r--r--libs/glibmm2/glib/glibmm/keyfile.cc526
-rw-r--r--libs/glibmm2/glib/glibmm/keyfile.h651
-rw-r--r--libs/glibmm2/glib/glibmm/listhandle.h406
-rw-r--r--libs/glibmm2/glib/glibmm/main.cc1070
-rw-r--r--libs/glibmm2/glib/glibmm/main.h738
-rw-r--r--libs/glibmm2/glib/glibmm/markup.cc387
-rw-r--r--libs/glibmm2/glib/glibmm/markup.h427
-rw-r--r--libs/glibmm2/glib/glibmm/miscutils.cc264
-rw-r--r--libs/glibmm2/glib/glibmm/miscutils.h302
-rw-r--r--libs/glibmm2/glib/glibmm/module.cc96
-rw-r--r--libs/glibmm2/glib/glibmm/module.h222
-rw-r--r--libs/glibmm2/glib/glibmm/object.cc312
-rw-r--r--libs/glibmm2/glib/glibmm/object.h290
-rw-r--r--libs/glibmm2/glib/glibmm/objectbase.cc289
-rw-r--r--libs/glibmm2/glib/glibmm/objectbase.h203
-rw-r--r--libs/glibmm2/glib/glibmm/optioncontext.cc162
-rw-r--r--libs/glibmm2/glib/glibmm/optioncontext.h211
-rw-r--r--libs/glibmm2/glib/glibmm/optionentry.cc149
-rw-r--r--libs/glibmm2/glib/glibmm/optionentry.h112
-rw-r--r--libs/glibmm2/glib/glibmm/optiongroup.cc457
-rw-r--r--libs/glibmm2/glib/glibmm/optiongroup.h141
-rw-r--r--libs/glibmm2/glib/glibmm/pattern.cc66
-rw-r--r--libs/glibmm2/glib/glibmm/pattern.h69
-rw-r--r--libs/glibmm2/glib/glibmm/private/Makefile451
-rw-r--r--libs/glibmm2/glib/glibmm/private/Makefile.am20
-rw-r--r--libs/glibmm2/glib/glibmm/private/Makefile.in451
-rw-r--r--libs/glibmm2/glib/glibmm/private/convert_p.h8
-rw-r--r--libs/glibmm2/glib/glibmm/private/date_p.h8
-rw-r--r--libs/glibmm2/glib/glibmm/private/fileutils_p.h8
-rw-r--r--libs/glibmm2/glib/glibmm/private/interface_p.h24
-rw-r--r--libs/glibmm2/glib/glibmm/private/iochannel_p.h8
-rw-r--r--libs/glibmm2/glib/glibmm/private/keyfile_p.h8
-rw-r--r--libs/glibmm2/glib/glibmm/private/markup_p.h8
-rw-r--r--libs/glibmm2/glib/glibmm/private/module_p.h8
-rw-r--r--libs/glibmm2/glib/glibmm/private/object_p.h28
-rw-r--r--libs/glibmm2/glib/glibmm/private/optioncontext_p.h8
-rw-r--r--libs/glibmm2/glib/glibmm/private/optionentry_p.h8
-rw-r--r--libs/glibmm2/glib/glibmm/private/optiongroup_p.h8
-rw-r--r--libs/glibmm2/glib/glibmm/private/shell_p.h8
-rw-r--r--libs/glibmm2/glib/glibmm/private/spawn_p.h8
-rw-r--r--libs/glibmm2/glib/glibmm/private/thread_p.h8
-rw-r--r--libs/glibmm2/glib/glibmm/private/unicode_p.h8
-rw-r--r--libs/glibmm2/glib/glibmm/property.cc203
-rw-r--r--libs/glibmm2/glib/glibmm/property.h174
-rw-r--r--libs/glibmm2/glib/glibmm/propertyproxy.cc24
-rw-r--r--libs/glibmm2/glib/glibmm/propertyproxy.h181
-rw-r--r--libs/glibmm2/glib/glibmm/propertyproxy_base.cc131
-rw-r--r--libs/glibmm2/glib/glibmm/propertyproxy_base.h111
-rw-r--r--libs/glibmm2/glib/glibmm/quark.cc66
-rw-r--r--libs/glibmm2/glib/glibmm/quark.h88
-rw-r--r--libs/glibmm2/glib/glibmm/random.cc76
-rw-r--r--libs/glibmm2/glib/glibmm/random.h73
-rw-r--r--libs/glibmm2/glib/glibmm/refptr.h341
-rw-r--r--libs/glibmm2/glib/glibmm/sarray.h108
-rw-r--r--libs/glibmm2/glib/glibmm/shell.cc102
-rw-r--r--libs/glibmm2/glib/glibmm/shell.h130
-rw-r--r--libs/glibmm2/glib/glibmm/signalproxy.cc109
-rw-r--r--libs/glibmm2/glib/glibmm/signalproxy.h394
-rw-r--r--libs/glibmm2/glib/glibmm/signalproxy_connectionnode.cc94
-rw-r--r--libs/glibmm2/glib/glibmm/signalproxy_connectionnode.h70
-rw-r--r--libs/glibmm2/glib/glibmm/slisthandle.h405
-rw-r--r--libs/glibmm2/glib/glibmm/spawn.cc324
-rw-r--r--libs/glibmm2/glib/glibmm/spawn.h210
-rw-r--r--libs/glibmm2/glib/glibmm/streamiochannel.cc216
-rw-r--r--libs/glibmm2/glib/glibmm/streamiochannel.h67
-rw-r--r--libs/glibmm2/glib/glibmm/stringutils.cc128
-rw-r--r--libs/glibmm2/glib/glibmm/stringutils.h184
-rw-r--r--libs/glibmm2/glib/glibmm/thread.cc412
-rw-r--r--libs/glibmm2/glib/glibmm/thread.h1089
-rw-r--r--libs/glibmm2/glib/glibmm/threadpool.cc249
-rw-r--r--libs/glibmm2/glib/glibmm/threadpool.h183
-rw-r--r--libs/glibmm2/glib/glibmm/timer.cc72
-rw-r--r--libs/glibmm2/glib/glibmm/timer.h79
-rw-r--r--libs/glibmm2/glib/glibmm/timeval.cc120
-rw-r--r--libs/glibmm2/glib/glibmm/timeval.h233
-rw-r--r--libs/glibmm2/glib/glibmm/unicode.cc34
-rw-r--r--libs/glibmm2/glib/glibmm/unicode.h311
-rw-r--r--libs/glibmm2/glib/glibmm/ustring.cc1219
-rw-r--r--libs/glibmm2/glib/glibmm/ustring.h997
-rw-r--r--libs/glibmm2/glib/glibmm/utility.cc40
-rw-r--r--libs/glibmm2/glib/glibmm/utility.h119
-rw-r--r--libs/glibmm2/glib/glibmm/value.cc250
-rw-r--r--libs/glibmm2/glib/glibmm/value.h331
-rw-r--r--libs/glibmm2/glib/glibmm/value_basictypes.cc336
-rw-r--r--libs/glibmm2/glib/glibmm/value_basictypes.h271
-rw-r--r--libs/glibmm2/glib/glibmm/value_custom.cc145
-rw-r--r--libs/glibmm2/glib/glibmm/value_custom.h289
-rw-r--r--libs/glibmm2/glib/glibmm/wrap.cc161
-rw-r--r--libs/glibmm2/glib/glibmm/wrap.h118
-rw-r--r--libs/glibmm2/glib/glibmm/wrap_init.cc76
-rw-r--r--libs/glibmm2/glib/glibmm/wrap_init.h38
-rw-r--r--libs/glibmm2/glib/glibmmconfig.h91
-rw-r--r--libs/glibmm2/glib/glibmmconfig.h.in90
-rw-r--r--libs/glibmm2/glib/src/Makefile424
-rw-r--r--libs/glibmm2/glib/src/Makefile.am21
-rw-r--r--libs/glibmm2/glib/src/Makefile.in424
-rw-r--r--libs/glibmm2/glib/src/Makefile_list_of_hg.am_fragment8
-rw-r--r--libs/glibmm2/glib/src/convert.ccg395
-rw-r--r--libs/glibmm2/glib/src/convert.hg324
-rw-r--r--libs/glibmm2/glib/src/date.ccg367
-rw-r--r--libs/glibmm2/glib/src/date.hg400
-rw-r--r--libs/glibmm2/glib/src/fileutils.ccg185
-rw-r--r--libs/glibmm2/glib/src/fileutils.hg400
-rw-r--r--libs/glibmm2/glib/src/glib.defs5
-rw-r--r--libs/glibmm2/glib/src/glib_docs.xml12615
-rw-r--r--libs/glibmm2/glib/src/glib_docs_override.xml2
-rw-r--r--libs/glibmm2/glib/src/glib_enums.defs682
-rw-r--r--libs/glibmm2/glib/src/glib_functions.defs11335
-rw-r--r--libs/glibmm2/glib/src/gmodule_enums.defs12
-rw-r--r--libs/glibmm2/glib/src/gmodule_functions.defs79
-rw-r--r--libs/glibmm2/glib/src/gobject.defs3
-rw-r--r--libs/glibmm2/glib/src/gobject_enums.defs80
-rw-r--r--libs/glibmm2/glib/src/gobject_functions.defs2608
-rw-r--r--libs/glibmm2/glib/src/iochannel.ccg640
-rw-r--r--libs/glibmm2/glib/src/iochannel.hg476
-rw-r--r--libs/glibmm2/glib/src/keyfile.ccg201
-rw-r--r--libs/glibmm2/glib/src/keyfile.hg278
-rw-r--r--libs/glibmm2/glib/src/markup.ccg346
-rw-r--r--libs/glibmm2/glib/src/markup.hg346
-rw-r--r--libs/glibmm2/glib/src/module.ccg44
-rw-r--r--libs/glibmm2/glib/src/module.hg153
-rw-r--r--libs/glibmm2/glib/src/optioncontext.ccg74
-rw-r--r--libs/glibmm2/glib/src/optioncontext.hg101
-rw-r--r--libs/glibmm2/glib/src/optionentry.ccg79
-rw-r--r--libs/glibmm2/glib/src/optionentry.hg96
-rw-r--r--libs/glibmm2/glib/src/optiongroup.ccg432
-rw-r--r--libs/glibmm2/glib/src/optiongroup.hg119
-rw-r--r--libs/glibmm2/glib/src/shell.ccg61
-rw-r--r--libs/glibmm2/glib/src/shell.hg96
-rw-r--r--libs/glibmm2/glib/src/signalproxy.h.m4200
-rw-r--r--libs/glibmm2/glib/src/spawn.ccg283
-rw-r--r--libs/glibmm2/glib/src/spawn.hg109
-rw-r--r--libs/glibmm2/glib/src/template.macros.m4229
-rw-r--r--libs/glibmm2/glib/src/thread.ccg371
-rw-r--r--libs/glibmm2/glib/src/thread.hg1047
-rw-r--r--libs/glibmm2/glib/src/unicode.ccg22
-rw-r--r--libs/glibmm2/glib/src/unicode.hg147
-rw-r--r--libs/glibmm2/glib/src/value_basictypes.cc.m484
-rw-r--r--libs/glibmm2/glib/src/value_basictypes.h.m483
-rw-r--r--libs/glibmm2/glib/stamp-h21
-rw-r--r--libs/glibmm2/libtool7520
-rw-r--r--libs/glibmm2/scripts/Makefile387
-rw-r--r--libs/glibmm2/scripts/Makefile.am8
-rw-r--r--libs/glibmm2/scripts/Makefile.in387
-rw-r--r--libs/glibmm2/scripts/README1
-rw-r--r--libs/glibmm2/scripts/config.guess1471
-rw-r--r--libs/glibmm2/scripts/config.sub1599
-rw-r--r--libs/glibmm2/scripts/cxx.m4364
-rw-r--r--libs/glibmm2/scripts/cxx_std.m4195
-rw-r--r--libs/glibmm2/scripts/depcomp530
-rw-r--r--libs/glibmm2/scripts/docgen.m475
-rw-r--r--libs/glibmm2/scripts/glibmm_check_perl.m454
-rw-r--r--libs/glibmm2/scripts/install-sh323
-rw-r--r--libs/glibmm2/scripts/ltmain.sh6863
-rw-r--r--libs/glibmm2/scripts/macros.m4134
-rw-r--r--libs/glibmm2/scripts/missing360
-rw-r--r--libs/glibmm2/scripts/reduced.m4106
-rw-r--r--libs/glibmm2/scripts/sun.m415
-rw-r--r--libs/glibmm2/stamp-h11
-rw-r--r--libs/glibmm2/tools/Makefile558
-rw-r--r--libs/glibmm2/tools/Makefile.am11
-rw-r--r--libs/glibmm2/tools/Makefile.in558
-rw-r--r--libs/glibmm2/tools/Makefile_list_of_sources.am_fragment5
-rw-r--r--libs/glibmm2/tools/README4
-rw-r--r--libs/glibmm2/tools/TODO12
-rw-r--r--libs/glibmm2/tools/enum.pl233
-rw-r--r--libs/glibmm2/tools/extra_defs_gen/.deps/generate_defs_glib.Po1
-rw-r--r--libs/glibmm2/tools/extra_defs_gen/.deps/generate_extra_defs.Plo1
-rw-r--r--libs/glibmm2/tools/extra_defs_gen/Makefile562
-rw-r--r--libs/glibmm2/tools/extra_defs_gen/Makefile.am29
-rw-r--r--libs/glibmm2/tools/extra_defs_gen/Makefile.in562
-rw-r--r--libs/glibmm2/tools/extra_defs_gen/generate_defs_glib.cc34
-rw-r--r--libs/glibmm2/tools/extra_defs_gen/generate_extra_defs.cc217
-rw-r--r--libs/glibmm2/tools/extra_defs_gen/generate_extra_defs.h33
-rw-r--r--libs/glibmm2/tools/generate_wrap_init.pl392
-rw-r--r--libs/glibmm2/tools/generate_wrap_init.pl.in392
-rw-r--r--libs/glibmm2/tools/gmmproc239
-rw-r--r--libs/glibmm2/tools/gmmproc.in239
-rw-r--r--libs/glibmm2/tools/m4/Makefile441
-rw-r--r--libs/glibmm2/tools/m4/Makefile.am10
-rw-r--r--libs/glibmm2/tools/m4/Makefile.in441
-rw-r--r--libs/glibmm2/tools/m4/Makefile_list_of_sources.am_fragment8
-rw-r--r--libs/glibmm2/tools/m4/base.m4424
-rw-r--r--libs/glibmm2/tools/m4/class_boxedtype.m4215
-rw-r--r--libs/glibmm2/tools/m4/class_boxedtype_static.m4169
-rw-r--r--libs/glibmm2/tools/m4/class_generic.m454
-rw-r--r--libs/glibmm2/tools/m4/class_gobject.m4240
-rw-r--r--libs/glibmm2/tools/m4/class_gtkobject.m4225
-rw-r--r--libs/glibmm2/tools/m4/class_interface.m4264
-rw-r--r--libs/glibmm2/tools/m4/class_opaque_copyable.m4181
-rw-r--r--libs/glibmm2/tools/m4/class_opaque_refcounted.m4172
-rw-r--r--libs/glibmm2/tools/m4/class_shared.m4221
-rw-r--r--libs/glibmm2/tools/m4/compare.m4118
-rw-r--r--libs/glibmm2/tools/m4/convert.m46
-rw-r--r--libs/glibmm2/tools/m4/convert_atk.m434
-rw-r--r--libs/glibmm2/tools/m4/convert_base.m471
-rw-r--r--libs/glibmm2/tools/m4/convert_gdk.m4231
-rw-r--r--libs/glibmm2/tools/m4/convert_glib.m464
-rw-r--r--libs/glibmm2/tools/m4/convert_gtk.m4394
-rw-r--r--libs/glibmm2/tools/m4/convert_gtkmm.m48
-rw-r--r--libs/glibmm2/tools/m4/convert_pango.m4137
-rw-r--r--libs/glibmm2/tools/m4/ctor.m464
-rw-r--r--libs/glibmm2/tools/m4/doc.m43
-rw-r--r--libs/glibmm2/tools/m4/enum.m4101
-rw-r--r--libs/glibmm2/tools/m4/gerror.m4102
-rw-r--r--libs/glibmm2/tools/m4/list.m4230
-rw-r--r--libs/glibmm2/tools/m4/member.m4132
-rw-r--r--libs/glibmm2/tools/m4/method.m4108
-rw-r--r--libs/glibmm2/tools/m4/property.m440
-rw-r--r--libs/glibmm2/tools/m4/signal.m4267
-rw-r--r--libs/glibmm2/tools/m4/vfunc.m4145
-rw-r--r--libs/glibmm2/tools/pm/DocsParser.pm490
-rw-r--r--libs/glibmm2/tools/pm/Enum.pm246
-rw-r--r--libs/glibmm2/tools/pm/Function.pm351
-rw-r--r--libs/glibmm2/tools/pm/FunctionBase.pm217
-rw-r--r--libs/glibmm2/tools/pm/GtkDefs.pm635
-rw-r--r--libs/glibmm2/tools/pm/Makefile434
-rw-r--r--libs/glibmm2/tools/pm/Makefile.am10
-rw-r--r--libs/glibmm2/tools/pm/Makefile.in434
-rw-r--r--libs/glibmm2/tools/pm/Makefile_list_of_sources.am_fragment2
-rw-r--r--libs/glibmm2/tools/pm/Object.pm72
-rw-r--r--libs/glibmm2/tools/pm/Output.pm928
-rw-r--r--libs/glibmm2/tools/pm/Property.pm119
-rw-r--r--libs/glibmm2/tools/pm/Util.pm113
-rw-r--r--libs/glibmm2/tools/pm/WrapParser.pm1343
335 files changed, 139518 insertions, 0 deletions
diff --git a/libs/glibmm2/AUTHORS b/libs/glibmm2/AUTHORS
new file mode 100644
index 0000000000..35ef03fe26
--- /dev/null
+++ b/libs/glibmm2/AUTHORS
@@ -0,0 +1,20 @@
+Please use the mailing list (gtkmm-list@gnome.org) instead of emailing developers directly.
+See the ChangeLog for up-to-date information.
+
+Murray Cumming <murrayc@usa.net>
+Daniel Elstner <daniel.elstner@gmx.net>
+
+Some former contributors:
+
+Karl Nelson <kenelson@ece.ucdavis.edu>
+Tero Pulkkinen <terop@modeemi.cs.tut.fi>
+Elliot Lee <sopwith@redhat.com>
+Phil Dawes <P.L.Dawes-CSSE94@cs.bham.ac.uk>
+Erik Andersen <andersee@debian.org>
+Bibek Sahu <scorpio@dodds.net>
+Mirko Streckenbach
+Havoc Pennington <hp@pobox.com>
+Guillaume Laurent <glaurent@telegraph-road.org>
+Todd Dukes <tdukes@ibmoto.com>
+Peter Lerner <peter.lerner@bnbt.de>
+Herbert Valerio Riedel <hvr@gnu.org>
diff --git a/libs/glibmm2/CHANGES b/libs/glibmm2/CHANGES
new file mode 100644
index 0000000000..36571a78e0
--- /dev/null
+++ b/libs/glibmm2/CHANGES
@@ -0,0 +1,33 @@
+Changes between glibmm 2.2 (previously part of gtkmm) and glibmm 2.4:
+
+* glibmm is now a separate module, for use with non-GUI software.
+ (Note that glibmm 2.4 and gtkmm 2.4 install in parallel with
+ gtkmm 2.2 - so you can install and use both simultaneously and
+ port to 2.4 whenever you are ready.)
+* glibmm now uses libsigc++ 2 rather than libsigc++ 1.2.
+ There is a libsigc++ compatibility header. The new, undeprecated, API
+ is slightly improved.
+ - Connecting signal handlers:
+ signal_something().connect( SigC::slot(*this, &Something::on_something) );
+ should become
+ signal_something().connect( sigc::mem_fun(*this, &Something::on_something) );
+ or, for non-member methods:
+ signal_something().connect( sigc::ptr_fun(&Something::on_something) );
+ - Binding extra parameters:
+ SigC::bind(...)
+ should become
+ sigc::bind(...)
+ - Declaring signals:
+ SigC::Signal1<void, int>
+ should become
+ sigc::signal<void, int>
+ - Declaring slots:
+ SigC::Slot1<void, int>
+ should become
+ sigc::slot<void,int>
+ - Inheriting from the libsigc++ base class:
+ class Something : public SigC::Object
+ should become
+ class Something : public sigc::trackable
+
+
diff --git a/libs/glibmm2/COPYING b/libs/glibmm2/COPYING
new file mode 100644
index 0000000000..c4792dd27a
--- /dev/null
+++ b/libs/glibmm2/COPYING
@@ -0,0 +1,515 @@
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+^L
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+^L
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+^L
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+^L
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+^L
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+^L
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License
+may add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+^L
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+^L
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should
+have at least the "copyright" line and a pointer to where the full
+notice is found.
+
+
+ <one line to give the library's name and a brief idea of what it
+does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper
+mail.
+
+You should also get your employer (if you work as a programmer) or
+your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James
+Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/libs/glibmm2/ChangeLog b/libs/glibmm2/ChangeLog
new file mode 100644
index 0000000000..2862d348ff
--- /dev/null
+++ b/libs/glibmm2/ChangeLog
@@ -0,0 +1,1648 @@
+2.13.3:
+
+2006-11-28 Daniel Elstner <danielk@openismus.com>
+
+ * tools/pm/GtkDefs.pm (read_defs): Allow an empty pair of
+ parentheses in the innermost match. This fixes the problem of
+ gmmproc choking on "()" in the documentation strings. This would
+ still break on unmatched parentheses, though. Of course the
+ parser should just skip over quoted strings, but I wasn't able
+ to get that to work.
+ * glib/src/glib_enums.defs (GNormalizeMode): Manually fix the
+ improperly parsed value of G_NORMALIZE_NFD. Fortunately this
+ doesn't change anything since the "#error" token was interpreted
+ as zero, which happens to be the right value.
+ * glib/src/glib_functions.defs (g_iconv): Manually convert to
+ a function definition, as it was improperly parsed as a method
+ with a zero-length name (!) of object GIConv. This fixes the
+ annoying gmmproc warning about an allegedly unwrapped method.
+
+2006-11-28 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/glibmm/propertyproxy_base.cc: Don't ifdef out
+ PropertyProxy_Base when properties are disabled. It is needed
+ for connect_property_changed().
+
+2006-11-27 Daniel Elstner <danielk@openismus.com>
+
+ * tools/enum.pl (parse): Ignore whitespace in front of an enum
+ typedef. This fixes parsing of HildonTelephoneEditorFormat in
+ hildon-libs.
+ * tools/pm/Enum.pm (parse_values): Check whether the enumeration
+ constants actually have a common module prefix before attempting
+ to remove it. This fixes the incorrect parsing of inconsistently
+ named enums in hildon-libs.
+
+2006-11-27 Daniel Elstner <danielk@openismus.com>
+
+ * tools/enum.pl (form_names): Break the loop if the length of the
+ common prefix reaches zero. This fixes the infinite loop when
+ processing the inconsistently named enumeration constants of the
+ Hildon libraries.
+
+2006-11-20 Murray Cumming <murrayc@murrayc.com>
+
+ * docs/reference/libstdc++.tag.xml: Updated from the libstdc++ site.
+ Note that the original does not have an .xml extension. This is is
+ lots bigger, but that should mean there is more documentation now.
+
+2006-11-22 Oliver Nittka <oly@nittka.com>
+
+ * glib/src/value_basictypes.cc.m4: When registering float parameters,
+ use -G_MAXFLOAT instead of G_MINFLOAT. Since we first implemented this,
+ the glib documentation has been updated to make it cleare that this is
+ the real minimum and G_MINFLOAT is the minimum positive value.
+ Do the same for doubles too.
+
+2006-11-10 Murray Cumming <murrayc@murrayc.com>
+
+ * tools/Makefile.am: Add enum.pl to the dist, so that it is in
+ tarballs. Someone saw it mentioned in the appendix, but could not
+ find it in the tarball.
+
+2006-11-10 Murray Cumming <murrayc@murrayc.com>
+
+ * docs/reference/Doxyfile.in: Add PREDEFINES for the optional API,
+ so that the documentation shows the regular API.
+
+2006-11-10 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/glibmm/objectbase.cc:
+ * glib/glibmm/objectbase.h: Added connect_property_changed(),
+ as an alternative to use when the property proxies are not
+ available because GLIBMM_PROPERTIES_ENABLED is not defined.
+ SignalProxyProperty::connect(): Use notify::propertyname instead of
+ just notify, so do not have to check the property name later. This
+ should be more efficient (when this is used, rarely).
+ * glib/glibmm/propertyproxy_base.cc:
+ * glib/glibmm/propertyproxy_base.h: Move PropertyProxyConnectionNode
+ into the header, so we can reuse it for connect_property_changed().
+
+2006-10-04 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/glibmm/class.cc:
+ * glib/src/iochannel.ccg:
+ * glib/src/markup.ccg: Add a silly line to avoid unused parameters
+ when GLIBMM_EXCEPTIONS_ENABLED is not set.
+ * glib/glibmm/error.h: Do not use G_GNU_NO_RETURN on the version
+ of throw_exception() that returns, to avoid a warning.
+
+2006-10-01 Murray Cumming <murrayc@murrayc.com>
+
+ * Makefile.am:
+ * docs/Makefile.am:
+ * docs/Makefile_web.am_fragment:
+ * docs/images/Makefile.am:
+ * docs/reference/Makefile.am:
+ * docs/reference/README:
+ * examples/Makefile.am: Upload to the new hoster instead of to sourceforge.
+ Abstracted the host and path names into docs/Makefile_web.am_fragment to
+ avoid duplication.
+
+2.13.2:
+
+2006-09-28 Cedric Gustin <cedric.gustin@gmail.com>
+
+ * MSVC_Net2003/glibmm/glibmm.vcproj: Remove sarray from list of
+ source and header files.
+
+2006-09-26 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/glibmmconfig.h.in: For win32, define
+ GLIBMM_ARG_ENABLE_API_DEFAULT_SIGNAL_HANDLERS to 1,
+ instead of just defining it to nothing.
+ * scripts/reduced.m4: In the AC_ARG_ENABLE() to
+ define (or not) GLIBMM_ARG_ENABLE_API_DEFAULT_SIGNAL_HANDLERS,
+ use api-default-signal-handlers as the first parameter
+ instead of api-exceptions (a copy/paste error), though it does
+ not seem to make any difference.
+ Bug #357830.
+
+2006-09-23 Jonathon Jongsma <jonathon.jongsma@gmail.com>
+
+ * glib/src/keyfile.ccg, glib/src/keyfile.hg: added new files that were
+ missed from an earlier commit
+
+2.13.1:
+
+2006-09-19 Ralf Stephan <ralf@ark.in-berlin.de>
+
+ * glib/glibmm/ustring.h:
+ ustring(const ustring& src, size_type i, size_type n=npos)
+ and
+ ustring(const char* src, size_type n) constructors:
+ In the reference documentation, mention explicitly that
+ n is the number of _UTF-8_ characters, rather than
+ ASCII characters (bytes).
+
+2006-02-20 Rob Page <page.rob@gmail.com>
+
+ Wraps GKeyFile (Bug #330535)
+ * glib/glibmm.h: Added include of keyfile.h
+ * glib/glibmm/Makefile.am: Added keyfile.h
+ * glib/glibmm/containerhandle_shared.h: Added a TypeTraits
+ specialization for converting between bool and gboolean*.
+ * glib/src/Makefile_list_of_hg.am_fragment: Added keyfile.hg
+ to files_general_hg.
+ * glib/src/keyfile.hg: KeyFile header
+ * glib/src/keyfile.ccg: KeyFile implementation
+ * tools/m4/convert_glib.m4: Added a conversion for KeyFileFlags
+
+2006-09-14 Johannes Schmid <jhs@gnome.org>
+
+ * tools/m4/class_shared.m4: Change _IMPLEMENTS_INTERFACE to
+ _IMPLEMENTS_INTERFACE_CC so we can have more control over it,
+ by generating the _IMPLEMENTS_INTERFACE_CC from the WrapParser.pm.
+ * tools/m4/method.m4:
+ * tools/m4/signal.m4:
+ * tools/m4/vfunc.m4: Added optional parameters that result in
+ #ifdefs around methods, signals, vfuncs, etc.
+ * tools/pm/Output.pm: Addef ifdef() and endif().
+ output_wrap_vfunc_h(), output_wrap_vfunc_cc(),
+ output_wrap_default_signal_handler_h(),
+ output_wrap_default_signal_handler_cc(),
+ output_wrap_meth(),
+ output_wrap_create(),
+ output_wrap_sig_decl(): Support optional ifdefs around
+ declarations and implementations, by calling ifdef() and endif(),
+ or by passing the extra argument to the m4 macros.
+ * tools/pm/WrapParser.pm: parse_and_build_output():
+ Parse _IMPLEMENTS_INTERFACE, and call the new on_implements_interface()
+ method, which uses the new output_implements_interface() method,
+ so it can have an optional ifdef parameter.
+ on_wrap_method(), on_wrap_create(), on_wrap_vfunc(), output_wrap_signal(),
+ output_wrap_vfunc(): Handle the optional ifdef (with a parameter) option
+ for the _WRAP*() macros.
+
+ This adds support for disabling certain features by using the new
+ "ifdef" argument for methods, vfuncs, signals and interfaces.
+
+2006-09-05 Jonathon Jongsma <jonathon.jongsma@gmail.com>
+
+ * docs/reference/Makefile.am: rebuild docs when a .h files changes in
+ glib/glibmm
+ * glib/glibmm/miscutils.cc:
+ * glib/glibmm/miscutils.h: wrap g_get_user_data_dir(),
+ g_get_user_config_dir(), and g_get_user_cache_dir()
+
+This is the HEAD branch, for new API. There is also a glib-2-12 branch for
+maintenance of the stable API.
+
+2006-08-18 Cedric Gustin <cedric.gustin@gmail.com>
+
+ * MSVC_Net2003/*.vcproj: Updated for glibmm-2.12.
+
+2.12.0:
+
+2.11.3:
+
+2006-04-25 Murray Cumming <murrayc@murrayc.com>
+
+ * configure.in:
+ * glib/glibmmconfig.h.in:
+ * scripts/reduced.m4: Added a --enable-api-default-signal-handlers option. This defines
+ GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED, which is used to #ifdef default signal handlers.
+ This saves on library code size (less code and API symbols) and application code size and
+ loading time (less virtual methods, which must be imported and resolved at load time) and
+ per-object memory size (smaller object sizes because of less virtual methods.)
+ * tools/m4/class_interface.m4:
+ * tools/m4/class_shared.m4: Put default signal handler code in #ifdefs.
+
+2.11.2:
+
+2006-07-17 Murray Cumming <murrayc@murrayc.com>
+
+ * configure.in: Reverted the previous patch slightly to unbreak glibmmconfig.h.
+
+2.11.1:
+
+2006-07-16 Murray Cumming <murrayc@murrayc.com>
+
+ * configure.in: Quote GLIBMM_*_VERSION to avoid m4 warnings. Patch from
+ Bug #347076 from Kevin McBride.
+ * scripts/sun.m4: Quote GLIBMM_PROG_CXX_SUN to avoid an m4 warning.
+ Patch from Bug #347077 from Kevin McBride.
+
+2006-07-16 Jonathon Jongsma <jonathon.jongsma@gmail.com>
+
+ * glib/src/date.ccg: fix implementation of Glib::Date::set_time_current() so
+ that it doesn't set the date to Dec 31, 1969.
+
+2006-06-19 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/glibmm/object.h: Check whether DestroyNotify is defined, so we can warn about
+ including X11/Xlib.h before this header, which will break things.
+ Bug #316726 from Mert Tugcu and Javeed Shaikh.
+
+2006-06-09 Cedric Gustin <cedric.gustin@gmail.com>
+
+ * glib/glibmm/objectbase.h : Inline the set_property and
+ get_property methods. This is required by mingw32-gcc as
+ ObjectBase is explicitly dllexported.
+
+2006-06-05 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/src/convert.ccg: When using --enable-api-exception=no, only try to get the Glib::Error
+ when the GError is not null.
+
+2006-05-18 Murray Cumming <murrayc@murrayc.com>
+
+ * tools/m4/method.m4: _METHOD(): When using errthrow, actually print the function call even if
+ the return type is 0.
+
+2006-05-16 Murray Cumming <murrayc@murrayc.com>
+
+ * tools/m4/method.m4: _METHOD(), _STATIC_METHOD(): Remove spaces before dnl statements,
+ to avoid unwanted indentation in .cc files.
+
+2006-05-16 Murray Cumming <murrayc@murrayc.com>
+
+ * tools/m4/convert_base.m4: _CONVERT(): If the return type is void, use the unconverted
+ statement, not no statement. This prevents some void methods from being totally empty.
+ This was a (very bad) regression introduced by the optional API changed.
+ Bug #341895 from Philip Langdale.
+ * tools/m4/method.m4: _METHOD(), _STATIC_METHOD(): Attempt to remove unnecessary newlines,
+ though some indenting spaces slipped in instead. Must fix that.
+
+2006-05-14 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/glibmm/value.cc:
+ * glib/glibmm/value.h: Restored the init(GValue*) method that was lost when
+ merging changes from the glibmm-2-10 branch.
+
+2006-05-09 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/glibmm/ustring.cc:
+ * glib/src/date.ccg:
+ * glib/src/convert.ccg:
+ * glib/src/convert.hg: Added #ifdefed versions for the case that
+ exceptions are disabled.
+
+2006-05-10 Murray Cumming <murrayc@murrayc.com>
+
+ * configure.in:
+ * scripts/reduced.m4: Moved --enable-deprecated-api macro into scripts/reduced.m4.
+ Added the --enable-api-exceptions macro that was missing from my last commit.
+
+2006-04-05 Murray Cumming <murrayc@murrayc.com>
+
+ * configure.in:
+ * scripts/reduced.m4: Added --enable-api-exceptions option. When this
+ is used, methods that would normally throw an exception will now take
+ an extra std::auto_ptr<Glib::Error> argument that should be checked with
+ auto_ptr::get().
+ * glib/glibmmconfig.h.in: Undef the GLIBMM_EXCEPTIONS_ENABLED,
+ so it will be defined.
+ * tools/m4/gerror.m4: throw_func() returns an auto_ptr of a
+ Glib::Error when exceptions are disabled.
+ * tools/m4/method.m4:
+ * tools/pm/Output.pm: on_wrap_method(): Added alternative API with
+ #ifdefs
+ * tools/m4/signal.m4:
+ * tools/m4/signalproxy_custom.m4:
+ * tools/m4/vfunc.m4: Put #ifdefs around the exception re-throwing
+ try/catch blocks.
+ * glib/glibmm/dispatcher.cc:
+ * glib/glibmm/dispatcher.h:
+ * glib/glibmm/error.cc:
+ * glib/glibmm/error.h:
+ * glib/glibmm/exceptionhandler.cc:
+ * glib/glibmm/exceptionhandler.h:
+ * glib/glibmm/main.cc:
+ * glib/glibmm/signalproxy.cc:
+ * glib/glibmm/streamiochannel.cc:
+ * glib/glibmm/stringutils.cc:
+ * glib/glibmm/threadpool.cc:
+ * glib/src/iochannel.ccg:
+ * glib/src/iochannel.hg:
+ * glib/src/markup.ccg:
+ * glib/src/spawn.ccg:
+ * glib/src/thread.ccg: Put #ifdefs around try/catch blocks, and
+ use alternative API when appropriate.
+ * examples/iochannel_stream/fdstream.cc:
+ * examples/markup/parser.cc:
+ * examples/options/main.cc: Adapted examples to
+ the alternative API, with #ifdefs
+ * tools/m4/convert_base.m4: Avoid any conversion if the result is
+ void, to allow _WRAP_METHOD() to ignore bool results, so we can
+ generate some methods that are currently hand-coded.
+
+2006-05-09 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/glibmm/value.cc:
+ * glib/glibmm/value.h: Added init(const GValue*), so that we can copy GValue instances
+ of any type at runtime. Needed by libgdamm, which returns const GValue* instances.
+
+This is the HEAD branch, for API additions. See also the glibmm-2-10 branch.
+
+2.10.1:
+
+2006-04-12 Murray Cumming <murrayc@murrayc.com>
+
+ * tools/m4/signalproxy_custom.m4: Remove this file because it is not installed and
+ does not seem to be used.
+
+2006-04-12 Murray Cumming <murrayc@murrayc.com>
+
+ * tools/m4/signal.m4: Mark the (private) signal info callback functions as
+ static, to save on code size.
+
+2006-04-12 Murray Cumming <murrayc@murrayc.com>
+
+ * tools/pm/WrapParser.pm: Parse a new optional constversion parameter for
+ _WRAP_METHOD(), to save on code size by just calling the non-const overload
+ instead of generating almost identical code.
+ * tools/m4/method.m4: _METHOD(): Take extra parameters for use when constversion is used.
+ * tools/pm/Output.pm: Send the extra parameters to _METHOD().
+ * docs/internal/using_gmmproc.txt: Documented the new constversion option.
+
+2006-04-12 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/glibmm/main.cc:
+ * glib/glibmm/objectbase.cc:
+ * glib/glibmm/property.cc:
+ * glib/glibmm/ustring.cc:
+ * glib/glibmm/value_custom.cc:
+ * glib/src/spawn.ccg: Mark private functions as
+ static, to stop them being exported in the API, to reduce the
+ library code size slightly.
+ * tools/m4/signal.m4: Make generated callback functions static, for
+ the same reasons.
+
+2006-04-07 Cedric Gustin <cedric.gustin@gmail.com>
+
+ * README.win32: Updated for Mingw-4.1.
+
+2006-04-06 Cedric Gustin <cedric.gustin@gmail.com>
+
+ * MSVC_Net2003/*.vcproj: Embed the manifest file into executables
+ in the case of the Debug target.
+ * README.win32: Fixed a few typos.
+ * build_shared/Makefile_build.am_fragment: Add -DGLIBMM_BUILD to
+ the extra_defines compiler flags (switch between
+ dllexport/dllimport on win32).
+ * glib/glibmmconfig.h.in: Define GLIBMM_DLL when building with
+ mingw32/cygwin. This makes the GLIBMM_API tag (and GTKMM_API for
+ gtkmm) active with these two platforms, as required by bug
+ #309030.
+ * glib/glibmm/object.h, glib/glibmm/objectbase.h : Tag the Object
+ and ObjectBase classes with GLIBMM_API to make Visual Studio happy.
+
+2.10.0:
+
+2006-02-25 Murray Cumming <murrayc@murrayc.com>
+
+ * tools/pm/DocsParser.pm: looklookup_documentation(): Put the
+ @deprecated text immediately after the main description, before
+ the parameters, so that Doxygen actually uses it.
+
+2006-02-25 Murray Cumming <murrayc@murrayc.com>
+
+ * tools/pm/DocsParser.pm: looklookup_documentation(): Accept an
+ extra deprecated_documentation parameter, to be appended to the
+ Doxygen documentation.
+ * tools/pm/Output.pm: output_wrap_meth(): Put the documentation
+ inside the deprecation #ifdef, for neatness.
+ * tools/pm/WrapParser.pm: on_wrap_method(): Read an optional string
+ after the optional deprecated parameter, used to say why the
+ method is deprecated, in case it was not deprecated by the C API,
+ in which case it would already have documentation for this.
+
+2006-02-27 Cedric Gustin <cedric.gustin@gmail.com>
+
+ * README.win32: Updated for glibmm-2.8 (MS Visual Studio 2005).
+ * glib/glibmm/ustring.h: Tag npos with GLIBMM_API, in order to
+ dllexport it on win32. Bug #332438.
+ * MSVC_Net2003/*.vcproj: Updated for Visual Studio 2005. Added the
+ /vd2 compiler flag (Bug #158040).
+ * MSVC_Net2003/glibmm.sln: Updated for Visual Studio 2005.
+ * MSVC_Net2003/gendef/gendef.cc: Redirect output of dumpbin to a
+ file.
+ * glib/glibmmconfig.h.in: Undefined
+ GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS for MSVC.
+
+2006-02-03 Murray Cumming <murrayc@murrayc.com>
+
+ * docs/internal/using_gmmproc.txt: Section about regenerating .defs:
+ Repeat the hint about extra_defs_gen here.
+
+2006-02-27 Cedric Gustin <cedric.gustin@gmail.com>
+
+ * glib/glibmm/ustring.h: Tag npos with GLIBMM_API, in order to
+ dllexport it on win32. Bug #332438.
+
+2006-02-07 Rob Page <page.rob@gmail.com>
+
+ * glib/glibmm/ustring.h: fix a typo in the documentation for uppercase()
+
+2.9.1:
+
+2006-01-28 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/src/optiongroup.ccg: add_entry_with_wrapper(): Copy the
+ CppOptionEntry into the map _after_ setting entry_ so that we
+ really delete it in release_c_arg(), to avoid a memory leak.
+
+2006-01-28 Rob Page <rob@gmail.com>
+
+ * docs/reference/glibmm_header.html_fragment: Fix the link
+ to the Main page. Bug #328299.
+
+2006-01-27 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/src/optionentry.ccg: Constructor: Avoid memory
+ leak caused by double instantiation of gobject_.
+
+2005-12-16 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/glibmm/object.h:
+ * glib/glibmm/objectbase.h: Hide some internal stuff
+ from Doxygen. Add/Improve the Doxygen documentation.
+ * glib/src/convert.hg: Correct the declaration of
+ filename_display_name() to match the implementation.
+ Previously this would have been unusable due to a linker
+ error.
+
+2005-11-30 Murray Cumming <murrayc@murrayc.com>
+
+ * docs/reference/Doxyfile.in: Define the @newin aliases,
+ as in gtkmm.
+ * tools/pm/DocsParser.pm: Convert Since: in gtk-doc
+ text to @newin for our doxygen docs.
+
+2005-11-29 Murray Cumming <murrayc.com>
+
+ * build_shared/Makefile_build.am_fragment:
+ * configure.in: Added --enable-use-deprecations,
+ defaulting to no (do not check for them), so that
+ the tarball will still build when newer versions
+ of glib deprecate some API.
+ * examples/Makefile.am_fragment: Use the
+ deprecation, if wanted.
+
+2005-11-29 Murray Cumming <murrayc@murrayc.com>
+
+ * build_shared/Makefile_build.am_fragment:
+ * configure.in: Added --enable-deprecated-api
+ option. When set to disabled, it does not build
+ deprecated API. This reduces the size of the library,
+ and might be useful for embedded devices.
+ * glib/src/date.ccg:
+ * glib/src/date.hg: Use _DEPRECATE_IFDEF_START/END
+ around the deprecated set_time() method.
+
+2005-11-29 Murray Cumming <murrayc@murrayc.com>
+
+ * tools/m4/base.m4: Add
+ _DEPRECATE_IFDEF_START and _DEPRECATE_IFDEF_END
+ macros, to #ifdef-out generated methods.
+ Added _DEPRECATE_IFDEF_CLASS_START and
+ _DEPRECATE_IFDEF_CLASS_END for whole classes.
+ Put _DEPRECATE_IFDEF_CLASS* around all generated
+ code. It does nothing if the class is not deprecated.
+ * tools/m4/class_gtkobject.m4: Add _DEPRECATED macro,
+ used to mark a class as deprecated.
+ * tools/m4/method.m4: Take an extra parameter, to
+ optionally mark the method as deprecated, to add
+ #ifdefs around the code, with
+ _DEPRECATE_IFDEF_START/END
+ * tools/pm/Output.pm: _DEPRECATE_IFDEF_START/END
+ around the declarations of deprecated methods.
+ * tools/pm/WrapParser.pm: Check for an optional
+ deprecated parameter to _WRAP_METHOD().
+ * tools/m4/member.m4: Allow optional deprecated
+ method for _MEMBER_GET/SET*() to ifdef the code
+ out.
+ * tools/generate_wrap_init.pl.in: Put an #ifdef
+ around use of deprecated classes.
+
+2005-11-23 Murray Cumming <murrayc@murrayc.com>
+
+ * configure.in: Depend on glib 2.9, which
+ has new API.
+ * glib/src/date.ccg:
+ * glib/src/date.hg: Wrap glib_date_set_time_t()
+ and glib_date_set_time_val(). Deprecate
+ set_time(GTime) in favour of the new method
+ overloads. Added set_time_current(), wrapping the
+ case that the time_t is 0.
+
+This is the HEAD branch, for new API, targetting glib 2.9. See also the
+glibmm-2-8 branch.
+
+2.8.2:
+
+2005-11-23 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/glibmm/containers.h: Do not use g_assert() in
+ a header, because g++ sometimes warns that it has
+ no effect.
+
+2005-10-29 Murray Cumming <murrayc@murrayc.com>
+
+ * scripts/macros.m4: AL_PROG_GNU_MAKE():
+ Use $MAKE-make instead of $ac_make, which
+ apparently fixes a build problem on some
+ Solaris systems. Thanks to Mark Rouchal in
+ bug #307480.
+
+2.8.1:
+
+2005-10-19 Murray Cumming <murrayc@murrayc.com>
+
+ * configure.in: Check for glib 2.8. Bug #317913.
+
+2.8.0:
+
+Updated NEWS and increased version to 2.8.0.
+
+2.7.3:
+
+2005-08-17 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/src/glib_docs.xml: Regenerated with docextract_to_xml.py
+ * glib/src/glib_enums.defs: Regenerated with enums.pl
+ * glib/src/glib_functions.defs: Regenerated with h2defs.py
+
+2.7.2:
+
+2005-07-16 Murray Cumming <murrayc@murrayc.com
+
+ * glib/glibmm/miscutils.cc: Reimplemented build_filename() and
+ build_path() with the new non-vararg functions in glib 2.7,
+ instead of implementing them in gtkmm.
+ * glib/src/glib_enums.defs: Regenerated with enums.pl
+ * glib/src/optionentry.hg: Added FLAG_NO_ARG, FLAG_FILENAME,
+ FLAG_OPTIONAL_ARG, and FLAG_NOALIAS enum values.
+
+
+2.7.1:
+
+2005-06-08 Murray Cumming <murrayc@murrayc.com
+
+ * glib/glibmm/propertyproxy.h:
+ PropertyProxy_ReadOnly<>::get_value(),
+ PropertyProxy_WriteOnly<>::set_value(): Add implementations
+ instead of casting to unrelated PropertyProxy() and calling it
+ there. The AIX compiler did not like this hack. Bug #301610
+
+2005-06-07 Cedric Gustin <cedric.gustin@swing.be>
+
+ * glib/glibmm/miscutils.cc: In get_home_dir, return an empty
+ string when HOME is not defined (Win9x). Bug #306310 from Michael
+ Hofmann.
+ * glib/glibmm/miscutils.h: Updated docstring for the get_home_dir
+ method.
+
+2005-04-27 Murray Cumming <murrayc@murrayc.com>
+
+ * examples/child_watch/main.cc:
+ * examples/thread/dispatcher.cc:
+ * examples/thread/thread.cc:
+ * glib/glibmm/dispatcher.cc: Inherit signal handler objects from
+ sigc::trackable. This is necessary with some libsigc++ patches,
+ though not currently necessary with regular libsigc++.
+
+2005-04-22 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/src/gmodule_enums.defs: Regenerate with enums.pl
+ * glib/src/gmodule_functions.defs: Regenerate with h2defs.py
+ This adds the BIND_LOCAL enum value. Bug #172748 from
+ Phillip Neiswanger.
+
+2005-04-05 Murray Cumming <murrayc@murrayc.com>
+
+ * tool/pm/Output.pm: output_wrap_property(): Do not add the
+ const read-only method override if the property can not be read. Be
+ careful because this removes a little API from generated code. You
+ should hand-code the wrongly-generated methods and mark them as
+ deprecated.
+ * glib/glibmm/refptr.h: Added cast_const<>, like the existing
+ cast_dynamic<> and cast_static.
+
+2005-03-31 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/src/glib_functions.defs: Updated with
+ h2defs.py.
+
+2005-03-13 Yair Hershkovitz <yairhr@gmail.com>
+
+ * glib/glibmm/main.h,
+ glib/glibmm/main.cc: Added MainContext::signal_child_watch()
+ * examples/: Added child_watch/ example
+
+2005-03-11 Yair Hershkovitz <yairhr@gmail.com>
+
+ * glib/glibmm/main.h, glib/glibmm/main.cc:
+ Add Glib::SignalChildWatch class, Glib::signal_child_watch()
+
+This is the HEAD branch, for new API. Bug fixes that do not change or add
+API should also be applied to the glibmm-2-6 branch.
+
+2005-03-09 Cedric Gustin <cedric.gustin@swing.be>
+
+ * MSVC_Net2003/Makefile.am: Add blank.cpp to EXTRA_DIST.
+ * MSVC_Net2003/glibmm/glibmm.vcproj: Remove sarray.cc from the
+ list of source files.
+ * MSVC_Net2003/examples/*/*.vcproj,
+ MSVC_Net2003/tests/glibmm_value/glibmmvalue.vcproj: Change name of
+ PDB file to $(OutDir)/$(TargetName).pdb.
+
+2.6.1:
+
+2005-03-07 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/glibmm/interface.cc: Disable the new check for pre-existing
+ interface implementations, because it checks all base gtypes and
+ not just the current gtype. Bug #169442 by Bryan Forbes.
+
+2.6.0:
+
+2.5.6:
+
+2005-02-18 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/glibmm/interface.cc: Interface_Class:add_interface(), used by
+ add_interface() methods of Interfaces: Do not add interfaces that
+ have been added before, to avoid the warning from glib. This
+ allows application code to be simpler.
+
+2005-02-18 Murray Cumming <murrayc@murrayc.com>
+
+ * tools/pm/Output.pm: Add the documentation to the const property()
+ accessor as well as the non-const one.
+
+2005-02-13 Murray Cumming <murrayc@murrayc.com>
+
+ * tools/extra_defs_gen/generate_extra_defs.cc: Use
+ g_param_spec_get_blurb() to output the documentation for the
+ properties in the .defs file.
+ * tools/m4/property.m4: Take an extra docs argument, and put it in the
+ doxygen docs.
+ * tools/pm/Output.pm: Add the extra docs argument when calling the
+ property m4 macro.
+ * tools/pm/Property.pm: Read in the new docs part of the .defs, and
+ add a period at the end if neccessary.
+
+2005-02-01 Murray Cumming <murrayc@murrayc.com>
+
+ * examples/threadpool.cc, dispatcher.cc, dispatcher2.cc: Removed the
+ #ifdef for AIX, because sigc::bind now works on AIX.
+
+2005-01-27 Cedric Gustin <cedric.gustin@swing.be>
+
+ * MSVC_Net2003/glibmm/glibmm.rc.in: Reverted to 2.4 for the
+ library version number.
+
+2.5.5:
+
+2005-01-26 Cedric Gustin <cedric.gustin@swing.be>
+
+ * MSVC_Net2003/glibmm/glibmm.vcproj: Reverted to 2.4 for the
+ library version number.
+
+2005-01-24 Cedric Gustin <cedric.gustin@swing.be>
+
+ * Makefile.am, configure.in: Added MSVC_Net2003 directory.
+ * config.h.in: Added mkfifo #define (for mingw32).
+ * glib/glibmmconfig.h.in: Added new #define's to MSVC section.
+ * examples/iochannel_stream/Makefile.am: Do not build on win32
+ with mingw32 (mkfifo not available).
+ * scripts/cxx_std.m4: Fixed typo in AC_DEFINE macros.
+ * build_shared/Makefile_build.am_fragment: Removed
+ $(sublib_name)_COMPILATION variable (is useless now on
+ cygwin/mingw as all symbols are dll exported).
+ * MSVC_Net2003/*: Initial commit imported from glibmm-2-4 branch.
+ * MSVC_Net2003/glibmm/Makefile.am: Rewrote rule for local copy of
+ glibmmconfig.h (required for 'make distcheck').
+
+2005-01-21 Murray Cumming <murrayc@murrayc.com>
+
+ * configure.in, scripts/cxx.m4, glibmm/glibmmconfig.h.in: Added new
+ compiler tests to see whether extern "C" functions are put in the
+ global namespace, even when we use extern "C" inside a namespace
+ declaration. The AIX xlC compiler does this, but allows us to
+ redeclare the namespace inside the extern "C" block.
+ * glib/glibmm/property.h: Use the new
+ #ifdef GLIBMM_MUST_REDECLARE_NAMESPACES_INSIDE_EXTERNC and redeclare
+ the namespace when necessary.
+ * examples/thread/dispatcher.cc, dispatcher2.cc: Use sigc::bind<1>
+ instead of just sigc::bind<> because the AIX xlC compiler needs the
+ extra hint. However, the linker then fails, so the use of sigc::bind
+ is ifdefed out for _AIX. See the comments in the code.
+
+2005-01-21 Murray Cumming <murrayc@murrayc.com>
+
+ * configure.in, scripts/cxx.m4, glibmm/glibmmconfig.h.in: Added new
+ compiler tests.
+ 1. To see whether it allows use of non extern C functions
+ as extern C callbacks, because the Tru64 compiler does not
+ allow this, when using strict_ansi. We do not actually use this yet.
+ 2. To see whether it allows us to define a template that uses an
+ undefined type, even if we do not use it before defining the type.
+ Tru64 does not allow this. That's probably correct.
+ * glib/glibmm/container.h: #ifdef out a dynamic_cast that Tru64
+ does not allow, and which I can not think of a better place to put.
+ See the comment in the code.
+ * glib/glibmm/containerhandler_helpers.h: When the compiler does not
+ alllow the GObject and GtkObject (dynamic_cast of) specializations
+ here, then put them in glib/glibmm/object.h and
+ gtkmm/gtk/src/object.hg instead.- needed by Tru64 compiler.
+ * glib/glibmm/value.h, value_custom.[h|cc]: Conditionally moved
+ the RefPtr Value specialization into object.h, as above.
+ * glib/src/ optiongroup.ccg, spawn.ccg, thread.ccg: Make C callacks
+ separate extern "C".
+ * glib/src/optiongroup.ccg: Do not use the StringArrayHandle,
+ because the Tru64 compiler has problems with it - see comments
+ in code.
+ * glib/src/optionentry.hg: Remove the include of value.h, because
+ it is not used and it causes a Tru64 compile error in
+ optioncontext.cc because its templates are included before the
+ types that the template uses.
+
+2005-01-19 Murray Cumming <murrayc@murrayc.com>
+
+ * configure.in, scripts/cxx.m4, glibmm/glibmmconfig.h.in: Added a
+ compiler test, because the IRIX MipsPro compiler does not allow the
+ inline initialization of ustring::npos.
+ * glib/glibmm/ustring.[h|cc]: When the compiler does not support the
+ inline initialization of npos, initialize it in the .cc file.
+ Declare partial specializations of the SequenceString inner class
+ inside the class - needed by IRIX MipsPro compiler.
+
+2005-01-18 Murray Cumming <murrayc@murrayc.com>
+
+ * glibmm/src/optiongroup.[hg|ccg]: CppOptionEntry::convert_c_to_cpp():
+ Copy the strings to the vector in a loop, instead of using the
+ ArrayHandle constructor, because that does not seem to work with the
+ SUN Forte compiler.
+
+2.5.4:
+
+2005-01-10 Murray Cumming <murrayc@murrayc.com>
+
+ * glibmm/src/optiongroup.[hg|ccg]: Added a castitem constructor
+ that always takes ownership, needed by Gtk::Main. Added the new
+ FLAG_REVERSE flag value. Added reference documentation.
+
+2.5.3:
+
+2005-01-09 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/glibmm/misc_utils.[h|cc]: Added setenv() and unsetenv(),
+ wrapping new functions added in glib 2.4.
+ * glib/src/convert.[hg|ccg]: Added filename_display_name() and
+ filename_display_basename().
+
+2005-01-09 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/src/optionentry.ccg: Copy constructor: Copy the short name
+ form the src, not from itself. Bug #16331 from Daniel Holbach.
+
+2005-01-09 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/src/optionentry.[hg|cc]: Add add_entry(entry, bool&), to wrap
+ use of G_OPTION_ARG_NONE. Bug #163325 from Daniel Holbach.
+ * examples/options/main.cc: Use the new add_entry() overload.
+
+2005-01-06 Benoît Dejean <TazForEver@dlfp.org>
+
+ * glib/glibmm/dispatcher.cc:
+ * glib/glibmm/error.cc:
+ * glib/glibmm/exceptionhandler.cc:
+ * glib/glibmm/main.cc:
+ * glib/glibmm/threadpool.cc:
+ * glib/glibmm/ustring.cc:
+ * glib/glibmm/wrap.cc: Don't export private API.
+ Closes #163031.
+
+2005-01-04 Chris Vine <chris@cvine.freeserve.co.uk>
+
+ * examples/iochannel_stream/: Provide a means of obtaining
+ Glib::IOChannel error information from the streambuffer. Remove
+ the code conversion option from the fdstream/fdstreambuf
+ constructors and add comments in fdstream.h about code conversion
+ and other matters. Add a detach() function and a destructor to
+ fdstreambuf. Correct an error in fdstreambuf::xsgetn(). Include
+ missing <string> header file in main.cc.
+
+2.5.2:
+
+2004-12-19 Murray Cumming <murrayc@murrayc.com>
+
+ * examples/: Adapted and added iochannel_stream example from
+ Chris Vine in bug #138259.
+
+2004-12-19 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/src/: Added glib_docs.xml, generated with docsextract_to_xml.py
+ and glib_docs_override.xml, to generate some API reference from
+ the C docs.
+ * glib/src/Makefile.am: Mention the new files.
+
+2004-12-19 Murray Cumming <murrayc@murrayc.com>
+
+ * docs/reference/: Added a copy of the libstdc++ doxygen tags file,
+ but it still does not seem to work, for example with std::vector<>
+ and std::string.
+
+2004-12-19 Murray Cumming <murrayc@murrayc.com>
+
+ * docs/reference/Doxyfile.in: Use the libstdc++ TAG files, so that
+ references to std:: classes take people to their docs.
+ * glib/src/: Added glib_docs.xml and glib_docs_override.xml, and
+ mentioned them in Makefile.am.
+
+2004-12-19 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/src/date.hg, glib/glibmm/main.h,
+ glib/glibmm/signalproxy_connectionnode.h: Deal with some doxygen
+ warnings about undocumented parameters.
+ * glib/glibmm/ustring.h: Added documentation for the size() and
+ bytes() methods.
+
+2004-11-21 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/src/optionentry.[hg|ccg]: Removed OptionEntry enum and
+ set_arg_data(), because they are not needed any more.
+
+2.5.1:
+
+2004-11-01 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/src/optiongroup.[hg|ccg]: Added add_entry() for vector<ustring>
+ and add_entry_filename() for std::string and vector<std::string>.
+ * examples/options/main.cc: Test these new methods.
+
+2004-10-30 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/src/optiongroup.[hg|ccg]: Added gobj_give_ownership().
+ * glib/src/optioncontext.[hg|ccg]: add_group(), set_main_group(): Use
+ gobj_give_ownership() because GOptionContext deletes the GOptionGroups
+ that we give it.
+
+2004-10-26 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/src/optionentry.hg: Remove accessors for arg and arg_data.
+ * glib/src/optiongroup.[hg|ccg]: add_entry(): Remove arg_type parameter
+ and instead add overrides which take specific C++ value types.
+ Add CppOptionEntry inner class to hold information about each entry
+ and its dynamically allocated C value.
+ Add map_entries_ map to store them, so we can iterate over them during
+ post_parse.
+
+2004-10-21 Murray Cumming <murrayc@murrayc.com>
+
+ * build_shared/Makefile_build.am_fragment: Patch from Roger Leigh in
+ bug # 15589 to use PLATFORM_WIN32 rather than OS_WIN32 to enable
+ -no-undefined. This allows glibmm to build in a cgwin environment,
+ apparently.
+
+2.5.0:
+
+2004-10-17 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/src/optioncontext.[hg|ccg]: add_entry(): Fixed crash by
+ creating a temporary array, with a nulled last item, which is what the
+ C function wants. In callbacks, ignore the group parameter because our
+ option group in the data parameter is the same, and does not require
+ construction of a second C++ wrapper instance for the same C instance.
+ * glib/src/optiongroup.[hg|ccg]: Removed the cast constructor, because
+ it is not needed anymore, and there is no clear way to implement it.
+
+2004-10-14 Murray Cumming <murrayc@murrayc.com>
+
+ * tools/pm/WrapParser.pm: on_wrap_property(): Convert property name to
+ canonical form, so that we can recognise notifications of property
+ value changes. Bug #152764.
+
+2004-10-07 Philip Langdale <plangdale@vmware.com>
+
+ * glib/glibmm/signalproxy_connectionnode.cc: Remove unnecessary warning
+ when notify() is called after destroy_notify_handler(). (bug #154498)
+
+2004-10-01 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/src/option*.[hg|ccg], examples/options/main.cc: Rethought the
+ structure now that I see how the parts work together. Rearranged the
+ example to show how the parsing can fill values in member variables
+ of a derived OptionGroup class. However, 1. it crashes now, 2. we need
+ extra code to map the GOption C types to suitable C++ types, probably
+ by doing pre and post parsing to create temporary C types for the C++
+ types.
+
+2004-09-27 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/src/option*.[hg|ccg]: Wrapped more methods, but I have still not
+ finished.
+ * examples/options/: Started an example.
+
+2004-09-26 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/src/glib_functions.defs: Regenerated with h2defs.py
+ * glib/src/: Added optionentry.[hg|ccg], optiongroup.[hg|ccg],
+ optioncontext.[hg|ccg].
+
+2004-09-19 Murray Cumming <murrayc@murrayc.com>
+
+ * This is the HEAD branch.
+
+2004-09-13 Cedric Gustin <cedric.gustin@swing.be>
+
+ * examples/thread/dispatcher.cc: Fixed a race condition on win32
+ that involved the combined use of auto_ptr and multithreading (bug
+ #109966).
+
+2.4.4:
+
+2004-07-23 Martin Schulze <mschulze@cvs.gnome.org>
+
+ * glib/glibmm/main.cc: Move deletion of SourceConnectionNode object
+ into destroy_notify_callback() exclusively; do not delete from
+ notify().
+ (bug #144420)
+
+2004-07-10 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/glibmm/signalproxy_connectionnode.cc: notify(): Do not delete
+ the connection after disconnecting it, because disconnecting it
+ always causes disconnect_notify to be called, so just delete it there.
+ This prevents double deletes and reading of deleting memory, found in
+ bug #145571.
+
+2004-07-09 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/glibmm/signalproxy.h.m4: Added some documentation.
+
+2004-06-20 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * glib/glibmm/objectbase.cc: Spring cleaning.
+ * glib/glibmm/object.cc: ditto.
+
+2.4.3:
+
+2004-06-18 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * scripts/macros.m4 (GTKMM_ARG_ENABLE_WARNINGS): Add
+ -Wno-long-long to the list of tried warning flags.
+
+2004-06-16 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * glib/glibmm/dispatcher.cc (DispatchNotifier::create_pipe): There
+ is no point in calling g_file_error_from_errno() on win32 since we
+ have no real errno. Also fix the error text to say "event" rather
+ than "pipe".
+
+2004-06-14 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * scripts/cxx.m4: Add a couple of casts to void in order to suppress
+ warnings about unused variables. I still have no idea as to why the
+ hardcore warning flags are remembered when running make distcheck...
+
+2004-06-14 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * examples/thread/dispatcher.cc: Explicitely join all threads.
+ Hopefully that'll fix the crash on win32 (see bug #109966).
+
+2004-06-13 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * examples/thread/dispatcher*.cc (main): Remove unused parameter
+ names to fix building with -Werror.
+
+2004-06-13 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * configure.in (GTKMM_ENABLE_DEBUG_REFCOUNTING): s/^GTK/GLIB/
+
+2004-06-08 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * build_shared/Makefile_build.am_fragment (all_includes): Remove
+ left-over include paths for pango, atk, gdk and gtk.
+
+2004-06-07 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * glib/glibmm/stringutils.h: Replace a couple of double quotes with
+ &quot; to prevent doxygen from escaping the enclosed HTML entities.
+
+2004-06-04 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * glib/glibmm/ustring.h: Use /*! instead of /** to introduce
+ doxygen comments in order to avoid cluttering the long method list
+ of class Glib::ustring. Replace a few double quotes with &quot;
+ to prevent doxygen from escaping the enclosed HTML entities.
+
+2.4.2:
+
+2004-06-03 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * scripts/Makefile.am (EXTRA_DIST): Remove mkinstalldirs, because
+ automake-1.8 doesn't use it anymore and prior versions should pick
+ it up automatically anyway.
+
+2004-06-03 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * glib/glibmm/dispatcher.cc: Complete overhaul of the Win32
+ implementation of Glib::Dispatcher. That is, mutex locking is
+ done correctly now and dynamic memory allocation is no longer
+ used, plus a few other cleanups. See reopened bug #109966.
+
+2004-06-03 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * glib/glibmm/signalproxy_connectionnode.cc
+ (SignalProxyConnectionNode::SignalProxyConnectionNode):
+ Reorder the initializer list to match the declaration order.
+
+ (SignalProxyConnectionNode::notify): Add missing return 0.
+
+2004-05-26 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * glib/glibmm/ustring.{cc,h}: Globally apply some minor code
+ cleanup and optimization tweaks.
+
+ (get_unichar_from_std_iterator): Replace implementation with a
+ hand-optimized and profiled variant that has been lurking in my
+ local tree for quite some time, thus should be well tested.
+ Also add the G_GNUC_PURE() attribute.
+
+ (operator+): Explicitely instantiate and return a temporary string,
+ instead of accessing the reference ustring::operator+=() returns.
+ This quite often allows the compiler to eliminate the additional
+ copy constructor invocation.
+
+2004-05-25 Murray Cumming <murrayc@murrayc.com>
+
+ * configure.in, Makefile.am: Removed the glibmm.spec files, because
+ it is broken and nobody has volunteered to fix it.
+
+2004-05-20 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * examples/thread/dispatcher.cc: Revert last commit because it's
+ silly. To make the code truly exception-safe it would be necessary
+ to either join all threads or to notify them, which is way beyond
+ the scope of this example.
+
+2004-05-20 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * examples/thread/dispatcher.cc: Set a good example and
+ be paranoid about possible memory leaks due to exeptions.
+
+2004-05-20 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * examples/thread/dispatcher.cc: Code cleanup. Most importantly,
+ get rid of the locking around std::cout since it obfuscates the
+ purpose of using Glib::Dispatcher.
+
+2004-05-13 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * glib/glibmm/object.{cc,h} (ConstructParams::ConstructParams):
+ Implement the copy constructor in a way that actually works if used.
+ Relying on the compiler to optimize it away is a bad idea. (#132300)
+
+2004-05-04 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/glibmm/ustring.h: Documented the constructors, based on
+ the libstdc++ documentation, to make it clear that sizes are in
+ characters rather than bytes.
+
+2004-05-01 Murray Cumming <murrayc@murrayc.com>
+
+ * configure.in: Increase glib dependency to 2.4.0.
+
+2004-04-30 Murray Cumming <murrayc@murrayc.com>
+
+ * tools/m4/gobject.m4: Allow use of _CUSTOM_DTOR(), needed by
+ Gnome::Gda::Connection.
+
+2.4.1:
+
+2004-04-17 Murray Cumming <murrayc@murrayc.com>
+
+ * docs/reference/Makefile.am: Make the generated html depend on the
+ beautify_docs.pl.in source instead of the generated beautify_docs.pl,
+ so that the html is not rebuilt from tarballs.
+
+2004-04-17 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/glibmm/container_handle.h: Reimplemented more of the
+ to_cpp_type() methods without using dependent methods, so that they
+ work with g++ 3.4 (cvs versions).
+
+2.4.0:
+
+2004-04-11 Murray Cumming <murrayc@murrayc.com>
+
+ * tools/pm/WrapParser.pm, Output.pm, m4/signal.m4: Allow _WRAP_SIGNAL()
+ to take an refreturn argument, so that Gtk::Widget::on_get_accessible()
+ can do an extra ref before returning the Atk::Object.
+
+2004-04-09 Murray Cumming <murrayc@murrayc.com>
+
+ * tools/pm/Output.pm: output_wrap_property(): Provide the actual
+ property name as well as one with - replace with _, so we can
+ test for the correct value in notification signal handler.
+ * tools/m4/property.m4: Use the actual property name when calling
+ C functions.
+
+2.3.8:
+
+2004-03-24 Murray Cumming <murrayc@murrayc.com>
+
+ * scripts/cxx.m4: Corrected parentheses, which cause the docs to be
+ written into config.h. Thanks to Alexander Nedotsukov.
+
+2004-03-23 Murray Cumming <murrayc@murrayc.com>
+
+ * scripts/cxx.m4: Corrected the ambiguous const template test, which
+ failed on all platforms because it generated bad code.
+
+2004-03-20 Martin Schulze <mschulze@cvs.gnome.org>
+
+ * glibmm/main.cc: Bug fix in SourceConnectionNode::notify() (#137030).
+
+2004-03-18 Murray Cumming <murrayc@murrayc.com>
+
+ * tools/generate_wrap_init.pl: Change a regex so that files are
+ included without full path. Apparently this helps when building outside
+ of the source directory, though I'm sceptical. By Victor Zverovich in
+ bug #137530.
+
+2.3.7:
+
+2004-03-14 Murray Cumming <murrayc@murrayc.com>
+
+ * scripts/sun.m4: Set the correct variable, so it is actually set in
+ glibmmconfig.
+
+2004-03-14 Murray Cumming <murrayc@murrayc.com>
+ * glib/glibmm/containerhandle_shared.h value.h: Used ifdef
+ GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS to avoid
+ problems with the SUN Forte compiler.
+
+2004-03-14 Murray Cumming <murrayc@murrayc.com>
+
+ * scripts/cxx.m4: Added CAN_DISAMBIGUATE_CONST_TEMPLATE_SPECIALIZATIONS
+ m4 macro to use in configure.in, to check for the SUN Forte problem -
+ see the comments in cxx.m4.
+ * scripts/sun.m4: Moved some brackets around to make the define
+ actually work.
+
+2004-03-13 Murray Cumming <murrayc@murrayc.com>
+
+ * glib/glibmm/containerhandle_shared.h: TypeTraits to_cpp_type()
+ specializations: Use wrap_auto() directly instead of a specific
+ wrap() overload that would be dependent. Needed for g++ 3.4.
+ * glib/glibmm/containers.h: Same again.
+
+2004-03-13 Murray Cumming <murrayc@murrayc.com>
+
+ * tools/m4/class_shared.m4: Remove the parent get_type() call from
+ the Class::init() function, because it is optimised away, and g++ 3.4
+ actually complains that it does nothing.
+ * glib/glibmm/object.[h|cc]: Add a public ConstructParams copy
+ constructor, needed by g++ 3.4. See comments in the code.
+ * tests/glibmm_value/glibmm_value.cc: Instantiate instances of
+ value types, to fix the g++ 3.4 build. I don't know what the code
+ was meant to do before anyway.
+
+2004-03-11 Murray Cumming <murrayc@murrayc.com>
+
+ * scripts/: Added sun.m4, copied from libsigc++-1.2/scripts and
+ modified, so we can detect the SUN Forte compiler.
+ * configure.in: Used the m4 macro.
+ * glibmm/glibmm-config.h: Undef the GLIBMM_COMPILER_SUN_FORTE macro
+ so that it will be defined if configure sets it.
+
+2004-03-09 Murray Cumming <murrayc@murrayc.com>
+
+ * Some, but not all, SUN Forte build fixes:
+ * tools/m4/convert_gdk.m4, convert_glib.m4: Use existing
+ sun-specific conversion when converting from any
+ RefPtr<const Something> to *Something.
+
+2004-04-08 Hagen Moebius <hagen.moebius@starschiffchen.de>
+
+ * tools/pm/DocsParser.pm: Another change to give better warnings and
+ errors at gmmproc-runtime. Further improvment of parsing parameter names
+ to strip traling underscres. This not only for reference text, but for
+ the parameter list also.
+
+2004-04-07 Hagen Moebius <hagen.moebius@starschiffchen.de>
+
+ * tools/pm/DocsParser.pm: Allow overrides to only override
+ part of the docs. Add a <mapping> tag to associate non-prefixed
+ functions with classes. Improve parsing of parameter names so they
+ can now have numbers in the names.
+
+2.3.6:
+
+2004-03-03 Murray Cumming <murrayc@murrayc.com>
+
+ * Added glib/glibmm/i18n.h and i18n-lib.h which defines _() and friends
+ for internationalization. See the comments in the header - you must
+ include things in the right order.
+ * glib/src/spawn.[hg|ccg]: Added spawn_close_id() as wrapper for
+ g_spawn_close_id().
+ * glib/glibmm/main.[h|cc]: Added MainLoop::depth() as wrapper for
+ g_main_depth().
+
+ 2004-03-02 Murray Cumming <murrayc@murrayc.com>
+
+ * tools/pm/Function.pm: parse_param(): Only parse const as an
+ individual part of the type name if it is followed by a space, so
+ that we can have const const_iterator& types.
+
+2004-02-27 Martin Schulze <teebaum@cvs.gnome.org>
+
+ * CHANGES: Fix typo reported by Chris Vine.
+
+2004-02-13 Martin Schulze <teebaum@cvs.gnome.org>
+
+ * documentation fixes and corrections in the comments reflecting
+ the shift to libsigc++ 2.
+ * make all source files in example thread use libsigc++ 2 instead
+ of libsigc++ 1.2.
+
+2.3.5:
+
+2004-02-10 Murray Cumming <murrayc@usa.net>
+
+ * glibmm now uses libsigc++ 2 instead of libsigc++ 1.2. See bug
+ #125061 for more details. We must update CHANGES later.
+
+2.3.4:
+
+2004-02-02 Murray Cumming <murrayc@usa.net>
+
+ * glib/glibmm/containerhandle_shared.h: Traits<const T*>: Added
+ const_cast, needed by TreeView::get_columns() const: bug #126721.
+
+2004-01-29 Murray Cumming <murrayc@usa.net>
+
+ * tools/pm/Parser.pm, Output.pm, tools/m4/signal.m4: Add an optional
+ custom_c_callback parameter to _WRAP_SIGNAL to allow special code
+ for the SelectionData& output parameter in Gtk::Widget signals.
+ Hopefully we won't need too many more of these hacks - the m4 is
+ becoming very hard to read, with all these nested ifelse() statements.
+
+2004-01-27 Cedric Gustin <cedric.gustin@swing.be>
+
+ * build_shared/Makefile_build.am_fragment: Added win32-specific
+ --export-all-symbols to linker flags. This is backported from
+ gtkmm-2.2.
+ * README.win32: Updated text for glibmm-2.4.
+ * tools/generate_wrap_init.pl.in: Replaced GTKMM_WIN32 by the
+ standard G_OS_WIN32.
+
+2.3.3:
+
+2004-01-22 Murray Cumming <murrayc@usa.net>
+
+ * glib/date.[hg|ccg]: Added clamp_min() and clamp_max() to wrap the
+ case where g_date_clamp() takes null values.
+
+2004-01-18 Alberto Paro <alberto@paro.homeunxi.org>
+
+ * glib/src/date.hg: documentated Glib::Date functions.
+ * glib/glibmm/main.h: documentated Glib::MainLoop,Glib::MainContext
+ and Glib::Source functions.
+
+2004-01-18 Murray Cumming <murrayc@usa.net>
+
+ * tools/pm/Output.pm, tools/m4/property.m4: When the property is not
+ read-only, add a second read-only propertyproxy for the same property,
+ with a const accessor. This allows setting of properties in const
+ methods. Make all read-only propertyproxies have const accessors.
+ * glib/glibmm/propertyproxy.h: Added class documentation.
+ * tools/pm/Output.pm: Declare _vfuncs as virtual methods - fixing
+ an error in my last change.
+
+2004-01-16 Murray Cumming <murrayc@usa.net>
+
+ * tools/pm/Output.pm, tools/m4/vfunc.m4:
+ - Generate const vfuncs when requested with _WRAP_VFUNC().
+ - Put the *_vfunc() decleraration directly into the header, where
+ the _WRAP_VFUNC() macro appears, instead of in a separate section.
+ This allows us to add doxygen documentation before the _WRAP_VFUNC()
+ in the .hg file. However, we must check that all of our _WRAP_VFUNC()
+ macros are in protected: sections.
+
+2004-01-12 Murray Cumming <murrayc@usa.net>
+
+ * glib/glibmm/object.cc: Object::Object() default constructor.
+ Remove the warning because we really need this to implement a custom
+ TreeModel. Derive a new GType, as in the
+ Object::Object(ConstructParams) constructor. Like that constructor,
+ the default one also assumes that you have called a suitable
+ ObjectBase constructor, such as ObejctBase(typeid(MyCustomClass)).
+
+2004-01-09 Murray Cumming <murrayc@usa.net>
+
+ * tools/pm/Output.pm: output_wrap_property(): Allow construct-only
+ properties to be wrapped, as read-only properties.
+
+2004-01-03 Murray Cumming <murrayc@usa.net>
+
+ * tools/gmmproc.in, pm/WrapParser.pm, DocsParser.pm: Removed the
+ mergecdocs option - because we always want to merge C docs, to avoid
+ accidental upload of half-complete docs.
+
+2003-12-29 Murray Cumming <murrayc@usa.net>
+
+ * Makefile.am: Add scripts and tests directories to SUBDIRS instead of
+ DIST_SUBDIRS, so that their Makefile.am files are actually used.
+ * scripts/macros.m4: renamed GTKMM_CHECK_PERL() to GLIBMM_CHECK_PERL()
+ and install it as glibmm_check_perl.m4, so that other *mm projects
+ can use it. They need the PERL_PATH for Doxygen.
+
+2003-12-22 Murray Cumming <murrayc@usa.net>
+
+ * docs/reference: generate beautify_docs.pl from beautify_docs.pl.in,
+ so it can have the perl path in it. Install it, so other *mm
+ modules can use it.
+
+2003-12-13 Murray Cumming <murrayc@usa.net>
+
+ * tools/m4/*.m4: Added fuller Doxygen documentation to all gobj() and
+ wrap() methods. Doxygen should not emit warnings about these now.
+
+2.3.2:
+
+2003-11-29 Murray Cumming <murrayc@usa.net>
+
+ * tools/m4/signal.m4: Add spaces inside signal_proxy template types,
+ to avoid << and >> when using templated types.
+
+2003-11-27 Murray Cumming <murrayc@usa.net>
+
+ * tools/pm/WrapParser.pm, Output.pm: Added WRAP_METHOD_DOCS_ONLY()
+ macro.
+ * docs/internal/using_gmmproc.txt: Explained the new macro.
+
+2003-11-02 Murray Cumming <murrayc@usa.net>
+
+ * glib/glibmm/: Added init.[h|cc] with Glib::init() so that the
+ gnomemm init() methods do not need to initialize gtkmm.
+ * tools/m4/class_gobject.m4, class_gtkobject.m4: Added
+ _GMMPROC_PROTECTED_GCLASS macro, needed by libgnomecanvasmm. This
+ was not previously properly merged from gtkmm2.
+ * tools/m4/property.m4: Re-added PropertyProxy reference documentation
+ that did not survive a previous merge from gtkmm2.
+
+2003-11-01 Murray Cumming <murrayc@usa.net>
+
+ * glib/glibmm/propertyproxy.h, propertyproxy_base.[h|cc]: Now uses
+ ObjectBase instead of Object, because glib can now have properties
+ on interfaces. This is needed, for instance, by the GtkFileChooser
+ interface wrapper in gtkmm.
+ * glib/glibmm/object.h: Moved get/set_property() methods into
+ ObjectBase, for the same reason.
+ * tools/pm/WrapParser.pm, Output.pm: Added optional no_default_handler
+ parameter to gmmproc _WRAP_SIGNAL() macro, for signals whose
+ default signal handler is not in the klass struct and therefore
+ can not be overridden.
+
+2003-10-31 Murray Cumming <murrayc@usa.net>
+
+ * docs/Makefile_web.am_fragment: Corrected install location,
+ so that links from the gtkmm docs work when they are installed.
+
+2003-10-30 Murray Cumming <murrayc@usa.net>
+
+ * docs: Added images directory, copied from gtkmm, for the reference
+ html docs.
+ * configure.in: Mention docs/images/Makefile.
+ * docs/reference/Doxyfile.in: Genereate glibmm_doxygen_tags instead
+ of gtkmm_doxygen_tags.
+ * docs/reference/Makefile.am: dist glibmm_doxygen_tags.
+ * docs/reference: gtkmm*.html_fragment are now glibmm*.html_fragment.
+
+2.3.1:
+
+2003-10-23 Murray Cumming <murrayc@usa.net>
+
+ * tools/pm/Output.pm: output_wrap_create(): Used
+ args_types_and_names_with_default_values() intead of
+ args_types_and_names(), so that create() functions .in .h files have
+ the default values as specified in _WRAP_CREATE() in .hg files.
+ * tools/pm/WrapParser.pm: on_ignore_signals(): Strip the quotes, to
+ make _IGNORE_SIGNAL() really work in .hg files.
+
+2003-10-02 J. Abelardo Gutierrez <jabelardo@cantv.net>
+
+ * examples/threads/dispatcher.cc
+ examples/threads/dispatcher2.cc: fixed to cast out all gktmm code,
+ now they only need glimm.
+ * configure.in: Added examples/threads because they don't use gtkmm
+ anymore. Now all examples/threads compiles and run just fine.
+
+2.3.0:
+
+2003-09-30 Murray Cumming <murrayc@usa.net>
+
+ * configure.in: Removed examples/threads because we don't build or
+ distribute it, because it doesn't build, because it uses gtkmm.
+
+2003-09-30 Murray Cumming <murrayc@usa.net>
+
+ * glib/glibmm/object_base.h: ObjectBase inherits virtually from
+ Sigc::Object. See bug #116280.
+
+2003-09-27 Cedric Gustin <cedric.gustin@swing.be>
+
+ * glib/glibmm/threadpool.cc: Removed
+ _GTKMMPROC_SIGNAL_H_AND_CC(#ifndef G_OS_WIN32) restrictions. These
+ functions are now implemented in the latest (2.2.4) GTK+ on win32.
+ * README.win32 : Updated list of unsupported functions.
+
+2003-08-20 Frank Naumann <fnaumann@freemint.de>
+
+ * glib/src/thread.hg,
+ glib/src/unicode.hg: Warning bugfix for VisualStudio .NET 2003;
+ made wrapper functions returning bool from glib functions
+ returning int (C lacks builtin type bool) explicit by adding
+ an != 0 check. Otherwise VisualStudio .NET warn about implicit
+ int -> bool cast.
+
+2003-07-26 Murray Cumming <murrayc@usa.net>
+
+ * glib/glibmm/dispatcher.cc: Added #include <algorithm>, needed
+ by MSVC++, as suggested by Frank Naumann in bug #118215.
+
+2003-05-31 Murray Cumming <murrayc@usa.net>
+
+ * tools/gmmproc.in: Corrected location of installed .pm files. They
+ are now in a glibmm-2.3 folder instead of a glibmm-2.4 folder.
+
+2003-05-14 Murray Cumming <murrayc@usa.net>
+
+ * Applied some of MSVC++ .NET 2003 changes from jburris. For instance,
+ use of Gtk:: prefix with manage, because MSVC++ can not guess it. Also
+ corrected the out-of-sync protected/private modifiers in the private
+ gtype classes and their prototypes.
+
+2003-05-09 Cedric Gustin <cedric.gustin@swing.be>
+
+ * glib/glibmm/dispatcher.cc: small typo in G_OS_WIN32 condition.
+
+2003-05-07 Murray Cumming <murrayc@usa.net>
+
+ * scripts/macros.m4: Made the --enable-debug-refcounting configure
+ option set GLIBMM_* instead of GTKMM_*.
+
+2003-05-02 Murray Cumming <murrayc@usa.net>
+
+ * tools/m4/*.m4: Added doxygen comments to gobj() methods.
+ * examples/markup/parser.cc: Commented-out a std::right that gcc 2.93
+ does not like.
+
+2003-04-23 Andrew Makeev
+
+ * glib/glibmm/dispatcher.cc: Added some #ifdefed code to implement
+ Glib::Dispatcher on WIN32. See comments with the code.
+
+2003-04-22 Murray Cumming <murrayc@usa.net>
+
+ * Install headers in a glibmm-2.3 directory instead of glibmm-2.4,
+ to be consistent with gtkmm 2.4.
+
+2003-04-21 Murray Cumming <murrayc@usa.net>
+
+ * arrayhandle.h, listhandle, slisthandle.h:
+ Glib::ListHandle, Glib::ListHandle, Glib::SListHandle: Added
+ reference docs explaining that people can use STL containers.
+
+2003-04-21 Murray Cumming <murrayc@usa.net>
+
+ * Removed examples/idle: It's now updated and in gtkmm/examples/book.
+
+2003-04-19 Murray Cumming <murrayc@usa.net>
+
+ * tools/pm/GtkDefs.pm: get_unwrapped(): Changed some & to && to
+ avoid warnings and because that is probably what they should be.
+
+ * tools/m4/extra_defs_gen/generate_defs_glib.cc: Removed parameter
+ names from main(), because they are not used. Avoid warning.
+
+2003-03-26 Ross Burton <ross@burtonini.com>
+
+ * glib/src/module.hg: Added API documentation.
+
+2003-03-18 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+ * scripts/*.m4, configure.in:
+ Added description to several AC_DEFINE statements to make 'autoheader'
+ happy
+ * Makefile.am:
+ Added ACLOCAL_AMFLAGS to make 'autoreconf' work
+
+2003-03-18 Cedric Gustin <cgustin@ibelgique.com>
+
+ * Makefile.am : removed examples from DIST_SUBDIRS
+
+2003-03-18 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+
+ * examples/Makefile.am_fragment: Added DESTDIR-support.
+
+2003-03-14 Cedric Gustin <cgustin@ibelgique.com>
+
+ * Install examples. The are built by default too. Patch adapted for
+ glibmm 2.4 by Murray Cumming.
+
+2003-03-04 Cedric Gustin <cgustin@ibelgique.com>
+
+ * configure.in : Removed libstdc++ in LDFLAGS on win32. Latest
+ libtool is taking care of it.
+ * build_shared/Makefile_build.am_fragment,
+ tools/extra_defs_gen/Makefile.am : Added
+ --export-all-symbols linker flag on win32 (required by latest
+ libtool to build DLLs).
+ * build_shared/Makefile_gensrc.am_fragment : Modifiy rule that
+ builds wrap_init.cc. wrap_init.cc now contains reference to all
+ objects, event on win32. #ifdefs are included when needed.
+ * README.win32 : updated for version 2.2. Added list of missing
+ methods and signals on win32
+ * tools/m4/base.m4 : Added _GTKMMPROC_SIGNAL_H_AND_CC macro.
+
+
+2003-03-14 Martin Schulze <MHL.Schulze@t-online.de>
+
+ * docs/internal/using_gtkmmproc.txt: Correct name of
+ [...]signals.defs generation utiliy.
+
+2003-01-30 Rick L Vinyard Jr <rvinyard@cs.nmsu.edu>
+
+ * glib/src/thread.hg Cond: Add documentation
+
+2003-01-27 Murray Cumming <murrayc@usa.net>
+
+ * glib/glibmm/refptr.h: Removed RefPtr<>::is_null() to encourage use
+ of more pointer-like operator bool() instead. Wanted to remove clear()
+ too, but there is no =0 equivalent yet.
+ * tools/gmmproc.in: Change harcoded gtkmm-2.0/m4 path to glibmm-2.4/m4.
+
+2003-01-22 Murray Cumming <murrayc@usa.net>
+
+ * GTKMM_ m4 tests and #defines are now prefixed with GLIBMM_
+
+2003-01-21 Murray Cumming <murrayc@usa.net>
+
+ * tests/Makefile.am_fragment, examples/Makefile.am_fragment:
+ Corrected LIBS and CFLAGS. Not all of these build because they
+ use gtkmm stuff too. They need to be reduced to glibmm-only code.
+
+2003-01-21 Murray Cumming <murrayc@usa.net>
+
+ * glib/Makefile.am, glib/glibmm/Makefile.am: Install headers in
+ glibmm-2.4 directory rather than gtkmm-2.4
+
+2003-01-21 Murray Cumming <murrayc@usa.net>
+
+ * configure.in: Use GLIBMM_* instead of GTKMM_* to avoid config.h
+ clashes with gtkmm 2.4.
+ * glib/glibmm-2.4.pc.in: Correct cflags - report 2.4 instead of 2.0.
+
+2003-01-21 Murray Cumming <murrayc@usa.net>
+
+ * tools/extra_defs_gen/Makefile.am: Changed extra_defs library name
+ from 2.4 to 2.3, so it can be unstable.
+
+2003-01-09 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * glib/glibmm/utility.h (GLIBMM_INITIALIZE_STRUCT): Replace
+ __builtin_bzero() with __builtin_memset() because the former is
+ deprecated. Also, it looks like GCC is able to optimize the 0 case
+ so we don't lose anything here.
+
+2003-01-09 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * glib/glibmm/miscutils.cc (Glib::build_path): Reserve 256 bytes
+ in advance to improve performance.
+
+2003-01-09 Daniel Elstner <daniel.elstner@gmx.net>
+
+ * glib/glibmm/miscutils.{cc,h} (Glib::build_path): Fix to make it
+ behave exactly like g_build_path(). (#102885, Jarek Dukat)
+
+ (Glib::build_filename(const std::string&, const std::string&)):
+ Implement in terms of Glib::build_path().
+
+2003-01-21 Murray Cumming <murrayc@usa.net>
+
+ * Renamed gtkmmproc to gmmproc.
+
+2003-01-08 Murray Cumming <murrayc@usa.net>
+
+ * glib/glibmm/refptr.h: Removed the operator=(CppObject*), as
+ suggested in the TODO comment.
+
+2003-01-08 Murray Cumming <murrayc@usa.net>
+
+ * make distcheck works.
+
+2003-01-08 Murray Cumming <murrayc@usa.net>
+
+ * It now builds, though I haven' tried installing it. The
+ library names and header directories should now all have 2.4
+ instead of 2.0 in their name.
+
+glibmm was previously part of gtkmm2.
+
diff --git a/libs/glibmm2/INSTALL b/libs/glibmm2/INSTALL
new file mode 100644
index 0000000000..23e5f25d0e
--- /dev/null
+++ b/libs/glibmm2/INSTALL
@@ -0,0 +1,236 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
+Software Foundation, Inc.
+
+This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes awhile. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about. Run `./configure --help' for
+details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory. After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
+
+Installation Names
+==================
+
+By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `config.site' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script). Here is a another example:
+
+ /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
+configuration-related scripts to be executed by `/bin/bash'.
+
+`configure' Invocation
+======================
+
+`configure' recognizes the following options to control how it operates.
+
+`--help'
+`-h'
+ Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/libs/glibmm2/Makefile.am b/libs/glibmm2/Makefile.am
new file mode 100644
index 0000000000..97a0aee0eb
--- /dev/null
+++ b/libs/glibmm2/Makefile.am
@@ -0,0 +1,64 @@
+ACLOCAL_AMFLAGS = -I scripts
+
+SUBDIRS = tools glib examples docs scripts tests MSVC_Net2003
+DIST_SUBDIRS = $(SUBDIRS)
+
+EXTRA_DIST = build_shared/Makefile_build.am_fragment \
+ build_shared/Makefile_build_gensrc.am_fragment \
+ build_shared/Makefile_gensrc.am_fragment \
+ build_shared/Makefile_gensrc_platform.am_fragment \
+ build_shared/Makefile_build_extra.am_fragment \
+ CHANGES README.win32
+
+
+all-local:
+ @echo "*** Everything completed ***"
+
+dist-hook:
+ @echo; echo; \
+ echo "**********************************************************"; \
+ echo "* IMPORTANT NOTICE: *"; \
+ echo "* *"; \
+ echo "* Be sure you have done a complete build before running *"; \
+ echo "* 'make dist' or 'make distcheck', because otherwise *"; \
+ echo "* the tarball will _not_ contain the dependency rules *"; \
+ echo "* generated by the compiler. *"; \
+ echo "**********************************************************"; \
+ echo; echo
+
+
+include $(top_srcdir)/docs/Makefile_web.am_fragment
+
+doc_tarball_files = \
+ docs/images/*.gif \
+ docs/internal/*.txt docs/internal/*.dia docs/reference/html
+
+# This doesn't work very well in a $(srcdir) != $(builddir) setup,
+# but this target is for maintainer use only anyway.
+
+glibmm-docs.tar.gz:
+ find examples -name '*.cc' -o -name '*.h' -o -name '*.xpm' -o -name '*.xml' | \
+ tar cf - --files-from - $(doc_tarball_files) | gzip -c --best >$@
+
+# Upload documentation and examples:
+
+post-html-recursive:
+ list='docs examples'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) post-html); \
+ done
+
+post-html-local: glibmm-docs.tar.gz
+ rsync $(rsync_args) glibmm-docs.tar.gz $$USER@$(web_host):$(web_path_gtkmm)
+
+post-html: post-html-recursive post-html-local
+
+doc-clean-recursive:
+ (cd docs && $(MAKE) $(AM_MAKEFLAGS) doc-clean)
+
+doc-clean: doc-clean-recursive
+
+doc-rebuild:
+ (cd docs && $(MAKE) $(AM_MAKEFLAGS) doc-rebuild)
+
+.PHONY: post-html post-html-local post-html-recursive doc-clean doc-clean-recursive doc-rebuild
+
diff --git a/libs/glibmm2/Makefile.in b/libs/glibmm2/Makefile.in
new file mode 100644
index 0000000000..a6edbd4478
--- /dev/null
+++ b/libs/glibmm2/Makefile.in
@@ -0,0 +1,713 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = .
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+ $(top_srcdir)/configure \
+ $(top_srcdir)/docs/Makefile_web.am_fragment AUTHORS COPYING \
+ ChangeLog INSTALL NEWS
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/scripts/cxx.m4 \
+ $(top_srcdir)/scripts/cxx_std.m4 \
+ $(top_srcdir)/scripts/docgen.m4 \
+ $(top_srcdir)/scripts/glibmm_check_perl.m4 \
+ $(top_srcdir)/scripts/macros.m4 \
+ $(top_srcdir)/scripts/reduced.m4 $(top_srcdir)/scripts/sun.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno configure.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h $(top_builddir)/glib/glibmmconfig.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ { test ! -d $(distdir) \
+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISABLE_DEPRECATED_API_CFLAGS = @DISABLE_DEPRECATED_API_CFLAGS@
+DISABLE_DEPRECATED_CFLAGS = @DISABLE_DEPRECATED_CFLAGS@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GLIBMM_CFLAGS = @GLIBMM_CFLAGS@
+GLIBMM_LIBS = @GLIBMM_LIBS@
+GLIBMM_MAJOR_VERSION = @GLIBMM_MAJOR_VERSION@
+GLIBMM_MICRO_VERSION = @GLIBMM_MICRO_VERSION@
+GLIBMM_MINOR_VERSION = @GLIBMM_MINOR_VERSION@
+GLIBMM_RELEASE = @GLIBMM_RELEASE@
+GLIBMM_VERSION = @GLIBMM_VERSION@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKMMPROC_MERGECDOCS = @GTKMMPROC_MERGECDOCS@
+GTKMM_DOXYGEN_INPUT = @GTKMM_DOXYGEN_INPUT@
+GTKMM_FALSE_FALSE = @GTKMM_FALSE_FALSE@
+GTKMM_FALSE_TRUE = @GTKMM_FALSE_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBGLIBMM_SO_VERSION = @LIBGLIBMM_SO_VERSION@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+M4 = @M4@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS_WIN32_FALSE = @OS_WIN32_FALSE@
+OS_WIN32_TRUE = @OS_WIN32_TRUE@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL_PATH = @PERL_PATH@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_WIN32_FALSE = @PLATFORM_WIN32_FALSE@
+PLATFORM_WIN32_TRUE = @PLATFORM_WIN32_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_AS = @ac_ct_AS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+ACLOCAL_AMFLAGS = -I scripts
+SUBDIRS = tools glib examples docs scripts tests MSVC_Net2003
+DIST_SUBDIRS = $(SUBDIRS)
+EXTRA_DIST = build_shared/Makefile_build.am_fragment \
+ build_shared/Makefile_build_gensrc.am_fragment \
+ build_shared/Makefile_gensrc.am_fragment \
+ build_shared/Makefile_gensrc_platform.am_fragment \
+ build_shared/Makefile_build_extra.am_fragment \
+ CHANGES README.win32
+
+web_host = gtkmm.org
+web_path_gtkmm = /home/murrayc/gtkmm.org/docs/glibmm-2.4/
+#web_path_gtkmm = /home/groups/g/gt/gtkmm/htdocs/docs/glibmm-2.4/
+web_path_docs = $(web_path_gtkmm)docs/
+rsync_args = -vz --rsh ssh --delete --delete-after
+gtkmm_docdir = $(datadir)/doc/glibmm-2.4/docs
+doc_tarball_files = \
+ docs/images/*.gif \
+ docs/internal/*.txt docs/internal/*.dia docs/reference/html
+
+all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/docs/Makefile_web.am_fragment $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
+ cd $(srcdir) && $(AUTOMAKE) --gnu \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+config.h: stamp-h1
+ @if test ! -f $@; then \
+ rm -f stamp-h1; \
+ $(MAKE) stamp-h1; \
+ else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_srcdir) && $(AUTOHEADER)
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(am__remove_distdir)
+ mkdir $(distdir)
+ $(mkdir_p) $(distdir)/MSVC_Net2003/glibmm $(distdir)/build_shared $(distdir)/docs $(distdir)/docs/reference $(distdir)/glib $(distdir)/scripts $(distdir)/tools
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$(top_distdir)" distdir="$(distdir)" \
+ dist-hook
+ -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r $(distdir)
+dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__remove_distdir)
+
+dist dist-all: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration. Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
+ chmod -R a-w $(distdir); chmod a+w $(distdir)
+ mkdir $(distdir)/_build
+ mkdir $(distdir)/_inst
+ chmod a-w $(distdir)
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && cd $(distdir)/_build \
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+ $(DISTCHECK_CONFIGURE_FLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) \
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
+ && $(MAKE) $(AM_MAKEFLAGS) check \
+ && $(MAKE) $(AM_MAKEFLAGS) install \
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+ distuninstallcheck \
+ && chmod -R a-w "$$dc_install_base" \
+ && ({ \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
+ && rm -rf "$$dc_destdir" \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+ $(am__remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
+distuninstallcheck:
+ @cd $(distuninstallcheck_dir) \
+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+ || { echo "ERROR: files left after uninstall:" ; \
+ if test -n "$(DESTDIR)"; then \
+ echo " (check DESTDIR support)"; \
+ fi ; \
+ $(distuninstallcheck_listfiles) ; \
+ exit 1; } >&2
+distcleancheck: distclean
+ @if test '$(srcdir)' = . ; then \
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+ exit 1 ; \
+ fi
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+ || { echo "ERROR: files left in build directory after distclean:" ; \
+ $(distcleancheck_listfiles) ; \
+ exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile config.h all-local
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am all-local \
+ am--refresh check check-am clean clean-generic clean-libtool \
+ clean-recursive ctags ctags-recursive dist dist-all dist-bzip2 \
+ dist-gzip dist-hook dist-shar dist-tarZ dist-zip distcheck \
+ distclean distclean-generic distclean-hdr distclean-libtool \
+ distclean-recursive distclean-tags distcleancheck distdir \
+ distuninstallcheck dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ maintainer-clean-recursive mostlyclean mostlyclean-generic \
+ mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
+ tags tags-recursive uninstall uninstall-am uninstall-info-am
+
+
+all-local:
+ @echo "*** Everything completed ***"
+
+dist-hook:
+ @echo; echo; \
+ echo "**********************************************************"; \
+ echo "* IMPORTANT NOTICE: *"; \
+ echo "* *"; \
+ echo "* Be sure you have done a complete build before running *"; \
+ echo "* 'make dist' or 'make distcheck', because otherwise *"; \
+ echo "* the tarball will _not_ contain the dependency rules *"; \
+ echo "* generated by the compiler. *"; \
+ echo "**********************************************************"; \
+ echo; echo
+
+# This doesn't work very well in a $(srcdir) != $(builddir) setup,
+# but this target is for maintainer use only anyway.
+
+glibmm-docs.tar.gz:
+ find examples -name '*.cc' -o -name '*.h' -o -name '*.xpm' -o -name '*.xml' | \
+ tar cf - --files-from - $(doc_tarball_files) | gzip -c --best >$@
+
+# Upload documentation and examples:
+
+post-html-recursive:
+ list='docs examples'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) post-html); \
+ done
+
+post-html-local: glibmm-docs.tar.gz
+ rsync $(rsync_args) glibmm-docs.tar.gz $$USER@$(web_host):$(web_path_gtkmm)
+
+post-html: post-html-recursive post-html-local
+
+doc-clean-recursive:
+ (cd docs && $(MAKE) $(AM_MAKEFLAGS) doc-clean)
+
+doc-clean: doc-clean-recursive
+
+doc-rebuild:
+ (cd docs && $(MAKE) $(AM_MAKEFLAGS) doc-rebuild)
+
+.PHONY: post-html post-html-local post-html-recursive doc-clean doc-clean-recursive doc-rebuild
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libs/glibmm2/NEWS b/libs/glibmm2/NEWS
new file mode 100644
index 0000000000..ec811b31ed
--- /dev/null
+++ b/libs/glibmm2/NEWS
@@ -0,0 +1,399 @@
+2.13.3:
+
+* gmmproc improvements:
+ - gmmproc: Allow () in property and signal docuemntation.
+ - gmmproc: Do not try to remove a common prefix from the
+ C enam values, if there is no common prefix.
+ - enum.pl: Allow whitespace in front of an enum typedef.
+ (Daniel Elstner)
+ - enum.pl: Fix an infinite loop.
+
+* ObjectBase: Added connect_property_changed(),
+ as an alternative to use when the property proxies are not
+ available because GLIBMM_PROPERTIES_ENABLED is not defined.
+ (Murray Cumming)
+* Value: When registering float parameters, use
+ G_MAXFLOAT as the minimum, instead of G_MINFLOAT.
+ Likewise for doubles.
+ (Oliver Nittka)
+
+2.13.2:
+
+*Build:
+ - Fix for api-default-signal-handlers option.
+ Bug #357830 (Matt Hoosier)
+ - win32: Remove unused source file from Visual Studio project.
+ (Cedric Gustin)
+
+2.13.1:
+
+* KeyFile class added, wrapping GKeyFile,
+ for parsing of .ini-style files.
+ (Rob Page)
+* Added get_user_data_dir(), get_user_config_dir(), and
+ get_user_cache_dir().
+ (Jonathon Jongsma)
+* Support optional ifdef parameters in the .hg macros,
+ to allow, for instance the --enable-atk=no option,
+ to disable the build and use of the atkmm API,
+ for use in embedded environments.
+ (Johannes Schimd, Murray Cuming, Openismus)
+* Documentation:
+ - Small ustring reference documentation improvement.
+ (Ralf Stephan)
+
+2.12.0:
+
+Changes sinze 2.10:
+* Added the --enable-api-default-signal-handlers option, for use in
+ embedded environments that have reduced resources. See configure --help
+ for the other subsets.
+* Value: Added init(const GValue*), so we can copy GValue instances
+ of any type at runtime. Needed by the new branch of libgdamm.
+
+2.11.3:
+
+* Build: Added the --enable-api-default-signal-handlers option, for use in
+ embedded environments that have reduced resources. See configure --help
+ for the other subsets.
+
+2.11.2:
+
+* Date: Fix implementation of Glib::Date::set_time_current() so
+ that it doesn't set the date to Dec 31, 1969.
+ (Jonathon Jongsma)
+* Value: Added init(const GValue*), so we can copy GValue instances
+ of any type at runtime. Needed by the new branch of libgdamm.
+ (Murray Cumming)
+* Added a #warning to warn about including X11/Xlib.h before a glibmm header,
+ which would break things. Bug #316726 from Mert Tugcu and Javeed Shaikh.
+ (Murray Cumming)
+* Build:
+ - Quote some m4 macros to avoid warnings. Bugs (with patches) #347076
+ and #347077
+ (Kevin McBride).
+ - Fix exporting of get/set_property() on mingw32-gcc.
+ (Cedric Gustin)
+
+
+
+
+2.10.1
+
+* Windows Build:
+ - Define GLIBMM_DLL when building with mingw32 or cygwin,
+ because it is needed by gtkmm. Bug #309030
+ (Cedric Gustin)
+* OptionGroup: Allow default values, by not initializing them all.
+ (Armin Burgmeier)
+* Slight code size reduction by marking private functions as static.
+ (Murray Cumming)
+
+2.10.0:
+
+* Windows Build:
+ - ustring.h: Tag npos with GLIBMM_API, in order to
+ dllexport it on win32. Bug #332438.
+ - Updated MSVC++ build files and README, for MS Visual Studio 2005.
+ (Cedric Gustin)
+* gmmproc code generator:
+ - WRAP_METHOD() Take an extra optional argument: deprecated deprecationtext -
+ so that we can insert the appropriate doxygen tag in the documentation, where
+ the C documentation does not do it for us.
+
+2.9.1:
+
+* Date:
+ - Added set_time(time_t), set_time(GTimeVal), and deprecated
+ set_time(GTime)
+ - Added set_time_current().
+ (Murray Cumming)
+* Build: Added --enable-deprecated-api option. When set to disabled,
+ it does not build deprecated API. This reduces the size of the
+ library, and might be useful for embedded devices.
+ (Murray Cumming)
+
+2.8.2:
+
+* Solaris build fix: Correct the detection
+ of make. (Mark Rouchal)
+
+2.8.1:
+
+* Build: Check for glib 2.8.
+
+2.8.0:
+
+API additions since glibmm 2.6:
+
+* GModule: Add BIND_LOCAL enum value.
+ (Bug #172748 from Phillip Neiswanger).
+* MainContext Added signal_child_watch()
+ and examples/child_watch.
+ (Yair Hershkovitz)
+* OptionEntry: Added FLAG_NO_ARG, FLAG_FILENAME,
+ FLAG_OPTIONAL_ARG, and FLAG_NOALIAS enum values.
+ (Murray Cumming)
+
+2.7.3:
+
+* Updated reference documentation from glib documentation.
+
+2.7.2:
+
+* OptionEntry: Added FLAG_NO_ARG, FLAG_FILENAME,
+ FLAG_OPTIONAL_ARG, and FLAG_NOALIAS enum values.
+* build_filename() and build_path(): Now use the implementation
+ from glib.
+
+2.7.1:
+
+* GModule: Add BIND_LOCAL enum value.
+ (Bug #172748 from Phillip Neiswanger).
+* MainContext Added signal_child_watch()
+ and examples/child_watch.
+ (Yair Hershkovitz)
+* Fixes from 2.6.2.
+
+2.6.1:
+
+* Interface::add_interface(): Disabled the check for a second call,
+ introduced in 2.6.0, for now, because it stops some valid uses.
+ (Bryan Forbes)
+
+2.6.0:
+
+New stable version. Changes compare to glibmm 2.4.x:
+
+* Added Option, OptionContext, OptionGroup for parsing of command-line arguments.
+* Added filename_display_basename() and filename_display_name().
+* Added setenv() and unsetenv().
+* add_interface() methods will no longer give warnings if you
+ call them twice.
+* gmmproc:
+ - Now reuses C properties documentation.
+
+2.5.6:
+
+* add_interface() methods will no longer give warnings if you
+call them twice.
+* gmmproc: Output properties documentation taken from the .defs.
+* examples now build on AIX.
+ (Murray Cumming)
+* MSVC++ .Net 2003 build fix. (Cedric Gustin)
+
+2.5.5:
+
+* Now builds with the following compilers, in addition to
+the existing GNU g++, and Intel compilers:
+- SUN Forte CC 5.5
+- IBM AIX xlC v7
+- Tru64 C++ V6.5-042
+- IRIX MIPSpro 7.4.2m
+ (Older versions of all these compilers might also work.)
+ (Murray Cumming, www.thewrittenword.com)
+* Now builds with MSVC++ .Net 2003 (gtkmm 2.4 already did).
+ (Cedric Gustin)
+
+2.5.4:
+
+Options:
+* Added Option(GOptionGroup* cast_item) constructor,
+ needed by Gtk::Main.
+* Added reference documentation.
+(Murray Cumming)
+
+2.5.3:
+
+* Options:
+ - Allow parsing of boolean arguments (arguments with no value).
+ - Really use the short names.
+ (Daniel Holbach, Murray Cumming)
+* Added filename_display_basename() and filename_display_name().
+ (Murray Cumming)
+* Added setenv() and unsetenv(). (Murray Cumming)
+* Use static keyword to prevent exporting private API.
+ (Benoît Dejean)
+* input example: Improvements and simplification. (Chris Vine)
+
+2.5.2:
+
+* OptionEntry: Remove useless enum. (Murray Cumming)
+* Documentation:
+ - examples: Added iochannel_stream example. (Chris Vine)
+ - reference: Generate more reference API from the C documentation, and
+ try to use the libstdc++ doxygen tags file to link to their
+ documentation. (Murray Cumming)
+
+2.5.1:
+
+* OptionContext, OptionGroup, OptionEntry: Made the add_entry() methods
+ type-safe and fixed several problems memory-management problems. This
+ API is now worth looking at.
+
+2.5.0:
+
+* Added OptionContext, OptionGroup, and OptionEntry classes, for
+ parsing of command-line options. See examples/options/
+
+2.4.4:
+
+* Signals: Avoid crashes when disconnecting a signal when handling that signal.
+ (Murray Cumming, Martin Schulze)
+*
+2.4.3:
+
+* Minor improvements to reference documentation. (Daniel Elstner)
+* Minor Glib::Dispatcher improvements (Daniel Elstner)
+
+2.4.2:
+
+* Glib::Dispatcher: win32 implementation rewritten, and hopefully, improved.
+ (Daniel Elstner)
+* Glib::ustring:
+ - Optimization and code-cleanup. (Daniel Elstner)
+ - Added reference documentation for constuctors. (Murray Cumming)
+* Fixed some compiler warnings.
+ (Daniel Elstner)
+* gmmproc: Some improvements for libgdamm. (Murray Cumming)
+
+
+2.4.1:
+
+* Build fixes for gcc 3.4.0.
+* Doxygen not required when building from tarballs.
+ (Murray Cumming)
+
+
+2.4.0:
+
+Changes since 2.2.0:
+
+* Now separate from gtkmm, so you can use things like Glib::ustring without depending on gtkmm. This glibmm 2.4 API installs in parallel with gtkmm 2.0/2.2, so you can install applications which use either.
+* When using pkg-config, you should check for "glibmm-2.4".
+* Glib::ObjectBase inherits virtually from SigC::Object, allowing multiple inheritance with other classes that inherit from SigC::Object.
+* RefPtr:
+ - is_null() was removed, to encourage you to use "== 0" instead.
+ - operator=(CppObject*) was removed.
+* The gtkmmproc code-generator is now gmmproc, and has several improvements to support gtkmm 2.4.
+* Now uses improved libsigc++ 2.0 API.
+* Added i18n.h and i18n-lib.h, which include the relevant
+ glib headers, which declare internationalization
+ macros such as _().
+* New methods:
+ Glib::spawn_close_id(), Glib::MainLoop::depth(),
+ Glib::Date::clamp_min(), Glib::Date::clamp_max().
+* Improved documentation.
+
+
+2.3.8:
+
+* Fix crash when using Glib::Main signals.
+ (Martin Schulze)
+* Corrected the configure-time SUN compiler check.
+ (Murray Cumming, Alexander Nedotsukov)
+
+2.3.7:
+
+* Added configure macros to detect SUN compiler oddities.
+* Various SUN Forte C+ and g++ 3.4 (cvs) build fixes.
+ (Murray Cumming)
+* gmmproc: Improved parsing of C docs.
+ (Hagen Moebius)
+
+2.3.6:
+
+* Added i18n.h and i18n-lib.h, which include the relevant
+ glib headers, which declare internationalization
+ macros such as _(). (Murray Cumming)
+* Added Glib::spawn_close_id(). (Murray Cumming)
+* Added Glib::MainLoop::depth(). (Murray Cumming)
+* Documentation: corrections to CHANGES (Martin Schulze).
+* gmmproc: Can now handle "const const_iterator& iter"
+ parameter names without getting confused by 2 consts.
+ (Murray Cumming)
+
+2.3.5:
+
+* glibmm now uses libsigc++ 2 rather than libsigc++ 1.2.
+
+2.3.4:
+
+* ListHandle/SListHandle (intermediate container types):
+ - Added a const_cast<> to allow lists of const elements.
+* gmmproc: _WRAP_SIGNAL(): Added optional custom_c_callback
+ parameter.
+ (Murray Cumming)
+* WIN32: Build fixes, mostly merged from the 2.2 branch.
+ (Cedric Gustin)
+
+2.3.3:
+
+* gmmproc (code generator)
+ - properties: Make read-only properties have const accessors,
+ and add a second read-only const accessor for normal
+ properties. Wrap construct-only properties as read-only,
+ instead of ignoring them.
+ - vfuncs: Really generate const vfuncs when requested. Put
+ the method declaration directly into the .h file, so that
+ the doxygen documentation can be next to it.
+ - documentation:
+ - Remove mergecdocs configure option - always
+ merge the C docs, to avoid any risk of uploading or
+ releasing empty documentation. Just delete the *_docs.xml
+ files to make building from cvs faster.
+ - Install a GLIBMM_CHECK_PERL() macro, for use by gtkmm
+ and other *mm projects, to get the perl path needed by
+ doxygen.
+ - Install beautify_docs.pl so it can be reused in gtkmm
+ and other *mm projects, instead of having lots of copies.
+* Glib::ObjectBase: The default constructor, never before used,
+ now generates a custom GType, for use when creating new
+ implementations of Glib::Interfaces - for instance, see the
+ new custom tree model example in gtkmm.
+* Glib::Date: Added clamp_min() and clamp_max().
+ (Murray Cumming)
+
+* Documentation:
+ - Added reference documentation for MainLoop, MainContext,
+ Source, and Date. (Alberto Paro)
+
+2.3.2:
+
+* gmmproc (code generator):
+ - signal proxies have extra space to avoid << with templates.
+ - Added WRAP_METHOD_DOCS_ONLY() for reusing documentation even
+ when the method is hand-coded.
+ - _WRAP_SIGNAL(): Added optional no_default_handler parameter,
+ because some of the new GTK+ signals have no public default
+ handler vfunc.
+* Added Glib::init(), for use by non-GUI apps which need to
+ use Glib::wrap().
+* PropertyProxy: Can now be used with Interfaces.
+* Documentation improvements, so that gtkmm docs link to glibmm
+ docs.
+ (Murray Cumming)
+
+2.3.1:
+
+* gmmproc changes needed by gtkmm 2.3.0
+ (Murray Cumming)
+* examples updated and buildable and working,
+ without gtkmm code.
+ (J. Abelardo Gutierrez)
+
+Changes in glibmm 2.3.0:
+
+* Now separate from gtkmm, so you can use things like Glib::ustring without depending on gtkmm.
+ This glibmm 2.4 API installs in parallel with gtkmm 2.0/2.2, so you can install this unstable library
+ without the risk of breaking existing application.
+* This does not yet require glib 2.3 because there has been no tarball release of that yet. For now, you
+ can use glibmm 2.3.0 with glib 2.2.x.
+* When using pkg-config, you should check for "glibmm-2.4".
+* Glib::ObjectBase inherits virtually from SigC::Object, allowing multiple inheritance with other
+ classes that inherit from SigC::Object.
+* RefPtr:
+ - is_null() was removed, to encourage you to use "== 0" instead.
+ - operator=(CppObject*) was removed.
+* gtkmmproc is now gmmproc.
+* All the glibmm bugfixes in gtkmm 2.2.x.
diff --git a/libs/glibmm2/README b/libs/glibmm2/README
new file mode 100644
index 0000000000..341c67e439
--- /dev/null
+++ b/libs/glibmm2/README
@@ -0,0 +1,4 @@
+This is glibmm, a C++ API for parts of glib that are useful for C++.
+See http://www.gtkmm.org
+
+
diff --git a/libs/glibmm2/README.win32 b/libs/glibmm2/README.win32
new file mode 100644
index 0000000000..9fb2921bed
--- /dev/null
+++ b/libs/glibmm2/README.win32
@@ -0,0 +1,65 @@
+Building glibmm on Win32
+===========================
+
+Currently, both the mingw (native win32) gcc compiler and MS Visual
+Studio 2005 are supported. glibmm can be built with mingw32-gcc using
+the gnu autotools (automake, autoconf, libtool). As explicitly stated
+in the gtk+ for win32 distribution (http://www.gimp.org/win32/), the
+gcc compiler provided by the cygwin distribution should not be used to
+build glib/glibmm libraries and/or applications (see the README.win32
+that comes with the gtk+ DLLs). This MIGHT cause conflicts between the
+cygwin and msvcrt runtime environments.
+
+1. Mingw
+
+The mingw distribution which has been tested with this release is the
+following :
+
+* MinGW-4.1 as the base distribution.
+
+The bare mingw distribution does not provide the necessary tools (sh, perl, m4
+, autoconf, automake, ..) to run the provided configure script "as is". One
+(currently non supported) solution is to use mingw in conjunction with msys,
+which is readily available on the mingw website (http://www.mingw.org/).
+
+The preferred method is to combine the cygwin distribution (for the unix tools
+that were mentioned above) with mingw by making sure that the mingw
+tools (gcc, ld, dlltool, ..) are called first.
+
+First, make sure that you have working distribution of the native port
+of both libsigc++-2.0.x and glib-2.0 on win32 (see
+http://www.gimp.org/win32). If you can't compile a simple glib example
+using gcc and `pkg-config --cflags --libs`, you should not even think
+about trying to compile glibmm, let alone using precompiled libglibmm
+DLLs to port your glibmm application !
+
+The configure script can then be called using (as an example) the
+following options
+
+./configure --prefix=/target --build=i386-pc-mingw32 --disable-static
+
+then
+
+make
+make check
+make install
+
+2. MS Visual Studio 2005
+
+Open the glibmm.sln solution file in the MSVC_Net2003 directory. In
+the Tools/Options panel, add the appropriate GTK+ include and lib
+directories to the Projects and Solutions/VC++ directories. Build the
+solution.
+
+Important NOTE : to circumvent the C++ compiler bug described in this
+bugzilla entry (http://bugzilla.gnome.org/show_bug.cgi?id=158040), it
+is necessary to add '/vd2' to the list of compiler options when
+building and/or using glibmm with Visual Studio 2005.
+
+glibmm-2.8 will probably not work correctly with Visual Studio 7.1 or
+below because of the aforementioned bug.
+
+3. Glibmm methods and signals not available on win32
+
+All glibmm methods and signals are available on win32.
+
diff --git a/libs/glibmm2/SConscript b/libs/glibmm2/SConscript
new file mode 100644
index 0000000000..4d21f3ea54
--- /dev/null
+++ b/libs/glibmm2/SConscript
@@ -0,0 +1,48 @@
+# -*- python -*-
+
+import os
+import os.path
+import glob
+
+
+glibmm2_files = glob.glob('glib/glibmm/*.cc')
+
+Import('env libraries install_prefix')
+
+glibmm2 = env.Copy()
+glibmm2.Merge([libraries['sigc2'], libraries['glib2'], libraries['glibmm2']])
+
+glibmm2.Append(CXXFLAGS=['-DHAVE_CONFIG_H', '-DGLIBMM_EXCEPTIONS_ENABLED', '-DGLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED', '-DGLIBMM_PROPERTIES_ENABLED'])
+#glibmm2.Append(CXXFLAGS='-DG_DISABLE_DEPRECATED')
+glibmm2.Append(CXXFLAGS='-DG_LOG_DOMAIN=\\\"glibmm\\\"')
+
+libglibmm2 = glibmm2.SharedLibrary('glibmm2', glibmm2_files)
+
+if os.access ('autogen.sh', os.F_OK) :
+ glibmm2_configure_script = glibmm2.Command ('configure', 'configure.ac', 'cd libs/glibmm2; ./autogen.sh; cd -', ENV=os.environ)
+ glibmm2_config_h = glibmm2.Command('glib/glibmmconfig.h', [glibmm2_configure_script, 'glib/glibmmconfig.h.in'],
+ 'cd libs/glibmm2; ./configure || exit 1; cd -', ENV=os.environ)
+else :
+ glibmm2_config_h = glibmm2.Command('glib/glibmmconfig.h', ['configure', 'glib/glibmmconfig.h.in'],
+ 'cd libs/glibmm2; ./configure || exit 1; cd -', ENV=os.environ)
+
+Default([glibmm2_config_h, libglibmm2])
+
+env.Alias('install', env.Install(os.path.join(install_prefix, env['LIBDIR'], 'ardour2'), libglibmm2))
+
+env.Alias('tarball', env.Distribute (env['DISTTREE'],
+ [ 'SConscript',
+ 'glibmm.h',
+ 'configure',
+ 'Makefile.in',
+ 'glibmmconfig.h',
+ 'glibmmconfig.h.in',
+ 'glibmm-2.4.pc.in',
+ 'glibmm/Makefile.in',
+ 'scripts'
+ ] +
+ glibmm2_files +
+ glob.glob('glibmm/*.h') +
+ glob.glob('glibmm/private/*.h')
+ ))
+
diff --git a/libs/glibmm2/aclocal.m4 b/libs/glibmm2/aclocal.m4
new file mode 100644
index 0000000000..3010e9d14d
--- /dev/null
+++ b/libs/glibmm2/aclocal.m4
@@ -0,0 +1,7432 @@
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION so it can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+ [AM_AUTOMAKE_VERSION([1.9.6])])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 7
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])
+AC_SUBST([$1_FALSE])
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 3
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # So let's grep whole file.
+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+done
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 12
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.58])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+ test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $1 | $1:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+AC_DEFUN([AM_MAINTAINER_MODE],
+[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+ dnl maintainer-mode is disabled by default
+ AC_ARG_ENABLE(maintainer-mode,
+[ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer],
+ USE_MAINTAINER_MODE=$enableval,
+ USE_MAINTAINER_MODE=no)
+ AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+ AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST(MAINT)dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+ am__include=include
+ am__quote=
+ _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
+#
+# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+# created by `make install' are always world readable, even if the
+# installer happens to have an overly restrictive umask (e.g. 077).
+# This was a mistake. There are at least two reasons why we must not
+# use `-m 0755':
+# - it causes special bits like SGID to be ignored,
+# - it may be too restrictive (some setups expect 775 directories).
+#
+# Do not use -m 0755 and let people choose whatever they expect by
+# setting umask.
+#
+# We cannot accept any implementation of `mkdir' that recognizes `-p'.
+# Some implementations (such as Solaris 8's) are not thread-safe: if a
+# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
+# concurrently, both version can detect that a/ is missing, but only
+# one can create it and the other will error out. Consequently we
+# restrict ourselves to GNU make (using the --version option ensures
+# this.)
+AC_DEFUN([AM_PROG_MKDIR_P],
+[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ # We used to keeping the `.' as first argument, in order to
+ # allow $(mkdir_p) to be used without argument. As in
+ # $(mkdir_p) $(somedir)
+ # where $(somedir) is conditionally defined. However this is wrong
+ # for two reasons:
+ # 1. if the package is installed by a user who cannot write `.'
+ # make install will fail,
+ # 2. the above comment should most certainly read
+ # $(mkdir_p) $(DESTDIR)$(somedir)
+ # so it does not work when $(somedir) is undefined and
+ # $(DESTDIR) is not.
+ # To support the latter case, we have to write
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+ # so the `.' trick is pointless.
+ mkdir_p='mkdir -p --'
+else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ for d in ./-p ./--version;
+ do
+ test -d $d && rmdir $d
+ done
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
+ mkdir_p='$(mkinstalldirs)'
+ else
+ mkdir_p='$(install_sh) -d'
+ fi
+fi
+AC_SUBST([mkdir_p])])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+
+# serial 48 AC_PROG_LIBTOOL
+
+
+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+# -----------------------------------------------------------
+# If this macro is not defined by Autoconf, define it here.
+m4_ifdef([AC_PROVIDE_IFELSE],
+ [],
+ [m4_define([AC_PROVIDE_IFELSE],
+ [m4_ifdef([AC_PROVIDE_$1],
+ [$2], [$3])])])
+
+
+# AC_PROG_LIBTOOL
+# ---------------
+AC_DEFUN([AC_PROG_LIBTOOL],
+[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
+dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
+dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
+ AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [AC_LIBTOOL_CXX],
+ [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
+ ])])
+dnl And a similar setup for Fortran 77 support
+ AC_PROVIDE_IFELSE([AC_PROG_F77],
+ [AC_LIBTOOL_F77],
+ [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
+])])
+
+dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
+dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
+dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
+ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [ifdef([AC_PROG_GCJ],
+ [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+ ifdef([A][M_PROG_GCJ],
+ [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+ ifdef([LT_AC_PROG_GCJ],
+ [define([LT_AC_PROG_GCJ],
+ defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
+])])# AC_PROG_LIBTOOL
+
+
+# _AC_PROG_LIBTOOL
+# ----------------
+AC_DEFUN([_AC_PROG_LIBTOOL],
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Prevent multiple expansion
+define([AC_PROG_LIBTOOL], [])
+])# _AC_PROG_LIBTOOL
+
+
+# AC_LIBTOOL_SETUP
+# ----------------
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.50)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+
+AC_REQUIRE([AC_PROG_LN_S])dnl
+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+dnl
+
+AC_LIBTOOL_SYS_MAX_CMD_LEN
+AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+AC_LIBTOOL_OBJDIR
+
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+_LT_AC_PROG_ECHO_BACKSLASH
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e 1s/^X//'
+[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
+
+# Same as above, but do not quote variable references.
+[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g']
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+AC_CHECK_TOOL(AR, ar, false)
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(STRIP, strip, :)
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ AC_PATH_MAGIC
+ fi
+ ;;
+esac
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+enable_win32_dll=yes, enable_win32_dll=no)
+
+AC_ARG_ENABLE([libtool-lock],
+ [AC_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+AC_ARG_WITH([pic],
+ [AC_HELP_STRING([--with-pic],
+ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+ [pic_mode="$withval"],
+ [pic_mode=default])
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+AC_LIBTOOL_LANG_C_CONFIG
+_LT_AC_TAGCONFIG
+])# AC_LIBTOOL_SETUP
+
+
+# _LT_AC_SYS_COMPILER
+# -------------------
+AC_DEFUN([_LT_AC_SYS_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_AC_SYS_COMPILER
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+AC_DEFUN([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+ case $cc_temp in
+ compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+ distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+])
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+AC_DEFUN([_LT_COMPILER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+AC_DEFUN([_LT_LINKER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+])# _LT_LINKER_BOILERPLATE
+
+
+# _LT_AC_SYS_LIBPATH_AIX
+# ----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
+[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_AC_SYS_LIBPATH_AIX
+
+
+# _LT_AC_SHELL_INIT(ARG)
+# ----------------------
+AC_DEFUN([_LT_AC_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+ [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_AC_SHELL_INIT
+
+
+# _LT_AC_PROG_ECHO_BACKSLASH
+# --------------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
+[_LT_AC_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+ ;;
+esac
+
+echo=${ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X[$]1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+[$]*
+EOF
+ exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+ echo_test_string=`eval $cmd` &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+ fi
+ done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$echo" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ echo='print -r'
+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+ else
+ # Try using printf.
+ echo='printf %s\n'
+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "[$]0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ echo=echo
+ fi
+ fi
+ fi
+ fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+ ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(ECHO)
+])])# _LT_AC_PROG_ECHO_BACKSLASH
+
+
+# _LT_AC_LOCK
+# -----------
+AC_DEFUN([_LT_AC_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+ [AC_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+ [AC_LANG_PUSH(C)
+ AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+ AC_LANG_POP])
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+sparc*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ *) LD="${LD-ld} -64" ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+ AC_CHECK_TOOL(AS, as, false)
+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
+ ;;
+ ])
+esac
+
+need_locks="$enable_libtool_lock"
+
+])# _LT_AC_LOCK
+
+
+# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
+[AC_REQUIRE([LT_AC_PROG_SED])
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$3"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ fi
+ $rm conftest*
+])
+
+if test x"[$]$2" = xyes; then
+ ifelse([$5], , :, [$5])
+else
+ ifelse([$6], , :, [$6])
+fi
+])# AC_LIBTOOL_COMPILER_OPTION
+
+
+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [ACTION-SUCCESS], [ACTION-FAILURE])
+# ------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
+[AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $3"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&AS_MESSAGE_LOG_FD
+ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ else
+ $2=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+ ifelse([$4], , :, [$4])
+else
+ ifelse([$5], , :, [$5])
+fi
+])# AC_LIBTOOL_LINKER_OPTION
+
+
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+# --------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
+[# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on massive
+ # amounts of additional arguments before passing them to the linker.
+ # It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ ;;
+ esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+ AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+ AC_MSG_RESULT(none)
+fi
+])# AC_LIBTOOL_SYS_MAX_CMD_LEN
+
+
+# _LT_AC_CHECK_DLFCN
+# ------------------
+AC_DEFUN([_LT_AC_CHECK_DLFCN],
+[AC_CHECK_HEADERS(dlfcn.h)dnl
+])# _LT_AC_CHECK_DLFCN
+
+
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ---------------------------------------------------------------------
+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+ [$4]
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ exit (status);
+}]
+EOF
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) $1 ;;
+ x$lt_dlneed_uscore) $2 ;;
+ x$lt_dlunknown|x*) $3 ;;
+ esac
+ else :
+ # compilation failed
+ $3
+ fi
+fi
+rm -fr conftest*
+])# _LT_AC_TRY_DLOPEN_SELF
+
+
+# AC_LIBTOOL_DLOPEN_SELF
+# ----------------------
+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ])
+ ;;
+
+ *)
+ AC_CHECK_FUNC([shl_load],
+ [lt_cv_dlopen="shl_load"],
+ [AC_CHECK_LIB([dld], [shl_load],
+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
+ [AC_CHECK_FUNC([dlopen],
+ [lt_cv_dlopen="dlopen"],
+ [AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+ [AC_CHECK_LIB([svld], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+ [AC_CHECK_LIB([dld], [dld_link],
+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ AC_CACHE_CHECK([whether a program can dlopen itself],
+ lt_cv_dlopen_self, [dnl
+ _LT_AC_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+ ])
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+ lt_cv_dlopen_self_static, [dnl
+ _LT_AC_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
+ ])
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+])# AC_LIBTOOL_DLOPEN_SELF
+
+
+# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
+# ---------------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler
+AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+ fi
+ fi
+ chmod u+w . 2>&AS_MESSAGE_LOG_FD
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+])
+])# AC_LIBTOOL_PROG_CC_C_O
+
+
+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
+# -----------------------------------------
+# Check to see if we can do hard links to lock some files if needed
+AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
+[AC_REQUIRE([_LT_AC_LOCK])dnl
+
+hard_links="nottested"
+if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ AC_MSG_CHECKING([if we can lock with hard links])
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ AC_MSG_RESULT([$hard_links])
+ if test "$hard_links" = no; then
+ AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
+
+
+# AC_LIBTOOL_OBJDIR
+# -----------------
+AC_DEFUN([AC_LIBTOOL_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+])# AC_LIBTOOL_OBJDIR
+
+
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
+# ----------------------------------------------
+# Check hardcoding attributes.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_AC_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
+ test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
+ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+ test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
+ # Linking always hardcodes the temporary library directory.
+ _LT_AC_TAGVAR(hardcode_action, $1)=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ _LT_AC_TAGVAR(hardcode_action, $1)=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
+
+
+# AC_LIBTOOL_SYS_LIB_STRIP
+# ------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
+[striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+fi
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+fi
+])# AC_LIBTOOL_SYS_LIB_STRIP
+
+
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
+[AC_MSG_CHECKING([dynamic linker characteristics])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[[01]] | aix4.[[01]].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[[45]]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[[123]]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+interix3*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[[89]] | openbsd2.[[89]].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+# _LT_AC_TAGCONFIG
+# ----------------
+AC_DEFUN([_LT_AC_TAGCONFIG],
+[AC_ARG_WITH([tags],
+ [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
+ [include additional configurations @<:@automatic@:>@])],
+ [tagnames="$withval"])
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+ if test ! -f "${ofile}"; then
+ AC_MSG_WARN([output file `$ofile' does not exist])
+ fi
+
+ if test -z "$LTCC"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+ if test -z "$LTCC"; then
+ AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
+ else
+ AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+ fi
+ fi
+ if test -z "$LTCFLAGS"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+ fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for tagname in $tagnames; do
+ IFS="$lt_save_ifs"
+ # Check whether tagname contains only valid characters
+ case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
+ "") ;;
+ *) AC_MSG_ERROR([invalid tag name: $tagname])
+ ;;
+ esac
+
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+ then
+ AC_MSG_ERROR([tag name \"$tagname\" already exists])
+ fi
+
+ # Update the list of available tags.
+ if test -n "$tagname"; then
+ echo appending configuration tag \"$tagname\" to $ofile
+
+ case $tagname in
+ CXX)
+ if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ AC_LIBTOOL_LANG_CXX_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ F77)
+ if test -n "$F77" && test "X$F77" != "Xno"; then
+ AC_LIBTOOL_LANG_F77_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ GCJ)
+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+ AC_LIBTOOL_LANG_GCJ_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ RC)
+ AC_LIBTOOL_LANG_RC_CONFIG
+ ;;
+
+ *)
+ AC_MSG_ERROR([Unsupported tag name: $tagname])
+ ;;
+ esac
+
+ # Append the new tag name to the list of available tags.
+ if test -n "$tagname" ; then
+ available_tags="$available_tags $tagname"
+ fi
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ # Now substitute the updated list of available tags.
+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+ mv "${ofile}T" "$ofile"
+ chmod +x "$ofile"
+ else
+ rm -f "${ofile}T"
+ AC_MSG_ERROR([unable to update list of available tagged configurations.])
+ fi
+fi
+])# _LT_AC_TAGCONFIG
+
+
+# AC_LIBTOOL_DLOPEN
+# -----------------
+# enable checks for dlopen support
+AC_DEFUN([AC_LIBTOOL_DLOPEN],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_DLOPEN
+
+
+# AC_LIBTOOL_WIN32_DLL
+# --------------------
+# declare package support for building win32 DLLs
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_WIN32_DLL
+
+
+# AC_ENABLE_SHARED([DEFAULT])
+# ---------------------------
+# implement the --enable-shared flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_SHARED],
+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([shared],
+ [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+ [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_shared=]AC_ENABLE_SHARED_DEFAULT)
+])# AC_ENABLE_SHARED
+
+
+# AC_DISABLE_SHARED
+# -----------------
+# set the default shared flag to --disable-shared
+AC_DEFUN([AC_DISABLE_SHARED],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)
+])# AC_DISABLE_SHARED
+
+
+# AC_ENABLE_STATIC([DEFAULT])
+# ---------------------------
+# implement the --enable-static flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_STATIC],
+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([static],
+ [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+ [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_static=]AC_ENABLE_STATIC_DEFAULT)
+])# AC_ENABLE_STATIC
+
+
+# AC_DISABLE_STATIC
+# -----------------
+# set the default static flag to --disable-static
+AC_DEFUN([AC_DISABLE_STATIC],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)
+])# AC_DISABLE_STATIC
+
+
+# AC_ENABLE_FAST_INSTALL([DEFAULT])
+# ---------------------------------
+# implement the --enable-fast-install flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([fast-install],
+ [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+ [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT)
+])# AC_ENABLE_FAST_INSTALL
+
+
+# AC_DISABLE_FAST_INSTALL
+# -----------------------
+# set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)
+])# AC_DISABLE_FAST_INSTALL
+
+
+# AC_LIBTOOL_PICMODE([MODE])
+# --------------------------
+# implement the --with-pic flag
+# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+AC_DEFUN([AC_LIBTOOL_PICMODE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+pic_mode=ifelse($#,1,$1,default)
+])# AC_LIBTOOL_PICMODE
+
+
+# AC_PROG_EGREP
+# -------------
+# This is predefined starting with Autoconf 2.54, so this conditional
+# definition can be removed once we require Autoconf 2.54 or later.
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
+ [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+])])
+
+
+# AC_PATH_TOOL_PREFIX
+# -------------------
+# find a file program which can recognise shared library
+AC_DEFUN([AC_PATH_TOOL_PREFIX],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] | ?:[\\/]*])
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word. This closes a longstanding sh security hole.
+ ac_dummy="ifelse([$2], , $PATH, [$2])"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$1; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ AC_MSG_RESULT($MAGIC_CMD)
+else
+ AC_MSG_RESULT(no)
+fi
+])# AC_PATH_TOOL_PREFIX
+
+
+# AC_PATH_MAGIC
+# -------------
+# find a file program which can recognise a shared library
+AC_DEFUN([AC_PATH_MAGIC],
+[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+ else
+ MAGIC_CMD=:
+ fi
+fi
+])# AC_PATH_MAGIC
+
+
+# AC_PROG_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([AC_PROG_LD],
+[AC_ARG_WITH([gnu-ld],
+ [AC_HELP_STRING([--with-gnu-ld],
+ [assume the C compiler uses GNU ld @<:@default=no@:>@])],
+ [test "$withval" = no || with_gnu_ld=yes],
+ [with_gnu_ld=no])
+AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by $CC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]]* | ?:[[\\/]]*)
+ re_direlt='/[[^/]][[^/]]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_PROG_LD_GNU
+])# AC_PROG_LD
+
+
+# AC_PROG_LD_GNU
+# --------------
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# AC_PROG_LD_GNU
+
+
+# AC_PROG_LD_RELOAD_FLAG
+# ----------------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+ lt_cv_ld_reload_flag,
+ [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+])# AC_PROG_LD_RELOAD_FLAG
+
+
+# AC_DEPLIBS_CHECK_METHOD
+# -----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognise dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[[45]]*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | kfreebsd*-gnu | dragonfly*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix3*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+nto-qnx*)
+ lt_cv_deplibs_check_method=unknown
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+])# AC_DEPLIBS_CHECK_METHOD
+
+
+# AC_PROG_NM
+# ----------
+# find the pathname to a BSD-compatible name lister
+AC_DEFUN([AC_PROG_NM],
+[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM,
+[if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi])
+NM="$lt_cv_path_NM"
+])# AC_PROG_NM
+
+
+# AC_CHECK_LIBM
+# -------------
+# check for math library
+AC_DEFUN([AC_CHECK_LIBM],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+ # These system don't have libm, or don't need it
+ ;;
+*-ncr-sysv4.3*)
+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+ ;;
+*)
+ AC_CHECK_LIB(m, cos, LIBM="-lm")
+ ;;
+esac
+])# AC_CHECK_LIBM
+
+
+# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl convenience library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-convenience to the configure arguments. Note that
+# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
+# it is assumed to be `libltdl'. LIBLTDL will be prefixed with
+# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/'
+# (note the single quotes!). If your package is not flat and you're not
+# using automake, define top_builddir and top_srcdir appropriately in
+# the Makefiles.
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ case $enable_ltdl_convenience in
+ no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+ "") enable_ltdl_convenience=yes
+ ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+ esac
+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ # For backwards non-gettext consistent compatibility...
+ INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_CONVENIENCE
+
+
+# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl installable library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-install to the configure arguments. Note that
+# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
+# and an installed libltdl is not found, it is assumed to be `libltdl'.
+# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with
+# '${top_srcdir}/' (note the single quotes!). If your package is not
+# flat and you're not using automake, define top_builddir and top_srcdir
+# appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ AC_CHECK_LIB(ltdl, lt_dlinit,
+ [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+ [if test x"$enable_ltdl_install" = xno; then
+ AC_MSG_WARN([libltdl not installed, but installation disabled])
+ else
+ enable_ltdl_install=yes
+ fi
+ ])
+ if test x"$enable_ltdl_install" = x"yes"; then
+ ac_configure_args="$ac_configure_args --enable-ltdl-install"
+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ else
+ ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+ LIBLTDL="-lltdl"
+ LTDLINCL=
+ fi
+ # For backwards non-gettext consistent compatibility...
+ INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_INSTALLABLE
+
+
+# AC_LIBTOOL_CXX
+# --------------
+# enable support for C++ libraries
+AC_DEFUN([AC_LIBTOOL_CXX],
+[AC_REQUIRE([_LT_AC_LANG_CXX])
+])# AC_LIBTOOL_CXX
+
+
+# _LT_AC_LANG_CXX
+# ---------------
+AC_DEFUN([_LT_AC_LANG_CXX],
+[AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
+])# _LT_AC_LANG_CXX
+
+# _LT_AC_PROG_CXXCPP
+# ------------------
+AC_DEFUN([_LT_AC_PROG_CXXCPP],
+[
+AC_REQUIRE([AC_PROG_CXX])
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ AC_PROG_CXXCPP
+fi
+])# _LT_AC_PROG_CXXCPP
+
+# AC_LIBTOOL_F77
+# --------------
+# enable support for Fortran 77 libraries
+AC_DEFUN([AC_LIBTOOL_F77],
+[AC_REQUIRE([_LT_AC_LANG_F77])
+])# AC_LIBTOOL_F77
+
+
+# _LT_AC_LANG_F77
+# ---------------
+AC_DEFUN([_LT_AC_LANG_F77],
+[AC_REQUIRE([AC_PROG_F77])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
+])# _LT_AC_LANG_F77
+
+
+# AC_LIBTOOL_GCJ
+# --------------
+# enable support for GCJ libraries
+AC_DEFUN([AC_LIBTOOL_GCJ],
+[AC_REQUIRE([_LT_AC_LANG_GCJ])
+])# AC_LIBTOOL_GCJ
+
+
+# _LT_AC_LANG_GCJ
+# ---------------
+AC_DEFUN([_LT_AC_LANG_GCJ],
+[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
+ [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
+ [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
+ [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
+])# _LT_AC_LANG_GCJ
+
+
+# AC_LIBTOOL_RC
+# -------------
+# enable support for Windows resource files
+AC_DEFUN([AC_LIBTOOL_RC],
+[AC_REQUIRE([LT_AC_PROG_RC])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
+])# AC_LIBTOOL_RC
+
+
+# AC_LIBTOOL_LANG_C_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
+AC_DEFUN([_LT_AC_LANG_C_CONFIG],
+[lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF
+
+# Report which library types will actually be built
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_C_CONFIG
+
+
+# AC_LIBTOOL_LANG_CXX_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
+AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
+[AC_LANG_PUSH(C++)
+AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Dependencies to place before and after the object being linked:
+_LT_AC_TAGVAR(predep_objects, $1)=
+_LT_AC_TAGVAR(postdep_objects, $1)=
+_LT_AC_TAGVAR(predeps, $1)=
+_LT_AC_TAGVAR(postdeps, $1)=
+_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+ $as_unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+ $as_unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+else
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+fi
+
+if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+ AC_PROG_LD
+
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='${wl}'
+
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+ grep 'no-whole-archive' > /dev/null; then
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
+
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+_LT_AC_TAGVAR(ld_shlibs, $1)=yes
+case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_AC_TAGVAR(archive_cmds, $1)=''
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ else
+ # We have old collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GXX" = yes ; then
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ fi
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ freebsd[[12]]*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ freebsd-elf*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+ gnu*)
+ ;;
+ hpux9*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ interix3*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC*)
+ # SGI C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+ fi
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+ esac
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc*)
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ tmp_idyn=
+ case $host_cpu in
+ ia64*) tmp_idyn=' -i_dynamic';;
+ esac
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ esac
+ ;;
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ m88k*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ openbsd*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd='echo'
+ ;;
+ osf3*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
+ $rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ psos*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+ # linker. We must also pass each convience library through
+ # to the system linker between allextract/defaultextract.
+ # The C++ compiler will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ output_verbose_link_cmd='echo'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+ # The C++ compiler must be used to create the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+ if $CC --version | grep -v '^2\.7' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ fi
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+ fi
+ ;;
+ esac
+ ;;
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ # So that behaviour is only enabled if SCOABSPATH is set to a
+ # non-empty value in the environment. Most likely only useful for
+ # creating official distributions of packages.
+ # This is a hack until libtool officially supports absolute path
+ # names for shared libraries.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+esac
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$GXX"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_POSTDEP_PREDEP($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+])# AC_LIBTOOL_LANG_CXX_CONFIG
+
+# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
+# ------------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library. It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
+int a;
+void foo (void) { a = 0; }
+EOF
+],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+EOF
+],[$1],[F77],[cat > conftest.$ac_ext <<EOF
+ subroutine foo
+ implicit none
+ integer*4 a
+ a=0
+ return
+ end
+EOF
+],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
+public class foo {
+ private int a;
+ public void bar (void) {
+ a = 0;
+ }
+};
+EOF
+])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+ # Parse the compiler output and extract the necessary
+ # objects, libraries and library flags.
+
+ # Sentinel used to keep track of whether or not we are before
+ # the conftest object file.
+ pre_test_object_deps_done=no
+
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+ output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" \
+ || test $p = "-R"; then
+ prev=$p
+ continue
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p in
+ -L* | -R*)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+ if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+ fi
+ ;;
+ # The "-l" case would never come before the object being
+ # linked, so don't bother handling this case.
+ esac
+ else
+ if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then
+ _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+ if test "$p" = "conftest.$objext"; then
+ pre_test_object_deps_done=yes
+ continue
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then
+ _LT_AC_TAGVAR(predep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
+ fi
+ else
+ if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
+ _LT_AC_TAGVAR(postdep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$rm -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+ifelse([$1],[CXX],
+[case $host_os in
+interix3*)
+ # Interix 3.5 installs completely hosed .la files for C++, so rather than
+ # hack all around it, let's just trust "g++" to DTRT.
+ _LT_AC_TAGVAR(predep_objects,$1)=
+ _LT_AC_TAGVAR(postdep_objects,$1)=
+ _LT_AC_TAGVAR(postdeps,$1)=
+ ;;
+
+solaris*)
+ case $cc_basename in
+ CC*)
+ # Adding this requires a known-good setup of shared libraries for
+ # Sun compiler versions before 5.6, else PIC objects from an old
+ # archive will be linked into the output, leading to subtle bugs.
+ _LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun'
+ ;;
+ esac
+ ;;
+esac
+])
+
+case " $_LT_AC_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+])# AC_LIBTOOL_POSTDEP_PREDEP
+
+# AC_LIBTOOL_LANG_F77_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
+AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
+[AC_REQUIRE([AC_PROG_F77])
+AC_LANG_PUSH(Fortran 77)
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code=" subroutine t\n return\n end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=" program t\n end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+_LT_AC_TAGVAR(GCC, $1)="$G77"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_F77_CONFIG
+
+
+# AC_LIBTOOL_LANG_GCJ_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
+AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_GCJ_CONFIG
+
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+# -------------------------
+# Ensure that the configuration vars for the Windows resource compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
+AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_RC_CONFIG
+
+
+# AC_LIBTOOL_CONFIG([TAGNAME])
+# ----------------------------
+# If TAGNAME is not passed, then create an initial libtool script
+# with a default configuration from the untagged config vars. Otherwise
+# add code to config.status for appending the configuration named by
+# TAGNAME from the matching tagged config vars.
+AC_DEFUN([AC_LIBTOOL_CONFIG],
+[# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ _LT_AC_TAGVAR(compiler, $1) \
+ _LT_AC_TAGVAR(CC, $1) \
+ _LT_AC_TAGVAR(LD, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
+ _LT_AC_TAGVAR(old_archive_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
+ _LT_AC_TAGVAR(predep_objects, $1) \
+ _LT_AC_TAGVAR(postdep_objects, $1) \
+ _LT_AC_TAGVAR(predeps, $1) \
+ _LT_AC_TAGVAR(postdeps, $1) \
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
+ _LT_AC_TAGVAR(archive_cmds, $1) \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(postinstall_cmds, $1) \
+ _LT_AC_TAGVAR(postuninstall_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
+ _LT_AC_TAGVAR(allow_undefined_flag, $1) \
+ _LT_AC_TAGVAR(no_undefined_flag, $1) \
+ _LT_AC_TAGVAR(export_symbols_cmds, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
+ _LT_AC_TAGVAR(hardcode_automatic, $1) \
+ _LT_AC_TAGVAR(module_cmds, $1) \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+ _LT_AC_TAGVAR(exclude_expsyms, $1) \
+ _LT_AC_TAGVAR(include_expsyms, $1); do
+
+ case $var in
+ _LT_AC_TAGVAR(old_archive_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(module_cmds, $1) | \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
+ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\[$]0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
+ ;;
+ esac
+
+ifelse([$1], [],
+ [cfgfile="${ofile}T"
+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+ $rm -f "$cfgfile"
+ AC_MSG_NOTICE([creating $ofile])],
+ [cfgfile="$ofile"])
+
+ cat <<__EOF__ >> "$cfgfile"
+ifelse([$1], [],
+[#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e 1s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG],
+[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
+
+# Is the compiler the GNU C compiler?
+with_gcc=$_LT_AC_TAGVAR(GCC, $1)
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
+archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
+module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1)
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
+
+# Symbols that must always be exported.
+include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
+
+ifelse([$1],[],
+[# ### END LIBTOOL CONFIG],
+[# ### END LIBTOOL TAG CONFIG: $tagname])
+
+__EOF__
+
+ifelse([$1],[], [
+ case $host_os in
+ aix3*)
+ cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+EOF
+ ;;
+ esac
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" || \
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+])
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+])# AC_LIBTOOL_CONFIG
+
+
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+
+_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+ AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+ lt_cv_prog_compiler_rtti_exceptions,
+ [-fno-rtti -fno-exceptions], [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
+
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_NM])
+AC_REQUIRE([AC_OBJEXT])
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[[BCDT]]'
+ ;;
+cygwin* | mingw* | pw32*)
+ symcode='[[ABCDGISTW]]'
+ ;;
+hpux*) # Its linker distinguishes data from code symbols
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDEGRST]]'
+ fi
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+linux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDGIRSTW]]'
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[[BCDEGRST]]'
+ ;;
+osf*)
+ symcode='[[BCDEGQRST]]'
+ ;;
+solaris*)
+ symcode='[[BDRT]]'
+ ;;
+sco3.2v5*)
+ symcode='[[DT]]'
+ ;;
+sysv4.2uw2*)
+ symcode='[[DT]]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[[ABDT]]'
+ ;;
+sysv4)
+ symcode='[[DFNSTU]]'
+ ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+ if AC_TRY_EVAL(ac_compile); then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if grep ' nm_test_var$' "$nlist" >/dev/null; then
+ if grep ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+ cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ lt_ptr_t address;
+}
+lt_preloaded_symbols[[]] =
+{
+EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+ cat <<\EOF >> conftest.$ac_ext
+ {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+ cat conftest.$ac_ext >&5
+ fi
+ rm -f conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ AC_MSG_RESULT(failed)
+else
+ AC_MSG_RESULT(ok)
+fi
+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+
+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
+# ---------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
+[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+ ifelse([$1],[CXX],[
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | os2* | pw32*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix4* | aix5*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ esac
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+ aCC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ interix*)
+ # This is c89, which is MS Visual C++ (no shared libs)
+ # Anyone wants to do a port?
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ icpc* | ecpc*)
+ # Intel C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler.
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ cxx*)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ esac
+ ;;
+ vxworks*)
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+],
+[
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC (with -KPIC) is the default.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ newsos6)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ ccc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All OSF/1 code is PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ solaris*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ unicos*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+
+ uts4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
+ _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
+ [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
+ [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
+ "" | " "*) ;;
+ *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+ esac],
+ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+ ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\"
+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+ $lt_tmp_static_flag,
+ [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
+])
+
+
+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
+# ------------------------------------
+# See if the linker supports building shared libraries.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
+[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ifelse([$1],[CXX],[
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix4* | aix5*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+],[
+ runpath_var=
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+ _LT_AC_TAGVAR(archive_cmds, $1)=
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=no
+ _LT_AC_TAGVAR(module_cmds, $1)=
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)=
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ _LT_AC_TAGVAR(include_expsyms, $1)=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ _LT_CC_BASENAME([$compiler])
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ interix3*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ $echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+
+ if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then
+ runpath_var=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_AC_TAGVAR(archive_cmds, $1)=''
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ else
+ # We have old collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ # see comment about different semantics on the GNU ld section
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ bsdi[[45]]*)
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ freebsd1*)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ newsos6)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ openbsd*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+ case $host_os in
+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ else
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ solaris*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+ *)
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ ;;
+ motorola)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4.3*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+ # Assume -lc should be added
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $_LT_AC_TAGVAR(archive_cmds, $1) in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+ pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+ if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
+ then
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ else
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ fi
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
+ ;;
+ esac
+ fi
+ ;;
+esac
+])# AC_LIBTOOL_PROG_LD_SHLIBS
+
+
+# _LT_AC_FILE_LTDLL_C
+# -------------------
+# Be careful that the start marker always follows a newline.
+AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# # ifdef __CYGWIN32__
+# # define __CYGWIN__ __CYGWIN32__
+# # endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+# __hDllInstance_base = hInst;
+# return TRUE;
+# }
+# /* ltdll.c ends here */
+])# _LT_AC_FILE_LTDLL_C
+
+
+# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
+# ---------------------------------
+AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
+
+
+# old names
+AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL])
+AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+AC_DEFUN([AM_PROG_LD], [AC_PROG_LD])
+AC_DEFUN([AM_PROG_NM], [AC_PROG_NM])
+
+# This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])
+
+AC_DEFUN([LT_AC_PROG_GCJ],
+[AC_CHECK_TOOL(GCJ, gcj, no)
+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+ AC_SUBST(GCJFLAGS)
+])
+
+AC_DEFUN([LT_AC_PROG_RC],
+[AC_CHECK_TOOL(RC, windres, no)
+])
+
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_SED. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+# LT_AC_PROG_SED
+# --------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible. Prefer GNU sed if found.
+AC_DEFUN([LT_AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for lt_ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+ fi
+ done
+ done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+ test ! -f $lt_ac_sed && continue
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+ # Check for GNU sed and select it if it is found.
+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+ lt_cv_path_SED=$lt_ac_sed
+ break
+ fi
+ while true; do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo >>conftest.nl
+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+ cmp -s conftest.out conftest.nl || break
+ # 10000 chars as input seems more than enough
+ test $lt_ac_count -gt 10 && break
+ lt_ac_count=`expr $lt_ac_count + 1`
+ if test $lt_ac_count -gt $lt_ac_max; then
+ lt_ac_max=$lt_ac_count
+ lt_cv_path_SED=$lt_ac_sed
+ fi
+ done
+done
+])
+SED=$lt_cv_path_SED
+AC_MSG_RESULT([$SED])
+])
+
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+#
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=m4_default([$1], [0.9.0])
+ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ PKG_CONFIG=""
+ fi
+
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists. Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure to call
+# PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+ m4_ifval([$2], [$2], [:])
+m4_ifvaln([$3], [else
+ $3])dnl
+fi])
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$PKG_CONFIG"; then
+ if test -n "$$1"; then
+ pkg_cv_[]$1="$$1"
+ else
+ PKG_CHECK_EXISTS([$3],
+ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+ [pkg_failed=yes])
+ fi
+else
+ pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+ _PKG_SHORT_ERRORS_SUPPORTED
+ if test $_pkg_short_errors_supported = yes; then
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`
+ else
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+ ifelse([$4], , [AC_MSG_ERROR(dnl
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT
+])],
+ [$4])
+elif test $pkg_failed = untried; then
+ ifelse([$4], , [AC_MSG_FAILURE(dnl
+[The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.])],
+ [$4])
+else
+ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+ AC_MSG_RESULT([yes])
+ ifelse([$3], , :, [$3])
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+m4_include([scripts/cxx.m4])
+m4_include([scripts/cxx_std.m4])
+m4_include([scripts/docgen.m4])
+m4_include([scripts/glibmm_check_perl.m4])
+m4_include([scripts/macros.m4])
+m4_include([scripts/reduced.m4])
+m4_include([scripts/sun.m4])
diff --git a/libs/glibmm2/build_shared/Makefile_build.am_fragment b/libs/glibmm2/build_shared/Makefile_build.am_fragment
new file mode 100644
index 0000000000..95a39412e9
--- /dev/null
+++ b/libs/glibmm2/build_shared/Makefile_build.am_fragment
@@ -0,0 +1,71 @@
+## Copyright (c) 2001
+## The gtkmm development team.
+##
+## **** Common rules for inclusion in Makefile.am ****
+##
+##
+## Used variable: Example content:
+##
+## sublib_name = glibmm
+## sublib_cflags = $(GLIBMM_CFLAGS)
+## files_built_*_cc =
+## files_built_*_h = proxy.h
+## files_extra_cc = array.cc class.cc closure.cc
+## files_extra_h = array.h boxedtype.h class.h
+## files_extra_all_cc = array.cc class.cc closure.cc
+## files_extra_all_h = array.h boxedtype.h class.h
+##
+## Returned variable: Usage example:
+##
+## files_all_*_cc libglibmm_la_SOURCES = $(files_all_*_cc)
+## common_ldflags libglibmm_la_LDFLAGS = $(common_ldflags)
+
+files_all_general_cc = $(files_built_general_cc) $(files_extra_cc)
+files_all_posix_cc = $(files_built_posix_cc)
+files_all_win32_cc = $(files_built_win32_cc)
+
+# Support for DLL on mingw using libtool > 1.4
+# When creating DLLs on win32, we need to explicitly add a few extra
+# libraries at link time to resolve symbols (remember a dll is like an
+# executable).
+if PLATFORM_WIN32
+extra_win32_defines = \
+ -D$(shell echo $(sublib_name) | tr [:lower:] [:upper:])_BUILD
+no_undefined = -no-undefined -Wl,--export-all-symbols
+win32_dlls_extra_libs = $(sublib_win32_dlls_libs)
+else
+extra_win32_defines =
+no_undefined =
+win32_dlls_extra_libs =
+endif
+
+common_ldflags = -version-info $(LIBGLIBMM_SO_VERSION) $(no_undefined)
+
+all_includes = -I$(top_builddir)/glib -I$(top_srcdir)/glib \
+ $(sublib_cflags) $(GTHREAD_CFLAGS)
+
+extra_defines = -DG_LOG_DOMAIN=\"$(sublib_name)\" $(extra_win32_defines) \
+ $(DISABLE_DEPRECATED_CFLAGS) $(DISABLE_DEPRECATED_API_CFLAGS)
+
+dist_sources = $(files_built_all_cc) $(files_extra_all_cc) \
+ $(files_built_all_h) $(files_extra_all_h)
+DISTFILES = $(DIST_COMMON) $(dist_sources) $(TEXINFOS) $(EXTRA_DIST)
+
+DEFS = @DEFS@ $(strip $(extra_defines))
+DEFAULT_INCLUDES =
+INCLUDES = $(strip $(all_includes))
+
+sublib_includedir = $(includedir)/$(sublib_libname)/$(sublib_name)
+if OS_WIN32
+sublib_include_HEADERS = $(files_built_general_h) \
+ $(files_built_win32_h) \
+ $(files_extra_h)
+else
+sublib_include_HEADERS = $(files_built_general_h) \
+ $(files_built_posix_h) \
+ $(files_extra_h)
+endif
+
+maintainer-clean-local:
+ (cd $(srcdir) && rm -f $(files_built_all_cc) $(files_built_all_h))
+
diff --git a/libs/glibmm2/build_shared/Makefile_build_extra.am_fragment b/libs/glibmm2/build_shared/Makefile_build_extra.am_fragment
new file mode 100644
index 0000000000..b2a2c2e98f
--- /dev/null
+++ b/libs/glibmm2/build_shared/Makefile_build_extra.am_fragment
@@ -0,0 +1,40 @@
+## Copyright (c) 2001
+## The gtkmm development team.
+##
+## **** Common rules for inclusion in Makefile.am ****
+##
+##
+## Used variable: Example content:
+##
+## sublib_name = gtkmm
+## sublib_cflags = $(GTKMM_CFLAGS)
+## sublib_files_extra_*_cc = stock_id.cc
+## sublib_files_extra_*_h = stock_id.h
+##
+## Returned variable: Usage example:
+##
+## files_extra_cc libgtkmm_la_SOURCES = $(files_all_cc)
+## files_extra_h libgtkmm_la_SOURCES = $(files_all_general_cc)
+## files_extra_all_cc libgtkmm_la_SOURCES = $(files_all_posix_cc)
+## files_extra_all_h libgtkmm_la_SOURCES = $(files_all_win32_cc)
+
+## The temporary sublib_ variables are needed to workaround
+## a nasty automake problem with escaped newlines and +=.
+
+if OS_WIN32
+files_extra_cc_tmp = $(sublib_files_extra_general_cc) $(sublib_files_extra_win32_cc)
+files_extra_h_tmp = $(sublib_files_extra_general_h) $(sublib_files_extra_win32_h)
+else
+files_extra_cc_tmp = $(sublib_files_extra_general_cc) $(sublib_files_extra_posix_cc)
+files_extra_h_tmp = $(sublib_files_extra_general_h) $(sublib_files_extra_posix_h)
+endif
+
+files_extra_cc = $(files_extra_cc_tmp)
+files_extra_h = $(files_extra_h_tmp)
+
+files_extra_all_cc = $(sublib_files_extra_general_cc) $(sublib_files_extra_posix_cc) $(sublib_files_extra_win32_cc)
+files_extra_all_h = $(sublib_files_extra_general_h) $(sublib_files_extra_posix_h) $(sublib_files_extra_win32_h)
+
+files_extra_h += wrap_init.h
+files_extra_all_h += wrap_init.h
+
diff --git a/libs/glibmm2/build_shared/Makefile_build_gensrc.am_fragment b/libs/glibmm2/build_shared/Makefile_build_gensrc.am_fragment
new file mode 100644
index 0000000000..67bed45d78
--- /dev/null
+++ b/libs/glibmm2/build_shared/Makefile_build_gensrc.am_fragment
@@ -0,0 +1,66 @@
+## Copyright (c) 2001
+## The gtkmm development team.
+##
+## **** Common rules for inclusion in Makefile.am ****
+##
+##
+## Used variable: Example content:
+##
+## sublib_name = gtkmm
+## sublib_cflags = $(GTKMM_CFLAGS)
+## files_extra_cc = stock_id.cc
+## files_extra_h = base.h stock_id.h
+##
+## Returned variable: Usage example:
+##
+## files_all_general_cc libgtkmm_la_SOURCES = $(files_all_general_cc)
+## files_all_posix_cc libgtkmm_la_SOURCES = $(files_all_posix_cc)
+## files_all_win32_cc libgtkmm_la_SOURCES = $(files_all_win32_cc)
+## common_ldflags libgtkmm_la_LDFLAGS = $(common_ldflags)
+
+include $(srcdir)/../src/Makefile_list_of_hg.am_fragment
+include $(top_srcdir)/build_shared/Makefile_gensrc_platform.am_fragment
+
+files_built_general_cc = $(files_general_hg:.hg=.cc) wrap_init.cc
+files_built_general_h = $(files_general_hg:.hg=.h)
+files_built_posix_cc = $(files_posix_hg:.hg=.cc)
+files_built_posix_h = $(files_posix_hg:.hg=.h)
+files_built_win32_cc = $(files_win32_hg:.hg=.cc)
+files_built_win32_h = $(files_win32_hg:.hg=.h)
+
+files_built_all_cc = $(files_built_general_cc) \
+ $(files_built_posix_cc) \
+ $(files_built_win32_cc)
+files_built_all_h = $(files_built_general_h) \
+ $(files_built_posix_h) \
+ $(files_built_win32_h)
+
+include $(top_srcdir)/build_shared/Makefile_build_extra.am_fragment
+include $(top_srcdir)/build_shared/Makefile_build.am_fragment
+
+cvsignore:
+ ( \
+ echo ".deps"; \
+ echo ".libs"; \
+ echo "*.la"; \
+ echo "*.lo"; \
+ echo "Makefile"; \
+ echo "Makefile.in"; \
+ echo; \
+ list='$(strip $(files_built_all_cc) $(files_built_all_h))'; \
+ for file in $$list; do \
+ echo "$$file"; \
+ done \
+ ) >$(srcdir)/.cvsignore
+ ( \
+ echo "Makefile"; \
+ echo "Makefile.in"; \
+ echo; \
+ list='$(strip $(files_all_hg:.hg=_p.h))'; \
+ for file in $$list; do \
+ echo "$$file"; \
+ done \
+ ) >$(srcdir)/private/.cvsignore
+
+.PHONY: cvsignore
+
diff --git a/libs/glibmm2/build_shared/Makefile_gensrc.am_fragment b/libs/glibmm2/build_shared/Makefile_gensrc.am_fragment
new file mode 100644
index 0000000000..4f561da40f
--- /dev/null
+++ b/libs/glibmm2/build_shared/Makefile_gensrc.am_fragment
@@ -0,0 +1,62 @@
+## Copyright (c) 2001
+## The gtkmm development team.
+##
+## **** Common rules for inclusion in Makefile.am ****
+##
+##
+## Used variable: Example content:
+##
+## sublib_name = gdkmm
+## sublib_namespace = Gdk
+## files_defs = gdk.defs gdk_pixbuf.defs
+
+
+tools_dir_m4 = $(top_srcdir)/tools/m4
+tools_dir_pm = $(top_srcdir)/tools/pm
+
+gensrc_destdir = $(srcdir)/../$(sublib_name)
+stamp_dir = $(srcdir)/.stamps
+
+include $(top_srcdir)/tools/Makefile_list_of_sources.am_fragment
+tools_m4 = $(files_tools_m4:%.m4=$(tools_dir_m4)/%.m4)
+tools_pm = $(files_tools_pm:%.pm=$(tools_dir_pm)/%.pm)
+
+include $(srcdir)/Makefile_list_of_hg.am_fragment
+include $(top_srcdir)/build_shared/Makefile_gensrc_platform.am_fragment
+files_all_ccg = $(files_all_hg:%.hg=%.ccg)
+files_h = $(files_all_hg:%.hg=$(gensrc_destdir)/%.h)
+files_cc = $(files_all_hg:%.hg=$(gensrc_destdir)/%.cc)
+files_stamp = $(files_all_hg:%.hg=$(stamp_dir)/stamp-%)
+
+gmmproc_in = $(top_srcdir)/tools/gmmproc.in
+gmmproc_path = $(top_builddir)/tools/gmmproc
+gmmproc_args = -I $(tools_dir_m4) --defs $(srcdir)
+run_gmmproc = $(PERL_PATH) -I$(tools_dir_pm) $(gmmproc_path) $(gmmproc_args)
+
+gen_wrap_init_in = $(top_srcdir)/tools/generate_wrap_init.pl.in
+gen_wrap_init_path = $(top_builddir)/tools/generate_wrap_init.pl
+gen_wrap_init_args = --namespace=$(sublib_namespace)
+run_gen_wrap_init = $(PERL_PATH) $(gen_wrap_init_path) $(gen_wrap_init_args)
+
+EXTRA_DIST = Makefile_list_of_hg.am_fragment $(files_defs) $(files_all_hg) $(files_all_ccg)
+
+
+$(stamp_dir)/stamp-%: %.hg %.ccg $(gmmproc_in) $(tools_m4) $(tools_pm) $(files_defs)
+ $(run_gmmproc) $(notdir $*) $(srcdir) $(gensrc_destdir)
+ @echo 'timestamp' >$@
+
+$(gensrc_destdir)/wrap_init.cc: $(gen_wrap_init_in) $(files_all_hg)
+ $(run_gen_wrap_init) $(files_all_hg:%.hg=$(srcdir)/%.hg) >$@
+
+create-stamp-dir:
+ @(test -d $(stamp_dir) || mkdir $(stamp_dir))
+
+if MAINTAINER_MODE
+all-local: create-stamp-dir $(files_stamp) $(gensrc_destdir)/wrap_init.cc
+endif
+
+maintainer-clean-local:
+ rm -rf $(stamp_dir)
+
+.PHONY: create-stamp-dir
+
diff --git a/libs/glibmm2/build_shared/Makefile_gensrc_platform.am_fragment b/libs/glibmm2/build_shared/Makefile_gensrc_platform.am_fragment
new file mode 100644
index 0000000000..71c9cc4bcc
--- /dev/null
+++ b/libs/glibmm2/build_shared/Makefile_gensrc_platform.am_fragment
@@ -0,0 +1,25 @@
+## Copyright (c) 2001
+## The gtkmm development team.
+##
+## **** Common rules for inclusion in Makefile.am ****
+##
+##
+## Used variable: Example content:
+##
+## files_general_hg = button.hg
+## files_posix_hg = socket.hg
+##
+## Returned variable: Usage example:
+##
+## files_all_hg EXTRA_DIST = $(files_all_hg)
+## files_hg files_built_h = $(files_hg:.hg=_p.h)
+
+
+files_all_hg = $(files_general_hg) $(files_posix_hg) $(files_win32_hg)
+
+if OS_WIN32
+files_hg = $(files_general_hg) $(files_win32_hg)
+else
+files_hg = $(files_general_hg) $(files_posix_hg)
+endif
+
diff --git a/libs/glibmm2/config.h b/libs/glibmm2/config.h
new file mode 100644
index 0000000000..499aed41b4
--- /dev/null
+++ b/libs/glibmm2/config.h
@@ -0,0 +1,6 @@
+/* config.h. Generated by configure. */
+
+#define HAVE_FLOCKFILE 1
+#define HAVE_FUNLOCKFILE 1
+/* #undef GETC_UNLOCKED */
+#define HAVE_MKFIFO 1
diff --git a/libs/glibmm2/config.h.in b/libs/glibmm2/config.h.in
new file mode 100644
index 0000000000..d04186be0a
--- /dev/null
+++ b/libs/glibmm2/config.h.in
@@ -0,0 +1,5 @@
+
+#undef HAVE_FLOCKFILE
+#undef HAVE_FUNLOCKFILE
+#undef GETC_UNLOCKED
+#undef HAVE_MKFIFO
diff --git a/libs/glibmm2/config.log b/libs/glibmm2/config.log
new file mode 100644
index 0000000000..42ff549fd4
--- /dev/null
+++ b/libs/glibmm2/config.log
@@ -0,0 +1,1284 @@
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by configure, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ $ ./configure
+
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = houllier
+uname -m = i686
+uname -r = 2.6.20-16-lowlatency
+uname -s = Linux
+uname -v = #2 SMP PREEMPT Sun Sep 23 19:54:02 UTC 2007
+
+/usr/bin/uname -p = unknown
+/bin/uname -X = unknown
+
+/bin/arch = i686
+/usr/bin/arch -k = unknown
+/usr/convex/getsysinfo = unknown
+hostinfo = unknown
+/bin/machine = unknown
+/usr/bin/oslevel = unknown
+/bin/universe = unknown
+
+PATH: /home/carl/bin
+PATH: /usr/local/sbin
+PATH: /usr/local/bin
+PATH: /usr/sbin
+PATH: /usr/bin
+PATH: /sbin
+PATH: /bin
+PATH: /usr/games
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+configure:1629: checking for a BSD-compatible install
+configure:1684: result: /usr/bin/install -c
+configure:1695: checking whether build environment is sane
+configure:1738: result: yes
+configure:1803: checking for gawk
+configure:1832: result: no
+configure:1803: checking for mawk
+configure:1819: found /usr/bin/mawk
+configure:1829: result: mawk
+configure:1839: checking whether make sets $(MAKE)
+configure:1859: result: yes
+configure:2030: checking whether to enable maintainer-specific portions of Makefiles
+configure:2039: result: no
+configure:2116: checking for gcc
+configure:2132: found /usr/bin/gcc
+configure:2142: result: gcc
+configure:2386: checking for C compiler version
+configure:2389: gcc --version </dev/null >&5
+gcc (GCC) 4.1.2 (Ubuntu 4.1.2-0ubuntu4)
+Copyright (C) 2006 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+configure:2392: $? = 0
+configure:2394: gcc -v </dev/null >&5
+Using built-in specs.
+Target: i486-linux-gnu
+Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release i486-linux-gnu
+Thread model: posix
+gcc version 4.1.2 (Ubuntu 4.1.2-0ubuntu4)
+configure:2397: $? = 0
+configure:2399: gcc -V </dev/null >&5
+gcc: '-V' option must have argument
+configure:2402: $? = 1
+configure:2425: checking for C compiler default output file name
+configure:2428: gcc conftest.c >&5
+configure:2431: $? = 0
+configure:2477: result: a.out
+configure:2482: checking whether the C compiler works
+configure:2488: ./a.out
+configure:2491: $? = 0
+configure:2508: result: yes
+configure:2515: checking whether we are cross compiling
+configure:2517: result: no
+configure:2520: checking for suffix of executables
+configure:2522: gcc -o conftest conftest.c >&5
+configure:2525: $? = 0
+configure:2550: result:
+configure:2556: checking for suffix of object files
+configure:2577: gcc -c conftest.c >&5
+configure:2580: $? = 0
+configure:2602: result: o
+configure:2606: checking whether we are using the GNU C compiler
+configure:2630: gcc -c conftest.c >&5
+configure:2636: $? = 0
+configure:2640: test -z
+ || test ! -s conftest.err
+configure:2643: $? = 0
+configure:2646: test -s conftest.o
+configure:2649: $? = 0
+configure:2662: result: yes
+configure:2668: checking whether gcc accepts -g
+configure:2689: gcc -c -g conftest.c >&5
+configure:2695: $? = 0
+configure:2699: test -z
+ || test ! -s conftest.err
+configure:2702: $? = 0
+configure:2705: test -s conftest.o
+configure:2708: $? = 0
+configure:2719: result: yes
+configure:2736: checking for gcc option to accept ANSI C
+configure:2806: gcc -c -g -O2 conftest.c >&5
+configure:2812: $? = 0
+configure:2816: test -z
+ || test ! -s conftest.err
+configure:2819: $? = 0
+configure:2822: test -s conftest.o
+configure:2825: $? = 0
+configure:2843: result: none needed
+configure:2861: gcc -c -g -O2 conftest.c >&5
+conftest.c:2: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'me'
+configure:2867: $? = 1
+configure: failed program was:
+| #ifndef __cplusplus
+| choke me
+| #endif
+configure:3011: checking for style of include used by make
+configure:3039: result: GNU
+configure:3067: checking dependency style of gcc
+configure:3157: result: gcc3
+configure:3179: checking how to run the C preprocessor
+configure:3214: gcc -E conftest.c
+configure:3220: $? = 0
+configure:3252: gcc -E conftest.c
+conftest.c:14:28: error: ac_nonexistent.h: No such file or directory
+configure:3258: $? = 1
+configure: failed program was:
+| /* confdefs.h. */
+|
+| #define PACKAGE_NAME ""
+| #define PACKAGE_TARNAME ""
+| #define PACKAGE_VERSION ""
+| #define PACKAGE_STRING ""
+| #define PACKAGE_BUGREPORT ""
+| #define GLIBMM_MAJOR_VERSION 2
+| #define GLIBMM_MINOR_VERSION 13
+| #define GLIBMM_MICRO_VERSION 3
+| #define PACKAGE "glibmm"
+| #define VERSION "2.13.3"
+| /* end confdefs.h. */
+| #include <ac_nonexistent.h>
+configure:3297: result: gcc -E
+configure:3321: gcc -E conftest.c
+configure:3327: $? = 0
+configure:3359: gcc -E conftest.c
+conftest.c:14:28: error: ac_nonexistent.h: No such file or directory
+configure:3365: $? = 1
+configure: failed program was:
+| /* confdefs.h. */
+|
+| #define PACKAGE_NAME ""
+| #define PACKAGE_TARNAME ""
+| #define PACKAGE_VERSION ""
+| #define PACKAGE_STRING ""
+| #define PACKAGE_BUGREPORT ""
+| #define GLIBMM_MAJOR_VERSION 2
+| #define GLIBMM_MINOR_VERSION 13
+| #define GLIBMM_MICRO_VERSION 3
+| #define PACKAGE "glibmm"
+| #define VERSION "2.13.3"
+| /* end confdefs.h. */
+| #include <ac_nonexistent.h>
+configure:3408: checking whether make sets $(MAKE)
+configure:3428: result: yes
+configure:3443: checking build system type
+configure:3461: result: i686-pc-linux-gnu
+configure:3469: checking host system type
+configure:3483: result: i686-pc-linux-gnu
+configure:3492: checking for some Win32 platform
+configure:3502: result: no
+configure:3515: checking for native Win32
+configure:3525: result: no
+configure:3613: checking for a sed that does not truncate output
+configure:3667: result: /bin/sed
+configure:3670: checking for egrep
+configure:3680: result: grep -E
+configure:3696: checking for ld used by gcc
+configure:3763: result: /usr/bin/ld
+configure:3772: checking if the linker (/usr/bin/ld) is GNU ld
+configure:3787: result: yes
+configure:3792: checking for /usr/bin/ld option to reload object files
+configure:3799: result: -r
+configure:3817: checking for BSD-compatible nm
+configure:3866: result: /usr/bin/nm -B
+configure:3870: checking whether ln -s works
+configure:3874: result: yes
+configure:3881: checking how to recognise dependent libraries
+configure:4057: result: pass_all
+configure:4532: checking for ANSI C header files
+configure:4557: gcc -c -g -O2 conftest.c >&5
+configure:4563: $? = 0
+configure:4567: test -z
+ || test ! -s conftest.err
+configure:4570: $? = 0
+configure:4573: test -s conftest.o
+configure:4576: $? = 0
+configure:4665: gcc -o conftest -g -O2 conftest.c >&5
+conftest.c: In function 'main':
+conftest.c:31: warning: incompatible implicit declaration of built-in function 'exit'
+configure:4668: $? = 0
+configure:4670: ./conftest
+configure:4673: $? = 0
+configure:4688: result: yes
+configure:4712: checking for sys/types.h
+configure:4728: gcc -c -g -O2 conftest.c >&5
+configure:4734: $? = 0
+configure:4738: test -z
+ || test ! -s conftest.err
+configure:4741: $? = 0
+configure:4744: test -s conftest.o
+configure:4747: $? = 0
+configure:4758: result: yes
+configure:4712: checking for sys/stat.h
+configure:4728: gcc -c -g -O2 conftest.c >&5
+configure:4734: $? = 0
+configure:4738: test -z
+ || test ! -s conftest.err
+configure:4741: $? = 0
+configure:4744: test -s conftest.o
+configure:4747: $? = 0
+configure:4758: result: yes
+configure:4712: checking for stdlib.h
+configure:4728: gcc -c -g -O2 conftest.c >&5
+configure:4734: $? = 0
+configure:4738: test -z
+ || test ! -s conftest.err
+configure:4741: $? = 0
+configure:4744: test -s conftest.o
+configure:4747: $? = 0
+configure:4758: result: yes
+configure:4712: checking for string.h
+configure:4728: gcc -c -g -O2 conftest.c >&5
+configure:4734: $? = 0
+configure:4738: test -z
+ || test ! -s conftest.err
+configure:4741: $? = 0
+configure:4744: test -s conftest.o
+configure:4747: $? = 0
+configure:4758: result: yes
+configure:4712: checking for memory.h
+configure:4728: gcc -c -g -O2 conftest.c >&5
+configure:4734: $? = 0
+configure:4738: test -z
+ || test ! -s conftest.err
+configure:4741: $? = 0
+configure:4744: test -s conftest.o
+configure:4747: $? = 0
+configure:4758: result: yes
+configure:4712: checking for strings.h
+configure:4728: gcc -c -g -O2 conftest.c >&5
+configure:4734: $? = 0
+configure:4738: test -z
+ || test ! -s conftest.err
+configure:4741: $? = 0
+configure:4744: test -s conftest.o
+configure:4747: $? = 0
+configure:4758: result: yes
+configure:4712: checking for inttypes.h
+configure:4728: gcc -c -g -O2 conftest.c >&5
+configure:4734: $? = 0
+configure:4738: test -z
+ || test ! -s conftest.err
+configure:4741: $? = 0
+configure:4744: test -s conftest.o
+configure:4747: $? = 0
+configure:4758: result: yes
+configure:4712: checking for stdint.h
+configure:4728: gcc -c -g -O2 conftest.c >&5
+configure:4734: $? = 0
+configure:4738: test -z
+ || test ! -s conftest.err
+configure:4741: $? = 0
+configure:4744: test -s conftest.o
+configure:4747: $? = 0
+configure:4758: result: yes
+configure:4712: checking for unistd.h
+configure:4728: gcc -c -g -O2 conftest.c >&5
+configure:4734: $? = 0
+configure:4738: test -z
+ || test ! -s conftest.err
+configure:4741: $? = 0
+configure:4744: test -s conftest.o
+configure:4747: $? = 0
+configure:4758: result: yes
+configure:4784: checking dlfcn.h usability
+configure:4796: gcc -c -g -O2 conftest.c >&5
+configure:4802: $? = 0
+configure:4806: test -z
+ || test ! -s conftest.err
+configure:4809: $? = 0
+configure:4812: test -s conftest.o
+configure:4815: $? = 0
+configure:4825: result: yes
+configure:4829: checking dlfcn.h presence
+configure:4839: gcc -E conftest.c
+configure:4845: $? = 0
+configure:4865: result: yes
+configure:4900: checking for dlfcn.h
+configure:4907: result: yes
+configure:4972: checking for g++
+configure:4988: found /usr/bin/g++
+configure:4998: result: g++
+configure:5014: checking for C++ compiler version
+configure:5017: g++ --version </dev/null >&5
+g++ (GCC) 4.1.2 (Ubuntu 4.1.2-0ubuntu4)
+Copyright (C) 2006 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+configure:5020: $? = 0
+configure:5022: g++ -v </dev/null >&5
+Using built-in specs.
+Target: i486-linux-gnu
+Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release i486-linux-gnu
+Thread model: posix
+gcc version 4.1.2 (Ubuntu 4.1.2-0ubuntu4)
+configure:5025: $? = 0
+configure:5027: g++ -V </dev/null >&5
+g++: '-V' option must have argument
+configure:5030: $? = 1
+configure:5033: checking whether we are using the GNU C++ compiler
+configure:5057: g++ -c conftest.cc >&5
+configure:5063: $? = 0
+configure:5067: test -z
+ || test ! -s conftest.err
+configure:5070: $? = 0
+configure:5073: test -s conftest.o
+configure:5076: $? = 0
+configure:5089: result: yes
+configure:5095: checking whether g++ accepts -g
+configure:5116: g++ -c -g conftest.cc >&5
+configure:5122: $? = 0
+configure:5126: test -z
+ || test ! -s conftest.err
+configure:5129: $? = 0
+configure:5132: test -s conftest.o
+configure:5135: $? = 0
+configure:5146: result: yes
+configure:5188: g++ -c -g -O2 conftest.cc >&5
+configure:5194: $? = 0
+configure:5198: test -z
+ || test ! -s conftest.err
+configure:5201: $? = 0
+configure:5204: test -s conftest.o
+configure:5207: $? = 0
+configure:5233: g++ -c -g -O2 conftest.cc >&5
+conftest.cc: In function 'int main()':
+conftest.cc:29: error: 'exit' was not declared in this scope
+configure:5239: $? = 1
+configure: failed program was:
+| /* confdefs.h. */
+|
+| #define PACKAGE_NAME ""
+| #define PACKAGE_TARNAME ""
+| #define PACKAGE_VERSION ""
+| #define PACKAGE_STRING ""
+| #define PACKAGE_BUGREPORT ""
+| #define GLIBMM_MAJOR_VERSION 2
+| #define GLIBMM_MINOR_VERSION 13
+| #define GLIBMM_MICRO_VERSION 3
+| #define PACKAGE "glibmm"
+| #define VERSION "2.13.3"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| /* end confdefs.h. */
+|
+| int
+| main ()
+| {
+| exit (42);
+| ;
+| return 0;
+| }
+configure:5188: g++ -c -g -O2 conftest.cc >&5
+configure:5194: $? = 0
+configure:5198: test -z
+ || test ! -s conftest.err
+configure:5201: $? = 0
+configure:5204: test -s conftest.o
+configure:5207: $? = 0
+configure:5233: g++ -c -g -O2 conftest.cc >&5
+configure:5239: $? = 0
+configure:5243: test -z
+ || test ! -s conftest.err
+configure:5246: $? = 0
+configure:5249: test -s conftest.o
+configure:5252: $? = 0
+configure:5277: checking dependency style of g++
+configure:5367: result: gcc3
+configure:5394: checking how to run the C++ preprocessor
+configure:5425: g++ -E conftest.cc
+configure:5431: $? = 0
+configure:5463: g++ -E conftest.cc
+conftest.cc:28:28: error: ac_nonexistent.h: No such file or directory
+configure:5469: $? = 1
+configure: failed program was:
+| /* confdefs.h. */
+|
+| #define PACKAGE_NAME ""
+| #define PACKAGE_TARNAME ""
+| #define PACKAGE_VERSION ""
+| #define PACKAGE_STRING ""
+| #define PACKAGE_BUGREPORT ""
+| #define GLIBMM_MAJOR_VERSION 2
+| #define GLIBMM_MINOR_VERSION 13
+| #define GLIBMM_MICRO_VERSION 3
+| #define PACKAGE "glibmm"
+| #define VERSION "2.13.3"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| #ifdef __cplusplus
+| extern "C" void std::exit (int) throw (); using std::exit;
+| #endif
+| /* end confdefs.h. */
+| #include <ac_nonexistent.h>
+configure:5508: result: g++ -E
+configure:5532: g++ -E conftest.cc
+configure:5538: $? = 0
+configure:5570: g++ -E conftest.cc
+conftest.cc:28:28: error: ac_nonexistent.h: No such file or directory
+configure:5576: $? = 1
+configure: failed program was:
+| /* confdefs.h. */
+|
+| #define PACKAGE_NAME ""
+| #define PACKAGE_TARNAME ""
+| #define PACKAGE_VERSION ""
+| #define PACKAGE_STRING ""
+| #define PACKAGE_BUGREPORT ""
+| #define GLIBMM_MAJOR_VERSION 2
+| #define GLIBMM_MINOR_VERSION 13
+| #define GLIBMM_MICRO_VERSION 3
+| #define PACKAGE "glibmm"
+| #define VERSION "2.13.3"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| #ifdef __cplusplus
+| extern "C" void std::exit (int) throw (); using std::exit;
+| #endif
+| /* end confdefs.h. */
+| #include <ac_nonexistent.h>
+configure:5673: checking for g77
+configure:5702: result: no
+configure:5673: checking for f77
+configure:5702: result: no
+configure:5673: checking for xlf
+configure:5702: result: no
+configure:5673: checking for frt
+configure:5702: result: no
+configure:5673: checking for pgf77
+configure:5702: result: no
+configure:5673: checking for fort77
+configure:5702: result: no
+configure:5673: checking for fl32
+configure:5702: result: no
+configure:5673: checking for af77
+configure:5702: result: no
+configure:5673: checking for f90
+configure:5702: result: no
+configure:5673: checking for xlf90
+configure:5702: result: no
+configure:5673: checking for pgf90
+configure:5702: result: no
+configure:5673: checking for epcf90
+configure:5702: result: no
+configure:5673: checking for f95
+configure:5702: result: no
+configure:5673: checking for fort
+configure:5702: result: no
+configure:5673: checking for xlf95
+configure:5702: result: no
+configure:5673: checking for ifc
+configure:5702: result: no
+configure:5673: checking for efc
+configure:5702: result: no
+configure:5673: checking for pgf95
+configure:5702: result: no
+configure:5673: checking for lf95
+configure:5702: result: no
+configure:5673: checking for gfortran
+configure:5702: result: no
+configure:5714: checking for Fortran 77 compiler version
+configure:5717: --version </dev/null >&5
+./configure: line 5718: --version: command not found
+configure:5720: $? = 127
+configure:5722: -v </dev/null >&5
+./configure: line 5723: -v: command not found
+configure:5725: $? = 127
+configure:5727: -V </dev/null >&5
+./configure: line 5728: -V: command not found
+configure:5730: $? = 127
+configure:5738: checking whether we are using the GNU Fortran 77 compiler
+configure:5752: -c conftest.F >&5
+./configure: line 5753: -c: command not found
+configure:5758: $? = 127
+configure: failed program was:
+| program main
+| #ifndef __GNUC__
+| choke me
+| #endif
+|
+| end
+configure:5784: result: no
+configure:5790: checking whether accepts -g
+configure:5802: -c -g conftest.f >&5
+./configure: line 5803: -c: command not found
+configure:5808: $? = 127
+configure: failed program was:
+| program main
+|
+| end
+configure:5833: result: no
+configure:5863: checking the maximum length of command line arguments
+configure:5972: result: 32768
+configure:5983: checking command to parse /usr/bin/nm -B output from gcc object
+configure:6088: gcc -c -g -O2 conftest.c >&5
+configure:6091: $? = 0
+configure:6095: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' \> conftest.nm
+configure:6098: $? = 0
+configure:6150: gcc -o conftest -g -O2 conftest.c conftstm.o >&5
+configure:6153: $? = 0
+configure:6191: result: ok
+configure:6195: checking for objdir
+configure:6210: result: .libs
+configure:6300: checking for ar
+configure:6316: found /usr/bin/ar
+configure:6327: result: ar
+configure:6380: checking for ranlib
+configure:6396: found /usr/bin/ranlib
+configure:6407: result: ranlib
+configure:6460: checking for strip
+configure:6476: found /usr/bin/strip
+configure:6487: result: strip
+configure:6759: checking if gcc supports -fno-rtti -fno-exceptions
+configure:6777: gcc -c -g -O2 -fno-rtti -fno-exceptions conftest.c >&5
+cc1: warning: command line option "-fno-rtti" is valid for C++/ObjC++ but not for C
+configure:6781: $? = 0
+configure:6794: result: no
+configure:6809: checking for gcc option to produce PIC
+configure:7019: result: -fPIC
+configure:7027: checking if gcc PIC flag -fPIC works
+configure:7045: gcc -c -g -O2 -fPIC -DPIC conftest.c >&5
+configure:7049: $? = 0
+configure:7062: result: yes
+configure:7090: checking if gcc static flag -static works
+configure:7118: result: yes
+configure:7128: checking if gcc supports -c -o file.o
+configure:7149: gcc -c -g -O2 -o out/conftest2.o conftest.c >&5
+configure:7153: $? = 0
+configure:7175: result: yes
+configure:7201: checking whether the gcc linker (/usr/bin/ld) supports shared libraries
+configure:8159: result: yes
+configure:8180: checking whether -lc should be explicitly linked in
+configure:8185: gcc -c -g -O2 conftest.c >&5
+configure:8188: $? = 0
+configure:8203: gcc -shared conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| grep -lc \>/dev/null 2\>\&1
+configure:8206: $? = 0
+configure:8218: result: no
+configure:8226: checking dynamic linker characteristics
+configure:8814: result: GNU/Linux ld.so
+configure:8823: checking how to hardcode library paths into programs
+configure:8848: result: immediate
+configure:8862: checking whether stripping libraries is possible
+configure:8867: result: yes
+configure:9701: checking if libtool supports shared libraries
+configure:9703: result: yes
+configure:9706: checking whether to build shared libraries
+configure:9727: result: yes
+configure:9730: checking whether to build static libraries
+configure:9734: result: no
+configure:9826: creating libtool
+configure:10414: checking for ld used by g++
+configure:10481: result: /usr/bin/ld
+configure:10490: checking if the linker (/usr/bin/ld) is GNU ld
+configure:10505: result: yes
+configure:10556: checking whether the g++ linker (/usr/bin/ld) supports shared libraries
+configure:11494: result: yes
+configure:11512: g++ -c -g -O2 conftest.cpp >&5
+configure:11515: $? = 0
+configure:11634: checking for g++ option to produce PIC
+configure:11908: result: -fPIC
+configure:11916: checking if g++ PIC flag -fPIC works
+configure:11934: g++ -c -g -O2 -fPIC -DPIC conftest.cpp >&5
+configure:11938: $? = 0
+configure:11951: result: yes
+configure:11979: checking if g++ static flag -static works
+configure:12007: result: yes
+configure:12017: checking if g++ supports -c -o file.o
+configure:12038: g++ -c -g -O2 -o out/conftest2.o conftest.cpp >&5
+configure:12042: $? = 0
+configure:12064: result: yes
+configure:12090: checking whether the g++ linker (/usr/bin/ld) supports shared libraries
+configure:12115: result: yes
+configure:12182: checking dynamic linker characteristics
+configure:12770: result: GNU/Linux ld.so
+configure:12779: checking how to hardcode library paths into programs
+configure:12804: result: immediate
+configure:18960: checking for gm4
+configure:18989: result: no
+configure:18960: checking for m4
+configure:18976: found /usr/bin/m4
+configure:18986: result: m4
+configure:18999: checking whether m4 is GNU m4
+configure:19005: result: no
+configure:19019: checking whether make is GNU Make
+configure:19022: result: yes
+configure:19044: checking for perl
+configure:19062: found /usr/bin/perl
+configure:19074: result: /usr/bin/perl
+configure:19088: checking whether Perl is new enough
+configure:19098: result: yes
+configure:19136: checking for flockfile
+configure:19193: gcc -o conftest -g -O2 conftest.c >&5
+configure:19199: $? = 0
+configure:19203: test -z
+ || test ! -s conftest.err
+configure:19206: $? = 0
+configure:19209: test -s conftest
+configure:19212: $? = 0
+configure:19224: result: yes
+configure:19136: checking for funlockfile
+configure:19193: gcc -o conftest -g -O2 conftest.c >&5
+configure:19199: $? = 0
+configure:19203: test -z
+ || test ! -s conftest.err
+configure:19206: $? = 0
+configure:19209: test -s conftest
+configure:19212: $? = 0
+configure:19224: result: yes
+configure:19136: checking for getc_unlocked
+configure:19193: gcc -o conftest -g -O2 conftest.c >&5
+configure:19199: $? = 0
+configure:19203: test -z
+ || test ! -s conftest.err
+configure:19206: $? = 0
+configure:19209: test -s conftest
+configure:19212: $? = 0
+configure:19224: result: yes
+configure:19136: checking for mkfifo
+configure:19193: gcc -o conftest -g -O2 conftest.c >&5
+configure:19199: $? = 0
+configure:19203: test -z
+ || test ! -s conftest.err
+configure:19206: $? = 0
+configure:19209: test -s conftest
+configure:19212: $? = 0
+configure:19224: result: yes
+configure:19289: checking for pkg-config
+configure:19307: found /usr/bin/pkg-config
+configure:19319: result: /usr/bin/pkg-config
+configure:19334: checking pkg-config is at least version 0.9.0
+configure:19337: result: yes
+configure:19348: checking for GLIBMM
+configure:19356: $PKG_CONFIG --exists --print-errors "sigc++-2.0 >= ${gtkmm_min_sigc_version} glib-2.0 >= ${gtkmm_min_glib_version} gobject-2.0 >= ${gtkmm_min_glib_version} gmodule-2.0 >= ${gtkmm_min_glib_version}"
+configure:19359: $? = 0
+configure:19374: $PKG_CONFIG --exists --print-errors "sigc++-2.0 >= ${gtkmm_min_sigc_version} glib-2.0 >= ${gtkmm_min_glib_version} gobject-2.0 >= ${gtkmm_min_glib_version} gmodule-2.0 >= ${gtkmm_min_glib_version}"
+configure:19377: $? = 0
+configure:19453: result: yes
+configure:19463: checking for GTHREAD
+configure:19471: $PKG_CONFIG --exists --print-errors "gthread-2.0 >= ${gtkmm_min_glib_version}"
+configure:19474: $? = 0
+configure:19489: $PKG_CONFIG --exists --print-errors "gthread-2.0 >= ${gtkmm_min_glib_version}"
+configure:19492: $? = 0
+configure:19526: result: yes
+configure:19631: checking for C++ compiler version
+configure:19634: g++ --version </dev/null >&5
+g++ (GCC) 4.1.2 (Ubuntu 4.1.2-0ubuntu4)
+Copyright (C) 2006 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+configure:19637: $? = 0
+configure:19639: g++ -v </dev/null >&5
+Using built-in specs.
+Target: i486-linux-gnu
+Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release i486-linux-gnu
+Thread model: posix
+gcc version 4.1.2 (Ubuntu 4.1.2-0ubuntu4)
+configure:19642: $? = 0
+configure:19644: g++ -V </dev/null >&5
+g++: '-V' option must have argument
+configure:19647: $? = 1
+configure:19650: checking whether we are using the GNU C++ compiler
+configure:19706: result: yes
+configure:19712: checking whether g++ accepts -g
+configure:19763: result: yes
+configure:19805: g++ -c -g -O2 conftest.cc >&5
+configure:19811: $? = 0
+configure:19815: test -z
+ || test ! -s conftest.err
+configure:19818: $? = 0
+configure:19821: test -s conftest.o
+configure:19824: $? = 0
+configure:19850: g++ -c -g -O2 conftest.cc >&5
+configure:19856: $? = 0
+configure:19860: test -z
+ || test ! -s conftest.err
+configure:19863: $? = 0
+configure:19866: test -s conftest.o
+configure:19869: $? = 0
+configure:19894: checking dependency style of g++
+configure:19984: result: gcc3
+configure:20003: checking whether we are using SUN CC compiler
+configure:20009: g++ -V 2>&1
+configure:20012: $? = 1
+configure:20020: result: no
+configure:20081: checking if C++ compiler supports bool
+configure:20105: g++ -c -g -O2 conftest.cc >&5
+configure:20111: $? = 0
+configure:20115: test -z
+ || test ! -s conftest.err
+configure:20118: $? = 0
+configure:20121: test -s conftest.o
+configure:20124: $? = 0
+configure:20128: result: yes
+configure:20146: checking if C++ compiler supports namespaces
+configure:20170: g++ -c -g -O2 conftest.cc >&5
+configure:20176: $? = 0
+configure:20180: test -z
+ || test ! -s conftest.err
+configure:20183: $? = 0
+configure:20186: test -s conftest.o
+configure:20189: $? = 0
+configure:20193: result: yes
+configure:20211: checking if C++ compiler supports mutable
+configure:20236: g++ -c -g -O2 conftest.cc >&5
+configure:20242: $? = 0
+configure:20246: test -z
+ || test ! -s conftest.err
+configure:20249: $? = 0
+configure:20252: test -s conftest.o
+configure:20255: $? = 0
+configure:20259: result: yes
+configure:20277: checking if C++ environment provides all required features
+configure:20286: result: yes
+configure:20290: checking whether C++ library symbols are declared in namespace std
+configure:20325: g++ -c -g -O2 conftest.cc >&5
+configure:20331: $? = 0
+configure:20335: test -z
+ || test ! -s conftest.err
+configure:20338: $? = 0
+configure:20341: test -s conftest.o
+configure:20344: $? = 0
+configure:20357: result: yes
+configure:20373: checking whether the C++ library supports std::iterator_traits
+configure:20402: g++ -c -g -O2 conftest.cc >&5
+configure:20408: $? = 0
+configure:20412: test -z
+ || test ! -s conftest.err
+configure:20415: $? = 0
+configure:20418: test -s conftest.o
+configure:20421: $? = 0
+configure:20434: result: yes
+configure:20450: checking for non-standard Sun libCstd reverse_iterator
+configure:20479: g++ -c -g -O2 conftest.cc >&5
+conftest.cc: In function 'int main()':
+conftest.cc:44: error: wrong number of template arguments (6, should be 1)
+/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/bits/stl_iterator.h:92: error: provided for 'template<class _Iterator> class std::reverse_iterator'
+conftest.cc:44: error: invalid type in declaration before ';' token
+configure:20485: $? = 1
+configure: failed program was:
+| /* confdefs.h. */
+|
+| #define PACKAGE_NAME ""
+| #define PACKAGE_TARNAME ""
+| #define PACKAGE_VERSION ""
+| #define PACKAGE_STRING ""
+| #define PACKAGE_BUGREPORT ""
+| #define GLIBMM_MAJOR_VERSION 2
+| #define GLIBMM_MINOR_VERSION 13
+| #define GLIBMM_MICRO_VERSION 3
+| #define PACKAGE "glibmm"
+| #define VERSION "2.13.3"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| #ifdef __cplusplus
+| extern "C" void std::exit (int) throw (); using std::exit;
+| #endif
+| #define HAVE_FLOCKFILE 1
+| #define HAVE_FUNLOCKFILE 1
+| #define HAVE_GETC_UNLOCKED 1
+| #define HAVE_MKFIFO 1
+| #define GLIBMM_HAVE_NAMESPACE_STD 1
+| #define GLIBMM_HAVE_STD_ITERATOR_TRAITS 1
+| /* end confdefs.h. */
+|
+| #include <iterator>
+| #ifdef GLIBMM_HAVE_NAMESPACE_STD
+| using namespace std;
+| #endif
+|
+| int
+| main ()
+| {
+|
+| typedef reverse_iterator<char*,random_access_iterator_tag,char,char&,char*,int> ReverseIter;
+|
+| ;
+| return 0;
+| }
+configure:20511: result: no
+configure:20527: checking whether STL containers have templated sequence constructors
+configure:20562: g++ -c -g -O2 conftest.cc >&5
+configure:20568: $? = 0
+configure:20572: test -z
+ || test ! -s conftest.err
+configure:20575: $? = 0
+configure:20578: test -s conftest.o
+configure:20581: $? = 0
+configure:20594: result: yes
+configure:20608: checking if C++ compiler allows member functions to refer to member templates
+configure:20658: g++ -c -g -O2 conftest.cc >&5
+configure:20664: $? = 0
+configure:20668: test -z
+ || test ! -s conftest.err
+configure:20671: $? = 0
+configure:20674: test -s conftest.o
+configure:20677: $? = 0
+configure:20686: result: yes
+configure:20708: checking whether the compiler finds it ambiguous to have both const and non-const template specializations
+configure:20767: g++ -c -g -O2 conftest.cc >&5
+configure:20773: $? = 0
+configure:20777: test -z
+ || test ! -s conftest.err
+configure:20780: $? = 0
+configure:20783: test -s conftest.o
+configure:20786: $? = 0
+configure:20799: result: yes
+configure:20813: checking whether the compiler allows us to define a template that uses dynamic_cast<> with an object whose type is not yet defined
+configure:20854: g++ -c -g -O2 conftest.cc >&5
+configure:20860: $? = 0
+configure:20864: test -z
+ || test ! -s conftest.err
+configure:20867: $? = 0
+configure:20870: test -s conftest.o
+configure:20873: $? = 0
+configure:20886: result: yes
+configure:20900: checking whether the the compilerallows us to use a non-extern "C" function for an extern "C" function pointer.
+configure:20939: g++ -c -g -O2 conftest.cc >&5
+configure:20945: $? = 0
+configure:20949: test -z
+ || test ! -s conftest.err
+configure:20952: $? = 0
+configure:20955: test -s conftest.o
+configure:20958: $? = 0
+configure:20971: result: yes
+configure:20985: checking whether the compiler uses namespace declarations inside extern "C" blocks.
+configure:21038: g++ -c -g -O2 conftest.cc >&5
+configure:21044: $? = 0
+configure:21048: test -z
+ || test ! -s conftest.err
+configure:21051: $? = 0
+configure:21054: test -s conftest.o
+configure:21057: $? = 0
+configure:21070: result: yes
+configure:21086: checking whether the compiler allows a static member variable to be initialized inline to std::string::npos
+configure:21121: g++ -c -g -O2 conftest.cc >&5
+configure:21127: $? = 0
+configure:21131: test -z
+ || test ! -s conftest.err
+configure:21134: $? = 0
+configure:21137: test -s conftest.o
+configure:21140: $? = 0
+configure:21153: result: yes
+configure:21187: checking whether to merge C reference docs into generated headers
+configure:21198: result: no
+configure:21283: checking for compiler warning flags to use
+configure:21328: result: -Wall -Wno-long-long
+configure:21359: WARNING: Deprecated API will be built, for backwards-compatibility.
+configure:21629: creating ./config.status
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by config.status, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ CONFIG_FILES =
+ CONFIG_HEADERS =
+ CONFIG_LINKS =
+ CONFIG_COMMANDS =
+ $ ./config.status
+
+on houllier
+
+config.status:787: creating Makefile
+config.status:787: creating glib/Makefile
+config.status:787: creating glib/glibmm-2.4.pc
+config.status:787: creating glib/src/Makefile
+config.status:787: creating glib/glibmm/Makefile
+config.status:787: creating glib/glibmm/private/Makefile
+config.status:787: creating tools/Makefile
+config.status:787: creating tools/gmmproc
+config.status:787: creating tools/generate_wrap_init.pl
+config.status:787: creating tools/m4/Makefile
+config.status:787: creating tools/pm/Makefile
+config.status:787: creating tools/extra_defs_gen/Makefile
+config.status:787: creating tests/Makefile
+config.status:787: creating tests/glibmm_value/Makefile
+config.status:787: creating examples/Makefile
+config.status:787: creating examples/markup/Makefile
+config.status:787: creating examples/options/Makefile
+config.status:787: creating examples/thread/Makefile
+config.status:787: creating examples/iochannel_stream/Makefile
+config.status:787: creating examples/child_watch/Makefile
+config.status:787: creating scripts/Makefile
+config.status:787: creating docs/Makefile
+config.status:787: creating docs/images/Makefile
+config.status:787: creating docs/reference/Makefile
+config.status:787: creating docs/reference/Doxyfile
+config.status:787: creating docs/reference/beautify_docs.pl
+config.status:787: creating docs/internal/Makefile
+config.status:787: creating MSVC_Net2003/Makefile
+config.status:787: creating MSVC_Net2003/gendef/Makefile
+config.status:787: creating MSVC_Net2003/glibmm/Makefile
+config.status:787: creating MSVC_Net2003/glibmm/glibmm.rc
+config.status:787: creating MSVC_Net2003/examples/Makefile
+config.status:787: creating MSVC_Net2003/examples/dispatcher/Makefile
+config.status:787: creating MSVC_Net2003/examples/dispatcher2/Makefile
+config.status:787: creating MSVC_Net2003/examples/markup/Makefile
+config.status:787: creating MSVC_Net2003/examples/options/Makefile
+config.status:787: creating MSVC_Net2003/examples/thread/Makefile
+config.status:787: creating MSVC_Net2003/examples/thread_pool/Makefile
+config.status:787: creating MSVC_Net2003/tests/Makefile
+config.status:787: creating MSVC_Net2003/tests/glibmm_value/Makefile
+config.status:891: creating config.h
+config.status:891: creating glib/glibmmconfig.h
+config.status:1228: executing depfiles commands
+
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+
+ac_cv_build=i686-pc-linux-gnu
+ac_cv_build_alias=i686-pc-linux-gnu
+ac_cv_c_compiler_gnu=yes
+ac_cv_cxx_compiler_gnu=yes
+ac_cv_env_CC_set=
+ac_cv_env_CC_value=
+ac_cv_env_CFLAGS_set=
+ac_cv_env_CFLAGS_value=
+ac_cv_env_CPPFLAGS_set=
+ac_cv_env_CPPFLAGS_value=
+ac_cv_env_CPP_set=
+ac_cv_env_CPP_value=
+ac_cv_env_CXXCPP_set=
+ac_cv_env_CXXCPP_value=
+ac_cv_env_CXXFLAGS_set=
+ac_cv_env_CXXFLAGS_value=
+ac_cv_env_CXX_set=
+ac_cv_env_CXX_value=
+ac_cv_env_F77_set=
+ac_cv_env_F77_value=
+ac_cv_env_FFLAGS_set=
+ac_cv_env_FFLAGS_value=
+ac_cv_env_GLIBMM_CFLAGS_set=
+ac_cv_env_GLIBMM_CFLAGS_value=
+ac_cv_env_GLIBMM_LIBS_set=
+ac_cv_env_GLIBMM_LIBS_value=
+ac_cv_env_GTHREAD_CFLAGS_set=
+ac_cv_env_GTHREAD_CFLAGS_value=
+ac_cv_env_GTHREAD_LIBS_set=
+ac_cv_env_GTHREAD_LIBS_value=
+ac_cv_env_LDFLAGS_set=
+ac_cv_env_LDFLAGS_value=
+ac_cv_env_PKG_CONFIG_set=
+ac_cv_env_PKG_CONFIG_value=
+ac_cv_env_build_alias_set=
+ac_cv_env_build_alias_value=
+ac_cv_env_host_alias_set=
+ac_cv_env_host_alias_value=
+ac_cv_env_target_alias_set=
+ac_cv_env_target_alias_value=
+ac_cv_exeext=
+ac_cv_f77_compiler_gnu=no
+ac_cv_func_flockfile=yes
+ac_cv_func_funlockfile=yes
+ac_cv_func_getc_unlocked=yes
+ac_cv_func_mkfifo=yes
+ac_cv_header_dlfcn_h=yes
+ac_cv_header_inttypes_h=yes
+ac_cv_header_memory_h=yes
+ac_cv_header_stdc=yes
+ac_cv_header_stdint_h=yes
+ac_cv_header_stdlib_h=yes
+ac_cv_header_string_h=yes
+ac_cv_header_strings_h=yes
+ac_cv_header_sys_stat_h=yes
+ac_cv_header_sys_types_h=yes
+ac_cv_header_unistd_h=yes
+ac_cv_host=i686-pc-linux-gnu
+ac_cv_host_alias=i686-pc-linux-gnu
+ac_cv_objext=o
+ac_cv_path_PERL_PATH=/usr/bin/perl
+ac_cv_path_ac_pt_PKG_CONFIG=/usr/bin/pkg-config
+ac_cv_path_install='/usr/bin/install -c'
+ac_cv_prog_AWK=mawk
+ac_cv_prog_CPP='gcc -E'
+ac_cv_prog_CXXCPP='g++ -E'
+ac_cv_prog_M4=m4
+ac_cv_prog_ac_ct_AR=ar
+ac_cv_prog_ac_ct_CC=gcc
+ac_cv_prog_ac_ct_CXX=g++
+ac_cv_prog_ac_ct_RANLIB=ranlib
+ac_cv_prog_ac_ct_STRIP=strip
+ac_cv_prog_cc_g=yes
+ac_cv_prog_cc_stdc=
+ac_cv_prog_cxx_g=yes
+ac_cv_prog_egrep='grep -E'
+ac_cv_prog_f77_g=no
+ac_cv_prog_make_make_set=yes
+ac_cv_prog_sun_cxx=no
+am_cv_CC_dependencies_compiler_type=gcc3
+am_cv_CXX_dependencies_compiler_type=gcc3
+glibmm_cv_cxx_can_assign_non_extern_c_functions_to_extern_c_callbacks=yes
+glibmm_cv_cxx_can_disambiguate_const_template_specializations=yes
+glibmm_cv_cxx_can_use_dynamic_cast_in_unused_template_without_definition=yes
+glibmm_cv_cxx_can_use_namespaces_inside_externc=yes
+glibmm_cv_perl_version_5_6_0=yes
+gtkmm_cv_cxx_has_allows_static_inline_npos=yes
+gtkmm_cv_cxx_has_namespace_std=yes
+gtkmm_cv_cxx_has_std_iterator_traits=yes
+gtkmm_cv_cxx_has_sun_reverse_iterator=no
+gtkmm_cv_cxx_has_template_sequence_ctors=yes
+lt_cv_deplibs_check_method=pass_all
+lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_ld_reload_flag=-r
+lt_cv_objdir=.libs
+lt_cv_path_LD=/usr/bin/ld
+lt_cv_path_LDCXX=/usr/bin/ld
+lt_cv_path_NM='/usr/bin/nm -B'
+lt_cv_path_SED=/bin/sed
+lt_cv_prog_compiler_c_o=yes
+lt_cv_prog_compiler_c_o_CXX=yes
+lt_cv_prog_compiler_rtti_exceptions=no
+lt_cv_prog_gnu_ld=yes
+lt_cv_prog_gnu_ldcxx=yes
+lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'''
+lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (lt_ptr) 0},/p'\'' -e '\''s/^[BCDEGRST] \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr) \&\2},/p'\'''
+lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^. .* \(.*\)$/extern int \1;/p'\'''
+lt_cv_sys_max_cmd_len=32768
+lt_lt_cv_prog_compiler_c_o='"yes"'
+lt_lt_cv_prog_compiler_c_o_CXX='"yes"'
+lt_lt_cv_sys_global_symbol_pipe='"sed -n -e '\''s/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'\''"'
+lt_lt_cv_sys_global_symbol_to_c_name_address='"sed -n -e '\''s/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (lt_ptr) 0},/p'\'' -e '\''s/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (lt_ptr) \\&\\2},/p'\''"'
+lt_lt_cv_sys_global_symbol_to_cdecl='"sed -n -e '\''s/^. .* \\(.*\\)\$/extern int \\1;/p'\''"'
+pkg_cv_GLIBMM_CFLAGS='-I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include '
+pkg_cv_GLIBMM_LIBS='-Wl,--export-dynamic -lsigc-2.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 '
+pkg_cv_GTHREAD_CFLAGS='-pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include '
+pkg_cv_GTHREAD_LIBS='-pthread -lgthread-2.0 -lrt -lglib-2.0 '
+
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+
+ACLOCAL='${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run aclocal-1.9 -I ./scripts'
+AMDEPBACKSLASH='\'
+AMDEP_FALSE='#'
+AMDEP_TRUE=''
+AMTAR='${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run tar'
+AR='ar'
+AS='as'
+AUTOCONF='${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run autoconf'
+AUTOHEADER=':'
+AUTOMAKE='${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run automake-1.9'
+AWK='mawk'
+CC='gcc'
+CCDEPMODE='depmode=gcc3'
+CFLAGS='-g -O2'
+CPP='gcc -E'
+CPPFLAGS=''
+CXX='g++'
+CXXCPP='g++ -E'
+CXXDEPMODE='depmode=gcc3'
+CXXFLAGS='-g -O2 -Wall -Wno-long-long'
+CYGPATH_W='echo'
+DEFS='-DHAVE_CONFIG_H'
+DEPDIR='.deps'
+DISABLE_DEPRECATED_API_CFLAGS=''
+DISABLE_DEPRECATED_CFLAGS=''
+DLLTOOL='dlltool'
+ECHO='echo'
+ECHO_C=''
+ECHO_N='-n'
+ECHO_T=''
+EGREP='grep -E'
+EXEEXT=''
+F77=''
+FFLAGS=''
+GLIBMM_CFLAGS='-I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include '
+GLIBMM_LIBS='-Wl,--export-dynamic -lsigc-2.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 '
+GLIBMM_MAJOR_VERSION='2'
+GLIBMM_MICRO_VERSION='3'
+GLIBMM_MINOR_VERSION='13'
+GLIBMM_RELEASE='2.13'
+GLIBMM_VERSION='2.13.3'
+GTHREAD_CFLAGS='-pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include '
+GTHREAD_LIBS='-pthread -lgthread-2.0 -lrt -lglib-2.0 '
+GTKMMPROC_MERGECDOCS=''
+GTKMM_DOXYGEN_INPUT=' /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/glib/glibmm/'
+GTKMM_FALSE_FALSE=''
+GTKMM_FALSE_TRUE='#'
+INSTALL_DATA='${INSTALL} -m 644'
+INSTALL_PROGRAM='${INSTALL}'
+INSTALL_SCRIPT='${INSTALL}'
+INSTALL_STRIP_PROGRAM='${SHELL} $(install_sh) -c -s'
+LDFLAGS=''
+LIBGLIBMM_SO_VERSION='1:24:0'
+LIBOBJS=''
+LIBS=''
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+LN_S='ln -s'
+LTLIBOBJS=''
+M4='m4'
+MAINT='#'
+MAINTAINER_MODE_FALSE=''
+MAINTAINER_MODE_TRUE='#'
+MAKEINFO='${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run makeinfo'
+OBJDUMP='objdump'
+OBJEXT='o'
+OS_WIN32_FALSE=''
+OS_WIN32_TRUE='#'
+PACKAGE='glibmm'
+PACKAGE_BUGREPORT=''
+PACKAGE_NAME=''
+PACKAGE_STRING=''
+PACKAGE_TARNAME=''
+PACKAGE_VERSION=''
+PATH_SEPARATOR=':'
+PERL_PATH='/usr/bin/perl'
+PKG_CONFIG='/usr/bin/pkg-config'
+PLATFORM_WIN32_FALSE=''
+PLATFORM_WIN32_TRUE='#'
+RANLIB='ranlib'
+SET_MAKE=''
+SHELL='/bin/bash'
+STRIP='strip'
+VERSION='2.13.3'
+ac_ct_AR='ar'
+ac_ct_AS=''
+ac_ct_CC='gcc'
+ac_ct_CXX='g++'
+ac_ct_DLLTOOL=''
+ac_ct_F77=''
+ac_ct_OBJDUMP=''
+ac_ct_RANLIB='ranlib'
+ac_ct_STRIP='strip'
+ac_pt_PKG_CONFIG='/usr/bin/pkg-config'
+am__fastdepCC_FALSE='#'
+am__fastdepCC_TRUE=''
+am__fastdepCXX_FALSE='#'
+am__fastdepCXX_TRUE=''
+am__include='include'
+am__leading_dot='.'
+am__quote=''
+am__tar='${AMTAR} chof - "$$tardir"'
+am__untar='${AMTAR} xf -'
+bindir='${exec_prefix}/bin'
+build='i686-pc-linux-gnu'
+build_alias=''
+build_cpu='i686'
+build_os='linux-gnu'
+build_vendor='pc'
+datadir='${prefix}/share'
+exec_prefix='${prefix}'
+host='i686-pc-linux-gnu'
+host_alias=''
+host_cpu='i686'
+host_os='linux-gnu'
+host_vendor='pc'
+includedir='${prefix}/include'
+infodir='${prefix}/info'
+install_sh='/home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/install-sh'
+libdir='${exec_prefix}/lib'
+libexecdir='${exec_prefix}/libexec'
+localstatedir='${prefix}/var'
+mandir='${prefix}/man'
+mkdir_p='mkdir -p --'
+oldincludedir='/usr/include'
+prefix='/usr/local'
+program_transform_name='s,x,x,'
+sbindir='${exec_prefix}/sbin'
+sharedstatedir='${prefix}/com'
+sysconfdir='${prefix}/etc'
+target_alias=''
+
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+
+#define GLIBMM_CAN_ASSIGN_NON_EXTERN_C_FUNCTIONS_TO_EXTERN_C_CALLBACKS 1
+#define GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION 1
+#define GLIBMM_CAN_USE_NAMESPACES_INSIDE_EXTERNC 1
+#define GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED 1
+#define GLIBMM_EXCEPTIONS_ENABLED 1
+#define GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS 1
+#define GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS 1
+#define GLIBMM_HAVE_NAMESPACE_STD 1
+#define GLIBMM_HAVE_STD_ITERATOR_TRAITS 1
+#define GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS 1
+#define GLIBMM_MAJOR_VERSION 2
+#define GLIBMM_MEMBER_FUNCTIONS_MEMBER_TEMPLATES 1
+#define GLIBMM_MICRO_VERSION 3
+#define GLIBMM_MINOR_VERSION 13
+#define GLIBMM_PROPERTIES_ENABLED 1
+#define GLIBMM_VFUNCS_ENABLED 1
+#define HAVE_DLFCN_H 1
+#define HAVE_FLOCKFILE 1
+#define HAVE_FUNLOCKFILE 1
+#define HAVE_GETC_UNLOCKED 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_MEMORY_H 1
+#define HAVE_MKFIFO 1
+#define HAVE_STDINT_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRINGS_H 1
+#define HAVE_STRING_H 1
+#define HAVE_SYS_STAT_H 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_UNISTD_H 1
+#define PACKAGE "glibmm"
+#define PACKAGE_BUGREPORT ""
+#define PACKAGE_NAME ""
+#define PACKAGE_STRING ""
+#define PACKAGE_TARNAME ""
+#define PACKAGE_VERSION ""
+#define STDC_HEADERS 1
+#define VERSION "2.13.3"
+#endif
+#ifdef __cplusplus
+extern "C" void std::exit (int) throw (); using std::exit;
+
+configure: exit 0
diff --git a/libs/glibmm2/config.status b/libs/glibmm2/config.status
new file mode 100644
index 0000000000..443f453f22
--- /dev/null
+++ b/libs/glibmm2/config.status
@@ -0,0 +1,1319 @@
+#! /bin/bash
+# Generated by configure.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=${CONFIG_SHELL-/bin/bash}
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)$' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
+ /^X\/\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
+ # Find who we are. Look in the path if we contain no path at all
+ # relative or not.
+ case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+ ;;
+ esac
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
+ # in which case we are not to be found in the path.
+ if test "x$as_myself" = x; then
+ as_myself=$0
+ fi
+ if test ! -f "$as_myself"; then
+ { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ case $CONFIG_SHELL in
+ '')
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for as_base in sh bash ksh sh5; do
+ case $as_dir in
+ /*)
+ if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+ CONFIG_SHELL=$as_dir/$as_base
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+ fi;;
+ esac
+ done
+done
+;;
+ esac
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line before each line; the second 'sed' does the real
+ # work. The second script uses 'N' to pair each line-number line
+ # with the numbered line, and appends trailing '-' during
+ # substitution so that $LINENO is not a special case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+ sed '=' <$as_myself |
+ sed '
+ N
+ s,$,-,
+ : loop
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+ s,-$,,
+ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+ chmod +x $as_me.lineno ||
+ { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensible to this).
+ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling. Logging --version etc. is OK.
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+config_files=" Makefile glib/Makefile glib/glibmm-2.4.pc glib/src/Makefile glib/glibmm/Makefile glib/glibmm/private/Makefile tools/Makefile tools/gmmproc tools/generate_wrap_init.pl tools/m4/Makefile tools/pm/Makefile tools/extra_defs_gen/Makefile tests/Makefile tests/glibmm_value/Makefile examples/Makefile examples/markup/Makefile examples/options/Makefile examples/thread/Makefile examples/iochannel_stream/Makefile examples/child_watch/Makefile scripts/Makefile docs/Makefile docs/images/Makefile docs/reference/Makefile docs/reference/Doxyfile docs/reference/beautify_docs.pl docs/internal/Makefile MSVC_Net2003/Makefile MSVC_Net2003/gendef/Makefile MSVC_Net2003/glibmm/Makefile MSVC_Net2003/glibmm/glibmm.rc MSVC_Net2003/examples/Makefile MSVC_Net2003/examples/dispatcher/Makefile MSVC_Net2003/examples/dispatcher2/Makefile MSVC_Net2003/examples/markup/Makefile MSVC_Net2003/examples/options/Makefile MSVC_Net2003/examples/thread/Makefile MSVC_Net2003/examples/thread_pool/Makefile MSVC_Net2003/tests/Makefile MSVC_Net2003/tests/glibmm_value/Makefile"
+config_headers=" config.h glib/glibmmconfig.h"
+config_commands=" depfiles"
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf@gnu.org>."
+ac_cs_version="\
+config.status
+configured by ./configure, generated by GNU Autoconf 2.59,
+ with options \"\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=.
+INSTALL="/usr/bin/install -c"
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "x$1" : 'x\([^=]*\)='`
+ ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ -*)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ *) # This is not an option, so the user has probably given explicit
+ # arguments.
+ ac_option=$1
+ ac_need_defaults=false;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --vers* | -V )
+ echo "$ac_cs_version"; exit 0 ;;
+ --he | --h)
+ # Conflict between --help and --header
+ { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; };;
+ --help | --hel | -h )
+ echo "$ac_cs_usage"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1" ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+if $ac_cs_recheck; then
+ echo "running /bin/bash ./configure " $ac_configure_extra_args " --no-create --no-recursion" >&6
+ exec /bin/bash ./configure $ac_configure_extra_args --no-create --no-recursion
+fi
+
+#
+# INIT-COMMANDS section.
+#
+
+AMDEP_TRUE="" ac_aux_dir="scripts"
+
+for ac_config_target in $ac_config_targets
+do
+ case "$ac_config_target" in
+ # Handling of arguments.
+ "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "glib/Makefile" ) CONFIG_FILES="$CONFIG_FILES glib/Makefile" ;;
+ "glib/glibmm-2.4.pc" ) CONFIG_FILES="$CONFIG_FILES glib/glibmm-2.4.pc" ;;
+ "glib/src/Makefile" ) CONFIG_FILES="$CONFIG_FILES glib/src/Makefile" ;;
+ "glib/glibmm/Makefile" ) CONFIG_FILES="$CONFIG_FILES glib/glibmm/Makefile" ;;
+ "glib/glibmm/private/Makefile" ) CONFIG_FILES="$CONFIG_FILES glib/glibmm/private/Makefile" ;;
+ "tools/Makefile" ) CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
+ "tools/gmmproc" ) CONFIG_FILES="$CONFIG_FILES tools/gmmproc" ;;
+ "tools/generate_wrap_init.pl" ) CONFIG_FILES="$CONFIG_FILES tools/generate_wrap_init.pl" ;;
+ "tools/m4/Makefile" ) CONFIG_FILES="$CONFIG_FILES tools/m4/Makefile" ;;
+ "tools/pm/Makefile" ) CONFIG_FILES="$CONFIG_FILES tools/pm/Makefile" ;;
+ "tools/extra_defs_gen/Makefile" ) CONFIG_FILES="$CONFIG_FILES tools/extra_defs_gen/Makefile" ;;
+ "tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
+ "tests/glibmm_value/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/glibmm_value/Makefile" ;;
+ "examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
+ "examples/markup/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/markup/Makefile" ;;
+ "examples/options/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/options/Makefile" ;;
+ "examples/thread/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/thread/Makefile" ;;
+ "examples/iochannel_stream/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/iochannel_stream/Makefile" ;;
+ "examples/child_watch/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/child_watch/Makefile" ;;
+ "scripts/Makefile" ) CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;;
+ "docs/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
+ "docs/images/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/images/Makefile" ;;
+ "docs/reference/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/reference/Makefile" ;;
+ "docs/reference/Doxyfile" ) CONFIG_FILES="$CONFIG_FILES docs/reference/Doxyfile" ;;
+ "docs/reference/beautify_docs.pl" ) CONFIG_FILES="$CONFIG_FILES docs/reference/beautify_docs.pl" ;;
+ "docs/internal/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/internal/Makefile" ;;
+ "MSVC_Net2003/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/Makefile" ;;
+ "MSVC_Net2003/gendef/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/gendef/Makefile" ;;
+ "MSVC_Net2003/glibmm/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/glibmm/Makefile" ;;
+ "MSVC_Net2003/glibmm/glibmm.rc" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/glibmm/glibmm.rc" ;;
+ "MSVC_Net2003/examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/examples/Makefile" ;;
+ "MSVC_Net2003/examples/dispatcher/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/examples/dispatcher/Makefile" ;;
+ "MSVC_Net2003/examples/dispatcher2/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/examples/dispatcher2/Makefile" ;;
+ "MSVC_Net2003/examples/markup/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/examples/markup/Makefile" ;;
+ "MSVC_Net2003/examples/options/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/examples/options/Makefile" ;;
+ "MSVC_Net2003/examples/thread/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/examples/thread/Makefile" ;;
+ "MSVC_Net2003/examples/thread_pool/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/examples/thread_pool/Makefile" ;;
+ "MSVC_Net2003/tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/tests/Makefile" ;;
+ "MSVC_Net2003/tests/glibmm_value/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/tests/glibmm_value/Makefile" ;;
+ "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+ "glib/glibmmconfig.h" ) CONFIG_HEADERS="$CONFIG_HEADERS glib/glibmmconfig.h" ;;
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./confstat$$-$RANDOM
+ (umask 077 && mkdir $tmp)
+} ||
+{
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+}
+
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "$CONFIG_FILES"; then
+ # Protect against being on the right side of a sed subst in config.status.
+ sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g;
+ s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF
+s,@SHELL@,/bin/bash,;t t
+s,@PATH_SEPARATOR@,:,;t t
+s,@PACKAGE_NAME@,,;t t
+s,@PACKAGE_TARNAME@,,;t t
+s,@PACKAGE_VERSION@,,;t t
+s,@PACKAGE_STRING@,,;t t
+s,@PACKAGE_BUGREPORT@,,;t t
+s,@exec_prefix@,${prefix},;t t
+s,@prefix@,/usr/local,;t t
+s,@program_transform_name@,s,x,x,,;t t
+s,@bindir@,${exec_prefix}/bin,;t t
+s,@sbindir@,${exec_prefix}/sbin,;t t
+s,@libexecdir@,${exec_prefix}/libexec,;t t
+s,@datadir@,${prefix}/share,;t t
+s,@sysconfdir@,${prefix}/etc,;t t
+s,@sharedstatedir@,${prefix}/com,;t t
+s,@localstatedir@,${prefix}/var,;t t
+s,@libdir@,${exec_prefix}/lib,;t t
+s,@includedir@,${prefix}/include,;t t
+s,@oldincludedir@,/usr/include,;t t
+s,@infodir@,${prefix}/info,;t t
+s,@mandir@,${prefix}/man,;t t
+s,@build_alias@,,;t t
+s,@host_alias@,,;t t
+s,@target_alias@,,;t t
+s,@DEFS@,-DHAVE_CONFIG_H,;t t
+s,@ECHO_C@,,;t t
+s,@ECHO_N@,-n,;t t
+s,@ECHO_T@,,;t t
+s,@LIBS@,,;t t
+s,@GLIBMM_MAJOR_VERSION@,2,;t t
+s,@GLIBMM_MINOR_VERSION@,13,;t t
+s,@GLIBMM_MICRO_VERSION@,3,;t t
+s,@GLIBMM_VERSION@,2.13.3,;t t
+s,@GLIBMM_RELEASE@,2.13,;t t
+s,@LIBGLIBMM_SO_VERSION@,1:24:0,;t t
+s,@INSTALL_PROGRAM@,${INSTALL},;t t
+s,@INSTALL_SCRIPT@,${INSTALL},;t t
+s,@INSTALL_DATA@,${INSTALL} -m 644,;t t
+s,@CYGPATH_W@,echo,;t t
+s,@PACKAGE@,glibmm,;t t
+s,@VERSION@,2.13.3,;t t
+s,@ACLOCAL@,${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run aclocal-1.9 -I ./scripts,;t t
+s,@AUTOCONF@,${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run autoconf,;t t
+s,@AUTOMAKE@,${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run automake-1.9,;t t
+s,@AUTOHEADER@,:,;t t
+s,@MAKEINFO@,${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run makeinfo,;t t
+s,@install_sh@,/home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/install-sh,;t t
+s,@STRIP@,strip,;t t
+s,@ac_ct_STRIP@,strip,;t t
+s,@INSTALL_STRIP_PROGRAM@,${SHELL} $(install_sh) -c -s,;t t
+s,@mkdir_p@,mkdir -p --,;t t
+s,@AWK@,mawk,;t t
+s,@SET_MAKE@,,;t t
+s,@am__leading_dot@,.,;t t
+s,@AMTAR@,${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run tar,;t t
+s,@am__tar@,${AMTAR} chof - "$$tardir",;t t
+s,@am__untar@,${AMTAR} xf -,;t t
+s,@MAINTAINER_MODE_TRUE@,#,;t t
+s,@MAINTAINER_MODE_FALSE@,,;t t
+s,@MAINT@,#,;t t
+s,@CC@,gcc,;t t
+s,@CFLAGS@,-g -O2,;t t
+s,@LDFLAGS@,,;t t
+s,@CPPFLAGS@,,;t t
+s,@ac_ct_CC@,gcc,;t t
+s,@EXEEXT@,,;t t
+s,@OBJEXT@,o,;t t
+s,@DEPDIR@,.deps,;t t
+s,@am__include@,include,;t t
+s,@am__quote@,,;t t
+s,@AMDEP_TRUE@,,;t t
+s,@AMDEP_FALSE@,#,;t t
+s,@AMDEPBACKSLASH@,\,;t t
+s,@CCDEPMODE@,depmode=gcc3,;t t
+s,@am__fastdepCC_TRUE@,,;t t
+s,@am__fastdepCC_FALSE@,#,;t t
+s,@CPP@,gcc -E,;t t
+s,@build@,i686-pc-linux-gnu,;t t
+s,@build_cpu@,i686,;t t
+s,@build_vendor@,pc,;t t
+s,@build_os@,linux-gnu,;t t
+s,@host@,i686-pc-linux-gnu,;t t
+s,@host_cpu@,i686,;t t
+s,@host_vendor@,pc,;t t
+s,@host_os@,linux-gnu,;t t
+s,@PLATFORM_WIN32_TRUE@,#,;t t
+s,@PLATFORM_WIN32_FALSE@,,;t t
+s,@OS_WIN32_TRUE@,#,;t t
+s,@OS_WIN32_FALSE@,,;t t
+s,@EGREP@,grep -E,;t t
+s,@LN_S@,ln -s,;t t
+s,@ECHO@,echo,;t t
+s,@AR@,ar,;t t
+s,@ac_ct_AR@,ar,;t t
+s,@RANLIB@,ranlib,;t t
+s,@ac_ct_RANLIB@,ranlib,;t t
+s,@DLLTOOL@,dlltool,;t t
+s,@ac_ct_DLLTOOL@,,;t t
+s,@AS@,as,;t t
+s,@ac_ct_AS@,,;t t
+s,@OBJDUMP@,objdump,;t t
+s,@ac_ct_OBJDUMP@,,;t t
+s,@CXX@,g++,;t t
+s,@CXXFLAGS@,-g -O2 -Wall -Wno-long-long,;t t
+s,@ac_ct_CXX@,g++,;t t
+s,@CXXDEPMODE@,depmode=gcc3,;t t
+s,@am__fastdepCXX_TRUE@,,;t t
+s,@am__fastdepCXX_FALSE@,#,;t t
+s,@CXXCPP@,g++ -E,;t t
+s,@F77@,,;t t
+s,@FFLAGS@,,;t t
+s,@ac_ct_F77@,,;t t
+s,@LIBTOOL@,$(SHELL) $(top_builddir)/libtool,;t t
+s,@M4@,m4,;t t
+s,@PERL_PATH@,/usr/bin/perl,;t t
+s,@PKG_CONFIG@,/usr/bin/pkg-config,;t t
+s,@ac_pt_PKG_CONFIG@,/usr/bin/pkg-config,;t t
+s,@GLIBMM_CFLAGS@,-I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include ,;t t
+s,@GLIBMM_LIBS@,-Wl,--export-dynamic -lsigc-2.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 ,;t t
+s,@GTHREAD_CFLAGS@,-pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include ,;t t
+s,@GTHREAD_LIBS@,-pthread -lgthread-2.0 -lrt -lglib-2.0 ,;t t
+s,@GTKMM_DOXYGEN_INPUT@, /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/glib/glibmm/,;t t
+s,@GTKMMPROC_MERGECDOCS@,,;t t
+s,@DISABLE_DEPRECATED_CFLAGS@,,;t t
+s,@DISABLE_DEPRECATED_API_CFLAGS@,,;t t
+s,@GTKMM_FALSE_TRUE@,#,;t t
+s,@GTKMM_FALSE_FALSE@,,;t t
+s,@LIBOBJS@,,;t t
+s,@LTLIBOBJS@,,;t t
+CEOF
+
+ # Split the substitutions into bite-sized pieces for seds with
+ # small command number limits, like on Digital OSF/1 and HP-UX.
+ ac_max_sed_lines=48
+ ac_sed_frag=1 # Number of current file.
+ ac_beg=1 # First line for current file.
+ ac_end=$ac_max_sed_lines # Line after last line for current file.
+ ac_more_lines=:
+ ac_sed_cmds=
+ while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ else
+ sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ fi
+ if test ! -s $tmp/subs.frag; then
+ ac_more_lines=false
+ else
+ # The purpose of the label and of the branching condition is to
+ # speed up the sed processing (if there are no `@' at all, there
+ # is no need to browse any of the substitutions).
+ # These are the two extra sed commands mentioned above.
+ (echo ':t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+ fi
+ ac_sed_frag=`expr $ac_sed_frag + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_lines`
+ fi
+ done
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+ fi
+fi # test -n "$CONFIG_FILES"
+
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+ esac
+
+ if test x"$ac_file" != x-; then
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ rm -f "$ac_file"
+ fi
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ configure_input=
+ else
+ configure_input="$ac_file. "
+ fi
+ configure_input=$configure_input"Generated from `echo $ac_file_in |
+ sed 's,.*/,,'` by configure."
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+ sed "/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[ ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[ ]*$//;
+}
+
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@abs_srcdir@,$ac_abs_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s,@builddir@,$ac_builddir,;t t
+s,@abs_builddir@,$ac_abs_builddir,;t t
+s,@top_builddir@,$ac_top_builddir,;t t
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+s,@INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+ rm -f $tmp/stdin
+ if test x"$ac_file" != x-; then
+ mv $tmp/out $ac_file
+ else
+ cat $tmp/out
+ rm -f $tmp/out
+ fi
+
+done
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='[ ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ # Do quote $f, to prevent DOS paths from being IFS'd.
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+ # Remove the trailing spaces.
+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+
+ # Handle all the #define templates only if necessary.
+ if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then
+ # If there are no defines, we may have an empty if/fi
+ :
+ cat >$tmp/defines.sed <<CEOF
+/^[ ]*#[ ]*define/!b
+t clr
+: clr
+${ac_dA}PACKAGE_NAME${ac_dB}PACKAGE_NAME${ac_dC}""${ac_dD}
+${ac_dA}PACKAGE_TARNAME${ac_dB}PACKAGE_TARNAME${ac_dC}""${ac_dD}
+${ac_dA}PACKAGE_VERSION${ac_dB}PACKAGE_VERSION${ac_dC}""${ac_dD}
+${ac_dA}PACKAGE_STRING${ac_dB}PACKAGE_STRING${ac_dC}""${ac_dD}
+${ac_dA}PACKAGE_BUGREPORT${ac_dB}PACKAGE_BUGREPORT${ac_dC}""${ac_dD}
+${ac_dA}GLIBMM_MAJOR_VERSION${ac_dB}GLIBMM_MAJOR_VERSION${ac_dC}2${ac_dD}
+${ac_dA}GLIBMM_MINOR_VERSION${ac_dB}GLIBMM_MINOR_VERSION${ac_dC}13${ac_dD}
+${ac_dA}GLIBMM_MICRO_VERSION${ac_dB}GLIBMM_MICRO_VERSION${ac_dC}3${ac_dD}
+${ac_dA}PACKAGE${ac_dB}PACKAGE${ac_dC}"glibmm"${ac_dD}
+${ac_dA}VERSION${ac_dB}VERSION${ac_dC}"2.13.3"${ac_dD}
+${ac_dA}STDC_HEADERS${ac_dB}STDC_HEADERS${ac_dC}1${ac_dD}
+${ac_dA}HAVE_SYS_TYPES_H${ac_dB}HAVE_SYS_TYPES_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_SYS_STAT_H${ac_dB}HAVE_SYS_STAT_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_STDLIB_H${ac_dB}HAVE_STDLIB_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_STRING_H${ac_dB}HAVE_STRING_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_MEMORY_H${ac_dB}HAVE_MEMORY_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_STRINGS_H${ac_dB}HAVE_STRINGS_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_INTTYPES_H${ac_dB}HAVE_INTTYPES_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_STDINT_H${ac_dB}HAVE_STDINT_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_UNISTD_H${ac_dB}HAVE_UNISTD_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_DLFCN_H${ac_dB}HAVE_DLFCN_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_FLOCKFILE${ac_dB}HAVE_FLOCKFILE${ac_dC}1${ac_dD}
+${ac_dA}HAVE_FUNLOCKFILE${ac_dB}HAVE_FUNLOCKFILE${ac_dC}1${ac_dD}
+${ac_dA}HAVE_GETC_UNLOCKED${ac_dB}HAVE_GETC_UNLOCKED${ac_dC}1${ac_dD}
+${ac_dA}HAVE_MKFIFO${ac_dB}HAVE_MKFIFO${ac_dC}1${ac_dD}
+${ac_dA}GLIBMM_HAVE_NAMESPACE_STD${ac_dB}GLIBMM_HAVE_NAMESPACE_STD${ac_dC}1${ac_dD}
+${ac_dA}GLIBMM_HAVE_STD_ITERATOR_TRAITS${ac_dB}GLIBMM_HAVE_STD_ITERATOR_TRAITS${ac_dC}1${ac_dD}
+${ac_dA}GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS${ac_dB}GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS${ac_dC}1${ac_dD}
+${ac_dA}GLIBMM_MEMBER_FUNCTIONS_MEMBER_TEMPLATES${ac_dB}GLIBMM_MEMBER_FUNCTIONS_MEMBER_TEMPLATES${ac_dC}1${ac_dD}
+${ac_dA}GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS${ac_dB}GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS${ac_dC}1${ac_dD}
+${ac_dA}GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION${ac_dB}GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION${ac_dC}1${ac_dD}
+${ac_dA}GLIBMM_CAN_ASSIGN_NON_EXTERN_C_FUNCTIONS_TO_EXTERN_C_CALLBACKS${ac_dB}GLIBMM_CAN_ASSIGN_NON_EXTERN_C_FUNCTIONS_TO_EXTERN_C_CALLBACKS${ac_dC}1${ac_dD}
+${ac_dA}GLIBMM_CAN_USE_NAMESPACES_INSIDE_EXTERNC${ac_dB}GLIBMM_CAN_USE_NAMESPACES_INSIDE_EXTERNC${ac_dC}1${ac_dD}
+${ac_dA}GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS${ac_dB}GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS${ac_dC}1${ac_dD}
+${ac_dA}GLIBMM_EXCEPTIONS_ENABLED${ac_dB}GLIBMM_EXCEPTIONS_ENABLED${ac_dC}1${ac_dD}
+${ac_dA}GLIBMM_PROPERTIES_ENABLED${ac_dB}GLIBMM_PROPERTIES_ENABLED${ac_dC}1${ac_dD}
+${ac_dA}GLIBMM_VFUNCS_ENABLED${ac_dB}GLIBMM_VFUNCS_ENABLED${ac_dC}1${ac_dD}
+${ac_dA}GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED${ac_dB}GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED${ac_dC}1${ac_dD}
+CEOF
+ sed -f $tmp/defines.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+
+ fi # grep
+
+ # Handle all the #undef templates
+ cat >$tmp/undefs.sed <<CEOF
+/^[ ]*#[ ]*undef/!b
+t clr
+: clr
+${ac_uA}PACKAGE_NAME${ac_uB}PACKAGE_NAME${ac_uC}""${ac_uD}
+${ac_uA}PACKAGE_TARNAME${ac_uB}PACKAGE_TARNAME${ac_uC}""${ac_uD}
+${ac_uA}PACKAGE_VERSION${ac_uB}PACKAGE_VERSION${ac_uC}""${ac_uD}
+${ac_uA}PACKAGE_STRING${ac_uB}PACKAGE_STRING${ac_uC}""${ac_uD}
+${ac_uA}PACKAGE_BUGREPORT${ac_uB}PACKAGE_BUGREPORT${ac_uC}""${ac_uD}
+${ac_uA}GLIBMM_MAJOR_VERSION${ac_uB}GLIBMM_MAJOR_VERSION${ac_uC}2${ac_uD}
+${ac_uA}GLIBMM_MINOR_VERSION${ac_uB}GLIBMM_MINOR_VERSION${ac_uC}13${ac_uD}
+${ac_uA}GLIBMM_MICRO_VERSION${ac_uB}GLIBMM_MICRO_VERSION${ac_uC}3${ac_uD}
+${ac_uA}PACKAGE${ac_uB}PACKAGE${ac_uC}"glibmm"${ac_uD}
+${ac_uA}VERSION${ac_uB}VERSION${ac_uC}"2.13.3"${ac_uD}
+${ac_uA}STDC_HEADERS${ac_uB}STDC_HEADERS${ac_uC}1${ac_uD}
+${ac_uA}HAVE_SYS_TYPES_H${ac_uB}HAVE_SYS_TYPES_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_SYS_STAT_H${ac_uB}HAVE_SYS_STAT_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_STDLIB_H${ac_uB}HAVE_STDLIB_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_STRING_H${ac_uB}HAVE_STRING_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_MEMORY_H${ac_uB}HAVE_MEMORY_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_STRINGS_H${ac_uB}HAVE_STRINGS_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_INTTYPES_H${ac_uB}HAVE_INTTYPES_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_STDINT_H${ac_uB}HAVE_STDINT_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_UNISTD_H${ac_uB}HAVE_UNISTD_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_DLFCN_H${ac_uB}HAVE_DLFCN_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_FLOCKFILE${ac_uB}HAVE_FLOCKFILE${ac_uC}1${ac_uD}
+${ac_uA}HAVE_FUNLOCKFILE${ac_uB}HAVE_FUNLOCKFILE${ac_uC}1${ac_uD}
+${ac_uA}HAVE_GETC_UNLOCKED${ac_uB}HAVE_GETC_UNLOCKED${ac_uC}1${ac_uD}
+${ac_uA}HAVE_MKFIFO${ac_uB}HAVE_MKFIFO${ac_uC}1${ac_uD}
+${ac_uA}GLIBMM_HAVE_NAMESPACE_STD${ac_uB}GLIBMM_HAVE_NAMESPACE_STD${ac_uC}1${ac_uD}
+${ac_uA}GLIBMM_HAVE_STD_ITERATOR_TRAITS${ac_uB}GLIBMM_HAVE_STD_ITERATOR_TRAITS${ac_uC}1${ac_uD}
+${ac_uA}GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS${ac_uB}GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS${ac_uC}1${ac_uD}
+${ac_uA}GLIBMM_MEMBER_FUNCTIONS_MEMBER_TEMPLATES${ac_uB}GLIBMM_MEMBER_FUNCTIONS_MEMBER_TEMPLATES${ac_uC}1${ac_uD}
+${ac_uA}GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS${ac_uB}GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS${ac_uC}1${ac_uD}
+${ac_uA}GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION${ac_uB}GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION${ac_uC}1${ac_uD}
+${ac_uA}GLIBMM_CAN_ASSIGN_NON_EXTERN_C_FUNCTIONS_TO_EXTERN_C_CALLBACKS${ac_uB}GLIBMM_CAN_ASSIGN_NON_EXTERN_C_FUNCTIONS_TO_EXTERN_C_CALLBACKS${ac_uC}1${ac_uD}
+${ac_uA}GLIBMM_CAN_USE_NAMESPACES_INSIDE_EXTERNC${ac_uB}GLIBMM_CAN_USE_NAMESPACES_INSIDE_EXTERNC${ac_uC}1${ac_uD}
+${ac_uA}GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS${ac_uB}GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS${ac_uC}1${ac_uD}
+${ac_uA}GLIBMM_EXCEPTIONS_ENABLED${ac_uB}GLIBMM_EXCEPTIONS_ENABLED${ac_uC}1${ac_uD}
+${ac_uA}GLIBMM_PROPERTIES_ENABLED${ac_uB}GLIBMM_PROPERTIES_ENABLED${ac_uC}1${ac_uD}
+${ac_uA}GLIBMM_VFUNCS_ENABLED${ac_uB}GLIBMM_VFUNCS_ENABLED${ac_uC}1${ac_uD}
+${ac_uA}GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED${ac_uB}GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED${ac_uC}1${ac_uD}
+CEOF
+ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+
+ cat >$tmp/undefs.sed <<CEOF
+/^[ ]*#[ ]*undef/!b
+t clr
+: clr
+s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+CEOF
+ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ echo "/* Generated by configure. */" >$tmp/config.h
+ else
+ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
+ fi
+ cat $tmp/in >>$tmp/config.h
+ rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ rm -f $ac_file
+ mv $tmp/config.h $ac_file
+ fi
+ else
+ cat $tmp/config.h
+ rm -f $tmp/config.h
+ fi
+# Compute $ac_file's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $ac_file | $ac_file:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
+$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X$ac_file : 'X\(//\)[^/]' \| \
+ X$ac_file : 'X\(//\)$' \| \
+ X$ac_file : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X$ac_file |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
+done
+
+#
+# CONFIG_COMMANDS section.
+#
+for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+ ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+ ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
+$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_dest" : 'X\(//\)[^/]' \| \
+ X"$ac_dest" : 'X\(//\)$' \| \
+ X"$ac_dest" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_dest" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+
+ { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
+echo "$as_me: executing $ac_dest commands" >&6;}
+ case $ac_dest in
+ depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # So let's grep whole file.
+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+ dirpart=`(dirname "$mf") 2>/dev/null ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`(dirname "$file") 2>/dev/null ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p $dirpart/$fdir
+ else
+ as_dir=$dirpart/$fdir
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
+echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+done
+ ;;
+ esac
+done
+
+{ (exit 0); exit 0; }
diff --git a/libs/glibmm2/configure b/libs/glibmm2/configure
new file mode 100644
index 0000000000..fe22ab05df
--- /dev/null
+++ b/libs/glibmm2/configure
@@ -0,0 +1,23012 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.59.
+#
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)$' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
+ /^X\/\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
+ # Find who we are. Look in the path if we contain no path at all
+ # relative or not.
+ case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+ ;;
+ esac
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
+ # in which case we are not to be found in the path.
+ if test "x$as_myself" = x; then
+ as_myself=$0
+ fi
+ if test ! -f "$as_myself"; then
+ { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+ { (exit 1); exit 1; }; }
+ fi
+ case $CONFIG_SHELL in
+ '')
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for as_base in sh bash ksh sh5; do
+ case $as_dir in
+ /*)
+ if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+ CONFIG_SHELL=$as_dir/$as_base
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+ fi;;
+ esac
+ done
+done
+;;
+ esac
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line before each line; the second 'sed' does the real
+ # work. The second script uses 'N' to pair each line-number line
+ # with the numbered line, and appends trailing '-' during
+ # substitution so that $LINENO is not a special case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+ sed '=' <$as_myself |
+ sed '
+ N
+ s,$,-,
+ : loop
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+ s,-$,,
+ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+ chmod +x $as_me.lineno ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensible to this).
+ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
+ ;;
+esac
+
+echo=${ECHO-echo}
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+ echo_test_string=`eval $cmd` &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+ fi
+ done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$echo" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ echo='print -r'
+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+ else
+ # Try using printf.
+ echo='printf %s\n'
+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ echo="$CONFIG_SHELL $0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$CONFIG_SHELL $0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "$0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ echo=echo
+ fi
+ fi
+ fi
+ fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+ ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+tagnames=${tagnames+${tagnames},}CXX
+
+tagnames=${tagnames+${tagnames},}F77
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_config_libobj_dir=.
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete. It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+
+ac_unique_file="glib/glibmmconfig.h.in"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+# include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS GLIBMM_MAJOR_VERSION GLIBMM_MINOR_VERSION GLIBMM_MICRO_VERSION GLIBMM_VERSION GLIBMM_RELEASE LIBGLIBMM_SO_VERSION INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP build build_cpu build_vendor build_os host host_cpu host_vendor host_os PLATFORM_WIN32_TRUE PLATFORM_WIN32_FALSE OS_WIN32_TRUE OS_WIN32_FALSE EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL M4 PERL_PATH PKG_CONFIG ac_pt_PKG_CONFIG GLIBMM_CFLAGS GLIBMM_LIBS GTHREAD_CFLAGS GTHREAD_LIBS GTKMM_DOXYGEN_INPUT GTKMMPROC_MERGECDOCS DISABLE_DEPRECATED_CFLAGS DISABLE_DEPRECATED_API_CFLAGS GTKMM_FALSE_TRUE GTKMM_FALSE_FALSE LIBOBJS LTLIBOBJS'
+ac_subst_files=''
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+ac_prev=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval "$ac_prev=\$ac_option"
+ ac_prev=
+ continue
+ fi
+
+ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_option in
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+ | --da=*)
+ datadir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ eval "enable_$ac_feature=no" ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ case $ac_option in
+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "enable_$ac_feature='$ac_optarg'" ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst \
+ | --locals | --local | --loca | --loc | --lo)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ case $ac_option in
+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "with_$ac_package='$ac_optarg'" ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package | sed 's/-/_/g'`
+ eval "with_$ac_package=no" ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; }
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+ ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+ eval "$ac_envvar='$ac_optarg'"
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ { echo "$as_me: error: missing argument to $ac_option" >&2
+ { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+ localstatedir libdir includedir oldincludedir infodir mandir
+do
+ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) ;;
+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then its parent.
+ ac_confdir=`(dirname "$0") 2>/dev/null ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$0" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r $srcdir/$ac_unique_file; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+ if test "$ac_srcdir_defaulted" = yes; then
+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+ { (exit 1); exit 1; }; }
+ else
+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+ { (exit 1); exit 1; }; }
+ fi
+fi
+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+ { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+ { (exit 1); exit 1; }; }
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_CC_set=${CC+set}
+ac_env_CC_value=$CC
+ac_cv_env_CC_set=${CC+set}
+ac_cv_env_CC_value=$CC
+ac_env_CFLAGS_set=${CFLAGS+set}
+ac_env_CFLAGS_value=$CFLAGS
+ac_cv_env_CFLAGS_set=${CFLAGS+set}
+ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+ac_env_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
+ac_env_CXX_set=${CXX+set}
+ac_env_CXX_value=$CXX
+ac_cv_env_CXX_set=${CXX+set}
+ac_cv_env_CXX_value=$CXX
+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_env_CXXFLAGS_value=$CXXFLAGS
+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
+ac_env_CXXCPP_set=${CXXCPP+set}
+ac_env_CXXCPP_value=$CXXCPP
+ac_cv_env_CXXCPP_set=${CXXCPP+set}
+ac_cv_env_CXXCPP_value=$CXXCPP
+ac_env_F77_set=${F77+set}
+ac_env_F77_value=$F77
+ac_cv_env_F77_set=${F77+set}
+ac_cv_env_F77_value=$F77
+ac_env_FFLAGS_set=${FFLAGS+set}
+ac_env_FFLAGS_value=$FFLAGS
+ac_cv_env_FFLAGS_set=${FFLAGS+set}
+ac_cv_env_FFLAGS_value=$FFLAGS
+ac_env_PKG_CONFIG_set=${PKG_CONFIG+set}
+ac_env_PKG_CONFIG_value=$PKG_CONFIG
+ac_cv_env_PKG_CONFIG_set=${PKG_CONFIG+set}
+ac_cv_env_PKG_CONFIG_value=$PKG_CONFIG
+ac_env_GLIBMM_CFLAGS_set=${GLIBMM_CFLAGS+set}
+ac_env_GLIBMM_CFLAGS_value=$GLIBMM_CFLAGS
+ac_cv_env_GLIBMM_CFLAGS_set=${GLIBMM_CFLAGS+set}
+ac_cv_env_GLIBMM_CFLAGS_value=$GLIBMM_CFLAGS
+ac_env_GLIBMM_LIBS_set=${GLIBMM_LIBS+set}
+ac_env_GLIBMM_LIBS_value=$GLIBMM_LIBS
+ac_cv_env_GLIBMM_LIBS_set=${GLIBMM_LIBS+set}
+ac_cv_env_GLIBMM_LIBS_value=$GLIBMM_LIBS
+ac_env_GTHREAD_CFLAGS_set=${GTHREAD_CFLAGS+set}
+ac_env_GTHREAD_CFLAGS_value=$GTHREAD_CFLAGS
+ac_cv_env_GTHREAD_CFLAGS_set=${GTHREAD_CFLAGS+set}
+ac_cv_env_GTHREAD_CFLAGS_value=$GTHREAD_CFLAGS
+ac_env_GTHREAD_LIBS_set=${GTHREAD_LIBS+set}
+ac_env_GTHREAD_LIBS_value=$GTHREAD_LIBS
+ac_cv_env_GTHREAD_LIBS_set=${GTHREAD_LIBS+set}
+ac_cv_env_GTHREAD_LIBS_value=$GTHREAD_LIBS
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+_ACEOF
+
+ cat <<_ACEOF
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --datadir=DIR read-only architecture-independent data [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --infodir=DIR info documentation [PREFIX/info]
+ --mandir=DIR man documentation [PREFIX/man]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --enable-static[=PKGS]
+ build static libraries [default=no]
+ --enable-shared[=PKGS]
+ build shared libraries [default=yes]
+ --enable-fast-install[=PKGS]
+ optimize for fast installation [default=yes]
+ --disable-libtool-lock avoid locking (might break parallel builds)
+ --enable-fulldocs Generate fully-documented reference docs, takes
+ longer to build. [default=enabled for CVS builds]
+ --enable-debug-refcounting Print a debug message on every ref/unref.
+ [default=disabled]
+ --enable-warnings=[none|minimum|maximum|hardcore]
+ Control compiler pickyness. [default=minimum]
+ --enable-use-deprecations
+ warn about deprecated usages [default=no]
+ --enable-deprecated-api Include (build) deprecated API in the libraries.
+ [default=yes]
+ --enable-api-exceptions Build exceptions API.
+ [default=yes]
+ --enable-api-properties Build properties API.
+ [default=yes]
+ --enable-api-vfuncs Build vfuncs API.
+ [default=yes]
+ --enable-api-default-signal-handlers Build default signal handlers API.
+ [default=yes]
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-tags[=TAGS]
+ include additional configurations [automatic]
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
+ headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
+ CXXCPP C++ preprocessor
+ F77 Fortran 77 compiler command
+ FFLAGS Fortran 77 compiler flags
+ PKG_CONFIG path to pkg-config utility
+ GLIBMM_CFLAGS
+ C compiler flags for GLIBMM, overriding pkg-config
+ GLIBMM_LIBS linker flags for GLIBMM, overriding pkg-config
+ GTHREAD_CFLAGS
+ C compiler flags for GTHREAD, overriding pkg-config
+ GTHREAD_LIBS
+ linker flags for GTHREAD, overriding pkg-config
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+_ACEOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ ac_popdir=`pwd`
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d $ac_dir || continue
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+ cd $ac_dir
+ # Check for guested configure; otherwise get Cygnus style configure.
+ if test -f $ac_srcdir/configure.gnu; then
+ echo
+ $SHELL $ac_srcdir/configure.gnu --help=recursive
+ elif test -f $ac_srcdir/configure; then
+ echo
+ $SHELL $ac_srcdir/configure --help=recursive
+ elif test -f $ac_srcdir/configure.ac ||
+ test -f $ac_srcdir/configure.in; then
+ echo
+ $ac_configure --help
+ else
+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi
+ cd $ac_popdir
+ done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+ cat <<\_ACEOF
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit 0
+fi
+exec 5>config.log
+cat >&5 <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ echo "PATH: $as_dir"
+done
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_sep=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+ 2)
+ ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+ # Get rid of the leading space.
+ ac_sep=" "
+ ;;
+ esac
+ done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Be sure not to use single quotes in there, as some shells,
+# such as our DU 5.0 friend, will then `close' the trap.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+{
+ (set) 2>&1 |
+ case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ sed -n \
+ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+ ;;
+ *)
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+}
+ echo
+
+ cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=$`echo $ac_var`
+ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+## ------------- ##
+## Output files. ##
+## ------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=$`echo $ac_var`
+ echo "$ac_var='"'"'$ac_val'"'"'"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+ echo
+ sed "/^$/d" confdefs.h | sort
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ echo "$as_me: caught signal $ac_signal"
+ echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core &&
+ rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+ ' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+ if test "x$prefix" != xNONE; then
+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+ else
+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+ fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+ if test -r "$ac_site_file"; then
+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special
+ # files actually), so we avoid doing that.
+ if test -f "$cache_file"; then
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . $cache_file;;
+ *) . ./$cache_file;;
+ esac
+ fi
+else
+ { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+ sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+ eval ac_new_val="\$ac_env_${ac_var}_value"
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
+echo "$as_me: former value: $ac_old_val" >&2;}
+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
+echo "$as_me: current value: $ac_new_val" >&2;}
+ ac_cache_corrupted=:
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+ ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#########################################################################
+# Version and initialization
+#########################################################################
+GLIBMM_MAJOR_VERSION=2
+GLIBMM_MINOR_VERSION=13
+GLIBMM_MICRO_VERSION=3
+GLIBMM_VERSION=$GLIBMM_MAJOR_VERSION.$GLIBMM_MINOR_VERSION.$GLIBMM_MICRO_VERSION
+GLIBMM_RELEASE=$GLIBMM_MAJOR_VERSION.$GLIBMM_MINOR_VERSION
+
+cat >>confdefs.h <<_ACEOF
+#define GLIBMM_MAJOR_VERSION $GLIBMM_MAJOR_VERSION
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define GLIBMM_MINOR_VERSION $GLIBMM_MINOR_VERSION
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define GLIBMM_MICRO_VERSION $GLIBMM_MICRO_VERSION
+_ACEOF
+
+
+
+
+
+
+
+#
+# +1 : ? : +1 == new interface that does not break old one
+# +1 : ? : 0 == new interface that breaks old one
+# ? : ? : 0 == no new interfaces, but breaks apps
+# ? :+1 : ? == just some internal changes, nothing breaks but might work
+# better
+# CURRENT : REVISION : AGE
+LIBGLIBMM_SO_VERSION=1:24:0
+
+
+ac_aux_dir=
+for ac_dir in scripts $srcdir/scripts; do
+ if test -f $ac_dir/install-sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f $ac_dir/install.sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f $ac_dir/shtool; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in scripts $srcdir/scripts" >&5
+echo "$as_me: error: cannot find install-sh or install.sh in scripts $srcdir/scripts" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+
+VERSION=$GLIBMM_VERSION
+PACKAGE=glibmm
+
+am__api_version="1.9"
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+ ./ | .// | /cC/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+done
+
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. We don't cache a
+ # path for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the path is relative.
+ INSTALL=$ac_install_sh
+ fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&5
+echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+test "$program_prefix" != NONE &&
+ program_transform_name="s,^,$program_prefix,;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s,\$,$program_suffix,;$program_transform_name"
+# Double any \ or $. echo might interpret backslashes.
+# By default was `s,x,x', remove it if useless.
+cat <<\_ACEOF >conftest.sed
+s/[\\$]/&&/g;s/;s,x,x,$//
+_ACEOF
+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+rm conftest.sed
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ # We used to keeping the `.' as first argument, in order to
+ # allow $(mkdir_p) to be used without argument. As in
+ # $(mkdir_p) $(somedir)
+ # where $(somedir) is conditionally defined. However this is wrong
+ # for two reasons:
+ # 1. if the package is installed by a user who cannot write `.'
+ # make install will fail,
+ # 2. the above comment should most certainly read
+ # $(mkdir_p) $(DESTDIR)$(somedir)
+ # so it does not work when $(somedir) is undefined and
+ # $(DESTDIR) is not.
+ # To support the latter case, we have to write
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+ # so the `.' trick is pointless.
+ mkdir_p='mkdir -p --'
+else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ for d in ./-p ./--version;
+ do
+ test -d $d && rmdir $d
+ done
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
+ mkdir_p='$(mkinstalldirs)'
+ else
+ mkdir_p='$(install_sh) -d'
+ fi
+fi
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AWK+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$AWK" && break
+done
+
+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.make <<\_ACEOF
+all:
+ @echo 'ac_maketemp="$(MAKE)"'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+ eval ac_cv_prog_make_${ac_make}_set=yes
+else
+ eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ SET_MAKE=
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+ test -f $srcdir/config.status; then
+ { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE=$PACKAGE
+ VERSION=$VERSION
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ STRIP=$ac_ct_STRIP
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+
+ ac_config_headers="$ac_config_headers config.h glib/glibmmconfig.h"
+
+echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
+ # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then
+ enableval="$enable_maintainer_mode"
+ USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=no
+fi;
+ echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
+echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
+
+
+if test $USE_MAINTAINER_MODE = yes; then
+ MAINTAINER_MODE_TRUE=
+ MAINTAINER_MODE_FALSE='#'
+else
+ MAINTAINER_MODE_TRUE='#'
+ MAINTAINER_MODE_FALSE=
+fi
+
+ MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+ test "x$ACLOCAL_FLAGS" = "x" || ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+ for dir in scripts
+ do
+ ACLOCAL="$ACLOCAL -I $srcdir/$dir"
+ done
+
+
+
+#########################################################################
+# Configure arguments
+#########################################################################
+
+#########################################################################
+# Environment Checks
+#########################################################################
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ CC=$ac_ct_CC
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ CC=$ac_ct_CC
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_CC" && break
+done
+
+ CC=$ac_ct_CC
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+ "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+ (eval $ac_link_default) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Find the output, starting from the most likely. This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+
+# Be careful to initialize this variable, since it used to be cached.
+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+ac_cv_exeext=
+# b.out is created by i960 compilers.
+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+ ;;
+ conftest.$ac_ext )
+ # This is the source file.
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ # FIXME: I believe we export ac_cv_exeext for Libtool,
+ # but it would be cool to find out if it's true. Does anybody
+ # maintain Libtool? --akim.
+ export ac_cv_exeext
+ break;;
+ * )
+ break;;
+ esac
+done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ fi
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cc_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cc_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std1 is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std1. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX -qlanglvl=ansi
+# Ultrix and OSF/1 -std1
+# HP-UX 10.20 and later -Ae
+# HP-UX older versions -Aa -D_HPUX_SOURCE
+# SVR4 -Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+ x|xno)
+ echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+ *)
+ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+ CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+# Some people use a C++ compiler to compile C. Since we use `exit',
+# in C++ we need to declare it. In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+ choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ for ac_declaration in \
+ '' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+fi
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+ ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+ am__include=include
+ am__quote=
+ _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ fi
+fi
+
+
+echo "$as_me:$LINENO: result: $_am_result" >&5
+echo "${ECHO_T}$_am_result" >&6
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+ enableval="$enable_dependency_tracking"
+
+fi;
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+
+
+if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+
+
+depcc="$CC" am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+
+
+if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if test "${ac_cv_prog_CPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.make <<\_ACEOF
+all:
+ @echo 'ac_maketemp="$(MAKE)"'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+ eval ac_cv_prog_make_${ac_make}_set=yes
+else
+ eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ SET_MAKE=
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+ { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+ { (exit 1); exit 1; }; }
+
+echo "$as_me:$LINENO: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6
+if test "${ac_cv_build+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_build_alias=$build_alias
+test -z "$ac_cv_build_alias" &&
+ ac_cv_build_alias=`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+ { (exit 1); exit 1; }; }
+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+ { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6
+build=$ac_cv_build
+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+echo "$as_me:$LINENO: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6
+if test "${ac_cv_host+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_host_alias=$host_alias
+test -z "$ac_cv_host_alias" &&
+ ac_cv_host_alias=$ac_cv_build_alias
+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+ { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6
+host=$ac_cv_host
+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+
+echo "$as_me:$LINENO: checking for some Win32 platform" >&5
+echo $ECHO_N "checking for some Win32 platform... $ECHO_C" >&6
+case "$host" in
+ *-*-mingw*|*-*-cygwin*)
+ platform_win32=yes
+ ;;
+ *)
+ platform_win32=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $platform_win32" >&5
+echo "${ECHO_T}$platform_win32" >&6
+
+
+if test "$platform_win32" = "yes"; then
+ PLATFORM_WIN32_TRUE=
+ PLATFORM_WIN32_FALSE='#'
+else
+ PLATFORM_WIN32_TRUE='#'
+ PLATFORM_WIN32_FALSE=
+fi
+
+
+echo "$as_me:$LINENO: checking for native Win32" >&5
+echo $ECHO_N "checking for native Win32... $ECHO_C" >&6
+case "$host" in
+ *-*-mingw*)
+ os_win32=yes
+ ;;
+ *)
+ os_win32=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $os_win32" >&5
+echo "${ECHO_T}$os_win32" >&6
+
+
+if test "$os_win32" = "yes"; then
+ OS_WIN32_TRUE=
+ OS_WIN32_FALSE='#'
+else
+ OS_WIN32_TRUE='#'
+ OS_WIN32_FALSE=
+fi
+
+
+# Check whether --enable-static or --disable-static was given.
+if test "${enable_static+set}" = set; then
+ enableval="$enable_static"
+ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_static=no
+fi;
+
+
+
+
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+ enableval="$enable_shared"
+ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_shared=yes
+fi;
+
+# Check whether --enable-fast-install or --disable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+ enableval="$enable_fast_install"
+ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_fast_install=yes
+fi;
+
+echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
+if test "${lt_cv_path_SED+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for lt_ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+ fi
+ done
+ done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+ test ! -f $lt_ac_sed && continue
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+ # Check for GNU sed and select it if it is found.
+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+ lt_cv_path_SED=$lt_ac_sed
+ break
+ fi
+ while true; do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo >>conftest.nl
+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+ cmp -s conftest.out conftest.nl || break
+ # 10000 chars as input seems more than enough
+ test $lt_ac_count -gt 10 && break
+ lt_ac_count=`expr $lt_ac_count + 1`
+ if test $lt_ac_count -gt $lt_ac_max; then
+ lt_ac_max=$lt_ac_count
+ lt_cv_path_SED=$lt_ac_sed
+ fi
+ done
+done
+
+fi
+
+SED=$lt_cv_path_SED
+echo "$as_me:$LINENO: result: $SED" >&5
+echo "${ECHO_T}$SED" >&6
+
+echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+if test "${ac_cv_prog_egrep+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+ EGREP=$ac_cv_prog_egrep
+
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+ withval="$with_gnu_ld"
+ test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_ld_reload_flag='-r'
+fi
+echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
+if test "${lt_cv_path_NM+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+echo "${ECHO_T}$lt_cv_path_NM" >&6
+NM="$lt_cv_path_NM"
+
+echo "$as_me:$LINENO: checking whether ln -s works" >&5
+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+ echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6
+fi
+
+echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[45]*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | kfreebsd*-gnu | dragonfly*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix3*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+nto-qnx*)
+ lt_cv_deplibs_check_method=unknown
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+ enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '#line 4107 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ lt_cv_cc_needs_belf=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+lt_cv_cc_needs_belf=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+sparc*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ *) LD="${LD-ld} -64" ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_DLLTOOL+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$DLLTOOL"; then
+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+ echo "$as_me:$LINENO: result: $DLLTOOL" >&5
+echo "${ECHO_T}$DLLTOOL" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+ ac_ct_DLLTOOL=$DLLTOOL
+ # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_DLLTOOL"; then
+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_DLLTOOL" && ac_cv_prog_ac_ct_DLLTOOL="false"
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+ echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5
+echo "${ECHO_T}$ac_ct_DLLTOOL" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ DLLTOOL=$ac_ct_DLLTOOL
+else
+ DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
+set dummy ${ac_tool_prefix}as; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AS+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$AS"; then
+ ac_cv_prog_AS="$AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AS="${ac_tool_prefix}as"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+AS=$ac_cv_prog_AS
+if test -n "$AS"; then
+ echo "$as_me:$LINENO: result: $AS" >&5
+echo "${ECHO_T}$AS" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_AS"; then
+ ac_ct_AS=$AS
+ # Extract the first word of "as", so it can be a program name with args.
+set dummy as; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_AS+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_AS"; then
+ ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AS="as"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_AS" && ac_cv_prog_ac_ct_AS="false"
+fi
+fi
+ac_ct_AS=$ac_cv_prog_ac_ct_AS
+if test -n "$ac_ct_AS"; then
+ echo "$as_me:$LINENO: result: $ac_ct_AS" >&5
+echo "${ECHO_T}$ac_ct_AS" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ AS=$ac_ct_AS
+else
+ AS="$ac_cv_prog_AS"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_OBJDUMP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$OBJDUMP"; then
+ ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+ echo "$as_me:$LINENO: result: $OBJDUMP" >&5
+echo "${ECHO_T}$OBJDUMP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+ ac_ct_OBJDUMP=$OBJDUMP
+ # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_OBJDUMP"; then
+ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OBJDUMP="objdump"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_OBJDUMP" && ac_cv_prog_ac_ct_OBJDUMP="false"
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+ echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5
+echo "${ECHO_T}$ac_ct_OBJDUMP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ OBJDUMP=$ac_ct_OBJDUMP
+else
+ OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+ ;;
+
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_header_stdc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ exit(2);
+ exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_header in dlfcn.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CXX"; then
+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+ echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$CXX" && break
+ done
+fi
+if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CXX"; then
+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CXX="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_CXX" && break
+done
+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+ CXX=$ac_ct_CXX
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+ "checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cxx_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cxx_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
+if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+ if test "$GXX" = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-g"
+ fi
+else
+ if test "$GXX" = yes; then
+ CXXFLAGS="-O2"
+ else
+ CXXFLAGS=
+ fi
+fi
+for ac_declaration in \
+ '' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+depcc="$CXX" am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CXX_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CXX_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+
+
+if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+ am__fastdepCXX_TRUE=
+ am__fastdepCXX_FALSE='#'
+else
+ am__fastdepCXX_TRUE='#'
+ am__fastdepCXX_FALSE=
+fi
+
+
+
+
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
+if test -z "$CXXCPP"; then
+ if test "${ac_cv_prog_CXXCPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Double quotes because CXXCPP needs to be expanded
+ for CXXCPP in "$CXX -E" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ break
+fi
+
+ done
+ ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+ CXXCPP=$ac_cv_prog_CXXCPP
+else
+ ac_cv_prog_CXXCPP=$CXXCPP
+fi
+echo "$as_me:$LINENO: result: $CXXCPP" >&5
+echo "${ECHO_T}$CXXCPP" >&6
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+fi
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$F77"; then
+ ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+ echo "$as_me:$LINENO: result: $F77" >&5
+echo "${ECHO_T}$F77" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$F77" && break
+ done
+fi
+if test -z "$F77"; then
+ ac_ct_F77=$F77
+ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_F77"; then
+ ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_F77="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+ echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+echo "${ECHO_T}$ac_ct_F77" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_F77" && break
+done
+
+ F77=$ac_ct_F77
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:5714:" \
+ "checking for Fortran 77 compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+rm -f a.out
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file. (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+#ifndef __GNUC__
+ choke me
+#endif
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_f77_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ FFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_f77_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_f77_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+echo "${ECHO_T}$ac_cv_prog_f77_g" >&6
+if test "$ac_test_FFLAGS" = set; then
+ FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+ FFLAGS="-g -O2"
+ else
+ FFLAGS="-g"
+ fi
+else
+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+ FFLAGS="-O2"
+ else
+ FFLAGS=
+ fi
+fi
+
+G77=`test $ac_compiler_gnu = yes && echo yes`
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+# find the maximum length of command line arguments
+echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on massive
+ # amounts of additional arguments before passing them to the linker.
+ # It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ ;;
+ esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+ echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
+else
+ echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+fi
+
+
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[BCDT]'
+ ;;
+cygwin* | mingw* | pw32*)
+ symcode='[ABCDGISTW]'
+ ;;
+hpux*) # Its linker distinguishes data from code symbols
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDEGRST]'
+ fi
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+linux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDGIRSTW]'
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[BCDEGRST]'
+ ;;
+osf*)
+ symcode='[BCDEGQRST]'
+ ;;
+solaris*)
+ symcode='[BDRT]'
+ ;;
+sco3.2v5*)
+ symcode='[DT]'
+ ;;
+sysv4.2uw2*)
+ symcode='[DT]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[ABDT]'
+ ;;
+sysv4)
+ symcode='[DFNSTU]'
+ ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
+ (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if grep ' nm_test_var$' "$nlist" >/dev/null; then
+ if grep ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+ cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+ cat <<\EOF >> conftest.$ac_ext
+ {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&5
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+ fi
+ else
+ echo "$progname: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ fi
+ rm -f conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ echo "$as_me:$LINENO: result: failed" >&5
+echo "${ECHO_T}failed" >&6
+else
+ echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+fi
+
+echo "$as_me:$LINENO: checking for objdir" >&5
+echo $ECHO_N "checking for objdir... $ECHO_C" >&6
+if test "${lt_cv_objdir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+echo "${ECHO_T}$lt_cv_objdir" >&6
+objdir=$lt_cv_objdir
+
+
+
+
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e 1s/^X//'
+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="${ac_tool_prefix}ar"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ echo "$as_me:$LINENO: result: $AR" >&5
+echo "${ECHO_T}$AR" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+ ac_ct_AR=$AR
+ # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="ar"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false"
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+echo "${ECHO_T}$ac_ct_AR" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ AR=$ac_ct_AR
+else
+ AR="$ac_cv_prog_AR"
+fi
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ RANLIB=$ac_ct_RANLIB
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ STRIP=$ac_ct_STRIP
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/${ac_tool_prefix}file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ echo "$as_me:$LINENO: checking for file" >&5
+echo $ECHO_N "checking for file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ else
+ MAGIC_CMD=:
+ fi
+fi
+
+ fi
+ ;;
+esac
+
+enable_dlopen=no
+enable_win32_dll=yes
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+ enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+
+# Check whether --with-pic or --without-pic was given.
+if test "${with_pic+set}" = set; then
+ withval="$with_pic"
+ pic_mode="$withval"
+else
+ pic_mode=default
+fi;
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:6777: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:6781: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_static='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic='-fno-common'
+ ;;
+
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ else
+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic='-qnocommon'
+ lt_prog_compiler_wl='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl='-Qoption ld '
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic='-Kconform_pic'
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_can_build_shared=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic='-pic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:7045: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:7049: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6
+
+if test x"$lt_prog_compiler_pic_works" = xyes; then
+ case $lt_prog_compiler_pic in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+ esac
+else
+ lt_prog_compiler_pic=
+ lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic=
+ ;;
+ *)
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works=yes
+ fi
+ else
+ lt_prog_compiler_static_works=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
+
+if test x"$lt_prog_compiler_static_works" = xyes; then
+ :
+else
+ lt_prog_compiler_static=
+fi
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:7149: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:7153: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag=
+ enable_shared_with_static_runtimes=no
+ archive_cmds=
+ archive_expsym_cmds=
+ old_archive_From_new_cmds=
+ old_archive_from_expsyms_cmds=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ thread_safe_flag_spec=
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld=
+ hardcode_libdir_separator=
+ hardcode_direct=no
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=unsupported
+ link_all_deplibs=unknown
+ hardcode_automatic=no
+ module_cmds=
+ module_expsym_cmds=
+ always_export_symbols=no
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ interix3*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ esac
+ archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ $echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds=''
+ hardcode_direct=yes
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct=yes
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag="-z nodefs"
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag=' ${wl}-bernotok'
+ allow_undefined_flag=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec='$convenience'
+ archive_cmds_need_lc=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs=no
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_From_new_cmds='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc=no
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+ whole_archive_flag_spec=''
+ link_all_deplibs=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ export_dynamic_flag_spec='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+
+ hardcode_direct=yes
+ export_dynamic_flag_spec='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_libdir_flag_spec_ld='+b $libdir'
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ ;;
+ *)
+ hardcode_direct=yes
+ export_dynamic_flag_spec='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ link_all_deplibs=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ newsos6)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_shlibpath_var=no
+ ;;
+
+ openbsd*)
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ allow_undefined_flag=unsupported
+ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ hardcode_libdir_separator=:
+ ;;
+
+ solaris*)
+ no_undefined_flag=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_shlibpath_var=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+ *)
+ whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ link_all_deplibs=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds='$CC -r -o $output$reload_objs'
+ hardcode_direct=no
+ ;;
+ motorola)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ export_dynamic_flag_spec='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ no_undefined_flag='${wl}-z,text'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag='${wl}-z,text'
+ allow_undefined_flag='${wl}-z,nodefs'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ export_dynamic_flag_spec='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+echo "${ECHO_T}$ld_shlibs" >&6
+test "$ld_shlibs" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl
+ pic_flag=$lt_prog_compiler_pic
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag
+ allow_undefined_flag=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc=no
+ else
+ archive_cmds_need_lc=yes
+ fi
+ allow_undefined_flag=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+echo "${ECHO_T}$archive_cmds_need_lc" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+interix3*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+ test -n "$runpath_var" || \
+ test "X$hardcode_automatic" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no &&
+ test "$hardcode_minus_L" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action" >&5
+echo "${ECHO_T}$hardcode_action" >&6
+
+if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ ;;
+ *)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+
+fi
+
+ ;;
+
+ *)
+ echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char shl_load (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+ lt_cv_dlopen="shl_load"
+else
+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+ echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char dlopen (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+ lt_cv_dlopen="dlopen"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_svld_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_dld_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 9494 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 9594 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+
+
+# Report which library types will actually be built
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler \
+ CC \
+ LD \
+ lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
+ lt_prog_compiler_static \
+ lt_prog_compiler_no_builtin_flag \
+ export_dynamic_flag_spec \
+ thread_safe_flag_spec \
+ whole_archive_flag_spec \
+ enable_shared_with_static_runtimes \
+ old_archive_cmds \
+ old_archive_from_new_cmds \
+ predep_objects \
+ postdep_objects \
+ predeps \
+ postdeps \
+ compiler_lib_search_path \
+ archive_cmds \
+ archive_expsym_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ old_archive_from_expsyms_cmds \
+ allow_undefined_flag \
+ no_undefined_flag \
+ export_symbols_cmds \
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+ hardcode_automatic \
+ module_cmds \
+ module_expsym_cmds \
+ lt_cv_prog_compiler_c_o \
+ exclude_expsyms \
+ include_expsyms; do
+
+ case $var in
+ old_archive_cmds | \
+ old_archive_from_new_cmds | \
+ archive_cmds | \
+ archive_expsym_cmds | \
+ module_cmds | \
+ module_expsym_cmds | \
+ old_archive_from_expsyms_cmds | \
+ export_symbols_cmds | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="${ofile}T"
+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+ $rm -f "$cfgfile"
+ { echo "$as_me:$LINENO: creating $ofile" >&5
+echo "$as_me: creating $ofile" >&6;}
+
+ cat <<__EOF__ >> "$cfgfile"
+#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e 1s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+
+ case $host_os in
+ aix3*)
+ cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+EOF
+ ;;
+ esac
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" || \
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+# Check whether --with-tags or --without-tags was given.
+if test "${with_tags+set}" = set; then
+ withval="$with_tags"
+ tagnames="$withval"
+fi;
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+ if test ! -f "${ofile}"; then
+ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
+ fi
+
+ if test -z "$LTCC"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+ if test -z "$LTCC"; then
+ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
+ else
+ { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
+echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
+ fi
+ fi
+ if test -z "$LTCFLAGS"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+ fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for tagname in $tagnames; do
+ IFS="$lt_save_ifs"
+ # Check whether tagname contains only valid characters
+ case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
+ "") ;;
+ *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
+echo "$as_me: error: invalid tag name: $tagname" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+ then
+ { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
+echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ # Update the list of available tags.
+ if test -n "$tagname"; then
+ echo appending configuration tag \"$tagname\" to $ofile
+
+ case $tagname in
+ CXX)
+ if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_shlibpath_var_CXX=unsupported
+hardcode_automatic_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+ $as_unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+ $as_unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+compiler_CXX=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+ lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+else
+ lt_prog_compiler_no_builtin_flag_CXX=
+fi
+
+if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+ withval="$with_gnu_ld"
+ test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='${wl}'
+
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+ grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_CXX=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
+
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+ld_shlibs_CXX=yes
+case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds_CXX=''
+ hardcode_direct_CXX=yes
+ hardcode_libdir_separator_CXX=':'
+ link_all_deplibs_CXX=yes
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct_CXX=yes
+ else
+ # We have old collect2
+ hardcode_direct_CXX=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L_CXX=yes
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ hardcode_libdir_separator_CXX=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols_CXX=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_CXX='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_CXX="-z nodefs"
+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_CXX=' ${wl}-bernotok'
+ allow_undefined_flag_CXX=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_CXX='$convenience'
+ archive_cmds_need_lc_CXX=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_CXX=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ allow_undefined_flag_CXX=unsupported
+ always_export_symbols_CXX=no
+ enable_shared_with_static_runtimes_CXX=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc_CXX=no
+ hardcode_direct_CXX=no
+ hardcode_automatic_CXX=yes
+ hardcode_shlibpath_var_CXX=unsupported
+ whole_archive_flag_spec_CXX=''
+ link_all_deplibs_CXX=yes
+
+ if test "$GXX" = yes ; then
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ else
+ archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ fi
+ module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ freebsd[12]*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ ld_shlibs_CXX=no
+ ;;
+ freebsd-elf*)
+ archive_cmds_need_lc_CXX=no
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ ld_shlibs_CXX=yes
+ ;;
+ gnu*)
+ ;;
+ hpux9*)
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ hardcode_direct_CXX=yes
+ hardcode_minus_L_CXX=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aCC*)
+ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
+ ;;
+ *)
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ ;;
+ *)
+ hardcode_direct_CXX=yes
+ hardcode_minus_L_CXX=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ interix3*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC*)
+ # SGI C++
+ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+ fi
+ link_all_deplibs_CXX=yes
+ ;;
+ esac
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc*)
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ tmp_idyn=
+ case $host_cpu in
+ ia64*) tmp_idyn=' -i_dynamic';;
+ esac
+ archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ archive_cmds_need_lc_CXX=no
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler
+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ esac
+ ;;
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ m88k*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ hardcode_direct_CXX=yes
+ hardcode_shlibpath_var_CXX=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ ld_shlibs_CXX=no
+ ;;
+ openbsd*)
+ hardcode_direct_CXX=yes
+ hardcode_shlibpath_var_CXX=no
+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd='echo'
+ ;;
+ osf3*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ cxx*)
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ cxx*)
+ allow_undefined_flag_CXX=' -expect_unresolved \*'
+ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
+ $rm $lib.exp'
+
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ psos*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ archive_cmds_need_lc_CXX=yes
+ no_undefined_flag_CXX=' -zdefs'
+ archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ hardcode_shlibpath_var_CXX=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+ # linker. We must also pass each convience library through
+ # to the system linker between allextract/defaultextract.
+ # The C++ compiler will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ link_all_deplibs_CXX=yes
+
+ output_verbose_link_cmd='echo'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+ # The C++ compiler must be used to create the archive.
+ old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+ if $CC --version | grep -v '^2\.7' > /dev/null; then
+ archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+ fi
+ ;;
+ esac
+ ;;
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ no_undefined_flag_CXX='${wl}-z,text'
+ archive_cmds_need_lc_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ # So that behaviour is only enabled if SCOABSPATH is set to a
+ # non-empty value in the environment. Most likely only useful for
+ # creating official distributions of packages.
+ # This is a hack until libtool officially supports absolute path
+ # names for shared libraries.
+ no_undefined_flag_CXX='${wl}-z,text'
+ allow_undefined_flag_CXX='${wl}-z,nodefs'
+ archive_cmds_need_lc_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator_CXX=':'
+ link_all_deplibs_CXX=yes
+ export_dynamic_flag_spec_CXX='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+GCC_CXX="$GXX"
+LD_CXX="$LD"
+
+
+cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+EOF
+
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Parse the compiler output and extract the necessary
+ # objects, libraries and library flags.
+
+ # Sentinel used to keep track of whether or not we are before
+ # the conftest object file.
+ pre_test_object_deps_done=no
+
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+ output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" \
+ || test $p = "-R"; then
+ prev=$p
+ continue
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p in
+ -L* | -R*)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+ if test -z "$compiler_lib_search_path_CXX"; then
+ compiler_lib_search_path_CXX="${prev}${p}"
+ else
+ compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+ fi
+ ;;
+ # The "-l" case would never come before the object being
+ # linked, so don't bother handling this case.
+ esac
+ else
+ if test -z "$postdeps_CXX"; then
+ postdeps_CXX="${prev}${p}"
+ else
+ postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+ if test "$p" = "conftest.$objext"; then
+ pre_test_object_deps_done=yes
+ continue
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ if test -z "$predep_objects_CXX"; then
+ predep_objects_CXX="$p"
+ else
+ predep_objects_CXX="$predep_objects_CXX $p"
+ fi
+ else
+ if test -z "$postdep_objects_CXX"; then
+ postdep_objects_CXX="$p"
+ else
+ postdep_objects_CXX="$postdep_objects_CXX $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$rm -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+case $host_os in
+interix3*)
+ # Interix 3.5 installs completely hosed .la files for C++, so rather than
+ # hack all around it, let's just trust "g++" to DTRT.
+ predep_objects_CXX=
+ postdep_objects_CXX=
+ postdeps_CXX=
+ ;;
+
+solaris*)
+ case $cc_basename in
+ CC*)
+ # Adding this requires a known-good setup of shared libraries for
+ # Sun compiler versions before 5.6, else PIC objects from an old
+ # archive will be linked into the output, leading to subtle bugs.
+ postdeps_CXX='-lCstd -lCrun'
+ ;;
+ esac
+ ;;
+esac
+
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+
+lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_CXX='-Bstatic'
+ fi
+ ;;
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | os2* | pw32*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_CXX='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ lt_prog_compiler_pic_CXX=
+ ;;
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_CXX=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ esac
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix4* | aix5*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_CXX='-Bstatic'
+ else
+ lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic_CXX='-qnocommon'
+ lt_prog_compiler_wl_CXX='-Wl,'
+ ;;
+ esac
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+ if test "$host_cpu" != ia64; then
+ lt_prog_compiler_pic_CXX='+Z'
+ fi
+ ;;
+ aCC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ interix*)
+ # This is c89, which is MS Visual C++ (no shared libs)
+ # Anyone wants to do a port?
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ icpc* | ecpc*)
+ # Intel C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-static'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler.
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-fpic'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ cxx*)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ lt_prog_compiler_pic_CXX='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ lt_prog_compiler_wl_CXX='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ lt_prog_compiler_pic_CXX='-pic'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ esac
+ ;;
+ vxworks*)
+ ;;
+ *)
+ lt_prog_compiler_can_build_shared_CXX=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_CXX=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:11934: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:11938: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works_CXX=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6
+
+if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
+ case $lt_prog_compiler_pic_CXX in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+ esac
+else
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_CXX=
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+ ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works_CXX=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works_CXX=yes
+ fi
+ else
+ lt_prog_compiler_static_works_CXX=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6
+
+if test x"$lt_prog_compiler_static_works_CXX" = xyes; then
+ :
+else
+ lt_prog_compiler_static_CXX=
+fi
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_CXX=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:12038: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:12042: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o_CXX=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix4* | aix5*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ export_symbols_cmds_CXX="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_CXX=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_CXX in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_CXX
+ pic_flag=$lt_prog_compiler_pic_CXX
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+ allow_undefined_flag_CXX=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_CXX=no
+ else
+ archive_cmds_need_lc_CXX=yes
+ fi
+ allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+interix3*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" || \
+ test -n "$runpath_var_CXX" || \
+ test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_CXX" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+ test "$hardcode_minus_L_CXX" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_CXX=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_CXX=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_CXX=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+echo "${ECHO_T}$hardcode_action_CXX" >&6
+
+if test "$hardcode_action_CXX" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_CXX \
+ CC_CXX \
+ LD_CXX \
+ lt_prog_compiler_wl_CXX \
+ lt_prog_compiler_pic_CXX \
+ lt_prog_compiler_static_CXX \
+ lt_prog_compiler_no_builtin_flag_CXX \
+ export_dynamic_flag_spec_CXX \
+ thread_safe_flag_spec_CXX \
+ whole_archive_flag_spec_CXX \
+ enable_shared_with_static_runtimes_CXX \
+ old_archive_cmds_CXX \
+ old_archive_from_new_cmds_CXX \
+ predep_objects_CXX \
+ postdep_objects_CXX \
+ predeps_CXX \
+ postdeps_CXX \
+ compiler_lib_search_path_CXX \
+ archive_cmds_CXX \
+ archive_expsym_cmds_CXX \
+ postinstall_cmds_CXX \
+ postuninstall_cmds_CXX \
+ old_archive_from_expsyms_cmds_CXX \
+ allow_undefined_flag_CXX \
+ no_undefined_flag_CXX \
+ export_symbols_cmds_CXX \
+ hardcode_libdir_flag_spec_CXX \
+ hardcode_libdir_flag_spec_ld_CXX \
+ hardcode_libdir_separator_CXX \
+ hardcode_automatic_CXX \
+ module_cmds_CXX \
+ module_expsym_cmds_CXX \
+ lt_cv_prog_compiler_c_o_CXX \
+ exclude_expsyms_CXX \
+ include_expsyms_CXX; do
+
+ case $var in
+ old_archive_cmds_CXX | \
+ old_archive_from_new_cmds_CXX | \
+ archive_cmds_CXX | \
+ archive_expsym_cmds_CXX | \
+ module_cmds_CXX | \
+ module_expsym_cmds_CXX | \
+ old_archive_from_expsyms_cmds_CXX | \
+ export_symbols_cmds_CXX | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_CXX
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_CXX
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_CXX
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_CXX"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ F77)
+ if test -n "$F77" && test "X$F77" != "Xno"; then
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+archive_cmds_need_lc_F77=no
+allow_undefined_flag_F77=
+always_export_symbols_F77=no
+archive_expsym_cmds_F77=
+export_dynamic_flag_spec_F77=
+hardcode_direct_F77=no
+hardcode_libdir_flag_spec_F77=
+hardcode_libdir_flag_spec_ld_F77=
+hardcode_libdir_separator_F77=
+hardcode_minus_L_F77=no
+hardcode_automatic_F77=no
+module_cmds_F77=
+module_expsym_cmds_F77=
+link_all_deplibs_F77=unknown
+old_archive_cmds_F77=$old_archive_cmds
+no_undefined_flag_F77=
+whole_archive_flag_spec_F77=
+enable_shared_with_static_runtimes_F77=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+objext_F77=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code=" subroutine t\n return\n end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=" program t\n end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+compiler_F77=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+GCC_F77="$G77"
+LD_F77="$LD"
+
+lt_prog_compiler_wl_F77=
+lt_prog_compiler_pic_F77=
+lt_prog_compiler_static_F77=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_static_F77='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_F77='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_F77='-fno-common'
+ ;;
+
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared_F77=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_F77=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_F77='-Bstatic'
+ else
+ lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic_F77='-qnocommon'
+ lt_prog_compiler_wl_F77='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_F77='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-fpic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ lt_prog_compiler_wl_F77='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl_F77='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl_F77='-Qoption ld '
+ lt_prog_compiler_pic_F77='-PIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic_F77='-Kconform_pic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_can_build_shared_F77=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic_F77='-pic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared_F77=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_F77"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_F77=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_F77"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:13608: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:13612: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works_F77=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6
+
+if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+ case $lt_prog_compiler_pic_F77 in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+ esac
+else
+ lt_prog_compiler_pic_F77=
+ lt_prog_compiler_can_build_shared_F77=no
+fi
+
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_F77=
+ ;;
+ *)
+ lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+ ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works_F77=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works_F77=yes
+ fi
+ else
+ lt_prog_compiler_static_works_F77=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6
+
+if test x"$lt_prog_compiler_static_works_F77" = xyes; then
+ :
+else
+ lt_prog_compiler_static_F77=
+fi
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_F77=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:13712: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:13716: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o_F77=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag_F77=
+ enable_shared_with_static_runtimes_F77=no
+ archive_cmds_F77=
+ archive_expsym_cmds_F77=
+ old_archive_From_new_cmds_F77=
+ old_archive_from_expsyms_cmds_F77=
+ export_dynamic_flag_spec_F77=
+ whole_archive_flag_spec_F77=
+ thread_safe_flag_spec_F77=
+ hardcode_libdir_flag_spec_F77=
+ hardcode_libdir_flag_spec_ld_F77=
+ hardcode_libdir_separator_F77=
+ hardcode_direct_F77=no
+ hardcode_minus_L_F77=no
+ hardcode_shlibpath_var_F77=unsupported
+ link_all_deplibs_F77=unknown
+ hardcode_automatic_F77=no
+ module_cmds_F77=
+ module_expsym_cmds_F77=
+ always_export_symbols_F77=no
+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms_F77=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs_F77=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_F77='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_F77=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs_F77=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs_F77=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_F77=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ allow_undefined_flag_F77=unsupported
+ always_export_symbols_F77=no
+ enable_shared_with_static_runtimes_F77=yes
+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ interix3*)
+ hardcode_direct_F77=no
+ hardcode_shlibpath_var_F77=no
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_F77='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ esac
+ archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ $echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs_F77=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs_F77=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs_F77" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec_F77=
+ export_dynamic_flag_spec_F77=
+ whole_archive_flag_spec_F77=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag_F77=unsupported
+ always_export_symbols_F77=yes
+ archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L_F77=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct_F77=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds_F77=''
+ hardcode_direct_F77=yes
+ hardcode_libdir_separator_F77=':'
+ link_all_deplibs_F77=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct_F77=yes
+ else
+ # We have old collect2
+ hardcode_direct_F77=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L_F77=yes
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_libdir_separator_F77=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols_F77=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_F77='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_F77="-z nodefs"
+ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_F77=' ${wl}-bernotok'
+ allow_undefined_flag_F77=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_F77='$convenience'
+ archive_cmds_need_lc_F77=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs_F77=no
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec_F77=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec_F77=' '
+ allow_undefined_flag_F77=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_From_new_cmds_F77='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes_F77=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc_F77=no
+ hardcode_direct_F77=no
+ hardcode_automatic_F77=yes
+ hardcode_shlibpath_var_F77=unsupported
+ whole_archive_flag_spec_F77=''
+ link_all_deplibs_F77=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs_F77=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs_F77=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_direct_F77=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+
+ hardcode_direct_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+ hardcode_direct_F77=no
+ hardcode_shlibpath_var_F77=no
+ ;;
+ *)
+ hardcode_direct_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ link_all_deplibs_F77=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ newsos6)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ openbsd*)
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_F77='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ ;;
+ *)
+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+ allow_undefined_flag_F77=unsupported
+ archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag_F77=' -expect_unresolved \*'
+ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag_F77=' -expect_unresolved \*'
+ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec_F77='-rpath $libdir'
+ fi
+ hardcode_libdir_separator_F77=:
+ ;;
+
+ solaris*)
+ no_undefined_flag_F77=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_shlibpath_var_F77=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
+ *)
+ whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ link_all_deplibs_F77=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds_F77='$CC -r -o $output$reload_objs'
+ hardcode_direct_F77=no
+ ;;
+ motorola)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ export_dynamic_flag_spec_F77='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs_F77=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ no_undefined_flag_F77='${wl}-z,text'
+ archive_cmds_need_lc_F77=no
+ hardcode_shlibpath_var_F77=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag_F77='${wl}-z,text'
+ allow_undefined_flag_F77='${wl}-z,nodefs'
+ archive_cmds_need_lc_F77=no
+ hardcode_shlibpath_var_F77=no
+ hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator_F77=':'
+ link_all_deplibs_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ *)
+ ld_shlibs_F77=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+echo "${ECHO_T}$ld_shlibs_F77" >&6
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_F77" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_F77=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_F77 in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_F77
+ pic_flag=$lt_prog_compiler_pic_F77
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+ allow_undefined_flag_F77=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_F77=no
+ else
+ archive_cmds_need_lc_F77=yes
+ fi
+ allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+interix3*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_F77=
+if test -n "$hardcode_libdir_flag_spec_F77" || \
+ test -n "$runpath_var_F77" || \
+ test "X$hardcode_automatic_F77" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_F77" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+ test "$hardcode_minus_L_F77" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_F77=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_F77=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_F77=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+echo "${ECHO_T}$hardcode_action_F77" >&6
+
+if test "$hardcode_action_F77" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_F77 \
+ CC_F77 \
+ LD_F77 \
+ lt_prog_compiler_wl_F77 \
+ lt_prog_compiler_pic_F77 \
+ lt_prog_compiler_static_F77 \
+ lt_prog_compiler_no_builtin_flag_F77 \
+ export_dynamic_flag_spec_F77 \
+ thread_safe_flag_spec_F77 \
+ whole_archive_flag_spec_F77 \
+ enable_shared_with_static_runtimes_F77 \
+ old_archive_cmds_F77 \
+ old_archive_from_new_cmds_F77 \
+ predep_objects_F77 \
+ postdep_objects_F77 \
+ predeps_F77 \
+ postdeps_F77 \
+ compiler_lib_search_path_F77 \
+ archive_cmds_F77 \
+ archive_expsym_cmds_F77 \
+ postinstall_cmds_F77 \
+ postuninstall_cmds_F77 \
+ old_archive_from_expsyms_cmds_F77 \
+ allow_undefined_flag_F77 \
+ no_undefined_flag_F77 \
+ export_symbols_cmds_F77 \
+ hardcode_libdir_flag_spec_F77 \
+ hardcode_libdir_flag_spec_ld_F77 \
+ hardcode_libdir_separator_F77 \
+ hardcode_automatic_F77 \
+ module_cmds_F77 \
+ module_expsym_cmds_F77 \
+ lt_cv_prog_compiler_c_o_F77 \
+ exclude_expsyms_F77 \
+ include_expsyms_F77; do
+
+ case $var in
+ old_archive_cmds_F77 | \
+ old_archive_from_new_cmds_F77 | \
+ archive_cmds_F77 | \
+ archive_expsym_cmds_F77 | \
+ module_cmds_F77 | \
+ module_expsym_cmds_F77 | \
+ old_archive_from_expsyms_cmds_F77 | \
+ export_symbols_cmds_F77 | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_F77
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_F77
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_F77
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_F77
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_F77
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_F77
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_F77
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_F77
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_F77
+archive_expsym_cmds=$lt_archive_expsym_cmds_F77
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_F77
+module_expsym_cmds=$lt_module_expsym_cmds_F77
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_F77
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_F77
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_F77
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_F77
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_F77
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_F77
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_F77
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_F77
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_F77
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_F77
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_F77"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_F77
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_F77
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_F77
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_F77
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ GCJ)
+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+
+
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+objext_GCJ=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+compiler_GCJ=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+archive_cmds_need_lc_GCJ=no
+
+old_archive_cmds_GCJ=$old_archive_cmds
+
+
+lt_prog_compiler_no_builtin_flag_GCJ=
+
+if test "$GCC" = yes; then
+ lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:15915: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:15919: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+lt_prog_compiler_wl_GCJ=
+lt_prog_compiler_pic_GCJ=
+lt_prog_compiler_static_GCJ=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_static_GCJ='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_GCJ='-fno-common'
+ ;;
+
+ interix3*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared_GCJ=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_GCJ=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_GCJ='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic_GCJ='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ else
+ lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic_GCJ='-qnocommon'
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_GCJ='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-fpic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ lt_prog_compiler_wl_GCJ='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl_GCJ='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl_GCJ='-Qoption ld '
+ lt_prog_compiler_pic_GCJ='-PIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic_GCJ='-Kconform_pic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_can_build_shared_GCJ=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic_GCJ='-pic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared_GCJ=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_GCJ"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_GCJ=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:16183: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:16187: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works_GCJ=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6
+
+if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+ case $lt_prog_compiler_pic_GCJ in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
+ esac
+else
+ lt_prog_compiler_pic_GCJ=
+ lt_prog_compiler_can_build_shared_GCJ=no
+fi
+
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_GCJ=
+ ;;
+ *)
+ lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
+ ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works_GCJ=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works_GCJ=yes
+ fi
+ else
+ lt_prog_compiler_static_works_GCJ=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6
+
+if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then
+ :
+else
+ lt_prog_compiler_static_GCJ=
+fi
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_GCJ=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:16287: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:16291: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o_GCJ=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag_GCJ=
+ enable_shared_with_static_runtimes_GCJ=no
+ archive_cmds_GCJ=
+ archive_expsym_cmds_GCJ=
+ old_archive_From_new_cmds_GCJ=
+ old_archive_from_expsyms_cmds_GCJ=
+ export_dynamic_flag_spec_GCJ=
+ whole_archive_flag_spec_GCJ=
+ thread_safe_flag_spec_GCJ=
+ hardcode_libdir_flag_spec_GCJ=
+ hardcode_libdir_flag_spec_ld_GCJ=
+ hardcode_libdir_separator_GCJ=
+ hardcode_direct_GCJ=no
+ hardcode_minus_L_GCJ=no
+ hardcode_shlibpath_var_GCJ=unsupported
+ link_all_deplibs_GCJ=unknown
+ hardcode_automatic_GCJ=no
+ module_cmds_GCJ=
+ module_expsym_cmds_GCJ=
+ always_export_symbols_GCJ=no
+ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms_GCJ=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs_GCJ=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_GCJ=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs_GCJ=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs_GCJ=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_GCJ=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ allow_undefined_flag_GCJ=unsupported
+ always_export_symbols_GCJ=no
+ enable_shared_with_static_runtimes_GCJ=yes
+ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ interix3*)
+ hardcode_direct_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ esac
+ archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ $echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs_GCJ=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs_GCJ=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs_GCJ" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec_GCJ=
+ export_dynamic_flag_spec_GCJ=
+ whole_archive_flag_spec_GCJ=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag_GCJ=unsupported
+ always_export_symbols_GCJ=yes
+ archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L_GCJ=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct_GCJ=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds_GCJ=''
+ hardcode_direct_GCJ=yes
+ hardcode_libdir_separator_GCJ=':'
+ link_all_deplibs_GCJ=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct_GCJ=yes
+ else
+ # We have old collect2
+ hardcode_direct_GCJ=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L_GCJ=yes
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_libdir_separator_GCJ=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols_GCJ=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_GCJ='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_GCJ="-z nodefs"
+ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_GCJ=' ${wl}-bernotok'
+ allow_undefined_flag_GCJ=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_GCJ='$convenience'
+ archive_cmds_need_lc_GCJ=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs_GCJ=no
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec_GCJ=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec_GCJ=' '
+ allow_undefined_flag_GCJ=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_From_new_cmds_GCJ='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes_GCJ=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc_GCJ=no
+ hardcode_direct_GCJ=no
+ hardcode_automatic_GCJ=yes
+ hardcode_shlibpath_var_GCJ=unsupported
+ whole_archive_flag_spec_GCJ=''
+ link_all_deplibs_GCJ=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs_GCJ=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs_GCJ=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes
+ hardcode_minus_L_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_direct_GCJ=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+
+ hardcode_direct_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+ hardcode_direct_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+ *)
+ hardcode_direct_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ link_all_deplibs_GCJ=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ newsos6)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ openbsd*)
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ ;;
+ *)
+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+ allow_undefined_flag_GCJ=unsupported
+ archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag_GCJ=' -expect_unresolved \*'
+ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag_GCJ=' -expect_unresolved \*'
+ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
+ fi
+ hardcode_libdir_separator_GCJ=:
+ ;;
+
+ solaris*)
+ no_undefined_flag_GCJ=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+ *)
+ whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ link_all_deplibs_GCJ=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_minus_L_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds_GCJ='$CC -r -o $output$reload_objs'
+ hardcode_direct_GCJ=no
+ ;;
+ motorola)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_GCJ=no
+ export_dynamic_flag_spec_GCJ='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_GCJ=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs_GCJ=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ no_undefined_flag_GCJ='${wl}-z,text'
+ archive_cmds_need_lc_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag_GCJ='${wl}-z,text'
+ allow_undefined_flag_GCJ='${wl}-z,nodefs'
+ archive_cmds_need_lc_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator_GCJ=':'
+ link_all_deplibs_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ *)
+ ld_shlibs_GCJ=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
+echo "${ECHO_T}$ld_shlibs_GCJ" >&6
+test "$ld_shlibs_GCJ" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_GCJ" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_GCJ=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_GCJ in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_GCJ
+ pic_flag=$lt_prog_compiler_pic_GCJ
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+ allow_undefined_flag_GCJ=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_GCJ=no
+ else
+ archive_cmds_need_lc_GCJ=yes
+ fi
+ allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ freebsd*) # from 4.6 on
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+interix3*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_GCJ=
+if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+ test -n "$runpath_var_GCJ" || \
+ test "X$hardcode_automatic_GCJ" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_GCJ" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+ test "$hardcode_minus_L_GCJ" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_GCJ=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_GCJ=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_GCJ=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+echo "${ECHO_T}$hardcode_action_GCJ" >&6
+
+if test "$hardcode_action_GCJ" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_GCJ \
+ CC_GCJ \
+ LD_GCJ \
+ lt_prog_compiler_wl_GCJ \
+ lt_prog_compiler_pic_GCJ \
+ lt_prog_compiler_static_GCJ \
+ lt_prog_compiler_no_builtin_flag_GCJ \
+ export_dynamic_flag_spec_GCJ \
+ thread_safe_flag_spec_GCJ \
+ whole_archive_flag_spec_GCJ \
+ enable_shared_with_static_runtimes_GCJ \
+ old_archive_cmds_GCJ \
+ old_archive_from_new_cmds_GCJ \
+ predep_objects_GCJ \
+ postdep_objects_GCJ \
+ predeps_GCJ \
+ postdeps_GCJ \
+ compiler_lib_search_path_GCJ \
+ archive_cmds_GCJ \
+ archive_expsym_cmds_GCJ \
+ postinstall_cmds_GCJ \
+ postuninstall_cmds_GCJ \
+ old_archive_from_expsyms_cmds_GCJ \
+ allow_undefined_flag_GCJ \
+ no_undefined_flag_GCJ \
+ export_symbols_cmds_GCJ \
+ hardcode_libdir_flag_spec_GCJ \
+ hardcode_libdir_flag_spec_ld_GCJ \
+ hardcode_libdir_separator_GCJ \
+ hardcode_automatic_GCJ \
+ module_cmds_GCJ \
+ module_expsym_cmds_GCJ \
+ lt_cv_prog_compiler_c_o_GCJ \
+ exclude_expsyms_GCJ \
+ include_expsyms_GCJ; do
+
+ case $var in
+ old_archive_cmds_GCJ | \
+ old_archive_from_new_cmds_GCJ | \
+ archive_cmds_GCJ | \
+ archive_expsym_cmds_GCJ | \
+ module_cmds_GCJ | \
+ module_expsym_cmds_GCJ | \
+ old_archive_from_expsyms_cmds_GCJ | \
+ export_symbols_cmds_GCJ | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_GCJ
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_GCJ
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_GCJ
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_GCJ
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_GCJ
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_GCJ
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_GCJ
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_GCJ
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_GCJ
+archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_GCJ
+module_expsym_cmds=$lt_module_expsym_cmds_GCJ
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_GCJ
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_GCJ
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_GCJ
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_GCJ
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_GCJ
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_GCJ
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_GCJ
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_GCJ
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_GCJ
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_GCJ"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_GCJ
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_GCJ
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_GCJ
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_GCJ
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ RC)
+
+
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+objext_RC=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+compiler_RC=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+lt_cv_prog_compiler_c_o_RC=yes
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_RC \
+ CC_RC \
+ LD_RC \
+ lt_prog_compiler_wl_RC \
+ lt_prog_compiler_pic_RC \
+ lt_prog_compiler_static_RC \
+ lt_prog_compiler_no_builtin_flag_RC \
+ export_dynamic_flag_spec_RC \
+ thread_safe_flag_spec_RC \
+ whole_archive_flag_spec_RC \
+ enable_shared_with_static_runtimes_RC \
+ old_archive_cmds_RC \
+ old_archive_from_new_cmds_RC \
+ predep_objects_RC \
+ postdep_objects_RC \
+ predeps_RC \
+ postdeps_RC \
+ compiler_lib_search_path_RC \
+ archive_cmds_RC \
+ archive_expsym_cmds_RC \
+ postinstall_cmds_RC \
+ postuninstall_cmds_RC \
+ old_archive_from_expsyms_cmds_RC \
+ allow_undefined_flag_RC \
+ no_undefined_flag_RC \
+ export_symbols_cmds_RC \
+ hardcode_libdir_flag_spec_RC \
+ hardcode_libdir_flag_spec_ld_RC \
+ hardcode_libdir_separator_RC \
+ hardcode_automatic_RC \
+ module_cmds_RC \
+ module_expsym_cmds_RC \
+ lt_cv_prog_compiler_c_o_RC \
+ exclude_expsyms_RC \
+ include_expsyms_RC; do
+
+ case $var in
+ old_archive_cmds_RC | \
+ old_archive_from_new_cmds_RC | \
+ archive_cmds_RC | \
+ archive_expsym_cmds_RC | \
+ module_cmds_RC | \
+ module_expsym_cmds_RC | \
+ old_archive_from_expsyms_cmds_RC | \
+ export_symbols_cmds_RC | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_RC
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_RC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_RC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_RC
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_RC
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_RC
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_RC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_RC
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_RC
+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_RC
+module_expsym_cmds=$lt_module_expsym_cmds_RC
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_RC
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_RC
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_RC
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_RC
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_RC
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_RC
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_RC
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_RC
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_RC
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_RC
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_RC"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_RC
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_RC
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_RC
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_RC
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+ ;;
+
+ *)
+ { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
+echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+
+ # Append the new tag name to the list of available tags.
+ if test -n "$tagname" ; then
+ available_tags="$available_tags $tagname"
+ fi
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ # Now substitute the updated list of available tags.
+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+ mv "${ofile}T" "$ofile"
+ chmod +x "$ofile"
+ else
+ rm -f "${ofile}T"
+ { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
+echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+fi
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Prevent multiple expansion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_prog in gm4 m4
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_M4+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$M4"; then
+ ac_cv_prog_M4="$M4" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_M4="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+M4=$ac_cv_prog_M4
+if test -n "$M4"; then
+ echo "$as_me:$LINENO: result: $M4" >&5
+echo "${ECHO_T}$M4" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$M4" && break
+done
+test -n "$M4" || M4="m4"
+
+
+if test "$M4" = "m4"; then
+ echo "$as_me:$LINENO: checking whether m4 is GNU m4" >&5
+echo $ECHO_N "checking whether m4 is GNU m4... $ECHO_C" >&6
+ if $M4 --version </dev/null 2>/dev/null | grep '^GNU m4 ' >/dev/null ; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ if test "$host_vendor" = "sun"; then
+ { { echo "$as_me:$LINENO: error: SUN m4 does not work for building gtkmm.
+Please install GNU m4." >&5
+echo "$as_me: error: SUN m4 does not work for building gtkmm.
+Please install GNU m4." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ fi
+fi
+
+
+
+echo "$as_me:$LINENO: checking whether make is GNU Make" >&5
+echo $ECHO_N "checking whether make is GNU Make... $ECHO_C" >&6
+if ${MAKE-make} --version 2>/dev/null | grep '^GNU Make ' >/dev/null ; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ if test "$host_vendor" = "sun" ; then
+ { { echo "$as_me:$LINENO: error: SUN make does not work for building gtkmm.
+Please install GNU make." >&5
+echo "$as_me: error: SUN make does not work for building gtkmm.
+Please install GNU make." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+fi
+
+
+
+ glibmm_perl_result=no
+
+ for ac_prog in perl perl5
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PERL_PATH+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $PERL_PATH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PERL_PATH="$PERL_PATH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PERL_PATH="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ ;;
+esac
+fi
+PERL_PATH=$ac_cv_path_PERL_PATH
+
+if test -n "$PERL_PATH"; then
+ echo "$as_me:$LINENO: result: $PERL_PATH" >&5
+echo "${ECHO_T}$PERL_PATH" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$PERL_PATH" && break
+done
+test -n "$PERL_PATH" || PERL_PATH="not found"
+
+
+ if test "x$PERL_PATH" != "xnot found"; then
+ {
+ echo "$as_me:$LINENO: checking whether Perl is new enough" >&5
+echo $ECHO_N "checking whether Perl is new enough... $ECHO_C" >&6
+if test "${glibmm_cv_perl_version_5_6_0+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ glibmm_cv_perl_version_5_6_0=no
+ "$PERL_PATH" -e "require v5.6.0; exit 0;" >/dev/null 2>&1 && glibmm_cv_perl_version_5_6_0=yes
+
+fi
+echo "$as_me:$LINENO: result: $glibmm_cv_perl_version_5_6_0" >&5
+echo "${ECHO_T}$glibmm_cv_perl_version_5_6_0" >&6
+ test "x${glibmm_cv_perl_version_5_6_0}" = xyes && glibmm_perl_result=yes
+ }
+ else
+ {
+ # Make sure we have something sensible, even if it doesn't work.
+ PERL_PATH=perl
+ }
+ fi
+
+ if test "x$glibmm_perl_result" = xno && test "x$USE_MAINTAINER_MODE" = xyes; then
+ {
+ { { echo "$as_me:$LINENO: error:
+*** Perl >= 5.6.0 is required for building $PACKAGE in maintainer-mode.
+" >&5
+echo "$as_me: error:
+*** Perl >= 5.6.0 is required for building $PACKAGE in maintainer-mode.
+" >&2;}
+ { (exit 1); exit 1; }; }
+ }
+ fi
+
+
+
+
+#########################################################################
+# Function checks
+#########################################################################
+
+# functions used in demos/gtk-demo. Undefined in config.h !
+
+
+
+
+for ac_func in flockfile funlockfile getc_unlocked mkfifo
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+#########################################################################
+# Dependancy checks
+#########################################################################
+gtkmm_min_sigc_version=2.0.0
+gtkmm_min_glib_version=2.9.0
+
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+ ac_pt_PKG_CONFIG=$PKG_CONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $ac_pt_PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+
+if test -n "$ac_pt_PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
+echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ PKG_CONFIG=$ac_pt_PKG_CONFIG
+else
+ PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=0.9.0
+ echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
+echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ PKG_CONFIG=""
+ fi
+
+fi
+
+pkg_failed=no
+echo "$as_me:$LINENO: checking for GLIBMM" >&5
+echo $ECHO_N "checking for GLIBMM... $ECHO_C" >&6
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GLIBMM_CFLAGS"; then
+ pkg_cv_GLIBMM_CFLAGS="$GLIBMM_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"sigc++-2.0 >= \${gtkmm_min_sigc_version} glib-2.0 >= \${gtkmm_min_glib_version} gobject-2.0 >= \${gtkmm_min_glib_version} gmodule-2.0 >= \${gtkmm_min_glib_version}\"") >&5
+ ($PKG_CONFIG --exists --print-errors "sigc++-2.0 >= ${gtkmm_min_sigc_version} glib-2.0 >= ${gtkmm_min_glib_version} gobject-2.0 >= ${gtkmm_min_glib_version} gmodule-2.0 >= ${gtkmm_min_glib_version}") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_GLIBMM_CFLAGS=`$PKG_CONFIG --cflags "sigc++-2.0 >= ${gtkmm_min_sigc_version} glib-2.0 >= ${gtkmm_min_glib_version} gobject-2.0 >= ${gtkmm_min_glib_version} gmodule-2.0 >= ${gtkmm_min_glib_version}" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GLIBMM_LIBS"; then
+ pkg_cv_GLIBMM_LIBS="$GLIBMM_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"sigc++-2.0 >= \${gtkmm_min_sigc_version} glib-2.0 >= \${gtkmm_min_glib_version} gobject-2.0 >= \${gtkmm_min_glib_version} gmodule-2.0 >= \${gtkmm_min_glib_version}\"") >&5
+ ($PKG_CONFIG --exists --print-errors "sigc++-2.0 >= ${gtkmm_min_sigc_version} glib-2.0 >= ${gtkmm_min_glib_version} gobject-2.0 >= ${gtkmm_min_glib_version} gmodule-2.0 >= ${gtkmm_min_glib_version}") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_GLIBMM_LIBS=`$PKG_CONFIG --libs "sigc++-2.0 >= ${gtkmm_min_sigc_version} glib-2.0 >= ${gtkmm_min_glib_version} gobject-2.0 >= ${gtkmm_min_glib_version} gmodule-2.0 >= ${gtkmm_min_glib_version}" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GLIBMM_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "sigc++-2.0 >= ${gtkmm_min_sigc_version} glib-2.0 >= ${gtkmm_min_glib_version} gobject-2.0 >= ${gtkmm_min_glib_version} gmodule-2.0 >= ${gtkmm_min_glib_version}"`
+ else
+ GLIBMM_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "sigc++-2.0 >= ${gtkmm_min_sigc_version} glib-2.0 >= ${gtkmm_min_glib_version} gobject-2.0 >= ${gtkmm_min_glib_version} gmodule-2.0 >= ${gtkmm_min_glib_version}"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GLIBMM_PKG_ERRORS" >&5
+
+ { { echo "$as_me:$LINENO: error: Package requirements (sigc++-2.0 >= ${gtkmm_min_sigc_version} glib-2.0 >= ${gtkmm_min_glib_version} gobject-2.0 >= ${gtkmm_min_glib_version} gmodule-2.0 >= ${gtkmm_min_glib_version}) were not met:
+
+$GLIBMM_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables GLIBMM_CFLAGS
+and GLIBMM_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&5
+echo "$as_me: error: Package requirements (sigc++-2.0 >= ${gtkmm_min_sigc_version} glib-2.0 >= ${gtkmm_min_glib_version} gobject-2.0 >= ${gtkmm_min_glib_version} gmodule-2.0 >= ${gtkmm_min_glib_version}) were not met:
+
+$GLIBMM_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables GLIBMM_CFLAGS
+and GLIBMM_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&2;}
+ { (exit 1); exit 1; }; }
+elif test $pkg_failed = untried; then
+ { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables GLIBMM_CFLAGS
+and GLIBMM_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+See \`config.log' for more details." >&5
+echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables GLIBMM_CFLAGS
+and GLIBMM_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ GLIBMM_CFLAGS=$pkg_cv_GLIBMM_CFLAGS
+ GLIBMM_LIBS=$pkg_cv_GLIBMM_LIBS
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ :
+fi
+
+
+
+# gthread isn't a requirement, but we should use its CFLAGS if available.
+
+pkg_failed=no
+echo "$as_me:$LINENO: checking for GTHREAD" >&5
+echo $ECHO_N "checking for GTHREAD... $ECHO_C" >&6
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GTHREAD_CFLAGS"; then
+ pkg_cv_GTHREAD_CFLAGS="$GTHREAD_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gthread-2.0 >= \${gtkmm_min_glib_version}\"") >&5
+ ($PKG_CONFIG --exists --print-errors "gthread-2.0 >= ${gtkmm_min_glib_version}") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_GTHREAD_CFLAGS=`$PKG_CONFIG --cflags "gthread-2.0 >= ${gtkmm_min_glib_version}" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GTHREAD_LIBS"; then
+ pkg_cv_GTHREAD_LIBS="$GTHREAD_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gthread-2.0 >= \${gtkmm_min_glib_version}\"") >&5
+ ($PKG_CONFIG --exists --print-errors "gthread-2.0 >= ${gtkmm_min_glib_version}") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_GTHREAD_LIBS=`$PKG_CONFIG --libs "gthread-2.0 >= ${gtkmm_min_glib_version}" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GTHREAD_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gthread-2.0 >= ${gtkmm_min_glib_version}"`
+ else
+ GTHREAD_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gthread-2.0 >= ${gtkmm_min_glib_version}"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GTHREAD_PKG_ERRORS" >&5
+
+ GTHREAD_CFLAGS=''; GTHREAD_LIBS=''
+elif test $pkg_failed = untried; then
+ GTHREAD_CFLAGS=''; GTHREAD_LIBS=''
+else
+ GTHREAD_CFLAGS=$pkg_cv_GTHREAD_CFLAGS
+ GTHREAD_LIBS=$pkg_cv_GTHREAD_LIBS
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ :
+fi
+
+
+
+
+#########################################################################
+# C++ checks
+#########################################################################
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CXX"; then
+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+ echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$CXX" && break
+ done
+fi
+if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CXX"; then
+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CXX="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_CXX" && break
+done
+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+ CXX=$ac_ct_CXX
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+ "checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cxx_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cxx_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
+if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+ if test "$GXX" = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-g"
+ fi
+else
+ if test "$GXX" = yes; then
+ CXXFLAGS="-O2"
+ else
+ CXXFLAGS=
+ fi
+fi
+for ac_declaration in \
+ '' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CXX" am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CXX_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CXX_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+
+
+if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+ am__fastdepCXX_TRUE=
+ am__fastdepCXX_FALSE='#'
+else
+ am__fastdepCXX_TRUE='#'
+ am__fastdepCXX_FALSE=
+fi
+
+
+
+# Check for the SUN Forte compiler, and define GLIBMM_COMPILER_SUN_FORTE in the header.
+echo "$as_me:$LINENO: checking whether we are using SUN CC compiler" >&5
+echo $ECHO_N "checking whether we are using SUN CC compiler... $ECHO_C" >&6
+if test "${ac_cv_prog_sun_cxx+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if { ac_try='${CXX-g++} -V 2>&1'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } | egrep "Sun WorkShop" >/dev/null 2>&1; then
+ ac_cv_prog_sun_cxx=yes
+ else
+ ac_cv_prog_sun_cxx=no
+ fi
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_sun_cxx" >&5
+echo "${ECHO_T}$ac_cv_prog_sun_cxx" >&6
+
+ if test "x${ac_cv_prog_sun_cxx}" = "xyes"; then
+ {
+
+cat >>confdefs.h <<\_ACEOF
+#define GLIBMM_COMPILER_SUN_FORTE 1
+_ACEOF
+
+ }
+ fi
+
+
+# Ensure MSVC-compatible struct packing convention is used when
+# compiling for Win32 with gcc.
+# What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
+# gcc2 uses "-fnative-struct".
+if test x"$os_win32" = xyes; then
+ if test x"$GCC" = xyes -a x"$GXX" = xyes; then
+ msnative_struct=''
+ echo "$as_me:$LINENO: checking how to get MSVC-compatible struct packing" >&5
+echo $ECHO_N "checking how to get MSVC-compatible struct packing... $ECHO_C" >&6
+ if test -z "$ac_cv_prog_CC"; then
+ our_gcc="$CC"
+ else
+ our_gcc="$ac_cv_prog_CC"
+ fi
+ case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
+ 2.)
+ if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then
+ msnative_struct='-fnative-struct'
+ fi
+ ;;
+ *)
+ if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then
+ msnative_struct='-mms-bitfields'
+ fi
+ ;;
+ esac
+ if test x"$msnative_struct" = x ; then
+ echo "$as_me:$LINENO: result: no way" >&5
+echo "${ECHO_T}no way" >&6
+ { echo "$as_me:$LINENO: WARNING: produced libraries might be incompatible with MSVC-compiled code" >&5
+echo "$as_me: WARNING: produced libraries might be incompatible with MSVC-compiled code" >&2;}
+ else
+ CXXFLAGS="$CXXFLAGS $msnative_struct"
+ echo "$as_me:$LINENO: result: ${msnative_struct}" >&5
+echo "${ECHO_T}${msnative_struct}" >&6
+ fi
+ fi
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+echo "$as_me:$LINENO: checking if C++ compiler supports bool" >&5
+echo $ECHO_N "checking if C++ compiler supports bool... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+
+int
+main ()
+{
+
+ bool b=true;
+ bool b1=false;
+ (void)b;
+ (void)b1;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ ac_cxx_bool=yes
+ echo "$as_me:$LINENO: result: $ac_cxx_bool" >&5
+echo "${ECHO_T}$ac_cxx_bool" >&6
+
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+ ac_cxx_bool=no
+ echo "$as_me:$LINENO: result: $ac_cxx_bool" >&5
+echo "${ECHO_T}$ac_cxx_bool" >&6
+ config_error=yes
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+echo "$as_me:$LINENO: checking if C++ compiler supports namespaces" >&5
+echo $ECHO_N "checking if C++ compiler supports namespaces... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+namespace Foo { struct A {}; }
+using namespace Foo;
+
+int
+main ()
+{
+
+A a;
+(void)a;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ ac_cxx_namespaces=yes
+ echo "$as_me:$LINENO: result: $ac_cxx_namespaces" >&5
+echo "${ECHO_T}$ac_cxx_namespaces" >&6
+
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+ ac_cxx_namespaces=no
+ echo "$as_me:$LINENO: result: $ac_cxx_namespaces" >&5
+echo "${ECHO_T}$ac_cxx_namespaces" >&6
+ config_error=yes
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+echo "$as_me:$LINENO: checking if C++ compiler supports mutable" >&5
+echo $ECHO_N "checking if C++ compiler supports mutable... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+class k {
+ mutable char *c;
+public:
+ void foo() const { c=0; }
+};
+
+int
+main ()
+{
+
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ ac_cxx_mutable=yes
+ echo "$as_me:$LINENO: result: $ac_cxx_mutable" >&5
+echo "${ECHO_T}$ac_cxx_mutable" >&6
+
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+ ac_cxx_mutable=no
+ echo "$as_me:$LINENO: result: $ac_cxx_mutable" >&5
+echo "${ECHO_T}$ac_cxx_mutable" >&6
+ config_error=yes
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+echo "$as_me:$LINENO: checking if C++ environment provides all required features" >&5
+echo $ECHO_N "checking if C++ environment provides all required features... $ECHO_C" >&6
+if test "x$config_error" = xyes ; then
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ { { echo "$as_me:$LINENO: error: Your compiler is not powerful enough to compile gtkmm. If it should be, see config.log for more information of why it failed." >&5
+echo "$as_me: error: Your compiler is not powerful enough to compile gtkmm. If it should be, see config.log for more information of why it failed." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+
+ echo "$as_me:$LINENO: checking whether C++ library symbols are declared in namespace std" >&5
+echo $ECHO_N "checking whether C++ library symbols are declared in namespace std... $ECHO_C" >&6
+if test "${gtkmm_cv_cxx_has_namespace_std+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <algorithm>
+ #include <iterator>
+ #include <iostream>
+ #include <string>
+
+int
+main ()
+{
+
+ using std::min;
+ using std::find;
+ using std::copy;
+ using std::bidirectional_iterator_tag;
+ using std::string;
+ using std::istream;
+ using std::cout;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gtkmm_cv_cxx_has_namespace_std="yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+gtkmm_cv_cxx_has_namespace_std="no"
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $gtkmm_cv_cxx_has_namespace_std" >&5
+echo "${ECHO_T}$gtkmm_cv_cxx_has_namespace_std" >&6
+
+ if test "x${gtkmm_cv_cxx_has_namespace_std}" = "xyes"; then
+ {
+
+cat >>confdefs.h <<\_ACEOF
+#define GLIBMM_HAVE_NAMESPACE_STD 1
+_ACEOF
+
+ }
+ fi
+
+
+
+
+ echo "$as_me:$LINENO: checking whether the C++ library supports std::iterator_traits" >&5
+echo $ECHO_N "checking whether the C++ library supports std::iterator_traits... $ECHO_C" >&6
+if test "${gtkmm_cv_cxx_has_std_iterator_traits+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <iterator>
+ #ifdef GLIBMM_HAVE_NAMESPACE_STD
+ using namespace std;
+ #endif
+
+int
+main ()
+{
+
+ typedef iterator_traits<char*>::value_type ValueType;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gtkmm_cv_cxx_has_std_iterator_traits="yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+gtkmm_cv_cxx_has_std_iterator_traits="no"
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $gtkmm_cv_cxx_has_std_iterator_traits" >&5
+echo "${ECHO_T}$gtkmm_cv_cxx_has_std_iterator_traits" >&6
+
+ if test "x${gtkmm_cv_cxx_has_std_iterator_traits}" = "xyes"; then
+ {
+
+cat >>confdefs.h <<\_ACEOF
+#define GLIBMM_HAVE_STD_ITERATOR_TRAITS 1
+_ACEOF
+
+ }
+ fi
+
+
+
+
+ echo "$as_me:$LINENO: checking for non-standard Sun libCstd reverse_iterator" >&5
+echo $ECHO_N "checking for non-standard Sun libCstd reverse_iterator... $ECHO_C" >&6
+if test "${gtkmm_cv_cxx_has_sun_reverse_iterator+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <iterator>
+ #ifdef GLIBMM_HAVE_NAMESPACE_STD
+ using namespace std;
+ #endif
+
+int
+main ()
+{
+
+ typedef reverse_iterator<char*,random_access_iterator_tag,char,char&,char*,int> ReverseIter;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gtkmm_cv_cxx_has_sun_reverse_iterator="yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+gtkmm_cv_cxx_has_sun_reverse_iterator="no"
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $gtkmm_cv_cxx_has_sun_reverse_iterator" >&5
+echo "${ECHO_T}$gtkmm_cv_cxx_has_sun_reverse_iterator" >&6
+
+ if test "x${gtkmm_cv_cxx_has_sun_reverse_iterator}" = "xyes"; then
+ {
+
+cat >>confdefs.h <<\_ACEOF
+#define GLIBMM_HAVE_SUN_REVERSE_ITERATOR 1
+_ACEOF
+
+ }
+ fi
+
+
+
+
+ echo "$as_me:$LINENO: checking whether STL containers have templated sequence constructors" >&5
+echo $ECHO_N "checking whether STL containers have templated sequence constructors... $ECHO_C" >&6
+if test "${gtkmm_cv_cxx_has_template_sequence_ctors+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <vector>
+ #include <deque>
+ #include <list>
+ #ifdef GLIBMM_HAVE_NAMESPACE_STD
+ using namespace std;
+ #endif
+
+int
+main ()
+{
+
+ const int array[8] = { 0, };
+ vector<int> test_vector (&array[0], &array[8]);
+ deque<short> test_deque (test_vector.begin(), test_vector.end());
+ list<long> test_list (test_deque.begin(), test_deque.end());
+ test_vector.assign(test_list.begin(), test_list.end());
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gtkmm_cv_cxx_has_template_sequence_ctors="yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+gtkmm_cv_cxx_has_template_sequence_ctors="no"
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $gtkmm_cv_cxx_has_template_sequence_ctors" >&5
+echo "${ECHO_T}$gtkmm_cv_cxx_has_template_sequence_ctors" >&6
+
+ if test "x${gtkmm_cv_cxx_has_template_sequence_ctors}" = "xyes"; then
+ {
+
+cat >>confdefs.h <<\_ACEOF
+#define GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS 1
+_ACEOF
+
+ }
+ fi
+
+
+echo "$as_me:$LINENO: checking if C++ compiler allows member functions to refer to member templates" >&5
+echo $ECHO_N "checking if C++ compiler allows member functions to refer to member templates... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ struct foo {
+ template <class C> inline
+ void doit();
+ void thebug();
+ };
+
+ template <class C> inline
+ void foo::doit() {
+ }
+
+ struct bar {
+ void neitherabug();
+ };
+
+ void notabug() {
+ void (foo::*func)();
+ func = &foo::doit<int>;
+ (void)func;
+ }
+
+ void bar::neitherabug() {
+ void (foo::*func)();
+ func = &foo::doit<int>;
+ (void)func;
+ }
+
+ void foo::thebug() {
+ void (foo::*func)();
+ func = &foo::doit<int>; //Compiler bugs usually show here.
+ (void)func;
+ }
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ glibmm_cxx_member_functions_member_templates=yes
+
+cat >>confdefs.h <<\_ACEOF
+#define GLIBMM_MEMBER_FUNCTIONS_MEMBER_TEMPLATES 1
+_ACEOF
+
+ echo "$as_me:$LINENO: result: $glibmm_cxx_member_functions_member_templates" >&5
+echo "${ECHO_T}$glibmm_cxx_member_functions_member_templates" >&6
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+ glibmm_cxx_member_functions_member_templates=no
+ cat >>confdefs.h <<\_ACEOF
+#define GLIBMM_MEMBER_FUNCTIONS_MEMBER_TEMPLATES 0
+_ACEOF
+
+ echo "$as_me:$LINENO: result: $glibmm_cxx_member_functions_member_templates" >&5
+echo "${ECHO_T}$glibmm_cxx_member_functions_member_templates" >&6
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+
+
+ echo "$as_me:$LINENO: checking whether the compiler finds it ambiguous to have both const and non-const template specializations" >&5
+echo $ECHO_N "checking whether the compiler finds it ambiguous to have both const and non-const template specializations... $ECHO_C" >&6
+if test "${glibmm_cv_cxx_can_disambiguate_const_template_specializations+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <iostream>
+
+ template <class T> class Foo {};
+
+ template <typename T> class Traits {
+ public:
+ const char* whoami() {
+ return "generic template";
+ }
+ };
+
+ template <typename T> class Traits<Foo<T> > {
+ public:
+ const char* whoami() {
+ return "partial specialization for Foo<T>";
+ }
+ };
+
+ template <typename T> class Traits<Foo<const T> > {
+ public:
+ const char* whoami() {
+ return "partial specialization for Foo<const T>";
+ }
+ };
+
+
+int
+main ()
+{
+
+ Traits<int> it;
+ Traits<Foo<int> > fit;
+ Traits<Foo<const int> > cfit;
+
+ std::cout << "Traits<int> --> "
+ << it.whoami() << std::endl;
+ std::cout << "Traits<Foo<int>> --> "
+ << fit.whoami() << std::endl;
+ std::cout << "Traits<Foo<const int >> --> "
+ << cfit.whoami() << std::endl;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibmm_cv_cxx_can_disambiguate_const_template_specializations="yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibmm_cv_cxx_can_disambiguate_const_template_specializations="no"
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $glibmm_cv_cxx_can_disambiguate_const_template_specializations" >&5
+echo "${ECHO_T}$glibmm_cv_cxx_can_disambiguate_const_template_specializations" >&6
+
+ if test "x${glibmm_cv_cxx_can_disambiguate_const_template_specializations}" = "xyes"; then
+ {
+
+cat >>confdefs.h <<\_ACEOF
+#define GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS 1
+_ACEOF
+
+ }
+ fi
+
+
+ echo "$as_me:$LINENO: checking whether the compiler allows us to define a template that uses dynamic_cast<> with an object whose type is not yet defined" >&5
+echo $ECHO_N "checking whether the compiler allows us to define a template that uses dynamic_cast<> with an object whose type is not yet defined... $ECHO_C" >&6
+if test "${glibmm_cv_cxx_can_use_dynamic_cast_in_unused_template_without_definition+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ class SomeClass;
+
+ SomeClass* some_function();
+
+ template <class T>
+ class SomeTemplate
+ {
+ static bool do_something()
+ {
+ //This does not compile, with the MipsPro (IRIX) compiler
+ //even if we don't use this template at all.
+ //(We would use it later, after we have defined the type).
+ return dynamic_cast<T*>(some_function());
+ }
+ };
+
+
+int
+main ()
+{
+
+
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibmm_cv_cxx_can_use_dynamic_cast_in_unused_template_without_definition="yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibmm_cv_cxx_can_use_dynamic_cast_in_unused_template_without_definition="no"
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $glibmm_cv_cxx_can_use_dynamic_cast_in_unused_template_without_definition" >&5
+echo "${ECHO_T}$glibmm_cv_cxx_can_use_dynamic_cast_in_unused_template_without_definition" >&6
+
+ if test "x${glibmm_cv_cxx_can_use_dynamic_cast_in_unused_template_without_definition}" = "xyes"; then
+ {
+
+cat >>confdefs.h <<\_ACEOF
+#define GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION 1
+_ACEOF
+
+ }
+ fi
+
+
+ echo "$as_me:$LINENO: checking whether the the compilerallows us to use a non-extern \"C\" function for an extern \"C\" function pointer." >&5
+echo $ECHO_N "checking whether the the compilerallows us to use a non-extern \"C\" function for an extern \"C\" function pointer.... $ECHO_C" >&6
+if test "${glibmm_cv_cxx_can_assign_non_extern_c_functions_to_extern_c_callbacks+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ extern "C"
+ {
+ struct somestruct
+ {
+ void (*callback) (int);
+ };
+
+ } // extern "C"
+
+ void somefunction(int)
+ {
+ }
+
+
+int
+main ()
+{
+
+ somestruct something;
+ something.callback = &somefunction;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibmm_cv_cxx_can_assign_non_extern_c_functions_to_extern_c_callbacks="yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibmm_cv_cxx_can_assign_non_extern_c_functions_to_extern_c_callbacks="no"
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $glibmm_cv_cxx_can_assign_non_extern_c_functions_to_extern_c_callbacks" >&5
+echo "${ECHO_T}$glibmm_cv_cxx_can_assign_non_extern_c_functions_to_extern_c_callbacks" >&6
+
+ if test "x${glibmm_cv_cxx_can_assign_non_extern_c_functions_to_extern_c_callbacks}" = "xyes"; then
+ {
+
+cat >>confdefs.h <<\_ACEOF
+#define GLIBMM_CAN_ASSIGN_NON_EXTERN_C_FUNCTIONS_TO_EXTERN_C_CALLBACKS 1
+_ACEOF
+
+ }
+ fi
+
+
+ echo "$as_me:$LINENO: checking whether the compiler uses namespace declarations inside extern \"C\" blocks." >&5
+echo $ECHO_N "checking whether the compiler uses namespace declarations inside extern \"C\" blocks.... $ECHO_C" >&6
+if test "${glibmm_cv_cxx_can_use_namespaces_inside_externc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ namespace test
+ {
+
+ extern "C"
+ {
+
+ void do_something();
+
+ } //extern C
+
+
+ class Something
+ {
+ protected:
+ int i;
+
+ friend void do_something();
+ };
+
+ void do_something()
+ {
+ Something something;
+ something.i = 1;
+ }
+
+ } //namespace
+
+
+
+int
+main ()
+{
+
+
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ glibmm_cv_cxx_can_use_namespaces_inside_externc="yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+glibmm_cv_cxx_can_use_namespaces_inside_externc="no"
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $glibmm_cv_cxx_can_use_namespaces_inside_externc" >&5
+echo "${ECHO_T}$glibmm_cv_cxx_can_use_namespaces_inside_externc" >&6
+
+ if test "x${glibmm_cv_cxx_can_use_namespaces_inside_externc}" = "xyes"; then
+ {
+
+cat >>confdefs.h <<\_ACEOF
+#define GLIBMM_CAN_USE_NAMESPACES_INSIDE_EXTERNC 1
+_ACEOF
+
+ }
+ fi
+
+
+
+
+ echo "$as_me:$LINENO: checking whether the compiler allows a static member variable to be initialized inline to std::string::npos" >&5
+echo $ECHO_N "checking whether the compiler allows a static member variable to be initialized inline to std::string::npos... $ECHO_C" >&6
+if test "${gtkmm_cv_cxx_has_allows_static_inline_npos+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <string>
+ #include <iostream>
+
+ class ustringtest
+ {
+ public:
+ //The MipsPro compiler (IRIX) says "The indicated constant value is not known",
+ //so we need to initalize the static member data elsewhere.
+ static const std::string::size_type ustringnpos = std::string::npos;
+ };
+
+int
+main ()
+{
+
+ std::cout << "npos=" << ustringtest::ustringnpos << std::endl;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gtkmm_cv_cxx_has_allows_static_inline_npos="yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+gtkmm_cv_cxx_has_allows_static_inline_npos="no"
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $gtkmm_cv_cxx_has_allows_static_inline_npos" >&5
+echo "${ECHO_T}$gtkmm_cv_cxx_has_allows_static_inline_npos" >&6
+
+ if test "x${gtkmm_cv_cxx_has_allows_static_inline_npos}" = "xyes"; then
+ {
+
+cat >>confdefs.h <<\_ACEOF
+#define GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS 1
+_ACEOF
+
+ }
+ fi
+
+
+
+# Create a list of input directories for Doxygen.
+
+GTKMM_DOXYGEN_INPUT=
+gtkmm_srcdir=`cd "$srcdir" >/dev/null && pwd`
+
+gtkmm_list="glib"
+for gtkmm_sublib in $gtkmm_list
+do
+ GTKMM_DOXYGEN_INPUT="$GTKMM_DOXYGEN_INPUT ${gtkmm_srcdir}/${gtkmm_sublib}/${gtkmm_sublib}mm/"
+done
+
+
+
+
+# Check whether to build the full docs into the generated source.
+# This will be much slower.
+
+
+
+echo "$as_me:$LINENO: checking whether to merge C reference docs into generated headers" >&5
+echo $ECHO_N "checking whether to merge C reference docs into generated headers... $ECHO_C" >&6
+
+# Check whether --enable-fulldocs or --disable-fulldocs was given.
+if test "${enable_fulldocs+set}" = set; then
+ enableval="$enable_fulldocs"
+ gtkmm_enable_fulldocs=$enableval
+else
+ gtkmm_enable_fulldocs=$USE_MAINTAINER_MODE
+fi;
+
+echo "$as_me:$LINENO: result: ${gtkmm_enable_fulldocs}" >&5
+echo "${ECHO_T}${gtkmm_enable_fulldocs}" >&6
+
+GTKMMPROC_MERGECDOCS=
+
+if test "x$gtkmm_enable_fulldocs" = xyes; then
+{
+ GTKMMPROC_MERGECDOCS='--mergecdocs'
+
+ if test "x$USE_MAINTAINER_MODE" != xyes; then
+ {
+ { echo "$as_me:$LINENO: WARNING:
+*** --enable-fulldocs only works if --enable-maintainer-mode is also set.
+*** gtkmm source tarballs should be packaged with --enable-fulldocs, so
+*** usually you don't need this option unless you got gtkmm from CVS.
+" >&5
+echo "$as_me: WARNING:
+*** --enable-fulldocs only works if --enable-maintainer-mode is also set.
+*** gtkmm source tarballs should be packaged with --enable-fulldocs, so
+*** usually you don't need this option unless you got gtkmm from CVS.
+" >&2;}
+ }
+ fi
+
+ echo "$as_me:$LINENO: checking whether the XML::Parser module is available" >&5
+echo $ECHO_N "checking whether the XML::Parser module is available... $ECHO_C" >&6
+if test "${gtkmm_cv_have_xml_parser+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ gtkmm_cv_have_xml_parser=no
+ "$PERL_PATH" -e 'use strict; use XML::Parser; exit 0;' >&5 2>&5 && gtkmm_cv_have_xml_parser=yes
+
+fi
+echo "$as_me:$LINENO: result: $gtkmm_cv_have_xml_parser" >&5
+echo "${ECHO_T}$gtkmm_cv_have_xml_parser" >&6
+
+ if test "x$gtkmm_cv_have_xml_parser" = xno; then
+ {
+ { { echo "$as_me:$LINENO: error:
+*** The Perl module XML::Parser is required to build $PACKAGE from CVS.
+" >&5
+echo "$as_me: error:
+*** The Perl module XML::Parser is required to build $PACKAGE from CVS.
+" >&2;}
+ { (exit 1); exit 1; }; }
+ }
+ fi
+}
+fi
+
+
+
+
+# Check whether --enable-debug-refcounting was given.
+
+ # Check whether --enable-debug-refcounting or --disable-debug-refcounting was given.
+if test "${enable_debug_refcounting+set}" = set; then
+ enableval="$enable_debug_refcounting"
+ glibmm_debug_refcounting="$enableval"
+else
+ glibmm_debug_refcounting='no'
+fi;
+
+ if test "x$glibmm_debug_refcounting" = "xyes"; then
+ {
+
+cat >>confdefs.h <<\_ACEOF
+#define GLIBMM_DEBUG_REFCOUNTING 1
+_ACEOF
+
+ }
+ fi
+
+
+# Evaluate the --enable-warnings=level option.
+
+ # Check whether --enable-warnings or --disable-warnings was given.
+if test "${enable_warnings+set}" = set; then
+ enableval="$enable_warnings"
+ gtkmm_enable_warnings="$enableval"
+else
+ gtkmm_enable_warnings='minimum'
+fi;
+
+ echo "$as_me:$LINENO: checking for compiler warning flags to use" >&5
+echo $ECHO_N "checking for compiler warning flags to use... $ECHO_C" >&6
+
+ gtkmm_warning_flags=''
+
+ case "$gtkmm_enable_warnings" in
+ minimum|yes) gtkmm_warning_flags='-Wall -Wno-long-long';;
+ maximum) gtkmm_warning_flags='-pedantic -W -Wall -Wno-long-long';;
+ hardcore) gtkmm_warning_flags='-pedantic -W -Wall -Wno-long-long -Werror';;
+ esac
+
+ gtkmm_use_flags=''
+
+ if test "x$gtkmm_warning_flags" != "x"
+ then
+ echo 'int foo() { return 0; }' > conftest.cc
+
+ for flag in $gtkmm_warning_flags
+ do
+ # Test whether the compiler accepts the flag. GCC doesn't bail
+ # out when given an unsupported flag but prints a warning, so
+ # check the compiler output instead.
+ gtkmm_cxx_out="`$CXX $flag -c conftest.cc 2>&1`"
+ rm -f conftest.$OBJEXT
+ test "x${gtkmm_cxx_out}" = "x" && \
+ gtkmm_use_flags="${gtkmm_use_flags:+$gtkmm_use_flags }$flag"
+ done
+
+ rm -f conftest.cc
+ gtkmm_cxx_out=''
+ fi
+
+ if test "x$gtkmm_use_flags" != "x"
+ then
+ for flag in $gtkmm_use_flags
+ do
+ case " $CXXFLAGS " in
+ *" $flag "*) ;; # don't add flags twice
+ *) CXXFLAGS="${CXXFLAGS:+$CXXFLAGS }$flag";;
+ esac
+ done
+ else
+ gtkmm_use_flags='none'
+ fi
+
+ echo "$as_me:$LINENO: result: $gtkmm_use_flags" >&5
+echo "${ECHO_T}$gtkmm_use_flags" >&6
+
+
+# Add an --enable-use-deprecations configure option:
+# Check whether --enable-deprecations or --disable-deprecations was given.
+if test "${enable_deprecations+set}" = set; then
+ enableval="$enable_deprecations"
+
+else
+ enable_deprecations=no
+fi;
+
+if test "x$enable_use_deprecations" = "xyes"; then
+ DISABLE_DEPRECATED_CFLAGS="-DG_DISABLE_DEPRECATED"
+
+fi
+
+#Offer the ability to omit some API from the library,
+#to reduce the code size:
+
+ # Check whether --enable-deprecated-api or --disable-deprecated-api was given.
+if test "${enable_deprecated_api+set}" = set; then
+ enableval="$enable_deprecated_api"
+ glibmm_enable_api_deprecated="$enableval"
+else
+ glibmm_enable_api_deprecated='yes'
+fi;
+
+ if test "x$glibmm_enable_api_deprecated" = "xyes"; then
+ {
+ { echo "$as_me:$LINENO: WARNING: Deprecated API will be built, for backwards-compatibility." >&5
+echo "$as_me: WARNING: Deprecated API will be built, for backwards-compatibility." >&2;}
+ }
+ else
+ {
+ { echo "$as_me:$LINENO: WARNING: Deprecated API will not be built, breaking backwards-compatibility. Do not use this build for distribution packages." >&5
+echo "$as_me: WARNING: Deprecated API will not be built, breaking backwards-compatibility. Do not use this build for distribution packages." >&2;}
+ DISABLE_DEPRECATED_API_CFLAGS="-DGLIBMM_DISABLE_DEPRECATED"
+
+ }
+ fi
+
+
+ # Check whether --enable-api-exceptions or --disable-api-exceptions was given.
+if test "${enable_api_exceptions+set}" = set; then
+ enableval="$enable_api_exceptions"
+ glibmm_enable_api_exceptions="$enableval"
+else
+ glibmm_enable_api_exceptions='yes'
+fi;
+
+ if test "x$glibmm_enable_api_exceptions" = "xyes"; then
+ {
+
+cat >>confdefs.h <<\_ACEOF
+#define GLIBMM_EXCEPTIONS_ENABLED 1
+_ACEOF
+
+ }
+ fi
+
+
+ # Check whether --enable-api-properties or --disable-api-properties was given.
+if test "${enable_api_properties+set}" = set; then
+ enableval="$enable_api_properties"
+ glibmm_enable_api_properties="$enableval"
+else
+ glibmm_enable_api_properties='yes'
+fi;
+
+ if test "x$glibmm_enable_api_properties" = "xyes"; then
+ {
+
+cat >>confdefs.h <<\_ACEOF
+#define GLIBMM_PROPERTIES_ENABLED 1
+_ACEOF
+
+ }
+ fi
+
+
+ # Check whether --enable-api-vfuncs or --disable-api-vfuncs was given.
+if test "${enable_api_vfuncs+set}" = set; then
+ enableval="$enable_api_vfuncs"
+ glibmm_enable_api_vfuncs="$enableval"
+else
+ glibmm_enable_api_vfuncs='yes'
+fi;
+
+ if test "x$glibmm_enable_api_vfuncs" = "xyes"; then
+ {
+
+cat >>confdefs.h <<\_ACEOF
+#define GLIBMM_VFUNCS_ENABLED 1
+_ACEOF
+
+ }
+ fi
+
+
+# Offer the ability to omit some API from the library,
+# to reduce the code size:
+
+ # Check whether --enable-api-default-signal-handlers or --disable-api-default-signal-handlers was given.
+if test "${enable_api_default_signal_handlers+set}" = set; then
+ enableval="$enable_api_default_signal_handlers"
+ glibmm_enable_api_default_signal_handlers="$enableval"
+else
+ glibmm_enable_api_default_signal_handlers='yes'
+fi;
+
+ if test "x$glibmm_enable_api_default_signal_handlers" = "xyes"; then
+ {
+
+cat >>confdefs.h <<\_ACEOF
+#define GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED 1
+_ACEOF
+
+ }
+ fi
+
+
+# Dummy conditional just to make automake-1.4 happy.
+# We need an always-false condition in docs/Makefile.am.
+
+
+if false; then
+ GTKMM_FALSE_TRUE=
+ GTKMM_FALSE_FALSE='#'
+else
+ GTKMM_FALSE_TRUE='#'
+ GTKMM_FALSE_FALSE=
+fi
+
+
+# HACK: Assign a dummy in order to prevent execution of autoheader by the
+# maintainer-mode rules. That would fail since we aren't using autoheader.
+AUTOHEADER=':'
+
+
+ ac_config_files="$ac_config_files Makefile glib/Makefile glib/glibmm-2.4.pc glib/src/Makefile glib/glibmm/Makefile glib/glibmm/private/Makefile tools/Makefile tools/gmmproc tools/generate_wrap_init.pl tools/m4/Makefile tools/pm/Makefile tools/extra_defs_gen/Makefile"
+
+
+ ac_config_files="$ac_config_files tests/Makefile tests/glibmm_value/Makefile examples/Makefile examples/markup/Makefile examples/options/Makefile examples/thread/Makefile examples/iochannel_stream/Makefile examples/child_watch/Makefile scripts/Makefile docs/Makefile docs/images/Makefile docs/reference/Makefile docs/reference/Doxyfile docs/reference/beautify_docs.pl docs/internal/Makefile"
+
+
+ ac_config_files="$ac_config_files MSVC_Net2003/Makefile MSVC_Net2003/gendef/Makefile MSVC_Net2003/glibmm/Makefile MSVC_Net2003/glibmm/glibmm.rc MSVC_Net2003/examples/Makefile MSVC_Net2003/examples/dispatcher/Makefile MSVC_Net2003/examples/dispatcher2/Makefile MSVC_Net2003/examples/markup/Makefile MSVC_Net2003/examples/options/Makefile MSVC_Net2003/examples/thread/Makefile MSVC_Net2003/examples/thread_pool/Makefile MSVC_Net2003/tests/Makefile MSVC_Net2003/tests/glibmm_value/Makefile"
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+ (set) 2>&1 |
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+} |
+ sed '
+ t clear
+ : clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+ if test -w $cache_file; then
+ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+ cat confcache >$cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[ ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[ ]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_i=`echo "$ac_i" |
+ sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+ # 2. Add them.
+ ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+ ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${PLATFORM_WIN32_TRUE}" && test -z "${PLATFORM_WIN32_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"PLATFORM_WIN32\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"PLATFORM_WIN32\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${OS_WIN32_TRUE}" && test -z "${OS_WIN32_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"OS_WIN32\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"OS_WIN32\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${GTKMM_FALSE_TRUE}" && test -z "${GTKMM_FALSE_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"GTKMM_FALSE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"GTKMM_FALSE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)$' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+ /^X\/\(\/\/\)$/{ s//\1/; q; }
+ /^X\/\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" || {
+ # Find who we are. Look in the path if we contain no path at all
+ # relative or not.
+ case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+ ;;
+ esac
+ # We did not find ourselves, most probably we were run as `sh COMMAND'
+ # in which case we are not to be found in the path.
+ if test "x$as_myself" = x; then
+ as_myself=$0
+ fi
+ if test ! -f "$as_myself"; then
+ { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ case $CONFIG_SHELL in
+ '')
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for as_base in sh bash ksh sh5; do
+ case $as_dir in
+ /*)
+ if ("$as_dir/$as_base" -c '
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then
+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+ CONFIG_SHELL=$as_dir/$as_base
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+ fi;;
+ esac
+ done
+done
+;;
+ esac
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line before each line; the second 'sed' does the real
+ # work. The second script uses 'N' to pair each line-number line
+ # with the numbered line, and appends trailing '-' during
+ # substitution so that $LINENO is not a special case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-)
+ sed '=' <$as_myself |
+ sed '
+ N
+ s,$,-,
+ : loop
+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+ t loop
+ s,-$,,
+ s,^['$as_cr_digits']*\n,,
+ ' >$as_me.lineno &&
+ chmod +x $as_me.lineno ||
+ { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensible to this).
+ . ./$as_me.lineno
+ # Exit status is that of the last command.
+ exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling. Logging --version etc. is OK.
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.59. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+ echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+ echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+ echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+ echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf@gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.59,
+ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "x$1" : 'x\([^=]*\)='`
+ ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ -*)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ *) # This is not an option, so the user has probably given explicit
+ # arguments.
+ ac_option=$1
+ ac_need_defaults=false;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --vers* | -V )
+ echo "$ac_cs_version"; exit 0 ;;
+ --he | --h)
+ # Conflict between --help and --header
+ { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; };;
+ --help | --hel | -h )
+ echo "$ac_cs_usage"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1" ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+ echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+ exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+#
+# INIT-COMMANDS section.
+#
+
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+ case "$ac_config_target" in
+ # Handling of arguments.
+ "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "glib/Makefile" ) CONFIG_FILES="$CONFIG_FILES glib/Makefile" ;;
+ "glib/glibmm-2.4.pc" ) CONFIG_FILES="$CONFIG_FILES glib/glibmm-2.4.pc" ;;
+ "glib/src/Makefile" ) CONFIG_FILES="$CONFIG_FILES glib/src/Makefile" ;;
+ "glib/glibmm/Makefile" ) CONFIG_FILES="$CONFIG_FILES glib/glibmm/Makefile" ;;
+ "glib/glibmm/private/Makefile" ) CONFIG_FILES="$CONFIG_FILES glib/glibmm/private/Makefile" ;;
+ "tools/Makefile" ) CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
+ "tools/gmmproc" ) CONFIG_FILES="$CONFIG_FILES tools/gmmproc" ;;
+ "tools/generate_wrap_init.pl" ) CONFIG_FILES="$CONFIG_FILES tools/generate_wrap_init.pl" ;;
+ "tools/m4/Makefile" ) CONFIG_FILES="$CONFIG_FILES tools/m4/Makefile" ;;
+ "tools/pm/Makefile" ) CONFIG_FILES="$CONFIG_FILES tools/pm/Makefile" ;;
+ "tools/extra_defs_gen/Makefile" ) CONFIG_FILES="$CONFIG_FILES tools/extra_defs_gen/Makefile" ;;
+ "tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
+ "tests/glibmm_value/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/glibmm_value/Makefile" ;;
+ "examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
+ "examples/markup/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/markup/Makefile" ;;
+ "examples/options/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/options/Makefile" ;;
+ "examples/thread/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/thread/Makefile" ;;
+ "examples/iochannel_stream/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/iochannel_stream/Makefile" ;;
+ "examples/child_watch/Makefile" ) CONFIG_FILES="$CONFIG_FILES examples/child_watch/Makefile" ;;
+ "scripts/Makefile" ) CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;;
+ "docs/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
+ "docs/images/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/images/Makefile" ;;
+ "docs/reference/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/reference/Makefile" ;;
+ "docs/reference/Doxyfile" ) CONFIG_FILES="$CONFIG_FILES docs/reference/Doxyfile" ;;
+ "docs/reference/beautify_docs.pl" ) CONFIG_FILES="$CONFIG_FILES docs/reference/beautify_docs.pl" ;;
+ "docs/internal/Makefile" ) CONFIG_FILES="$CONFIG_FILES docs/internal/Makefile" ;;
+ "MSVC_Net2003/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/Makefile" ;;
+ "MSVC_Net2003/gendef/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/gendef/Makefile" ;;
+ "MSVC_Net2003/glibmm/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/glibmm/Makefile" ;;
+ "MSVC_Net2003/glibmm/glibmm.rc" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/glibmm/glibmm.rc" ;;
+ "MSVC_Net2003/examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/examples/Makefile" ;;
+ "MSVC_Net2003/examples/dispatcher/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/examples/dispatcher/Makefile" ;;
+ "MSVC_Net2003/examples/dispatcher2/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/examples/dispatcher2/Makefile" ;;
+ "MSVC_Net2003/examples/markup/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/examples/markup/Makefile" ;;
+ "MSVC_Net2003/examples/options/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/examples/options/Makefile" ;;
+ "MSVC_Net2003/examples/thread/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/examples/thread/Makefile" ;;
+ "MSVC_Net2003/examples/thread_pool/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/examples/thread_pool/Makefile" ;;
+ "MSVC_Net2003/tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/tests/Makefile" ;;
+ "MSVC_Net2003/tests/glibmm_value/Makefile" ) CONFIG_FILES="$CONFIG_FILES MSVC_Net2003/tests/glibmm_value/Makefile" ;;
+ "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+ "glib/glibmmconfig.h" ) CONFIG_HEADERS="$CONFIG_HEADERS glib/glibmmconfig.h" ;;
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./confstat$$-$RANDOM
+ (umask 077 && mkdir $tmp)
+} ||
+{
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+ # Protect against being on the right side of a sed subst in config.status.
+ sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+ s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@build_alias@,$build_alias,;t t
+s,@host_alias@,$host_alias,;t t
+s,@target_alias@,$target_alias,;t t
+s,@DEFS@,$DEFS,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@LIBS@,$LIBS,;t t
+s,@GLIBMM_MAJOR_VERSION@,$GLIBMM_MAJOR_VERSION,;t t
+s,@GLIBMM_MINOR_VERSION@,$GLIBMM_MINOR_VERSION,;t t
+s,@GLIBMM_MICRO_VERSION@,$GLIBMM_MICRO_VERSION,;t t
+s,@GLIBMM_VERSION@,$GLIBMM_VERSION,;t t
+s,@GLIBMM_RELEASE@,$GLIBMM_RELEASE,;t t
+s,@LIBGLIBMM_SO_VERSION@,$LIBGLIBMM_SO_VERSION,;t t
+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+s,@CYGPATH_W@,$CYGPATH_W,;t t
+s,@PACKAGE@,$PACKAGE,;t t
+s,@VERSION@,$VERSION,;t t
+s,@ACLOCAL@,$ACLOCAL,;t t
+s,@AUTOCONF@,$AUTOCONF,;t t
+s,@AUTOMAKE@,$AUTOMAKE,;t t
+s,@AUTOHEADER@,$AUTOHEADER,;t t
+s,@MAKEINFO@,$MAKEINFO,;t t
+s,@install_sh@,$install_sh,;t t
+s,@STRIP@,$STRIP,;t t
+s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
+s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+s,@mkdir_p@,$mkdir_p,;t t
+s,@AWK@,$AWK,;t t
+s,@SET_MAKE@,$SET_MAKE,;t t
+s,@am__leading_dot@,$am__leading_dot,;t t
+s,@AMTAR@,$AMTAR,;t t
+s,@am__tar@,$am__tar,;t t
+s,@am__untar@,$am__untar,;t t
+s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
+s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
+s,@MAINT@,$MAINT,;t t
+s,@CC@,$CC,;t t
+s,@CFLAGS@,$CFLAGS,;t t
+s,@LDFLAGS@,$LDFLAGS,;t t
+s,@CPPFLAGS@,$CPPFLAGS,;t t
+s,@ac_ct_CC@,$ac_ct_CC,;t t
+s,@EXEEXT@,$EXEEXT,;t t
+s,@OBJEXT@,$OBJEXT,;t t
+s,@DEPDIR@,$DEPDIR,;t t
+s,@am__include@,$am__include,;t t
+s,@am__quote@,$am__quote,;t t
+s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
+s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
+s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
+s,@CCDEPMODE@,$CCDEPMODE,;t t
+s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
+s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
+s,@CPP@,$CPP,;t t
+s,@build@,$build,;t t
+s,@build_cpu@,$build_cpu,;t t
+s,@build_vendor@,$build_vendor,;t t
+s,@build_os@,$build_os,;t t
+s,@host@,$host,;t t
+s,@host_cpu@,$host_cpu,;t t
+s,@host_vendor@,$host_vendor,;t t
+s,@host_os@,$host_os,;t t
+s,@PLATFORM_WIN32_TRUE@,$PLATFORM_WIN32_TRUE,;t t
+s,@PLATFORM_WIN32_FALSE@,$PLATFORM_WIN32_FALSE,;t t
+s,@OS_WIN32_TRUE@,$OS_WIN32_TRUE,;t t
+s,@OS_WIN32_FALSE@,$OS_WIN32_FALSE,;t t
+s,@EGREP@,$EGREP,;t t
+s,@LN_S@,$LN_S,;t t
+s,@ECHO@,$ECHO,;t t
+s,@AR@,$AR,;t t
+s,@ac_ct_AR@,$ac_ct_AR,;t t
+s,@RANLIB@,$RANLIB,;t t
+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s,@DLLTOOL@,$DLLTOOL,;t t
+s,@ac_ct_DLLTOOL@,$ac_ct_DLLTOOL,;t t
+s,@AS@,$AS,;t t
+s,@ac_ct_AS@,$ac_ct_AS,;t t
+s,@OBJDUMP@,$OBJDUMP,;t t
+s,@ac_ct_OBJDUMP@,$ac_ct_OBJDUMP,;t t
+s,@CXX@,$CXX,;t t
+s,@CXXFLAGS@,$CXXFLAGS,;t t
+s,@ac_ct_CXX@,$ac_ct_CXX,;t t
+s,@CXXDEPMODE@,$CXXDEPMODE,;t t
+s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t
+s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t
+s,@CXXCPP@,$CXXCPP,;t t
+s,@F77@,$F77,;t t
+s,@FFLAGS@,$FFLAGS,;t t
+s,@ac_ct_F77@,$ac_ct_F77,;t t
+s,@LIBTOOL@,$LIBTOOL,;t t
+s,@M4@,$M4,;t t
+s,@PERL_PATH@,$PERL_PATH,;t t
+s,@PKG_CONFIG@,$PKG_CONFIG,;t t
+s,@ac_pt_PKG_CONFIG@,$ac_pt_PKG_CONFIG,;t t
+s,@GLIBMM_CFLAGS@,$GLIBMM_CFLAGS,;t t
+s,@GLIBMM_LIBS@,$GLIBMM_LIBS,;t t
+s,@GTHREAD_CFLAGS@,$GTHREAD_CFLAGS,;t t
+s,@GTHREAD_LIBS@,$GTHREAD_LIBS,;t t
+s,@GTKMM_DOXYGEN_INPUT@,$GTKMM_DOXYGEN_INPUT,;t t
+s,@GTKMMPROC_MERGECDOCS@,$GTKMMPROC_MERGECDOCS,;t t
+s,@DISABLE_DEPRECATED_CFLAGS@,$DISABLE_DEPRECATED_CFLAGS,;t t
+s,@DISABLE_DEPRECATED_API_CFLAGS@,$DISABLE_DEPRECATED_API_CFLAGS,;t t
+s,@GTKMM_FALSE_TRUE@,$GTKMM_FALSE_TRUE,;t t
+s,@GTKMM_FALSE_FALSE@,$GTKMM_FALSE_FALSE,;t t
+s,@LIBOBJS@,$LIBOBJS,;t t
+s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+ cat >>$CONFIG_STATUS <<\_ACEOF
+ # Split the substitutions into bite-sized pieces for seds with
+ # small command number limits, like on Digital OSF/1 and HP-UX.
+ ac_max_sed_lines=48
+ ac_sed_frag=1 # Number of current file.
+ ac_beg=1 # First line for current file.
+ ac_end=$ac_max_sed_lines # Line after last line for current file.
+ ac_more_lines=:
+ ac_sed_cmds=
+ while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ else
+ sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ fi
+ if test ! -s $tmp/subs.frag; then
+ ac_more_lines=false
+ else
+ # The purpose of the label and of the branching condition is to
+ # speed up the sed processing (if there are no `@' at all, there
+ # is no need to browse any of the substitutions).
+ # These are the two extra sed commands mentioned above.
+ (echo ':t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+ fi
+ ac_sed_frag=`expr $ac_sed_frag + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_lines`
+ fi
+ done
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+ fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+ esac
+
+ if test x"$ac_file" != x-; then
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ rm -f "$ac_file"
+ fi
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ configure_input=
+ else
+ configure_input="$ac_file. "
+ fi
+ configure_input=$configure_input"Generated from `echo $ac_file_in |
+ sed 's,.*/,,'` by configure."
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@abs_srcdir@,$ac_abs_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s,@builddir@,$ac_builddir,;t t
+s,@abs_builddir@,$ac_abs_builddir,;t t
+s,@top_builddir@,$ac_top_builddir,;t t
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+s,@INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+ rm -f $tmp/stdin
+ if test x"$ac_file" != x-; then
+ mv $tmp/out $ac_file
+ else
+ cat $tmp/out
+ rm -f $tmp/out
+ fi
+
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='[ ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ # Do quote $f, to prevent DOS paths from being IFS'd.
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+ # Remove the trailing spaces.
+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+
+_ACEOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h. The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status. Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\_ACEOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+t end
+s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+_ACEOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless. Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #undef with comments. This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >>conftest.undefs <<\_ACEOF
+s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+_ACEOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo ' :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+ # Write a limited-size here document to $tmp/defines.sed.
+ echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#define' lines.
+ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/defines.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo ' fi # grep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+ # Write a limited-size here document to $tmp/undefs.sed.
+ echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#undef'
+ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+ rm -f conftest.undefs
+ mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ echo "/* Generated by configure. */" >$tmp/config.h
+ else
+ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
+ fi
+ cat $tmp/in >>$tmp/config.h
+ rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ rm -f $ac_file
+ mv $tmp/config.h $ac_file
+ fi
+ else
+ cat $tmp/config.h
+ rm -f $tmp/config.h
+ fi
+# Compute $ac_file's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $ac_file | $ac_file:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
+$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X$ac_file : 'X\(//\)[^/]' \| \
+ X$ac_file : 'X\(//\)$' \| \
+ X$ac_file : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X$ac_file |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_COMMANDS section.
+#
+for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+ ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+ ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
+$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_dest" : 'X\(//\)[^/]' \| \
+ X"$ac_dest" : 'X\(//\)$' \| \
+ X"$ac_dest" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_dest" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ ac_builddir=.
+
+if test "$ac_dir" != .; then
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+ ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_srcdir=.
+ if test -z "$ac_top_builddir"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
+
+
+ { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
+echo "$as_me: executing $ac_dest commands" >&6;}
+ case $ac_dest in
+ depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # So let's grep whole file.
+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+ dirpart=`(dirname "$mf") 2>/dev/null ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`(dirname "$file") 2>/dev/null ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p $dirpart/$fdir
+ else
+ as_dir=$dirpart/$fdir
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
+echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+done
+ ;;
+ esac
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || { (exit 1); exit 1; }
+fi
+
+
diff --git a/libs/glibmm2/configure.in b/libs/glibmm2/configure.in
new file mode 100644
index 0000000000..90218e1f7a
--- /dev/null
+++ b/libs/glibmm2/configure.in
@@ -0,0 +1,302 @@
+# Configure.in
+#
+# This file tests for various compiler features needed to configure
+# the gtkmm package. Original skeleton was provided by Stephan Kulow.
+# All tests were written by Tero Pulkkinen, Mirko Streckenbach, and
+# Karl Nelson.
+#
+# NOTE! IF YOU DO CHANGES HERE, CHECK IF YOU NEED TO MODIFY .m4 TOO!!!
+#
+# Copyright 2001 Free Software Foundation
+# Copyright 1999 gtkmm Development Team
+# Copyright 1998 Stephan Kulow
+#
+AC_INIT(glib/glibmmconfig.h.in)
+AC_PREREQ(2.50)
+
+#########################################################################
+# Version and initialization
+#########################################################################
+GLIBMM_MAJOR_VERSION=2
+GLIBMM_MINOR_VERSION=13
+GLIBMM_MICRO_VERSION=3
+GLIBMM_VERSION=$GLIBMM_MAJOR_VERSION.$GLIBMM_MINOR_VERSION.$GLIBMM_MICRO_VERSION
+GLIBMM_RELEASE=$GLIBMM_MAJOR_VERSION.$GLIBMM_MINOR_VERSION
+AC_DEFINE_UNQUOTED([GLIBMM_MAJOR_VERSION], $GLIBMM_MAJOR_VERSION, [Major Version])
+AC_DEFINE_UNQUOTED([GLIBMM_MINOR_VERSION], $GLIBMM_MINOR_VERSION, [Minor Version])
+AC_DEFINE_UNQUOTED([GLIBMM_MICRO_VERSION], $GLIBMM_MICRO_VERSION, [Micro Version])
+AC_SUBST(GLIBMM_MAJOR_VERSION)
+AC_SUBST(GLIBMM_MINOR_VERSION)
+AC_SUBST(GLIBMM_MICRO_VERSION)
+AC_SUBST(GLIBMM_VERSION)
+AC_SUBST(GLIBMM_RELEASE)
+
+#
+# +1 : ? : +1 == new interface that does not break old one
+# +1 : ? : 0 == new interface that breaks old one
+# ? : ? : 0 == no new interfaces, but breaks apps
+# ? :+1 : ? == just some internal changes, nothing breaks but might work
+# better
+# CURRENT : REVISION : AGE
+LIBGLIBMM_SO_VERSION=1:24:0
+AC_SUBST(LIBGLIBMM_SO_VERSION)
+
+AC_CONFIG_AUX_DIR(scripts)
+
+dnl For automake.
+VERSION=$GLIBMM_VERSION
+PACKAGE=glibmm
+
+dnl Initialize automake stuff
+AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
+
+dnl Specify a configuration file (no autoheader)
+AM_CONFIG_HEADER(config.h glib/glibmmconfig.h)
+AM_MAINTAINER_MODE
+AL_ACLOCAL_INCLUDE(scripts)
+
+
+#########################################################################
+# Configure arguments
+#########################################################################
+
+#########################################################################
+# Environment Checks
+#########################################################################
+AC_PROG_CC
+AC_PROG_CPP
+AC_PROG_MAKE_SET
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+
+dnl Used for enabling the "-no-undefined" flag while generating DLLs
+dnl Copied from the official gtk+-2 configure.in
+AC_MSG_CHECKING([for some Win32 platform])
+case "$host" in
+ *-*-mingw*|*-*-cygwin*)
+ platform_win32=yes
+ ;;
+ *)
+ platform_win32=no
+ ;;
+esac
+AC_MSG_RESULT([$platform_win32])
+AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = "yes")
+
+AC_MSG_CHECKING([for native Win32])
+case "$host" in
+ *-*-mingw*)
+ os_win32=yes
+ ;;
+ *)
+ os_win32=no
+ ;;
+esac
+AC_MSG_RESULT([$os_win32])
+AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
+
+AC_DISABLE_STATIC
+AC_LIBTOOL_WIN32_DLL
+AC_PROG_LIBTOOL
+
+AL_PROG_GNU_M4(AC_MSG_ERROR([dnl
+SUN m4 does not work for building gtkmm.
+Please install GNU m4.]))
+
+AL_PROG_GNU_MAKE(AC_MSG_ERROR([dnl
+SUN make does not work for building gtkmm.
+Please install GNU make.]))
+
+GLIBMM_CHECK_PERL([5.6.0])
+
+#########################################################################
+# Function checks
+#########################################################################
+
+# functions used in demos/gtk-demo. Undefined in config.h !
+AC_CHECK_FUNCS([flockfile funlockfile getc_unlocked mkfifo])
+
+#########################################################################
+# Dependancy checks
+#########################################################################
+gtkmm_min_sigc_version=2.0.0
+gtkmm_min_glib_version=2.9.0
+
+PKG_CHECK_MODULES(GLIBMM, sigc++-2.0 >= ${gtkmm_min_sigc_version} glib-2.0 >= ${gtkmm_min_glib_version} gobject-2.0 >= ${gtkmm_min_glib_version} gmodule-2.0 >= ${gtkmm_min_glib_version})
+AC_SUBST(GLIBMM_CFLAGS)
+AC_SUBST(GLIBMM_LIBS)
+
+# gthread isn't a requirement, but we should use its CFLAGS if available.
+PKG_CHECK_MODULES(GTHREAD, gthread-2.0 >= ${gtkmm_min_glib_version},[],[GTHREAD_CFLAGS=''; GTHREAD_LIBS=''])
+AC_SUBST(GTHREAD_CFLAGS)
+AC_SUBST(GTHREAD_LIBS)
+
+
+#########################################################################
+# C++ checks
+#########################################################################
+AC_PROG_CXX
+
+# Check for the SUN Forte compiler, and define GLIBMM_COMPILER_SUN_FORTE in the header.
+GLIBMM_PROG_CXX_SUN
+
+# Ensure MSVC-compatible struct packing convention is used when
+# compiling for Win32 with gcc.
+# What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
+# gcc2 uses "-fnative-struct".
+if test x"$os_win32" = xyes; then
+ if test x"$GCC" = xyes -a x"$GXX" = xyes; then
+ msnative_struct=''
+ AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
+ if test -z "$ac_cv_prog_CC"; then
+ our_gcc="$CC"
+ else
+ our_gcc="$ac_cv_prog_CC"
+ fi
+ case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
+ 2.)
+ if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then
+ msnative_struct='-fnative-struct'
+ fi
+ ;;
+ *)
+ if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then
+ msnative_struct='-mms-bitfields'
+ fi
+ ;;
+ esac
+ if test x"$msnative_struct" = x ; then
+ AC_MSG_RESULT([no way])
+ AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
+ else
+ CXXFLAGS="$CXXFLAGS $msnative_struct"
+ AC_MSG_RESULT([${msnative_struct}])
+ fi
+ fi
+fi
+
+AC_LANG_CPLUSPLUS
+
+AC_CXX_BOOL(,config_error=yes)
+AC_CXX_NAMESPACES(,config_error=yes)
+AC_CXX_MUTABLE(,config_error=yes)
+
+AC_MSG_CHECKING(if C++ environment provides all required features)
+if test "x$config_error" = xyes ; then
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([Your compiler is not powerful enough to compile gtkmm. If it should be, see config.log for more information of why it failed.])
+fi
+AC_MSG_RESULT([yes])
+
+GLIBMM_CXX_HAS_NAMESPACE_STD()
+GLIBMM_CXX_HAS_STD_ITERATOR_TRAITS()
+GLIBMM_CXX_HAS_SUN_REVERSE_ITERATOR()
+GLIBMM_CXX_HAS_TEMPLATE_SEQUENCE_CTORS()
+GLIBMM_CXX_MEMBER_FUNCTIONS_MEMBER_TEMPLATES()
+GLIBMM_CXX_CAN_DISAMBIGUATE_CONST_TEMPLATE_SPECIALIZATIONS()
+GLIBMM_CXX_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION()
+GLIBMM_CXX_CAN_ASSIGN_NON_EXTERN_C_FUNCTIONS_TO_EXTERN_C_CALLBACKS()
+GLIBMM_CXX_CAN_USE_NAMESPACES_INSIDE_EXTERNC()
+GLIBMM_CXX_ALLOWS_STATIC_INLINE_NPOS()
+
+
+# Create a list of input directories for Doxygen.
+GTKMM_DOXYGEN_INPUT_SUBDIRS([glib])
+
+# Check whether to build the full docs into the generated source.
+# This will be much slower.
+GTKMM_ARG_ENABLE_FULLDOCS()
+
+# Check whether --enable-debug-refcounting was given.
+GLIBMM_ARG_ENABLE_DEBUG_REFCOUNTING()
+
+# Evaluate the --enable-warnings=level option.
+GTKMM_ARG_ENABLE_WARNINGS()
+
+# Add an --enable-use-deprecations configure option:
+AC_ARG_ENABLE(deprecations,
+ [AC_HELP_STRING([--enable-use-deprecations],
+ [warn about deprecated usages [default=no]])],,
+ [enable_deprecations=no])
+
+if test "x$enable_use_deprecations" = "xyes"; then
+ DISABLE_DEPRECATED_CFLAGS="-DG_DISABLE_DEPRECATED"
+ AC_SUBST(DISABLE_DEPRECATED_CFLAGS)
+fi
+
+#Offer the ability to omit some API from the library,
+#to reduce the code size:
+GLIBMM_ARG_ENABLE_API_DEPRECATED()
+GLIBMM_ARG_ENABLE_API_EXCEPTIONS()
+GLIBMM_ARG_ENABLE_API_PROPERTIES()
+GLIBMM_ARG_ENABLE_API_VFUNCS()
+
+# Offer the ability to omit some API from the library,
+# to reduce the code size:
+GLIBMM_ARG_ENABLE_API_DEFAULT_SIGNAL_HANDLERS()
+
+# Dummy conditional just to make automake-1.4 happy.
+# We need an always-false condition in docs/Makefile.am.
+AM_CONDITIONAL(GTKMM_FALSE,[false])
+
+# HACK: Assign a dummy in order to prevent execution of autoheader by the
+# maintainer-mode rules. That would fail since we aren't using autoheader.
+AUTOHEADER=':'
+
+
+AC_CONFIG_FILES([
+ Makefile
+
+ glib/Makefile
+ glib/glibmm-2.4.pc
+ glib/src/Makefile
+ glib/glibmm/Makefile
+ glib/glibmm/private/Makefile
+
+ tools/Makefile
+ tools/gmmproc
+ tools/generate_wrap_init.pl
+ tools/m4/Makefile
+ tools/pm/Makefile
+ tools/extra_defs_gen/Makefile
+])
+
+AC_CONFIG_FILES([
+ tests/Makefile
+ tests/glibmm_value/Makefile
+
+ examples/Makefile
+ examples/markup/Makefile
+ examples/options/Makefile
+ examples/thread/Makefile
+ examples/iochannel_stream/Makefile
+ examples/child_watch/Makefile
+
+ scripts/Makefile
+
+ docs/Makefile
+ docs/images/Makefile
+ docs/reference/Makefile
+ docs/reference/Doxyfile
+ docs/reference/beautify_docs.pl
+ docs/internal/Makefile
+])
+
+AC_CONFIG_FILES([
+ MSVC_Net2003/Makefile
+ MSVC_Net2003/gendef/Makefile
+ MSVC_Net2003/glibmm/Makefile
+ MSVC_Net2003/glibmm/glibmm.rc
+ MSVC_Net2003/examples/Makefile
+ MSVC_Net2003/examples/dispatcher/Makefile
+ MSVC_Net2003/examples/dispatcher2/Makefile
+ MSVC_Net2003/examples/markup/Makefile
+ MSVC_Net2003/examples/options/Makefile
+ MSVC_Net2003/examples/thread/Makefile
+ MSVC_Net2003/examples/thread_pool/Makefile
+ MSVC_Net2003/tests/Makefile
+ MSVC_Net2003/tests/glibmm_value/Makefile
+])
+
+AC_OUTPUT()
+
diff --git a/libs/glibmm2/glib/Makefile b/libs/glibmm2/glib/Makefile
new file mode 100644
index 0000000000..2839f31952
--- /dev/null
+++ b/libs/glibmm2/glib/Makefile
@@ -0,0 +1,609 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# glib/Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+
+srcdir = .
+top_srcdir = ..
+
+pkgdatadir = $(datadir)/glibmm
+pkglibdir = $(libdir)/glibmm
+pkgincludedir = $(includedir)/glibmm
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = i686-pc-linux-gnu
+host_triplet = i686-pc-linux-gnu
+subdir = glib
+DIST_COMMON = README $(glibmm_include_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/glibmm-2.4.pc.in \
+ $(srcdir)/glibmmconfig.h.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/scripts/cxx.m4 \
+ $(top_srcdir)/scripts/cxx_std.m4 \
+ $(top_srcdir)/scripts/docgen.m4 \
+ $(top_srcdir)/scripts/glibmm_check_perl.m4 \
+ $(top_srcdir)/scripts/macros.m4 \
+ $(top_srcdir)/scripts/reduced.m4 $(top_srcdir)/scripts/sun.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h glibmmconfig.h
+CONFIG_CLEAN_FILES = glibmm-2.4.pc
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(glibmm_configdir)" \
+ "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(glibmm_includedir)"
+glibmm_configDATA_INSTALL = $(INSTALL_DATA)
+pkgconfigDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(glibmm_config_DATA) $(pkgconfig_DATA)
+glibmm_includeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(glibmm_include_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run aclocal-1.9 -I ./scripts
+AMDEP_FALSE = #
+AMDEP_TRUE =
+AMTAR = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run tar
+AR = ar
+AS = as
+AUTOCONF = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run autoconf
+AUTOHEADER = :
+AUTOMAKE = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS =
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2 -Wall -Wno-long-long
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DISABLE_DEPRECATED_API_CFLAGS =
+DISABLE_DEPRECATED_CFLAGS =
+DLLTOOL = dlltool
+ECHO = echo
+ECHO_C =
+ECHO_N = -n
+ECHO_T =
+EGREP = grep -E
+EXEEXT =
+F77 =
+FFLAGS =
+GLIBMM_CFLAGS = -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+GLIBMM_LIBS = -Wl,--export-dynamic -lsigc-2.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
+GLIBMM_MAJOR_VERSION = 2
+GLIBMM_MICRO_VERSION = 3
+GLIBMM_MINOR_VERSION = 13
+GLIBMM_RELEASE = 2.13
+GLIBMM_VERSION = 2.13.3
+GTHREAD_CFLAGS = -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+GTHREAD_LIBS = -pthread -lgthread-2.0 -lrt -lglib-2.0
+GTKMMPROC_MERGECDOCS =
+GTKMM_DOXYGEN_INPUT = /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/glib/glibmm/
+GTKMM_FALSE_FALSE =
+GTKMM_FALSE_TRUE = #
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =
+LIBGLIBMM_SO_VERSION = 1:24:0
+LIBOBJS =
+LIBS =
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS =
+M4 = m4
+MAINT = #
+MAINTAINER_MODE_FALSE =
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run makeinfo
+OBJDUMP = objdump
+OBJEXT = o
+OS_WIN32_FALSE =
+OS_WIN32_TRUE = #
+PACKAGE = glibmm
+PACKAGE_BUGREPORT =
+PACKAGE_NAME =
+PACKAGE_STRING =
+PACKAGE_TARNAME =
+PACKAGE_VERSION =
+PATH_SEPARATOR = :
+PERL_PATH = /usr/bin/perl
+PKG_CONFIG = /usr/bin/pkg-config
+PLATFORM_WIN32_FALSE =
+PLATFORM_WIN32_TRUE = #
+RANLIB = ranlib
+SET_MAKE =
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 2.13.3
+ac_ct_AR = ar
+ac_ct_AS =
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DLLTOOL =
+ac_ct_F77 =
+ac_ct_OBJDUMP =
+ac_ct_RANLIB = ranlib
+ac_ct_STRIP = strip
+ac_pt_PKG_CONFIG = /usr/bin/pkg-config
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE =
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE =
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = i686-pc-linux-gnu
+build_alias =
+build_cpu = i686
+build_os = linux-gnu
+build_vendor = pc
+datadir = ${prefix}/share
+exec_prefix = ${prefix}
+host = i686-pc-linux-gnu
+host_alias =
+host_cpu = i686
+host_os = linux-gnu
+host_vendor = pc
+includedir = ${prefix}/include
+infodir = ${prefix}/info
+install_sh = /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localstatedir = ${prefix}/var
+mandir = ${prefix}/man
+mkdir_p = mkdir -p --
+oldincludedir = /usr/include
+prefix = /usr/local
+program_transform_name = s,x,x,
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias =
+SUBDIRS = src glibmm
+EXTRA_DIST = README glibmmconfig.h.in glibmm-2.4.pc.in
+glibmm_includedir = $(includedir)/glibmm-2.4
+glibmm_include_HEADERS = glibmm.h
+glibmm_configdir = $(libdir)/glibmm-2.4/include
+glibmm_config_DATA = glibmmconfig.h
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = glibmm-2.4.pc
+all: glibmmconfig.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu glib/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu glib/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+glibmmconfig.h: stamp-h2
+ @if test ! -f $@; then \
+ rm -f stamp-h2; \
+ $(MAKE) stamp-h2; \
+ else :; fi
+
+stamp-h2: $(srcdir)/glibmmconfig.h.in $(top_builddir)/config.status
+ @rm -f stamp-h2
+ cd $(top_builddir) && $(SHELL) ./config.status glib/glibmmconfig.h
+$(srcdir)/glibmmconfig.h.in: # $(am__configure_deps)
+ cd $(top_srcdir) && $(AUTOHEADER)
+ rm -f stamp-h2
+ touch $@
+
+distclean-hdr:
+ -rm -f glibmmconfig.h stamp-h2
+glibmm-2.4.pc: $(top_builddir)/config.status $(srcdir)/glibmm-2.4.pc.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-glibmm_configDATA: $(glibmm_config_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(glibmm_configdir)" || $(mkdir_p) "$(DESTDIR)$(glibmm_configdir)"
+ @list='$(glibmm_config_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(glibmm_configDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(glibmm_configdir)/$$f'"; \
+ $(glibmm_configDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(glibmm_configdir)/$$f"; \
+ done
+
+uninstall-glibmm_configDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(glibmm_config_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(glibmm_configdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(glibmm_configdir)/$$f"; \
+ done
+install-pkgconfigDATA: $(pkgconfig_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkgconfigdir)" || $(mkdir_p) "$(DESTDIR)$(pkgconfigdir)"
+ @list='$(pkgconfig_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
+ $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+ done
+
+uninstall-pkgconfigDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkgconfig_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+ done
+install-glibmm_includeHEADERS: $(glibmm_include_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(glibmm_includedir)" || $(mkdir_p) "$(DESTDIR)$(glibmm_includedir)"
+ @list='$(glibmm_include_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(glibmm_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(glibmm_includedir)/$$f'"; \
+ $(glibmm_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(glibmm_includedir)/$$f"; \
+ done
+
+uninstall-glibmm_includeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(glibmm_include_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(glibmm_includedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(glibmm_includedir)/$$f"; \
+ done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) glibmmconfig.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) glibmmconfig.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) glibmmconfig.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) glibmmconfig.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(DATA) $(HEADERS) glibmmconfig.h
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(glibmm_configdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(glibmm_includedir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-glibmm_configDATA \
+ install-glibmm_includeHEADERS install-pkgconfigDATA
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-glibmm_configDATA \
+ uninstall-glibmm_includeHEADERS uninstall-info-am \
+ uninstall-pkgconfigDATA
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-libtool clean-recursive ctags \
+ ctags-recursive distclean distclean-generic distclean-hdr \
+ distclean-libtool distclean-recursive distclean-tags distdir \
+ dvi dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-exec install-exec-am \
+ install-glibmm_configDATA install-glibmm_includeHEADERS \
+ install-info install-info-am install-man install-pkgconfigDATA \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ maintainer-clean-recursive mostlyclean mostlyclean-generic \
+ mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
+ tags tags-recursive uninstall uninstall-am \
+ uninstall-glibmm_configDATA uninstall-glibmm_includeHEADERS \
+ uninstall-info-am uninstall-pkgconfigDATA
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libs/glibmm2/glib/Makefile.am b/libs/glibmm2/glib/Makefile.am
new file mode 100644
index 0000000000..3477451135
--- /dev/null
+++ b/libs/glibmm2/glib/Makefile.am
@@ -0,0 +1,14 @@
+SUBDIRS = src glibmm
+
+EXTRA_DIST = README glibmmconfig.h.in glibmm-2.4.pc.in
+
+glibmm_includedir = $(includedir)/glibmm-2.4
+glibmm_include_HEADERS = glibmm.h
+
+glibmm_configdir = $(libdir)/glibmm-2.4/include
+glibmm_config_DATA = glibmmconfig.h
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = glibmm-2.4.pc
+
+ \ No newline at end of file
diff --git a/libs/glibmm2/glib/Makefile.in b/libs/glibmm2/glib/Makefile.in
new file mode 100644
index 0000000000..7962637034
--- /dev/null
+++ b/libs/glibmm2/glib/Makefile.in
@@ -0,0 +1,609 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = glib
+DIST_COMMON = README $(glibmm_include_HEADERS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/glibmm-2.4.pc.in \
+ $(srcdir)/glibmmconfig.h.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/scripts/cxx.m4 \
+ $(top_srcdir)/scripts/cxx_std.m4 \
+ $(top_srcdir)/scripts/docgen.m4 \
+ $(top_srcdir)/scripts/glibmm_check_perl.m4 \
+ $(top_srcdir)/scripts/macros.m4 \
+ $(top_srcdir)/scripts/reduced.m4 $(top_srcdir)/scripts/sun.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h glibmmconfig.h
+CONFIG_CLEAN_FILES = glibmm-2.4.pc
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(glibmm_configdir)" \
+ "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(glibmm_includedir)"
+glibmm_configDATA_INSTALL = $(INSTALL_DATA)
+pkgconfigDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(glibmm_config_DATA) $(pkgconfig_DATA)
+glibmm_includeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(glibmm_include_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISABLE_DEPRECATED_API_CFLAGS = @DISABLE_DEPRECATED_API_CFLAGS@
+DISABLE_DEPRECATED_CFLAGS = @DISABLE_DEPRECATED_CFLAGS@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GLIBMM_CFLAGS = @GLIBMM_CFLAGS@
+GLIBMM_LIBS = @GLIBMM_LIBS@
+GLIBMM_MAJOR_VERSION = @GLIBMM_MAJOR_VERSION@
+GLIBMM_MICRO_VERSION = @GLIBMM_MICRO_VERSION@
+GLIBMM_MINOR_VERSION = @GLIBMM_MINOR_VERSION@
+GLIBMM_RELEASE = @GLIBMM_RELEASE@
+GLIBMM_VERSION = @GLIBMM_VERSION@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKMMPROC_MERGECDOCS = @GTKMMPROC_MERGECDOCS@
+GTKMM_DOXYGEN_INPUT = @GTKMM_DOXYGEN_INPUT@
+GTKMM_FALSE_FALSE = @GTKMM_FALSE_FALSE@
+GTKMM_FALSE_TRUE = @GTKMM_FALSE_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBGLIBMM_SO_VERSION = @LIBGLIBMM_SO_VERSION@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+M4 = @M4@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS_WIN32_FALSE = @OS_WIN32_FALSE@
+OS_WIN32_TRUE = @OS_WIN32_TRUE@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL_PATH = @PERL_PATH@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_WIN32_FALSE = @PLATFORM_WIN32_FALSE@
+PLATFORM_WIN32_TRUE = @PLATFORM_WIN32_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_AS = @ac_ct_AS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+SUBDIRS = src glibmm
+EXTRA_DIST = README glibmmconfig.h.in glibmm-2.4.pc.in
+glibmm_includedir = $(includedir)/glibmm-2.4
+glibmm_include_HEADERS = glibmm.h
+glibmm_configdir = $(libdir)/glibmm-2.4/include
+glibmm_config_DATA = glibmmconfig.h
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = glibmm-2.4.pc
+all: glibmmconfig.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu glib/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu glib/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+glibmmconfig.h: stamp-h2
+ @if test ! -f $@; then \
+ rm -f stamp-h2; \
+ $(MAKE) stamp-h2; \
+ else :; fi
+
+stamp-h2: $(srcdir)/glibmmconfig.h.in $(top_builddir)/config.status
+ @rm -f stamp-h2
+ cd $(top_builddir) && $(SHELL) ./config.status glib/glibmmconfig.h
+$(srcdir)/glibmmconfig.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_srcdir) && $(AUTOHEADER)
+ rm -f stamp-h2
+ touch $@
+
+distclean-hdr:
+ -rm -f glibmmconfig.h stamp-h2
+glibmm-2.4.pc: $(top_builddir)/config.status $(srcdir)/glibmm-2.4.pc.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-glibmm_configDATA: $(glibmm_config_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(glibmm_configdir)" || $(mkdir_p) "$(DESTDIR)$(glibmm_configdir)"
+ @list='$(glibmm_config_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(glibmm_configDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(glibmm_configdir)/$$f'"; \
+ $(glibmm_configDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(glibmm_configdir)/$$f"; \
+ done
+
+uninstall-glibmm_configDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(glibmm_config_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(glibmm_configdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(glibmm_configdir)/$$f"; \
+ done
+install-pkgconfigDATA: $(pkgconfig_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(pkgconfigdir)" || $(mkdir_p) "$(DESTDIR)$(pkgconfigdir)"
+ @list='$(pkgconfig_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
+ $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+ done
+
+uninstall-pkgconfigDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkgconfig_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+ done
+install-glibmm_includeHEADERS: $(glibmm_include_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(glibmm_includedir)" || $(mkdir_p) "$(DESTDIR)$(glibmm_includedir)"
+ @list='$(glibmm_include_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(glibmm_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(glibmm_includedir)/$$f'"; \
+ $(glibmm_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(glibmm_includedir)/$$f"; \
+ done
+
+uninstall-glibmm_includeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(glibmm_include_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(glibmm_includedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(glibmm_includedir)/$$f"; \
+ done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) glibmmconfig.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) glibmmconfig.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) glibmmconfig.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) glibmmconfig.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(DATA) $(HEADERS) glibmmconfig.h
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(glibmm_configdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(glibmm_includedir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-glibmm_configDATA \
+ install-glibmm_includeHEADERS install-pkgconfigDATA
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-glibmm_configDATA \
+ uninstall-glibmm_includeHEADERS uninstall-info-am \
+ uninstall-pkgconfigDATA
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-libtool clean-recursive ctags \
+ ctags-recursive distclean distclean-generic distclean-hdr \
+ distclean-libtool distclean-recursive distclean-tags distdir \
+ dvi dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-exec install-exec-am \
+ install-glibmm_configDATA install-glibmm_includeHEADERS \
+ install-info install-info-am install-man install-pkgconfigDATA \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ maintainer-clean-recursive mostlyclean mostlyclean-generic \
+ mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
+ tags tags-recursive uninstall uninstall-am \
+ uninstall-glibmm_configDATA uninstall-glibmm_includeHEADERS \
+ uninstall-info-am uninstall-pkgconfigDATA
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libs/glibmm2/glib/README b/libs/glibmm2/glib/README
new file mode 100644
index 0000000000..289d17a7da
--- /dev/null
+++ b/libs/glibmm2/glib/README
@@ -0,0 +1 @@
+glib base dir.
diff --git a/libs/glibmm2/glib/glibmm-2.4.pc b/libs/glibmm2/glib/glibmm-2.4.pc
new file mode 100644
index 0000000000..61cc46ca19
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm-2.4.pc
@@ -0,0 +1,11 @@
+prefix=/usr/local
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: GLibmm
+Description: C++ wrapper for GLib
+Requires: gobject-2.0 sigc++-2.0
+Version: 2.13.3
+Libs: -L${libdir} -lglibmm-2.4
+Cflags: -I${includedir}/glibmm-2.4 -I${libdir}/glibmm-2.4/include
diff --git a/libs/glibmm2/glib/glibmm-2.4.pc.in b/libs/glibmm2/glib/glibmm-2.4.pc.in
new file mode 100644
index 0000000000..db098824be
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm-2.4.pc.in
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: GLibmm
+Description: C++ wrapper for GLib
+Requires: gobject-2.0 sigc++-2.0
+Version: @VERSION@
+Libs: -L${libdir} -lglibmm-2.4
+Cflags: -I${includedir}/glibmm-2.4 -I${libdir}/glibmm-2.4/include
diff --git a/libs/glibmm2/glib/glibmm.h b/libs/glibmm2/glib/glibmm.h
new file mode 100644
index 0000000000..f7bd36512b
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm.h
@@ -0,0 +1,73 @@
+/* $Id: glibmm.h,v 1.5 2006/09/19 20:36:41 murrayc Exp $ */
+
+/* glibmm - a C++ wrapper for the GLib toolkit
+ *
+ * Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef _GLIBMM_H
+#define _GLIBMM_H
+
+#include <glibmmconfig.h>
+//#include <glibmm/i18n.h> //This must be included by the application, after system headers such as <iostream>.
+#include <glibmm/arrayhandle.h>
+#include <glibmm/class.h>
+#include <glibmm/containerhandle_shared.h>
+#include <glibmm/convert.h>
+#include <glibmm/date.h>
+#include <glibmm/dispatcher.h>
+#include <glibmm/error.h>
+#include <glibmm/exception.h>
+#include <glibmm/exceptionhandler.h>
+#include <glibmm/fileutils.h>
+#include <glibmm/helperlist.h>
+#include <glibmm/interface.h>
+#include <glibmm/iochannel.h>
+#include <glibmm/init.h>
+#include <glibmm/keyfile.h>
+#include <glibmm/streamiochannel.h>
+#include <glibmm/listhandle.h>
+#include <glibmm/main.h>
+#include <glibmm/markup.h>
+#include <glibmm/miscutils.h>
+#include <glibmm/module.h>
+#include <glibmm/objectbase.h>
+#include <glibmm/object.h>
+#include <glibmm/optioncontext.h>
+#include <glibmm/pattern.h>
+#include <glibmm/property.h>
+#include <glibmm/propertyproxy_base.h>
+#include <glibmm/propertyproxy.h>
+#include <glibmm/quark.h>
+#include <glibmm/random.h>
+#include <glibmm/refptr.h>
+#include <glibmm/shell.h>
+#include <glibmm/signalproxy_connectionnode.h>
+#include <glibmm/signalproxy.h>
+#include <glibmm/slisthandle.h>
+#include <glibmm/spawn.h>
+#include <glibmm/stringutils.h>
+#include <glibmm/thread.h>
+#include <glibmm/threadpool.h>
+#include <glibmm/timer.h>
+#include <glibmm/timeval.h>
+#include <glibmm/ustring.h>
+#include <glibmm/value.h>
+#include <glibmm/wrap.h>
+
+#endif /* _GLIBMM_H */
+
diff --git a/libs/glibmm2/glib/glibmm/.deps/class.Plo b/libs/glibmm2/glib/glibmm/.deps/class.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/class.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/containers.Plo b/libs/glibmm2/glib/glibmm/.deps/containers.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/containers.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/convert.Plo b/libs/glibmm2/glib/glibmm/.deps/convert.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/convert.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/date.Plo b/libs/glibmm2/glib/glibmm/.deps/date.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/date.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/debug.Plo b/libs/glibmm2/glib/glibmm/.deps/debug.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/debug.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/dispatcher.Plo b/libs/glibmm2/glib/glibmm/.deps/dispatcher.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/dispatcher.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/error.Plo b/libs/glibmm2/glib/glibmm/.deps/error.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/error.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/exception.Plo b/libs/glibmm2/glib/glibmm/.deps/exception.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/exception.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/exceptionhandler.Plo b/libs/glibmm2/glib/glibmm/.deps/exceptionhandler.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/exceptionhandler.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/fileutils.Plo b/libs/glibmm2/glib/glibmm/.deps/fileutils.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/fileutils.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/init.Plo b/libs/glibmm2/glib/glibmm/.deps/init.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/init.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/interface.Plo b/libs/glibmm2/glib/glibmm/.deps/interface.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/interface.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/iochannel.Plo b/libs/glibmm2/glib/glibmm/.deps/iochannel.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/iochannel.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/keyfile.Plo b/libs/glibmm2/glib/glibmm/.deps/keyfile.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/keyfile.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/main.Plo b/libs/glibmm2/glib/glibmm/.deps/main.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/main.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/markup.Plo b/libs/glibmm2/glib/glibmm/.deps/markup.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/markup.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/miscutils.Plo b/libs/glibmm2/glib/glibmm/.deps/miscutils.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/miscutils.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/module.Plo b/libs/glibmm2/glib/glibmm/.deps/module.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/module.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/object.Plo b/libs/glibmm2/glib/glibmm/.deps/object.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/object.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/objectbase.Plo b/libs/glibmm2/glib/glibmm/.deps/objectbase.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/objectbase.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/optioncontext.Plo b/libs/glibmm2/glib/glibmm/.deps/optioncontext.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/optioncontext.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/optionentry.Plo b/libs/glibmm2/glib/glibmm/.deps/optionentry.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/optionentry.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/optiongroup.Plo b/libs/glibmm2/glib/glibmm/.deps/optiongroup.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/optiongroup.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/pattern.Plo b/libs/glibmm2/glib/glibmm/.deps/pattern.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/pattern.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/property.Plo b/libs/glibmm2/glib/glibmm/.deps/property.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/property.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/propertyproxy.Plo b/libs/glibmm2/glib/glibmm/.deps/propertyproxy.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/propertyproxy.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/propertyproxy_base.Plo b/libs/glibmm2/glib/glibmm/.deps/propertyproxy_base.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/propertyproxy_base.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/quark.Plo b/libs/glibmm2/glib/glibmm/.deps/quark.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/quark.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/random.Plo b/libs/glibmm2/glib/glibmm/.deps/random.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/random.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/shell.Plo b/libs/glibmm2/glib/glibmm/.deps/shell.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/shell.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/signalproxy.Plo b/libs/glibmm2/glib/glibmm/.deps/signalproxy.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/signalproxy.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/signalproxy_connectionnode.Plo b/libs/glibmm2/glib/glibmm/.deps/signalproxy_connectionnode.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/signalproxy_connectionnode.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/spawn.Plo b/libs/glibmm2/glib/glibmm/.deps/spawn.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/spawn.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/streamiochannel.Plo b/libs/glibmm2/glib/glibmm/.deps/streamiochannel.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/streamiochannel.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/stringutils.Plo b/libs/glibmm2/glib/glibmm/.deps/stringutils.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/stringutils.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/thread.Plo b/libs/glibmm2/glib/glibmm/.deps/thread.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/thread.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/threadpool.Plo b/libs/glibmm2/glib/glibmm/.deps/threadpool.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/threadpool.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/timer.Plo b/libs/glibmm2/glib/glibmm/.deps/timer.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/timer.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/timeval.Plo b/libs/glibmm2/glib/glibmm/.deps/timeval.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/timeval.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/unicode.Plo b/libs/glibmm2/glib/glibmm/.deps/unicode.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/unicode.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/ustring.Plo b/libs/glibmm2/glib/glibmm/.deps/ustring.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/ustring.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/utility.Plo b/libs/glibmm2/glib/glibmm/.deps/utility.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/utility.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/value.Plo b/libs/glibmm2/glib/glibmm/.deps/value.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/value.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/value_basictypes.Plo b/libs/glibmm2/glib/glibmm/.deps/value_basictypes.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/value_basictypes.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/value_custom.Plo b/libs/glibmm2/glib/glibmm/.deps/value_custom.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/value_custom.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/wrap.Plo b/libs/glibmm2/glib/glibmm/.deps/wrap.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/wrap.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/.deps/wrap_init.Plo b/libs/glibmm2/glib/glibmm/.deps/wrap_init.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/.deps/wrap_init.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/glib/glibmm/Makefile b/libs/glibmm2/glib/glibmm/Makefile
new file mode 100644
index 0000000000..99bc990a73
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/Makefile
@@ -0,0 +1,908 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# glib/glibmm/Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+
+srcdir = .
+top_srcdir = ../..
+
+pkgdatadir = $(datadir)/glibmm
+pkglibdir = $(libdir)/glibmm
+pkgincludedir = $(includedir)/glibmm
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = i686-pc-linux-gnu
+host_triplet = i686-pc-linux-gnu
+DIST_COMMON = $(am__sublib_include_HEADERS_DIST) \
+ $(srcdir)/../src/Makefile_list_of_hg.am_fragment \
+ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/build_shared/Makefile_build.am_fragment \
+ $(top_srcdir)/build_shared/Makefile_build_extra.am_fragment \
+ $(top_srcdir)/build_shared/Makefile_build_gensrc.am_fragment \
+ $(top_srcdir)/build_shared/Makefile_gensrc_platform.am_fragment
+subdir = glib/glibmm
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/scripts/cxx.m4 \
+ $(top_srcdir)/scripts/cxx_std.m4 \
+ $(top_srcdir)/scripts/docgen.m4 \
+ $(top_srcdir)/scripts/glibmm_check_perl.m4 \
+ $(top_srcdir)/scripts/macros.m4 \
+ $(top_srcdir)/scripts/reduced.m4 $(top_srcdir)/scripts/sun.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h \
+ $(top_builddir)/glib/glibmmconfig.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(libdir)" \
+ "$(DESTDIR)$(sublib_includedir)"
+libLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(lib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libglibmm_2_4_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__libglibmm_2_4_la_SOURCES_DIST = convert.cc date.cc fileutils.cc \
+ iochannel.cc keyfile.cc markup.cc module.cc optioncontext.cc \
+ optionentry.cc optiongroup.cc shell.cc spawn.cc thread.cc \
+ unicode.cc wrap_init.cc value_basictypes.cc class.cc \
+ containers.cc debug.cc dispatcher.cc error.cc exception.cc \
+ exceptionhandler.cc init.cc interface.cc main.cc miscutils.cc \
+ object.cc objectbase.cc pattern.cc property.cc \
+ propertyproxy.cc propertyproxy_base.cc quark.cc random.cc \
+ signalproxy.cc signalproxy_connectionnode.cc \
+ streamiochannel.cc stringutils.cc threadpool.cc timer.cc \
+ timeval.cc ustring.cc utility.cc value.cc value_custom.cc \
+ wrap.cc
+am__objects_1 = convert.lo date.lo fileutils.lo iochannel.lo \
+ keyfile.lo markup.lo module.lo optioncontext.lo optionentry.lo \
+ optiongroup.lo shell.lo spawn.lo thread.lo unicode.lo
+am__objects_2 = $(am__objects_1) wrap_init.lo value_basictypes.lo
+am__objects_3 = class.lo containers.lo debug.lo dispatcher.lo error.lo \
+ exception.lo exceptionhandler.lo init.lo interface.lo main.lo \
+ miscutils.lo object.lo objectbase.lo pattern.lo property.lo \
+ propertyproxy.lo propertyproxy_base.lo quark.lo random.lo \
+ signalproxy.lo signalproxy_connectionnode.lo \
+ streamiochannel.lo stringutils.lo threadpool.lo timer.lo \
+ timeval.lo ustring.lo utility.lo value.lo value_custom.lo \
+ wrap.lo
+am__objects_4 =
+am__objects_5 = $(am__objects_3) $(am__objects_4)
+#am__objects_5 = $(am__objects_3) $(am__objects_4)
+am__objects_6 = $(am__objects_5)
+am__objects_7 = $(am__objects_2) $(am__objects_6)
+am__objects_8 = $(am__objects_4)
+am__objects_9 = $(am__objects_8)
+am_libglibmm_2_4_la_OBJECTS = $(am__objects_7) \
+ $(am__objects_9)
+#am_libglibmm_2_4_la_OBJECTS = $(am__objects_7) \
+# $(am__objects_9)
+libglibmm_2_4_la_OBJECTS = $(am_libglibmm_2_4_la_OBJECTS)
+depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libglibmm_2_4_la_SOURCES)
+DIST_SOURCES = $(am__libglibmm_2_4_la_SOURCES_DIST)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+am__sublib_include_HEADERS_DIST = convert.h date.h fileutils.h \
+ iochannel.h keyfile.h markup.h module.h optioncontext.h \
+ optionentry.h optiongroup.h shell.h spawn.h thread.h unicode.h \
+ signalproxy.h value_basictypes.h arrayhandle.h class.h \
+ containerhandle_shared.h containers.h debug.h dispatcher.h \
+ error.h exception.h exceptionhandler.h helperlist.h init.h \
+ i18n.h interface.h listhandle.h main.h miscutils.h object.h \
+ objectbase.h pattern.h property.h propertyproxy.h \
+ propertyproxy_base.h quark.h random.h refptr.h sarray.h \
+ signalproxy_connectionnode.h slisthandle.h streamiochannel.h \
+ stringutils.h threadpool.h timer.h timeval.h ustring.h \
+ utility.h value.h value_custom.h wrap.h wrap_init.h
+sublib_includeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(sublib_include_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+ACLOCAL = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run aclocal-1.9 -I ./scripts
+AMDEP_FALSE = #
+AMDEP_TRUE =
+AMTAR = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run tar
+AR = ar
+AS = as
+AUTOCONF = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run autoconf
+AUTOHEADER = :
+AUTOMAKE = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS =
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2 -Wall -Wno-long-long
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H $(strip $(extra_defines))
+DEPDIR = .deps
+DISABLE_DEPRECATED_API_CFLAGS =
+DISABLE_DEPRECATED_CFLAGS =
+DLLTOOL = dlltool
+ECHO = echo
+ECHO_C =
+ECHO_N = -n
+ECHO_T =
+EGREP = grep -E
+EXEEXT =
+F77 =
+FFLAGS =
+GLIBMM_CFLAGS = -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+GLIBMM_LIBS = -Wl,--export-dynamic -lsigc-2.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
+GLIBMM_MAJOR_VERSION = 2
+GLIBMM_MICRO_VERSION = 3
+GLIBMM_MINOR_VERSION = 13
+GLIBMM_RELEASE = 2.13
+GLIBMM_VERSION = 2.13.3
+GTHREAD_CFLAGS = -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+GTHREAD_LIBS = -pthread -lgthread-2.0 -lrt -lglib-2.0
+GTKMMPROC_MERGECDOCS =
+GTKMM_DOXYGEN_INPUT = /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/glib/glibmm/
+GTKMM_FALSE_FALSE =
+GTKMM_FALSE_TRUE = #
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =
+LIBGLIBMM_SO_VERSION = 1:24:0
+LIBOBJS =
+LIBS =
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS =
+M4 = m4
+MAINT = #
+MAINTAINER_MODE_FALSE =
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run makeinfo
+OBJDUMP = objdump
+OBJEXT = o
+OS_WIN32_FALSE =
+OS_WIN32_TRUE = #
+PACKAGE = glibmm
+PACKAGE_BUGREPORT =
+PACKAGE_NAME =
+PACKAGE_STRING =
+PACKAGE_TARNAME =
+PACKAGE_VERSION =
+PATH_SEPARATOR = :
+PERL_PATH = /usr/bin/perl
+PKG_CONFIG = /usr/bin/pkg-config
+PLATFORM_WIN32_FALSE =
+PLATFORM_WIN32_TRUE = #
+RANLIB = ranlib
+SET_MAKE =
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 2.13.3
+ac_ct_AR = ar
+ac_ct_AS =
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DLLTOOL =
+ac_ct_F77 =
+ac_ct_OBJDUMP =
+ac_ct_RANLIB = ranlib
+ac_ct_STRIP = strip
+ac_pt_PKG_CONFIG = /usr/bin/pkg-config
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE =
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE =
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = i686-pc-linux-gnu
+build_alias =
+build_cpu = i686
+build_os = linux-gnu
+build_vendor = pc
+datadir = ${prefix}/share
+exec_prefix = ${prefix}
+host = i686-pc-linux-gnu
+host_alias =
+host_cpu = i686
+host_os = linux-gnu
+host_vendor = pc
+includedir = ${prefix}/include
+infodir = ${prefix}/info
+install_sh = /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localstatedir = ${prefix}/var
+mandir = ${prefix}/man
+mkdir_p = mkdir -p --
+oldincludedir = /usr/include
+prefix = /usr/local
+program_transform_name = s,x,x,
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias =
+SUBDIRS = private
+sublib_name = glibmm
+sublib_libname = glibmm-2.4
+sublib_namespace = Glib
+sublib_cflags = $(GLIBMM_CFLAGS)
+sublib_files_extra_posix_cc =
+sublib_files_extra_win32_cc =
+sublib_files_extra_general_cc = \
+ class.cc \
+ containers.cc \
+ debug.cc \
+ dispatcher.cc \
+ error.cc \
+ exception.cc \
+ exceptionhandler.cc \
+ init.cc \
+ interface.cc \
+ main.cc \
+ miscutils.cc \
+ object.cc \
+ objectbase.cc \
+ pattern.cc \
+ property.cc \
+ propertyproxy.cc \
+ propertyproxy_base.cc \
+ quark.cc \
+ random.cc \
+ signalproxy.cc \
+ signalproxy_connectionnode.cc \
+ streamiochannel.cc \
+ stringutils.cc \
+ threadpool.cc \
+ timer.cc \
+ timeval.cc \
+ ustring.cc \
+ utility.cc \
+ value.cc \
+ value_custom.cc \
+ wrap.cc
+
+sublib_files_extra_posix_h =
+sublib_files_extra_win32_h =
+sublib_files_extra_general_h = \
+ arrayhandle.h \
+ class.h \
+ containerhandle_shared.h \
+ containers.h \
+ debug.h \
+ dispatcher.h \
+ error.h \
+ exception.h \
+ exceptionhandler.h \
+ helperlist.h \
+ init.h \
+ i18n.h \
+ interface.h \
+ iochannel.h \
+ keyfile.h \
+ listhandle.h \
+ main.h \
+ miscutils.h \
+ object.h \
+ objectbase.h \
+ pattern.h \
+ property.h \
+ propertyproxy.h \
+ propertyproxy_base.h \
+ quark.h \
+ random.h \
+ refptr.h \
+ sarray.h \
+ signalproxy_connectionnode.h \
+ slisthandle.h \
+ streamiochannel.h \
+ stringutils.h \
+ threadpool.h \
+ timer.h \
+ timeval.h \
+ ustring.h \
+ utility.h \
+ value.h \
+ value_custom.h \
+ wrap.h
+
+files_posix_hg =
+files_win32_hg =
+files_general_hg = convert.hg date.hg fileutils.hg iochannel.hg keyfile.hg markup.hg module.hg optioncontext.hg optionentry.hg optiongroup.hg shell.hg spawn.hg thread.hg unicode.hg
+files_all_hg = $(files_general_hg) $(files_posix_hg) $(files_win32_hg)
+files_hg = $(files_general_hg) $(files_posix_hg)
+#files_hg = $(files_general_hg) $(files_win32_hg)
+files_built_general_cc = $(files_general_hg:.hg=.cc) wrap_init.cc \
+ value_basictypes.cc
+files_built_general_h = $(files_general_hg:.hg=.h) signalproxy.h \
+ value_basictypes.h
+files_built_posix_cc = $(files_posix_hg:.hg=.cc)
+files_built_posix_h = $(files_posix_hg:.hg=.h)
+files_built_win32_cc = $(files_win32_hg:.hg=.cc)
+files_built_win32_h = $(files_win32_hg:.hg=.h)
+files_built_all_cc = $(files_built_general_cc) \
+ $(files_built_posix_cc) \
+ $(files_built_win32_cc)
+
+files_built_all_h = $(files_built_general_h) \
+ $(files_built_posix_h) \
+ $(files_built_win32_h)
+
+files_extra_cc_tmp = $(sublib_files_extra_general_cc) $(sublib_files_extra_posix_cc)
+#files_extra_cc_tmp = $(sublib_files_extra_general_cc) $(sublib_files_extra_win32_cc)
+files_extra_h_tmp = $(sublib_files_extra_general_h) $(sublib_files_extra_posix_h)
+#files_extra_h_tmp = $(sublib_files_extra_general_h) $(sublib_files_extra_win32_h)
+files_extra_cc = $(files_extra_cc_tmp)
+files_extra_h = $(files_extra_h_tmp) wrap_init.h
+files_extra_all_cc = $(sublib_files_extra_general_cc) $(sublib_files_extra_posix_cc) $(sublib_files_extra_win32_cc)
+files_extra_all_h = $(sublib_files_extra_general_h) \
+ $(sublib_files_extra_posix_h) $(sublib_files_extra_win32_h) \
+ wrap_init.h
+files_all_general_cc = $(files_built_general_cc) $(files_extra_cc)
+files_all_posix_cc = $(files_built_posix_cc)
+files_all_win32_cc = $(files_built_win32_cc)
+extra_win32_defines =
+
+# Support for DLL on mingw using libtool > 1.4
+# When creating DLLs on win32, we need to explicitly add a few extra
+# libraries at link time to resolve symbols (remember a dll is like an
+# executable).
+#extra_win32_defines = \
+# -D$(shell echo $(sublib_name) | tr [:lower:] [:upper:])_BUILD
+
+no_undefined =
+#no_undefined = -no-undefined -Wl,--export-all-symbols
+win32_dlls_extra_libs =
+#win32_dlls_extra_libs = $(sublib_win32_dlls_libs)
+common_ldflags = -version-info $(LIBGLIBMM_SO_VERSION) $(no_undefined)
+all_includes = -I$(top_builddir)/glib -I$(top_srcdir)/glib \
+ $(sublib_cflags) $(GTHREAD_CFLAGS)
+
+extra_defines = -DG_LOG_DOMAIN=\"$(sublib_name)\" $(extra_win32_defines) \
+ $(DISABLE_DEPRECATED_CFLAGS) $(DISABLE_DEPRECATED_API_CFLAGS)
+
+dist_sources = $(files_built_all_cc) $(files_extra_all_cc) \
+ $(files_built_all_h) $(files_extra_all_h)
+
+DISTFILES = $(DIST_COMMON) $(dist_sources) $(TEXINFOS) $(EXTRA_DIST)
+DEFAULT_INCLUDES =
+INCLUDES = $(strip $(all_includes))
+sublib_includedir = $(includedir)/$(sublib_libname)/$(sublib_name)
+sublib_include_HEADERS = $(files_built_general_h) \
+ $(files_built_posix_h) \
+ $(files_extra_h)
+
+#sublib_include_HEADERS = $(files_built_general_h) \
+# $(files_built_win32_h) \
+# $(files_extra_h)
+
+lib_LTLIBRARIES = libglibmm-2.4.la
+libglibmm_2_4_la_SOURCES = $(files_all_general_cc) $(files_all_posix_cc)
+#libglibmm_2_4_la_SOURCES = $(files_all_general_cc) $(files_all_win32_cc)
+libglibmm_2_4_la_LDFLAGS = $(common_ldflags)
+libglibmm_2_4_la_LIBADD = $(GLIBMM_LIBS)
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .cc .lo .o .obj
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(top_srcdir)/build_shared/Makefile_build_gensrc.am_fragment $(srcdir)/../src/Makefile_list_of_hg.am_fragment $(top_srcdir)/build_shared/Makefile_gensrc_platform.am_fragment $(top_srcdir)/build_shared/Makefile_build_extra.am_fragment $(top_srcdir)/build_shared/Makefile_build.am_fragment $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu glib/glibmm/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu glib/glibmm/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+ done
+
+clean-libLTLIBRARIES:
+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libglibmm-2.4.la: $(libglibmm_2_4_la_OBJECTS) $(libglibmm_2_4_la_DEPENDENCIES)
+ $(CXXLINK) -rpath $(libdir) $(libglibmm_2_4_la_LDFLAGS) $(libglibmm_2_4_la_OBJECTS) $(libglibmm_2_4_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+include ./$(DEPDIR)/class.Plo
+include ./$(DEPDIR)/containers.Plo
+include ./$(DEPDIR)/convert.Plo
+include ./$(DEPDIR)/date.Plo
+include ./$(DEPDIR)/debug.Plo
+include ./$(DEPDIR)/dispatcher.Plo
+include ./$(DEPDIR)/error.Plo
+include ./$(DEPDIR)/exception.Plo
+include ./$(DEPDIR)/exceptionhandler.Plo
+include ./$(DEPDIR)/fileutils.Plo
+include ./$(DEPDIR)/init.Plo
+include ./$(DEPDIR)/interface.Plo
+include ./$(DEPDIR)/iochannel.Plo
+include ./$(DEPDIR)/keyfile.Plo
+include ./$(DEPDIR)/main.Plo
+include ./$(DEPDIR)/markup.Plo
+include ./$(DEPDIR)/miscutils.Plo
+include ./$(DEPDIR)/module.Plo
+include ./$(DEPDIR)/object.Plo
+include ./$(DEPDIR)/objectbase.Plo
+include ./$(DEPDIR)/optioncontext.Plo
+include ./$(DEPDIR)/optionentry.Plo
+include ./$(DEPDIR)/optiongroup.Plo
+include ./$(DEPDIR)/pattern.Plo
+include ./$(DEPDIR)/property.Plo
+include ./$(DEPDIR)/propertyproxy.Plo
+include ./$(DEPDIR)/propertyproxy_base.Plo
+include ./$(DEPDIR)/quark.Plo
+include ./$(DEPDIR)/random.Plo
+include ./$(DEPDIR)/shell.Plo
+include ./$(DEPDIR)/signalproxy.Plo
+include ./$(DEPDIR)/signalproxy_connectionnode.Plo
+include ./$(DEPDIR)/spawn.Plo
+include ./$(DEPDIR)/streamiochannel.Plo
+include ./$(DEPDIR)/stringutils.Plo
+include ./$(DEPDIR)/thread.Plo
+include ./$(DEPDIR)/threadpool.Plo
+include ./$(DEPDIR)/timer.Plo
+include ./$(DEPDIR)/timeval.Plo
+include ./$(DEPDIR)/unicode.Plo
+include ./$(DEPDIR)/ustring.Plo
+include ./$(DEPDIR)/utility.Plo
+include ./$(DEPDIR)/value.Plo
+include ./$(DEPDIR)/value_basictypes.Plo
+include ./$(DEPDIR)/value_custom.Plo
+include ./$(DEPDIR)/wrap.Plo
+include ./$(DEPDIR)/wrap_init.Plo
+
+.cc.o:
+ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+# source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+# source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cc.lo:
+ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+# source='$<' object='$@' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-sublib_includeHEADERS: $(sublib_include_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(sublib_includedir)" || $(mkdir_p) "$(DESTDIR)$(sublib_includedir)"
+ @list='$(sublib_include_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(sublib_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(sublib_includedir)/$$f'"; \
+ $(sublib_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(sublib_includedir)/$$f"; \
+ done
+
+uninstall-sublib_includeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(sublib_include_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(sublib_includedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(sublib_includedir)/$$f"; \
+ done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/../../build_shared $(distdir)/../src
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(sublib_includedir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-sublib_includeHEADERS
+
+install-exec-am: install-libLTLIBRARIES
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+ maintainer-clean-local
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \
+ uninstall-sublib_includeHEADERS
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-libLTLIBRARIES clean-libtool \
+ clean-recursive ctags ctags-recursive distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-recursive distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-libLTLIBRARIES install-man \
+ install-strip install-sublib_includeHEADERS installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic maintainer-clean-local \
+ maintainer-clean-recursive mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+ pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+ uninstall-info-am uninstall-libLTLIBRARIES \
+ uninstall-sublib_includeHEADERS
+
+
+maintainer-clean-local:
+ (cd $(srcdir) && rm -f $(files_built_all_cc) $(files_built_all_h))
+
+cvsignore:
+ ( \
+ echo ".deps"; \
+ echo ".libs"; \
+ echo "*.la"; \
+ echo "*.lo"; \
+ echo "Makefile"; \
+ echo "Makefile.in"; \
+ echo; \
+ list='$(strip $(files_built_all_cc) $(files_built_all_h))'; \
+ for file in $$list; do \
+ echo "$$file"; \
+ done \
+ ) >$(srcdir)/.cvsignore
+ ( \
+ echo "Makefile"; \
+ echo "Makefile.in"; \
+ echo; \
+ list='$(strip $(files_all_hg:.hg=_p.h))'; \
+ for file in $$list; do \
+ echo "$$file"; \
+ done \
+ ) >$(srcdir)/private/.cvsignore
+
+.PHONY: cvsignore
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libs/glibmm2/glib/glibmm/Makefile.am b/libs/glibmm2/glib/glibmm/Makefile.am
new file mode 100644
index 0000000000..e9ccf63703
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/Makefile.am
@@ -0,0 +1,105 @@
+## Copyright (c) 2001
+## The gtkmm development team.
+
+SUBDIRS = private
+
+sublib_name = glibmm
+sublib_libname = glibmm-2.4
+sublib_namespace = Glib
+sublib_cflags = $(GLIBMM_CFLAGS)
+
+sublib_files_extra_posix_cc =
+sublib_files_extra_win32_cc =
+
+sublib_files_extra_general_cc = \
+ class.cc \
+ containers.cc \
+ debug.cc \
+ dispatcher.cc \
+ error.cc \
+ exception.cc \
+ exceptionhandler.cc \
+ init.cc \
+ interface.cc \
+ main.cc \
+ miscutils.cc \
+ object.cc \
+ objectbase.cc \
+ pattern.cc \
+ property.cc \
+ propertyproxy.cc \
+ propertyproxy_base.cc \
+ quark.cc \
+ random.cc \
+ signalproxy.cc \
+ signalproxy_connectionnode.cc \
+ streamiochannel.cc \
+ stringutils.cc \
+ threadpool.cc \
+ timer.cc \
+ timeval.cc \
+ ustring.cc \
+ utility.cc \
+ value.cc \
+ value_custom.cc \
+ wrap.cc
+
+sublib_files_extra_posix_h =
+sublib_files_extra_win32_h =
+
+sublib_files_extra_general_h = \
+ arrayhandle.h \
+ class.h \
+ containerhandle_shared.h \
+ containers.h \
+ debug.h \
+ dispatcher.h \
+ error.h \
+ exception.h \
+ exceptionhandler.h \
+ helperlist.h \
+ init.h \
+ i18n.h \
+ interface.h \
+ iochannel.h \
+ keyfile.h \
+ listhandle.h \
+ main.h \
+ miscutils.h \
+ object.h \
+ objectbase.h \
+ pattern.h \
+ property.h \
+ propertyproxy.h \
+ propertyproxy_base.h \
+ quark.h \
+ random.h \
+ refptr.h \
+ sarray.h \
+ signalproxy_connectionnode.h \
+ slisthandle.h \
+ streamiochannel.h \
+ stringutils.h \
+ threadpool.h \
+ timer.h \
+ timeval.h \
+ ustring.h \
+ utility.h \
+ value.h \
+ value_custom.h \
+ wrap.h
+
+include $(top_srcdir)/build_shared/Makefile_build_gensrc.am_fragment
+
+files_built_general_cc += value_basictypes.cc
+files_built_general_h += signalproxy.h value_basictypes.h
+
+lib_LTLIBRARIES = libglibmm-2.4.la
+if OS_WIN32
+libglibmm_2_4_la_SOURCES = $(files_all_general_cc) $(files_all_win32_cc)
+else
+libglibmm_2_4_la_SOURCES = $(files_all_general_cc) $(files_all_posix_cc)
+endif
+libglibmm_2_4_la_LDFLAGS = $(common_ldflags)
+libglibmm_2_4_la_LIBADD = $(GLIBMM_LIBS)
+
diff --git a/libs/glibmm2/glib/glibmm/Makefile.in b/libs/glibmm2/glib/glibmm/Makefile.in
new file mode 100644
index 0000000000..6d659914d4
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/Makefile.in
@@ -0,0 +1,908 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(am__sublib_include_HEADERS_DIST) \
+ $(srcdir)/../src/Makefile_list_of_hg.am_fragment \
+ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/build_shared/Makefile_build.am_fragment \
+ $(top_srcdir)/build_shared/Makefile_build_extra.am_fragment \
+ $(top_srcdir)/build_shared/Makefile_build_gensrc.am_fragment \
+ $(top_srcdir)/build_shared/Makefile_gensrc_platform.am_fragment
+subdir = glib/glibmm
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/scripts/cxx.m4 \
+ $(top_srcdir)/scripts/cxx_std.m4 \
+ $(top_srcdir)/scripts/docgen.m4 \
+ $(top_srcdir)/scripts/glibmm_check_perl.m4 \
+ $(top_srcdir)/scripts/macros.m4 \
+ $(top_srcdir)/scripts/reduced.m4 $(top_srcdir)/scripts/sun.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h \
+ $(top_builddir)/glib/glibmmconfig.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(libdir)" \
+ "$(DESTDIR)$(sublib_includedir)"
+libLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(lib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libglibmm_2_4_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__libglibmm_2_4_la_SOURCES_DIST = convert.cc date.cc fileutils.cc \
+ iochannel.cc keyfile.cc markup.cc module.cc optioncontext.cc \
+ optionentry.cc optiongroup.cc shell.cc spawn.cc thread.cc \
+ unicode.cc wrap_init.cc value_basictypes.cc class.cc \
+ containers.cc debug.cc dispatcher.cc error.cc exception.cc \
+ exceptionhandler.cc init.cc interface.cc main.cc miscutils.cc \
+ object.cc objectbase.cc pattern.cc property.cc \
+ propertyproxy.cc propertyproxy_base.cc quark.cc random.cc \
+ signalproxy.cc signalproxy_connectionnode.cc \
+ streamiochannel.cc stringutils.cc threadpool.cc timer.cc \
+ timeval.cc ustring.cc utility.cc value.cc value_custom.cc \
+ wrap.cc
+am__objects_1 = convert.lo date.lo fileutils.lo iochannel.lo \
+ keyfile.lo markup.lo module.lo optioncontext.lo optionentry.lo \
+ optiongroup.lo shell.lo spawn.lo thread.lo unicode.lo
+am__objects_2 = $(am__objects_1) wrap_init.lo value_basictypes.lo
+am__objects_3 = class.lo containers.lo debug.lo dispatcher.lo error.lo \
+ exception.lo exceptionhandler.lo init.lo interface.lo main.lo \
+ miscutils.lo object.lo objectbase.lo pattern.lo property.lo \
+ propertyproxy.lo propertyproxy_base.lo quark.lo random.lo \
+ signalproxy.lo signalproxy_connectionnode.lo \
+ streamiochannel.lo stringutils.lo threadpool.lo timer.lo \
+ timeval.lo ustring.lo utility.lo value.lo value_custom.lo \
+ wrap.lo
+am__objects_4 =
+@OS_WIN32_FALSE@am__objects_5 = $(am__objects_3) $(am__objects_4)
+@OS_WIN32_TRUE@am__objects_5 = $(am__objects_3) $(am__objects_4)
+am__objects_6 = $(am__objects_5)
+am__objects_7 = $(am__objects_2) $(am__objects_6)
+am__objects_8 = $(am__objects_4)
+am__objects_9 = $(am__objects_8)
+@OS_WIN32_FALSE@am_libglibmm_2_4_la_OBJECTS = $(am__objects_7) \
+@OS_WIN32_FALSE@ $(am__objects_9)
+@OS_WIN32_TRUE@am_libglibmm_2_4_la_OBJECTS = $(am__objects_7) \
+@OS_WIN32_TRUE@ $(am__objects_9)
+libglibmm_2_4_la_OBJECTS = $(am_libglibmm_2_4_la_OBJECTS)
+depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libglibmm_2_4_la_SOURCES)
+DIST_SOURCES = $(am__libglibmm_2_4_la_SOURCES_DIST)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+am__sublib_include_HEADERS_DIST = convert.h date.h fileutils.h \
+ iochannel.h keyfile.h markup.h module.h optioncontext.h \
+ optionentry.h optiongroup.h shell.h spawn.h thread.h unicode.h \
+ signalproxy.h value_basictypes.h arrayhandle.h class.h \
+ containerhandle_shared.h containers.h debug.h dispatcher.h \
+ error.h exception.h exceptionhandler.h helperlist.h init.h \
+ i18n.h interface.h listhandle.h main.h miscutils.h object.h \
+ objectbase.h pattern.h property.h propertyproxy.h \
+ propertyproxy_base.h quark.h random.h refptr.h sarray.h \
+ signalproxy_connectionnode.h slisthandle.h streamiochannel.h \
+ stringutils.h threadpool.h timer.h timeval.h ustring.h \
+ utility.h value.h value_custom.h wrap.h wrap_init.h
+sublib_includeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(sublib_include_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@ $(strip $(extra_defines))
+DEPDIR = @DEPDIR@
+DISABLE_DEPRECATED_API_CFLAGS = @DISABLE_DEPRECATED_API_CFLAGS@
+DISABLE_DEPRECATED_CFLAGS = @DISABLE_DEPRECATED_CFLAGS@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GLIBMM_CFLAGS = @GLIBMM_CFLAGS@
+GLIBMM_LIBS = @GLIBMM_LIBS@
+GLIBMM_MAJOR_VERSION = @GLIBMM_MAJOR_VERSION@
+GLIBMM_MICRO_VERSION = @GLIBMM_MICRO_VERSION@
+GLIBMM_MINOR_VERSION = @GLIBMM_MINOR_VERSION@
+GLIBMM_RELEASE = @GLIBMM_RELEASE@
+GLIBMM_VERSION = @GLIBMM_VERSION@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKMMPROC_MERGECDOCS = @GTKMMPROC_MERGECDOCS@
+GTKMM_DOXYGEN_INPUT = @GTKMM_DOXYGEN_INPUT@
+GTKMM_FALSE_FALSE = @GTKMM_FALSE_FALSE@
+GTKMM_FALSE_TRUE = @GTKMM_FALSE_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBGLIBMM_SO_VERSION = @LIBGLIBMM_SO_VERSION@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+M4 = @M4@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS_WIN32_FALSE = @OS_WIN32_FALSE@
+OS_WIN32_TRUE = @OS_WIN32_TRUE@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL_PATH = @PERL_PATH@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_WIN32_FALSE = @PLATFORM_WIN32_FALSE@
+PLATFORM_WIN32_TRUE = @PLATFORM_WIN32_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_AS = @ac_ct_AS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+SUBDIRS = private
+sublib_name = glibmm
+sublib_libname = glibmm-2.4
+sublib_namespace = Glib
+sublib_cflags = $(GLIBMM_CFLAGS)
+sublib_files_extra_posix_cc =
+sublib_files_extra_win32_cc =
+sublib_files_extra_general_cc = \
+ class.cc \
+ containers.cc \
+ debug.cc \
+ dispatcher.cc \
+ error.cc \
+ exception.cc \
+ exceptionhandler.cc \
+ init.cc \
+ interface.cc \
+ main.cc \
+ miscutils.cc \
+ object.cc \
+ objectbase.cc \
+ pattern.cc \
+ property.cc \
+ propertyproxy.cc \
+ propertyproxy_base.cc \
+ quark.cc \
+ random.cc \
+ signalproxy.cc \
+ signalproxy_connectionnode.cc \
+ streamiochannel.cc \
+ stringutils.cc \
+ threadpool.cc \
+ timer.cc \
+ timeval.cc \
+ ustring.cc \
+ utility.cc \
+ value.cc \
+ value_custom.cc \
+ wrap.cc
+
+sublib_files_extra_posix_h =
+sublib_files_extra_win32_h =
+sublib_files_extra_general_h = \
+ arrayhandle.h \
+ class.h \
+ containerhandle_shared.h \
+ containers.h \
+ debug.h \
+ dispatcher.h \
+ error.h \
+ exception.h \
+ exceptionhandler.h \
+ helperlist.h \
+ init.h \
+ i18n.h \
+ interface.h \
+ iochannel.h \
+ keyfile.h \
+ listhandle.h \
+ main.h \
+ miscutils.h \
+ object.h \
+ objectbase.h \
+ pattern.h \
+ property.h \
+ propertyproxy.h \
+ propertyproxy_base.h \
+ quark.h \
+ random.h \
+ refptr.h \
+ sarray.h \
+ signalproxy_connectionnode.h \
+ slisthandle.h \
+ streamiochannel.h \
+ stringutils.h \
+ threadpool.h \
+ timer.h \
+ timeval.h \
+ ustring.h \
+ utility.h \
+ value.h \
+ value_custom.h \
+ wrap.h
+
+files_posix_hg =
+files_win32_hg =
+files_general_hg = convert.hg date.hg fileutils.hg iochannel.hg keyfile.hg markup.hg module.hg optioncontext.hg optionentry.hg optiongroup.hg shell.hg spawn.hg thread.hg unicode.hg
+files_all_hg = $(files_general_hg) $(files_posix_hg) $(files_win32_hg)
+@OS_WIN32_FALSE@files_hg = $(files_general_hg) $(files_posix_hg)
+@OS_WIN32_TRUE@files_hg = $(files_general_hg) $(files_win32_hg)
+files_built_general_cc = $(files_general_hg:.hg=.cc) wrap_init.cc \
+ value_basictypes.cc
+files_built_general_h = $(files_general_hg:.hg=.h) signalproxy.h \
+ value_basictypes.h
+files_built_posix_cc = $(files_posix_hg:.hg=.cc)
+files_built_posix_h = $(files_posix_hg:.hg=.h)
+files_built_win32_cc = $(files_win32_hg:.hg=.cc)
+files_built_win32_h = $(files_win32_hg:.hg=.h)
+files_built_all_cc = $(files_built_general_cc) \
+ $(files_built_posix_cc) \
+ $(files_built_win32_cc)
+
+files_built_all_h = $(files_built_general_h) \
+ $(files_built_posix_h) \
+ $(files_built_win32_h)
+
+@OS_WIN32_FALSE@files_extra_cc_tmp = $(sublib_files_extra_general_cc) $(sublib_files_extra_posix_cc)
+@OS_WIN32_TRUE@files_extra_cc_tmp = $(sublib_files_extra_general_cc) $(sublib_files_extra_win32_cc)
+@OS_WIN32_FALSE@files_extra_h_tmp = $(sublib_files_extra_general_h) $(sublib_files_extra_posix_h)
+@OS_WIN32_TRUE@files_extra_h_tmp = $(sublib_files_extra_general_h) $(sublib_files_extra_win32_h)
+files_extra_cc = $(files_extra_cc_tmp)
+files_extra_h = $(files_extra_h_tmp) wrap_init.h
+files_extra_all_cc = $(sublib_files_extra_general_cc) $(sublib_files_extra_posix_cc) $(sublib_files_extra_win32_cc)
+files_extra_all_h = $(sublib_files_extra_general_h) \
+ $(sublib_files_extra_posix_h) $(sublib_files_extra_win32_h) \
+ wrap_init.h
+files_all_general_cc = $(files_built_general_cc) $(files_extra_cc)
+files_all_posix_cc = $(files_built_posix_cc)
+files_all_win32_cc = $(files_built_win32_cc)
+@PLATFORM_WIN32_FALSE@extra_win32_defines =
+
+# Support for DLL on mingw using libtool > 1.4
+# When creating DLLs on win32, we need to explicitly add a few extra
+# libraries at link time to resolve symbols (remember a dll is like an
+# executable).
+@PLATFORM_WIN32_TRUE@extra_win32_defines = \
+@PLATFORM_WIN32_TRUE@ -D$(shell echo $(sublib_name) | tr [:lower:] [:upper:])_BUILD
+
+@PLATFORM_WIN32_FALSE@no_undefined =
+@PLATFORM_WIN32_TRUE@no_undefined = -no-undefined -Wl,--export-all-symbols
+@PLATFORM_WIN32_FALSE@win32_dlls_extra_libs =
+@PLATFORM_WIN32_TRUE@win32_dlls_extra_libs = $(sublib_win32_dlls_libs)
+common_ldflags = -version-info $(LIBGLIBMM_SO_VERSION) $(no_undefined)
+all_includes = -I$(top_builddir)/glib -I$(top_srcdir)/glib \
+ $(sublib_cflags) $(GTHREAD_CFLAGS)
+
+extra_defines = -DG_LOG_DOMAIN=\"$(sublib_name)\" $(extra_win32_defines) \
+ $(DISABLE_DEPRECATED_CFLAGS) $(DISABLE_DEPRECATED_API_CFLAGS)
+
+dist_sources = $(files_built_all_cc) $(files_extra_all_cc) \
+ $(files_built_all_h) $(files_extra_all_h)
+
+DISTFILES = $(DIST_COMMON) $(dist_sources) $(TEXINFOS) $(EXTRA_DIST)
+DEFAULT_INCLUDES =
+INCLUDES = $(strip $(all_includes))
+sublib_includedir = $(includedir)/$(sublib_libname)/$(sublib_name)
+@OS_WIN32_FALSE@sublib_include_HEADERS = $(files_built_general_h) \
+@OS_WIN32_FALSE@ $(files_built_posix_h) \
+@OS_WIN32_FALSE@ $(files_extra_h)
+
+@OS_WIN32_TRUE@sublib_include_HEADERS = $(files_built_general_h) \
+@OS_WIN32_TRUE@ $(files_built_win32_h) \
+@OS_WIN32_TRUE@ $(files_extra_h)
+
+lib_LTLIBRARIES = libglibmm-2.4.la
+@OS_WIN32_FALSE@libglibmm_2_4_la_SOURCES = $(files_all_general_cc) $(files_all_posix_cc)
+@OS_WIN32_TRUE@libglibmm_2_4_la_SOURCES = $(files_all_general_cc) $(files_all_win32_cc)
+libglibmm_2_4_la_LDFLAGS = $(common_ldflags)
+libglibmm_2_4_la_LIBADD = $(GLIBMM_LIBS)
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .cc .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/build_shared/Makefile_build_gensrc.am_fragment $(srcdir)/../src/Makefile_list_of_hg.am_fragment $(top_srcdir)/build_shared/Makefile_gensrc_platform.am_fragment $(top_srcdir)/build_shared/Makefile_build_extra.am_fragment $(top_srcdir)/build_shared/Makefile_build.am_fragment $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu glib/glibmm/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu glib/glibmm/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+ done
+
+clean-libLTLIBRARIES:
+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libglibmm-2.4.la: $(libglibmm_2_4_la_OBJECTS) $(libglibmm_2_4_la_DEPENDENCIES)
+ $(CXXLINK) -rpath $(libdir) $(libglibmm_2_4_la_LDFLAGS) $(libglibmm_2_4_la_OBJECTS) $(libglibmm_2_4_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/class.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/containers.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convert.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/date.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dispatcher.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exception.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exceptionhandler.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fileutils.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interface.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iochannel.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyfile.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/markup.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/miscutils.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/module.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/object.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/objectbase.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/optioncontext.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/optionentry.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/optiongroup.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pattern.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/property.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/propertyproxy.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/propertyproxy_base.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quark.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/random.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shell.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signalproxy.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signalproxy_connectionnode.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawn.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/streamiochannel.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stringutils.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thread.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threadpool.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timeval.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unicode.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ustring.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utility.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/value.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/value_basictypes.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/value_custom.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wrap.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wrap_init.Plo@am__quote@
+
+.cc.o:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cc.lo:
+@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-sublib_includeHEADERS: $(sublib_include_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(sublib_includedir)" || $(mkdir_p) "$(DESTDIR)$(sublib_includedir)"
+ @list='$(sublib_include_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(sublib_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(sublib_includedir)/$$f'"; \
+ $(sublib_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(sublib_includedir)/$$f"; \
+ done
+
+uninstall-sublib_includeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(sublib_include_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(sublib_includedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(sublib_includedir)/$$f"; \
+ done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/../../build_shared $(distdir)/../src
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(sublib_includedir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+ mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-sublib_includeHEADERS
+
+install-exec-am: install-libLTLIBRARIES
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+ maintainer-clean-local
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \
+ uninstall-sublib_includeHEADERS
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-libLTLIBRARIES clean-libtool \
+ clean-recursive ctags ctags-recursive distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-recursive distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-libLTLIBRARIES install-man \
+ install-strip install-sublib_includeHEADERS installcheck \
+ installcheck-am installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic maintainer-clean-local \
+ maintainer-clean-recursive mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+ pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+ uninstall-info-am uninstall-libLTLIBRARIES \
+ uninstall-sublib_includeHEADERS
+
+
+maintainer-clean-local:
+ (cd $(srcdir) && rm -f $(files_built_all_cc) $(files_built_all_h))
+
+cvsignore:
+ ( \
+ echo ".deps"; \
+ echo ".libs"; \
+ echo "*.la"; \
+ echo "*.lo"; \
+ echo "Makefile"; \
+ echo "Makefile.in"; \
+ echo; \
+ list='$(strip $(files_built_all_cc) $(files_built_all_h))'; \
+ for file in $$list; do \
+ echo "$$file"; \
+ done \
+ ) >$(srcdir)/.cvsignore
+ ( \
+ echo "Makefile"; \
+ echo "Makefile.in"; \
+ echo; \
+ list='$(strip $(files_all_hg:.hg=_p.h))'; \
+ for file in $$list; do \
+ echo "$$file"; \
+ done \
+ ) >$(srcdir)/private/.cvsignore
+
+.PHONY: cvsignore
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libs/glibmm2/glib/glibmm/arrayhandle.h b/libs/glibmm2/glib/glibmm/arrayhandle.h
new file mode 100644
index 0000000000..2c346bf884
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/arrayhandle.h
@@ -0,0 +1,522 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_ARRAYHANDLE_H
+#define _GLIBMM_ARRAYHANDLE_H
+
+/* $Id: arrayhandle.h,v 1.3 2003/04/21 17:39:41 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/containerhandle_shared.h>
+
+
+namespace Glib
+{
+
+namespace Container_Helpers
+{
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+/* Count the number of elements in a 0-terminated sequence.
+ */
+template <class T> inline
+size_t compute_array_size(const T* array)
+{
+ const T* pend = array;
+
+ while(*pend)
+ ++pend;
+
+ return (pend - array);
+}
+
+/* Allocate and fill a 0-terminated array. The size argument
+ * specifies the number of elements in the input sequence.
+ */
+template <class For, class Tr>
+typename Tr::CType* create_array(For pbegin, size_t size, Tr)
+{
+ typedef typename Tr::CType CType;
+
+ CType *const array = static_cast<CType*>(g_malloc((size + 1) * sizeof(CType)));
+ CType *const array_end = array + size;
+
+ for(CType* pdest = array; pdest != array_end; ++pdest)
+ {
+ // Use & to force a warning if the iterator returns a temporary object.
+ *pdest = Tr::to_c_type(*&*pbegin);
+ ++pbegin;
+ }
+
+ *array_end = CType();
+ return array;
+}
+
+
+/* Convert from any container that supports forward
+ * iterators and has a size() method.
+ */
+template <class Tr, class Cont>
+struct ArraySourceTraits
+{
+ typedef typename Tr::CType CType;
+
+ static size_t get_size(const Cont& cont)
+ { return cont.size(); }
+
+ static const CType* get_data(const Cont& cont, size_t size)
+ { return Glib::Container_Helpers::create_array(cont.begin(), size, Tr()); }
+
+ static const Glib::OwnershipType initial_ownership = Glib::OWNERSHIP_SHALLOW;
+};
+
+/* Convert from a 0-terminated array. The Cont argument must be a pointer
+ * to the first element. Note that only arrays of the C type are supported.
+ */
+template <class Tr, class Cont>
+struct ArraySourceTraits<Tr,Cont*>
+{
+ typedef typename Tr::CType CType;
+
+ static size_t get_size(const CType* array)
+ { return (array) ? Glib::Container_Helpers::compute_array_size(array) : 0; }
+
+ static const CType* get_data(const CType* array, size_t)
+ { return array; }
+
+ static const Glib::OwnershipType initial_ownership = Glib::OWNERSHIP_NONE;
+};
+
+template <class Tr, class Cont>
+struct ArraySourceTraits<Tr,const Cont*> : ArraySourceTraits<Tr,Cont*>
+{};
+
+/* Convert from a 0-terminated array. The Cont argument must be a pointer
+ * to the first element. Note that only arrays of the C type are supported.
+ * For consistency, the array must be 0-terminated, even though the array
+ * size is known at compile time.
+ */
+template <class Tr, class Cont, size_t N>
+struct ArraySourceTraits<Tr,Cont[N]>
+{
+ typedef typename Tr::CType CType;
+
+ static size_t get_size(const CType*)
+ { return (N - 1); }
+
+ static const CType* get_data(const CType* array, size_t)
+ { return array; }
+
+ static const Glib::OwnershipType initial_ownership = Glib::OWNERSHIP_NONE;
+};
+
+template <class Tr, class Cont, size_t N>
+struct ArraySourceTraits<Tr,const Cont[N]> : ArraySourceTraits<Tr,Cont[N]>
+{};
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+
+/**
+ * @ingroup ContHelpers
+ */
+template <class Tr>
+class ArrayHandleIterator
+{
+public:
+ typedef typename Tr::CppType CppType;
+ typedef typename Tr::CType CType;
+
+ typedef std::random_access_iterator_tag iterator_category;
+ typedef CppType value_type;
+ typedef ptrdiff_t difference_type;
+ typedef value_type reference;
+ typedef void pointer;
+
+ explicit inline ArrayHandleIterator(const CType* pos);
+
+ inline value_type operator*() const;
+ inline value_type operator[](difference_type offset) const;
+
+ inline ArrayHandleIterator<Tr> & operator++();
+ inline const ArrayHandleIterator<Tr> operator++(int);
+
+ // All this random access stuff is only there because STL algorithms
+ // usually have optimized specializations for random access iterators,
+ // and we don't want to give away efficiency for nothing.
+ //
+ inline ArrayHandleIterator<Tr> & operator+=(difference_type rhs);
+ inline ArrayHandleIterator<Tr> & operator-=(difference_type rhs);
+ inline const ArrayHandleIterator<Tr> operator+ (difference_type rhs) const;
+ inline const ArrayHandleIterator<Tr> operator- (difference_type rhs) const;
+ inline difference_type operator-(const ArrayHandleIterator<Tr>& rhs) const;
+
+ inline bool operator==(const ArrayHandleIterator<Tr>& rhs) const;
+ inline bool operator!=(const ArrayHandleIterator<Tr>& rhs) const;
+ inline bool operator< (const ArrayHandleIterator<Tr>& rhs) const;
+ inline bool operator> (const ArrayHandleIterator<Tr>& rhs) const;
+ inline bool operator<=(const ArrayHandleIterator<Tr>& rhs) const;
+ inline bool operator>=(const ArrayHandleIterator<Tr>& rhs) const;
+
+private:
+ const CType* pos_;
+};
+
+} // namespace Container_Helpers
+
+
+/** If a method takes this as an argument, or has this as a return type, then you can use a standard
+ * container such as std::list or std::vector.
+ * @ingroup ContHandles
+ */
+template < class T, class Tr = Glib::Container_Helpers::TypeTraits<T> >
+class ArrayHandle
+{
+public:
+ typedef typename Tr::CppType CppType;
+ typedef typename Tr::CType CType;
+
+ typedef CppType value_type;
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+
+ typedef Glib::Container_Helpers::ArrayHandleIterator<Tr> const_iterator;
+ typedef Glib::Container_Helpers::ArrayHandleIterator<Tr> iterator;
+
+ template <class Cont> inline
+ ArrayHandle(const Cont& container);
+
+ // Take over ownership of an array created by GTK+ functions.
+ inline ArrayHandle(const CType* array, size_t array_size, Glib::OwnershipType ownership);
+ inline ArrayHandle(const CType* array, Glib::OwnershipType ownership);
+
+ // Copying clears the ownership flag of the source handle.
+ inline ArrayHandle(const ArrayHandle<T,Tr>& other);
+
+ ~ArrayHandle();
+
+ inline const_iterator begin() const;
+ inline const_iterator end() const;
+
+ template <class U> inline operator std::vector<U>() const;
+ template <class U> inline operator std::deque<U>() const;
+ template <class U> inline operator std::list<U>() const;
+
+ template <class Cont> inline
+ void assign_to(Cont& container) const;
+
+ template <class Out> inline
+ void copy(Out pdest) const;
+
+ inline const CType* data() const;
+ inline size_t size() const;
+ inline bool empty() const;
+
+private:
+ size_t size_;
+ const CType* parray_;
+ mutable Glib::OwnershipType ownership_;
+
+ // No copy assignment.
+ ArrayHandle<T, Tr>& operator=(const ArrayHandle<T,Tr>&);
+};
+
+/** If a method takes this as an argument, or has this as a return type, then you can use a standard
+ * container such as std::list<Glib::ustring> or std::vector<Glib::ustring>.
+ * @ingroup ContHandles
+ */
+typedef ArrayHandle<Glib::ustring> StringArrayHandle;
+
+
+/***************************************************************************/
+/* Inline implementation */
+/***************************************************************************/
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+namespace Container_Helpers
+{
+
+/**** Glib::Container_Helpers::ArrayHandleIterator<> ***********************/
+
+template <class Tr> inline
+ArrayHandleIterator<Tr>::ArrayHandleIterator(const CType* pos)
+:
+ pos_ (pos)
+{}
+
+template <class Tr> inline
+typename ArrayHandleIterator<Tr>::value_type ArrayHandleIterator<Tr>::operator*() const
+{
+ return Tr::to_cpp_type(*pos_);
+}
+
+template <class Tr> inline
+typename ArrayHandleIterator<Tr>::value_type
+ArrayHandleIterator<Tr>::operator[](difference_type offset) const
+{
+ return Tr::to_cpp_type(pos_[offset]);
+}
+
+template <class Tr> inline
+ArrayHandleIterator<Tr>& ArrayHandleIterator<Tr>::operator++()
+{
+ ++pos_;
+ return *this;
+}
+
+template <class Tr> inline
+const ArrayHandleIterator<Tr> ArrayHandleIterator<Tr>::operator++(int)
+{
+ return ArrayHandleIterator<Tr>(pos_++);
+}
+
+template <class Tr> inline
+ArrayHandleIterator<Tr>&
+ArrayHandleIterator<Tr>::operator+=(typename ArrayHandleIterator<Tr>::difference_type rhs)
+{
+ pos_ += rhs;
+ return *this;
+}
+
+template <class Tr> inline
+ArrayHandleIterator<Tr>&
+ArrayHandleIterator<Tr>::operator-=(typename ArrayHandleIterator<Tr>::difference_type rhs)
+{
+ pos_ -= rhs;
+ return *this;
+}
+
+template <class Tr> inline
+const ArrayHandleIterator<Tr>
+ArrayHandleIterator<Tr>::operator+(typename ArrayHandleIterator<Tr>::difference_type rhs) const
+{
+ return ArrayHandleIterator<Tr>(pos_ + rhs);
+}
+
+template <class Tr> inline
+const ArrayHandleIterator<Tr>
+ArrayHandleIterator<Tr>::operator-(typename ArrayHandleIterator<Tr>::difference_type rhs) const
+{
+ return ArrayHandleIterator<Tr>(pos_ - rhs);
+}
+
+template <class Tr> inline
+typename ArrayHandleIterator<Tr>::difference_type
+ArrayHandleIterator<Tr>::operator-(const ArrayHandleIterator<Tr>& rhs) const
+{
+ return (pos_ - rhs.pos_);
+}
+
+template <class Tr> inline
+bool ArrayHandleIterator<Tr>::operator==(const ArrayHandleIterator<Tr>& rhs) const
+{
+ return (pos_ == rhs.pos_);
+}
+
+template <class Tr> inline
+bool ArrayHandleIterator<Tr>::operator!=(const ArrayHandleIterator<Tr>& rhs) const
+{
+ return (pos_ != rhs.pos_);
+}
+
+template <class Tr> inline
+bool ArrayHandleIterator<Tr>::operator<(const ArrayHandleIterator<Tr>& rhs) const
+{
+ return (pos_ < rhs.pos_);
+}
+
+template <class Tr> inline
+bool ArrayHandleIterator<Tr>::operator>(const ArrayHandleIterator<Tr>& rhs) const
+{
+ return (pos_ > rhs.pos_);
+}
+
+template <class Tr> inline
+bool ArrayHandleIterator<Tr>::operator<=(const ArrayHandleIterator<Tr>& rhs) const
+{
+ return (pos_ <= rhs.pos_);
+}
+
+template <class Tr> inline
+bool ArrayHandleIterator<Tr>::operator>=(const ArrayHandleIterator<Tr>& rhs) const
+{
+ return (pos_ >= rhs.pos_);
+}
+
+} // namespace Container_Helpers
+
+
+/**** Glib::ArrayHandle<> **************************************************/
+
+template <class T, class Tr>
+ template <class Cont>
+inline
+ArrayHandle<T,Tr>::ArrayHandle(const Cont& container)
+:
+ size_ (Glib::Container_Helpers::ArraySourceTraits<Tr,Cont>::get_size(container)),
+ parray_ (Glib::Container_Helpers::ArraySourceTraits<Tr,Cont>::get_data(container, size_)),
+ ownership_ (Glib::Container_Helpers::ArraySourceTraits<Tr,Cont>::initial_ownership)
+{}
+
+template <class T, class Tr> inline
+ArrayHandle<T,Tr>::ArrayHandle(const typename ArrayHandle<T,Tr>::CType* array, size_t array_size,
+ Glib::OwnershipType ownership)
+:
+ size_ (array_size),
+ parray_ (array),
+ ownership_ (ownership)
+{}
+
+template <class T, class Tr> inline
+ArrayHandle<T,Tr>::ArrayHandle(const typename ArrayHandle<T,Tr>::CType* array,
+ Glib::OwnershipType ownership)
+:
+ size_ ((array) ? Glib::Container_Helpers::compute_array_size(array) : 0),
+ parray_ (array),
+ ownership_ (ownership)
+{}
+
+template <class T, class Tr> inline
+ArrayHandle<T,Tr>::ArrayHandle(const ArrayHandle<T,Tr>& other)
+:
+ size_ (other.size_),
+ parray_ (other.parray_),
+ ownership_ (other.ownership_)
+{
+ other.ownership_ = Glib::OWNERSHIP_NONE;
+}
+
+template <class T, class Tr>
+ArrayHandle<T,Tr>::~ArrayHandle()
+{
+ if(ownership_ != Glib::OWNERSHIP_NONE)
+ {
+ if(ownership_ != Glib::OWNERSHIP_SHALLOW)
+ {
+ // Deep ownership: release each container element.
+ const CType *const pend = parray_ + size_;
+ for(const CType* p = parray_; p != pend; ++p)
+ Tr::release_c_type(*p);
+ }
+ g_free(const_cast<CType*>(parray_));
+ }
+}
+
+template <class T, class Tr> inline
+typename ArrayHandle<T,Tr>::const_iterator ArrayHandle<T,Tr>::begin() const
+{
+ return Glib::Container_Helpers::ArrayHandleIterator<Tr>(parray_);
+}
+
+template <class T, class Tr> inline
+typename ArrayHandle<T,Tr>::const_iterator ArrayHandle<T,Tr>::end() const
+{
+ return Glib::Container_Helpers::ArrayHandleIterator<Tr>(parray_ + size_);
+}
+
+template <class T, class Tr>
+ template <class U>
+inline
+ArrayHandle<T,Tr>::operator std::vector<U>() const
+{
+#ifdef GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS
+ return std::vector<U>(this->begin(), this->end());
+#else
+ std::vector<U> temp;
+ temp.reserve(this->size());
+ Glib::Container_Helpers::fill_container(temp, this->begin(), this->end());
+ return temp;
+#endif
+}
+
+template <class T, class Tr>
+ template <class U>
+inline
+ArrayHandle<T,Tr>::operator std::deque<U>() const
+{
+#ifdef GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS
+ return std::deque<U>(this->begin(), this->end());
+#else
+ std::deque<U> temp;
+ Glib::Container_Helpers::fill_container(temp, this->begin(), this->end());
+ return temp;
+#endif
+}
+
+template <class T, class Tr>
+ template <class U>
+inline
+ArrayHandle<T,Tr>::operator std::list<U>() const
+{
+#ifdef GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS
+ return std::list<U>(this->begin(), this->end());
+#else
+ std::list<U> temp;
+ Glib::Container_Helpers::fill_container(temp, this->begin(), this->end());
+ return temp;
+#endif
+}
+
+template <class T, class Tr>
+ template <class Cont>
+inline
+void ArrayHandle<T,Tr>::assign_to(Cont& container) const
+{
+#ifdef GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS
+ container.assign(this->begin(), this->end());
+#else
+ Cont temp;
+ Glib::Container_Helpers::fill_container(temp, this->begin(), this->end());
+ container.swap(temp);
+#endif
+}
+
+template <class T, class Tr>
+ template <class Out>
+inline
+void ArrayHandle<T,Tr>::copy(Out pdest) const
+{
+ std::copy(this->begin(), this->end(), pdest);
+}
+
+template <class T, class Tr> inline
+const typename ArrayHandle<T,Tr>::CType* ArrayHandle<T,Tr>::data() const
+{
+ return parray_;
+}
+
+template <class T, class Tr> inline
+size_t ArrayHandle<T,Tr>::size() const
+{
+ return size_;
+}
+
+template <class T, class Tr> inline
+bool ArrayHandle<T,Tr>::empty() const
+{
+ return (size_ == 0);
+}
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_ARRAYHANDLE_H */
+
diff --git a/libs/glibmm2/glib/glibmm/class.cc b/libs/glibmm2/glib/glibmm/class.cc
new file mode 100644
index 0000000000..21021ab63b
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/class.cc
@@ -0,0 +1,117 @@
+// -*- c++ -*-
+/* $Id: class.cc,v 1.7 2006/10/04 12:04:05 murrayc Exp $ */
+
+/* Copyright (C) 1998-2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/class.h>
+#include <glibmm/property.h>
+#include <glibmm/ustring.h>
+#include <glibmm/utility.h>
+
+
+namespace Glib
+{
+
+void Class::register_derived_type(GType base_type)
+{
+ if(gtype_)
+ return; // already initialized
+
+ GTypeQuery base_query = { 0, 0, 0, 0, };
+ g_type_query(base_type, &base_query);
+
+ const GTypeInfo derived_info =
+ {
+ base_query.class_size,
+ 0, // base_init
+ 0, // base_finalize
+ class_init_func_,
+ 0, // class_finalize
+ 0, // class_data
+ base_query.instance_size,
+ 0, // n_preallocs
+ 0, // instance_init
+ 0, // value_table
+ };
+
+ Glib::ustring derived_name = "gtkmm__";
+ derived_name += base_query.type_name;
+
+ gtype_ = g_type_register_static(base_type, derived_name.c_str(), &derived_info, GTypeFlags(0));
+}
+
+GType Class::clone_custom_type(const char* custom_type_name) const
+{
+ std::string full_name ("gtkmm__CustomObject_");
+ Glib::append_canonical_typename(full_name, custom_type_name);
+
+ GType custom_type = g_type_from_name(full_name.c_str());
+
+ if(!custom_type)
+ {
+ g_return_val_if_fail(gtype_ != 0, 0);
+
+ // Cloned custom types derive from the wrapper's parent type,
+ // so that g_type_class_peek_parent() works correctly.
+ const GType base_type = g_type_parent(gtype_);
+
+ GTypeQuery base_query = { 0, 0, 0, 0, };
+ g_type_query(base_type, &base_query);
+
+ const GTypeInfo derived_info =
+ {
+ base_query.class_size,
+ 0, // base_init
+ 0, // base_finalize
+ &Class::custom_class_init_function,
+ 0, // class_finalize
+ this, // class_data
+ base_query.instance_size,
+ 0, // n_preallocs
+ 0, // instance_init
+ 0, // value_table
+ };
+
+ custom_type = g_type_register_static(
+ base_type, full_name.c_str(), &derived_info, GTypeFlags(0));
+ }
+
+ return custom_type;
+}
+
+// static
+void Class::custom_class_init_function(void* g_class, void* class_data)
+{
+ // The class_data pointer is set to 'this' by clone_custom_type().
+ const Class *const self = static_cast<Class*>(class_data);
+
+ g_return_if_fail(self->class_init_func_ != 0);
+
+ // Call the wrapper's class_init_function() to redirect
+ // the vfunc and default signal handler callbacks.
+ (*self->class_init_func_)(g_class, 0);
+
+#ifdef GLIBMM_PROPERTIES_ENABLED
+ GObjectClass *const gobject_class = static_cast<GObjectClass*>(g_class);
+ gobject_class->get_property = &Glib::custom_get_property_callback;
+ gobject_class->set_property = &Glib::custom_set_property_callback;
+#endif //GLIBMM_PROPERTIES_ENABLED
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/class.h b/libs/glibmm2/glib/glibmm/class.h
new file mode 100644
index 0000000000..9e4e38402e
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/class.h
@@ -0,0 +1,77 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_CLASS_H
+#define _GLIBMM_CLASS_H
+
+/* $Id: class.h,v 1.6 2006/05/12 08:08:43 murrayc Exp $ */
+
+/* Copyright 2001 Free Software Foundation
+ * Copyright (C) 1998-2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib-object.h>
+#include <glibmmconfig.h> //Include this here so that the /private/*.h classes have access to GLIBMM_VFUNCS_ENABLED
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+namespace Glib
+{
+
+class Class
+{
+public:
+ /* No constructor/destructor:
+ * Glib::Class objects are used only as static data, which would cause
+ * lots of ugly global constructor invocations. These are avoidable,
+ * because the C/C++ standard explicitly specifies that all _static_ data
+ * is zero-initialized at program start.
+ */
+ //Class();
+ //~Class();
+
+ //static void class_init_function(BaseClassType *p);
+ //static void object_init_function(BaseObjectType *o);
+ //GType get_type() = 0; //Creates the GType when this is first called.
+
+ // Hook for translating API
+ //static Glib::Object* wrap_new(GObject*);
+
+ inline GType get_type() const;
+ GType clone_custom_type(const char* custom_type_name) const;
+
+protected:
+ GType gtype_;
+ GClassInitFunc class_init_func_;
+
+ void register_derived_type(GType base_type);
+
+private:
+ static void custom_class_init_function(void* g_class, void* class_data);
+};
+
+inline
+GType Class::get_type() const
+{
+ return gtype_;
+}
+
+} // namespace Glib
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+#endif /* _GLIBMM_CLASS_H */
+
diff --git a/libs/glibmm2/glib/glibmm/containerhandle_shared.h b/libs/glibmm2/glib/glibmm/containerhandle_shared.h
new file mode 100644
index 0000000000..94c1ea7550
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/containerhandle_shared.h
@@ -0,0 +1,373 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_CONTAINERHANDLE_SHARED_H
+#define _GLIBMM_CONTAINERHANDLE_SHARED_H
+
+/* $Id: containerhandle_shared.h,v 1.12 2006/09/19 20:36:42 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <cstddef>
+#include <algorithm>
+#include <iterator>
+#include <vector>
+#include <deque>
+#include <list>
+
+#include <glib-object.h>
+#include <glib/gmem.h>
+#include <glibmm/refptr.h>
+#include <glibmm/ustring.h>
+#include <glibmm/wrap.h>
+#include <glibmm/debug.h>
+
+#include <glibmmconfig.h>
+GLIBMM_USING_STD(forward_iterator_tag)
+GLIBMM_USING_STD(random_access_iterator_tag)
+GLIBMM_USING_STD(distance)
+GLIBMM_USING_STD(copy)
+GLIBMM_USING_STD(vector)
+GLIBMM_USING_STD(deque)
+GLIBMM_USING_STD(list)
+
+
+namespace Glib
+{
+
+/** @defgroup ContHandles Generic container converters
+ */
+
+/**
+ * @ingroup ContHandles
+ */
+enum OwnershipType
+{
+ OWNERSHIP_NONE = 0,
+ OWNERSHIP_SHALLOW, //Release the list, but not its elements, when the container is deleted
+ OWNERSHIP_DEEP //Release the list, and its elements, when the container is deleted.
+};
+
+
+/** Utility class holding an iterator sequence.
+ * @ingroup ContHandles
+ * This can be used to initialize a Glib container handle (such as
+ * Glib::ArrayHandle) with an iterator sequence. Use the helper
+ * function Glib::sequence() to create a Sequence<> object.
+ */
+template <class Iterator>
+class Sequence
+{
+private:
+ Iterator pbegin_;
+ Iterator pend_;
+
+public:
+ Sequence(Iterator pbegin, Iterator pend)
+ : pbegin_(pbegin), pend_(pend) {}
+
+ Iterator begin() const { return pbegin_; }
+ Iterator end() const { return pend_; }
+ size_t size() const { return std::distance(pbegin_, pend_); }
+};
+
+/** Helper function to create a Glib::Sequence<> object, which
+ * in turn can be used to initialize a container handle.
+ * @ingroup ContHandles
+ *
+ * @par Usage example:
+ * @code
+ * combo.set_popdown_strings(Glib::sequence(foo_begin, foo_end));
+ * @endcode
+ */
+template <class Iterator> inline
+Sequence<Iterator> sequence(Iterator pbegin, Iterator pend)
+{
+ return Sequence<Iterator>(pbegin, pend);
+}
+
+
+namespace Container_Helpers
+{
+
+/** @defgroup ContHelpers Helper classes
+ * @ingroup ContHandles
+ */
+
+/** Generic TypeTraits implementation.
+ * @ingroup ContHelpers
+ * This can be used if the C++ type is the same as the C type, or if implicit
+ * conversions between the types are available. Also, the types are required
+ * to implement copy-by-value semantics. (Ownership is just ignored.)
+ */
+template <class T>
+struct TypeTraits
+{
+ typedef T CppType;
+ typedef T CType;
+ typedef T CTypeNonConst;
+
+ static CType to_c_type (const CppType& item) { return item; }
+ static CppType to_cpp_type (const CType& item) { return item; }
+ static void release_c_type (const CType&) {}
+};
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS /* hide the specializations */
+
+//For some (proably, more spec-compliant) compilers, these specializations must
+//be next to the objects that they use.
+#ifdef GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION
+
+/** Partial specialization for pointers to GtkObject instances.
+ * @ingroup ContHelpers
+ */
+template <class T>
+struct TypeTraits<T*>
+{
+ typedef T * CppType;
+ typedef typename T::BaseObjectType * CType;
+ typedef typename T::BaseObjectType * CTypeNonConst;
+
+ static CType to_c_type (CppType ptr) { return Glib::unwrap(ptr); }
+ static CType to_c_type (CType ptr) { return ptr; }
+ static CppType to_cpp_type (CType ptr)
+ {
+ //We copy/paste the widget wrap() implementation here,
+ //because we can not use a specific Glib::wrap(T_Impl) overload here,
+ //because that would be "dependent", and g++ 3.4 does not allow that.
+ //The specific Glib::wrap() overloads don't do anything special anyway.
+ GObject* cobj = (GObject*)ptr;
+ return dynamic_cast<CppType>(Glib::wrap_auto(cobj, false /* take_copy */));
+ }
+
+ static void release_c_type (CType ptr)
+ {
+ GLIBMM_DEBUG_UNREFERENCE(0, ptr);
+ g_object_unref(ptr);
+ }
+};
+
+//This confuse the SUN Forte compiler, so we ifdef it out:
+#ifdef GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS
+
+/** Partial specialization for pointers to const GtkObject instances.
+ * @ingroup ContHelpers
+ */
+template <class T>
+struct TypeTraits<const T*>
+{
+ typedef const T * CppType;
+ typedef const typename T::BaseObjectType * CType;
+ typedef typename T::BaseObjectType * CTypeNonConst;
+
+ static CType to_c_type (CppType ptr) { return Glib::unwrap(ptr); }
+ static CType to_c_type (CType ptr) { return ptr; }
+ static CppType to_cpp_type (CType ptr)
+ {
+ //We copy/paste the widget wrap() implementation here,
+ //because we can not use a specific Glib::wrap(T_Impl) overload here,
+ //because that would be "dependent", and g++ 3.4 does not allow that.
+ //The specific Glib::wrap() overloads don't do anything special anyway.
+ GObject* cobj = (GObject*)const_cast<CTypeNonConst>(ptr);
+ return dynamic_cast<CppType>(Glib::wrap_auto(cobj, false /* take_copy */));
+ }
+
+ static void release_c_type (CType ptr)
+ {
+ GLIBMM_DEBUG_UNREFERENCE(0, ptr);
+ g_object_unref(const_cast<CTypeNonConst>(ptr));
+ }
+};
+#endif //GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS
+
+/** Partial specialization for pointers to GObject instances.
+ * @ingroup ContHelpers
+ * The C++ type is always a Glib::RefPtr<>.
+ */
+template <class T>
+struct TypeTraits< Glib::RefPtr<T> >
+{
+ typedef Glib::RefPtr<T> CppType;
+ typedef typename T::BaseObjectType * CType;
+ typedef typename T::BaseObjectType * CTypeNonConst;
+
+ static CType to_c_type (const CppType& ptr) { return Glib::unwrap(ptr); }
+ static CType to_c_type (CType ptr) { return ptr; }
+ static CppType to_cpp_type (CType ptr)
+ {
+ //return Glib::wrap(ptr, true);
+
+ //We copy/paste the wrap() implementation here,
+ //because we can not use a specific Glib::wrap(CType) overload here,
+ //because that would be "dependent", and g++ 3.4 does not allow that.
+ //The specific Glib::wrap() overloads don't do anything special anyway.
+ GObject* cobj = (GObject*)const_cast<CTypeNonConst>(ptr);
+ return Glib::RefPtr<T>( dynamic_cast<T*>(Glib::wrap_auto(cobj, true /* take_copy */)) );
+ //We use dynamic_cast<> in case of multiple inheritance.
+ }
+
+ static void release_c_type (CType ptr)
+ {
+ GLIBMM_DEBUG_UNREFERENCE(0, ptr);
+ g_object_unref(ptr);
+ }
+};
+
+//This confuse the SUN Forte compiler, so we ifdef it out:
+#ifdef GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS
+
+/** Partial specialization for pointers to const GObject instances.
+ * @ingroup ContHelpers
+ * The C++ type is always a Glib::RefPtr<>.
+ */
+template <class T>
+struct TypeTraits< Glib::RefPtr<const T> >
+{
+ typedef Glib::RefPtr<const T> CppType;
+ typedef const typename T::BaseObjectType * CType;
+ typedef typename T::BaseObjectType * CTypeNonConst;
+
+ static CType to_c_type (const CppType& ptr) { return Glib::unwrap(ptr); }
+ static CType to_c_type (CType ptr) { return ptr; }
+ static CppType to_cpp_type (CType ptr)
+ {
+ //return Glib::wrap(ptr, true);
+
+ //We copy/paste the wrap() implementation here,
+ //because we can not use a specific Glib::wrap(CType) overload here,
+ //because that would be "dependent", and g++ 3.4 does not allow that.
+ //The specific Glib::wrap() overloads don't do anything special anyway.
+ GObject* cobj = (GObject*)(ptr);
+ return Glib::RefPtr<const T>( dynamic_cast<const T*>(Glib::wrap_auto(cobj, true /* take_copy */)) );
+ //We use dynamic_cast<> in case of multiple inheritance.
+ }
+
+ static void release_c_type (CType ptr)
+ {
+ GLIBMM_DEBUG_UNREFERENCE(0, ptr);
+ g_object_unref(const_cast<CTypeNonConst>(ptr));
+ }
+};
+
+#endif //GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS
+
+#endif //GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION
+
+/** Specialization for UTF-8 strings.
+ * @ingroup ContHelpers
+ * When converting from C++ to C, Glib::ustring will be accepted as well as
+ * std::string and 'const char*'. However, when converting to the C++ side,
+ * the output type cannot be 'const char*'.
+ */
+template <>
+struct TypeTraits<Glib::ustring>
+{
+ typedef Glib::ustring CppType;
+ typedef const char * CType;
+ typedef char * CTypeNonConst;
+
+ static CType to_c_type (const Glib::ustring& str) { return str.c_str(); }
+ static CType to_c_type (const std::string& str) { return str.c_str(); }
+ static CType to_c_type (CType str) { return str; }
+
+ static CppType to_cpp_type(CType str)
+ { return (str) ? Glib::ustring(str) : Glib::ustring(); }
+
+ static void release_c_type(CType str)
+ { g_free(const_cast<CTypeNonConst>(str)); }
+};
+
+/** Specialization for std::string.
+ * @ingroup ContHelpers
+ * When converting from C++ to C, std::string will be accepted as well as
+ * 'const char*'. However, when converting to the C++ side, the output type
+ * cannot be 'const char*'.
+ */
+template <>
+struct TypeTraits<std::string>
+{
+ typedef std::string CppType;
+ typedef const char * CType;
+ typedef char * CTypeNonConst;
+
+ static CType to_c_type (const std::string& str) { return str.c_str(); }
+ static CType to_c_type (const Glib::ustring& str) { return str.c_str(); }
+ static CType to_c_type (CType str) { return str; }
+
+ static CppType to_cpp_type(CType str)
+ { return (str) ? std::string(str) : std::string(); }
+
+ static void release_c_type(CType str)
+ { g_free(const_cast<CTypeNonConst>(str)); }
+};
+
+/** Specialization for bool
+ * @ingroup ContHelpers
+ */
+template <>
+struct TypeTraits<bool>
+{
+ typedef bool CppType;
+ typedef gboolean* CType;
+ typedef gboolean* CTypeNonConst;
+
+ static CType to_c_type (CppType val) { return (int*)GINT_TO_POINTER(val); }
+ static CType to_c_type (CType ptr) { return ptr; }
+
+ static CppType to_cpp_type(CType ptr)
+ {
+ if(ptr)
+ {
+ //We use this for gboolean too, because it is actually an int.
+ return GPOINTER_TO_INT(ptr);
+ }
+ else
+ return CppType();
+ }
+
+ static void release_c_type(CType /* ptr */)
+ {
+
+ }
+};
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+#ifndef GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS
+
+/* The STL containers in Sun's libCstd don't support templated sequence
+ * constructors, for "backward compatibility" reasons. This helper function
+ * is used in the ContainerHandle -> STL-container conversion workarounds.
+ */
+template <class Cont, class In>
+void fill_container(Cont& container, In pbegin, In pend)
+{
+ for(; pbegin != pend; ++pbegin)
+ container.push_back(*pbegin);
+}
+
+#endif /* GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS */
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+} // namespace Container_Helpers
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_CONTAINERHANDLE_SHARED_H */
+
diff --git a/libs/glibmm2/glib/glibmm/containers.cc b/libs/glibmm2/glib/glibmm/containers.cc
new file mode 100644
index 0000000000..98b2d3dfc6
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/containers.cc
@@ -0,0 +1,33 @@
+// -*- c++ -*-
+
+/* $Id: containers.cc,v 1.1.1.1 2003/01/07 16:58:44 murrayc Exp $ */
+
+/* containers.h
+ *
+ * Copyright (C) 1998-2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/containers.h>
+
+namespace Glib
+{
+
+gpointer glibmm_null_pointer=0;
+
+
+} //namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/containers.h b/libs/glibmm2/glib/glibmm/containers.h
new file mode 100644
index 0000000000..5e92889f1f
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/containers.h
@@ -0,0 +1,372 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_CONTAINERS_H
+#define _GLIBMM_CONTAINERS_H
+
+/* $Id: containers.h,v 1.7 2005/11/23 07:22:43 murrayc Exp $ */
+
+/* containers.h
+ *
+ * Copyright (C) 1998-2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/glist.h>
+#include <glib/gslist.h>
+#include <glibmm/sarray.h> /* for backward compatibility */
+
+#include <iterator>
+#include <glibmmconfig.h>
+
+GLIBMM_USING_STD(bidirectional_iterator_tag)
+GLIBMM_USING_STD(forward_iterator_tag)
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+namespace Glib
+{
+
+template <class T> class List_Iterator;
+template <class T> class List_ConstIterator;
+template <class T> class List_ReverseIterator;
+
+// Most of these methods in the non-template classes needs to be moved
+// to implementation.
+
+//Daniel Elstner has ideas about generating these per-widget with m4. murrayc.
+
+
+extern GLIBMM_API gpointer glibmm_null_pointer;
+
+template <class T>
+class List_Iterator_Base
+{
+public:
+ typedef T value_type;
+ typedef T* pointer;
+ typedef T& reference;
+} ;
+
+///For instance, List_Iterator< Gtk::Widget >
+template <class T>
+class List_Iterator : public List_Iterator_Base<T>
+{
+public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+
+ typedef typename List_Iterator_Base<T>::pointer pointer;
+ typedef typename List_Iterator_Base<T>::reference reference;
+
+ GList* const* head_;
+ GList* node_;
+
+ typedef List_Iterator<T> Self;
+
+ List_Iterator(GList* const& head, GList* node)
+ : head_(&head), node_(node)
+ {}
+
+ List_Iterator()
+ : head_(0), node_(0)
+ {}
+
+ List_Iterator(const Self& src)
+ : head_(src.head_), node_(src.node_)
+ {}
+
+ bool operator==(const Self& src) const { return node_ == src.node_; }
+ bool operator!=(const Self& src) const { return node_ != src.node_; }
+
+ Self& operator++()
+ {
+ if (!node_)
+ node_ = g_list_first(*head_);
+ else
+ node_ = (GList*)g_list_next(node_);
+ return *this;
+ }
+
+ Self operator++(int)
+ {
+ Self tmp = *this;
+ ++*this;
+ return tmp;
+ }
+
+ Self& operator--()
+ {
+ if (!node_)
+ node_ = g_list_last(*head_);
+ else
+ node_ = (GList*)g_list_previous(node_);
+
+ return *this;
+ }
+
+ Self operator--(int)
+ {
+ Self tmp = *this;
+ --*this;
+ return tmp;
+ }
+
+ reference operator*() const
+ {
+ return *(pointer)( node_ ? node_->data : glibmm_null_pointer );
+ }
+
+ pointer operator -> () const { return &operator*(); }
+};
+
+///For instance, SList_Iterator< Gtk::Widget >
+template <class T>
+class SList_Iterator : public List_Iterator_Base<T>
+{
+public:
+ typedef std::forward_iterator_tag iterator_category;
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+
+ typedef typename List_Iterator_Base<T>::pointer pointer;
+ typedef typename List_Iterator_Base<T>::reference reference;
+
+ GSList* node_;
+ typedef SList_Iterator<T> Self;
+
+ SList_Iterator(GSList* node)
+ : node_(node)
+ {}
+
+ SList_Iterator()
+ : node_(0)
+ {}
+
+ SList_Iterator(const Self& src)
+ : node_(src.node_)
+ {}
+
+ bool operator==(const Self& src) const { return node_ == src.node_; }
+ bool operator!=(const Self& src) const { return node_ != src.node_; }
+
+ Self& operator++()
+ {
+ node_ = g_slist_next(node_);
+ return *this;
+ }
+
+ Self operator++(int)
+ {
+ Self tmp = *this;
+ ++*this;
+ return tmp;
+ }
+
+ reference operator*() const
+ {
+ //g++ complains that this statement has no effect: g_assert(node_);
+ return reinterpret_cast<T&>( node_ ? node_->data : glibmm_null_pointer );
+ }
+
+ pointer operator -> () const { return &operator*(); }
+};
+
+
+// This iterator variation returns T_IFace (wrapped from T_Impl)
+// For instance, List_Cpp_Iterator<GtkWidget, Gtk::Widget> is a little like std::list<Gtk::Widget>::iterator
+template<class T_Impl, class T_IFace>
+class List_Cpp_Iterator : public List_Iterator_Base<T_IFace>
+{
+public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+
+ typedef typename List_Iterator_Base<T_IFace>::pointer pointer;
+ typedef typename List_Iterator_Base<T_IFace>::reference reference;
+
+ typedef List_Cpp_Iterator<T_Impl, T_IFace> Self;
+
+ GList** head_;
+ GList* node_;
+
+ bool operator==(const Self& src) const { return node_ == src.node_; }
+ bool operator!=(const Self& src) const { return node_ != src.node_; }
+
+ List_Cpp_Iterator(GList*& head, GList* node )
+ : head_(&head), node_(node )
+ {}
+
+ List_Cpp_Iterator()
+ : head_(0), node_(0)
+ {}
+
+ List_Cpp_Iterator(const Self& src)
+ : head_(src.head_), node_(src.node_)
+ {}
+
+ reference operator*() const
+ {
+ if (node_ && node_->data)
+ {
+ //We copy/paste the widget wrap() implementation here,
+ //because we can not use a specific Glib::wrap(T_Impl) overload here,
+ //because that would be "dependent", and g++ 3.4 does not allow that.
+ //The specific Glib::wrap() overloads don't do anything special anyway.
+ GObject* cobj = static_cast<GObject*>( (*node_).data );
+
+ #ifdef GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION
+ return *(dynamic_cast<pointer>(Glib::wrap_auto(cobj, false /* take_copy */)));
+ #else
+ //We really do need to use dynamic_cast<>, so I expect problems if this code is used. murrayc.
+ return *(static_cast<pointer>(Glib::wrap_auto(cobj, false /* take_copy */)));
+ #endif
+
+ }
+
+ return *(pointer)glibmm_null_pointer;
+ }
+
+ pointer operator->() const { return &operator*(); }
+
+ Self& operator++()
+ {
+ if (!node_)
+ node_ = g_list_first(*head_);
+ else
+ node_ = (GList *)g_list_next(node_);
+
+ return *this;
+ }
+
+ Self operator++(int)
+ {
+ Self tmp = *this;
+ ++*this;
+ return tmp;
+ }
+
+ Self& operator--()
+ {
+ if (!node_)
+ node_ = g_list_last(*head_);
+ else
+ node_ = (GList *)g_list_previous(node_);
+
+ return *this;
+ }
+
+ Self operator--(int)
+ {
+ Self tmp = *this;
+ --*this;
+ return tmp;
+ }
+
+};
+
+template <class T_Base>
+class List_ReverseIterator: private T_Base
+{
+public:
+ typedef typename T_Base::iterator_category iterator_category;
+ typedef typename T_Base::size_type size_type;
+ typedef typename T_Base::difference_type difference_type;
+
+ typedef typename T_Base::value_type value_type;
+ typedef typename T_Base::pointer pointer;
+ typedef typename T_Base::reference reference;
+
+ typedef List_ReverseIterator<T_Base> Self;
+
+ bool operator==(const Self& src) const { return T_Base::operator==(src); }
+ bool operator!=(const Self& src) const { return T_Base::operator!=(src); }
+
+ List_ReverseIterator(GList* const& head, GList* node)
+ : T_Base(head, node)
+ {}
+
+ List_ReverseIterator()
+ : T_Base()
+ {}
+
+ List_ReverseIterator(const Self& src)
+ : T_Base(src)
+ {}
+
+ List_ReverseIterator(const T_Base& src)
+ : T_Base(src)
+ { ++(*this); }
+
+
+ Self& operator++() {T_Base::operator--(); return *this;}
+ Self& operator--() {T_Base::operator++(); return *this;}
+ Self operator++(int) {Self src = *this; T_Base::operator--(); return src;}
+ Self operator--(int) {Self src = *this; T_Base::operator++(); return src;}
+
+ reference operator*() const { return T_Base::operator*(); }
+ pointer operator->() const { return T_Base::operator->(); }
+};
+
+template <class T_Base>
+class List_ConstIterator: public T_Base
+{
+public:
+ typedef typename T_Base::iterator_category iterator_category;
+ typedef typename T_Base::size_type size_type;
+ typedef typename T_Base::difference_type difference_type;
+
+ typedef const typename T_Base::value_type value_type;
+ typedef const typename T_Base::pointer pointer;
+ typedef const typename T_Base::reference reference;
+
+ typedef List_ConstIterator<T_Base> Self;
+
+ bool operator==(const Self& src) const { return T_Base::operator==(src); }
+ bool operator!=(const Self& src) const { return T_Base::operator!=(src); }
+
+ List_ConstIterator(GList* const& head, GList* node)
+ : T_Base(head, node)
+ {}
+
+ List_ConstIterator()
+ : T_Base()
+ {}
+
+ List_ConstIterator(const Self& src)
+ : T_Base(src)
+ {}
+
+ List_ConstIterator(const T_Base& src)
+ : T_Base(src)
+ {}
+
+ Self& operator++() {T_Base::operator++(); return *this;}
+ Self& operator--() {T_Base::operator--(); return *this;}
+ Self operator++(int) {Self src = *this; T_Base::operator++(); return src;}
+ Self operator--(int) {Self src = *this; T_Base::operator--(); return src;}
+
+ reference operator*() const { return T_Base::operator*(); }
+ pointer operator->() const { return T_Base::operator->(); }
+};
+
+} // namespace Glib
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+#endif /* _GLIBMM_CONTAINERS_H */
+
diff --git a/libs/glibmm2/glib/glibmm/convert.cc b/libs/glibmm2/glib/glibmm/convert.cc
new file mode 100644
index 0000000000..9a46526fa8
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/convert.cc
@@ -0,0 +1,436 @@
+// Generated by gtkmmproc -- DO NOT MODIFY!
+
+
+#include <glibmm/convert.h>
+#include <glibmm/private/convert_p.h>
+
+// -*- c++ -*-
+/* $Id: convert.ccg,v 1.4 2006/06/05 17:32:14 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gconvert.h>
+#include <glib/gmessages.h>
+#include <glib/gunicode.h>
+#include <glibmm/utility.h>
+
+
+namespace Glib
+{
+
+/**** Glib::IConv **********************************************************/
+
+IConv::IConv(const std::string& to_codeset, const std::string& from_codeset)
+:
+ gobject_ (g_iconv_open(to_codeset.c_str(), from_codeset.c_str()))
+{
+ if(gobject_ == reinterpret_cast<GIConv>(-1))
+ {
+ GError* gerror = 0;
+
+ // Abuse g_convert() to create a GError object. This may seem a weird
+ // thing to do, but it gives us consistently translated error messages
+ // at no further cost.
+ g_convert("", 0, to_codeset.c_str(), from_codeset.c_str(), 0, 0, &gerror);
+
+ // If this should ever fail we're fucked.
+ g_assert(gerror != 0);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+}
+
+IConv::IConv(GIConv gobject)
+:
+ gobject_ (gobject)
+{}
+
+IConv::~IConv()
+{
+ g_iconv_close(gobject_);
+}
+
+size_t IConv::iconv(char** inbuf, gsize* inbytes_left, char** outbuf, gsize* outbytes_left)
+{
+ return g_iconv(gobject_, inbuf, inbytes_left, outbuf, outbytes_left);
+}
+
+void IConv::reset()
+{
+ // Apparently iconv() on Solaris <= 7 segfaults if you pass in
+ // NULL for anything but inbuf; work around that. (NULL outbuf
+ // or NULL *outbuf is allowed by Unix98.)
+
+ char* outbuf = 0;
+ gsize inbytes_left = 0;
+ gsize outbytes_left = 0;
+
+ g_iconv(gobject_, 0, &inbytes_left, &outbuf, &outbytes_left);
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string IConv::convert(const std::string& str)
+#else
+std::string IConv::convert(const std::string& str, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ gsize bytes_written = 0;
+ GError* gerror = 0;
+
+ char *const buf = g_convert_with_iconv(
+ str.data(), str.size(), gobject_, 0, &bytes_written, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return std::string(ScopedPtr<char>(buf).get(), bytes_written);
+}
+
+
+/**** charset conversion functions *****************************************/
+
+bool get_charset()
+{
+ return g_get_charset(0);
+}
+
+bool get_charset(std::string& charset)
+{
+ const char* charset_cstr = 0;
+ const bool is_utf8 = g_get_charset(&charset_cstr);
+
+ charset = charset_cstr;
+ return is_utf8;
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string convert(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset)
+#else
+std::string convert(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ gsize bytes_written = 0;
+ GError* gerror = 0;
+
+ char *const buf = g_convert(
+ str.data(), str.size(), to_codeset.c_str(), from_codeset.c_str(),
+ 0, &bytes_written, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return std::string(ScopedPtr<char>(buf).get(), bytes_written);
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string convert_with_fallback(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset)
+#else
+std::string convert_with_fallback(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ gsize bytes_written = 0;
+ GError* gerror = 0;
+
+ char *const buf = g_convert_with_fallback(
+ str.data(), str.size(), to_codeset.c_str(), from_codeset.c_str(), 0,
+ 0, &bytes_written, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return std::string(ScopedPtr<char>(buf).get(), bytes_written);
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string convert_with_fallback(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset,
+ const Glib::ustring& fallback)
+#else
+std::string convert_with_fallback(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset,
+ const Glib::ustring& fallback, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ gsize bytes_written = 0;
+ GError* gerror = 0;
+
+ char *const buf = g_convert_with_fallback(
+ str.data(), str.size(), to_codeset.c_str(), from_codeset.c_str(),
+ const_cast<char*>(fallback.c_str()), 0, &bytes_written, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return std::string(ScopedPtr<char>(buf).get(), bytes_written);
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring locale_to_utf8(const std::string& opsys_string)
+#else
+Glib::ustring locale_to_utf8(const std::string& opsys_string, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ gsize bytes_written = 0;
+ GError* gerror = 0;
+
+ char *const buf = g_locale_to_utf8(
+ opsys_string.data(), opsys_string.size(), 0, &bytes_written, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ const ScopedPtr<char> scoped_buf (buf);
+ return Glib::ustring(scoped_buf.get(), scoped_buf.get() + bytes_written);
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string locale_from_utf8(const Glib::ustring& utf8_string)
+#else
+std::string locale_from_utf8(const Glib::ustring& utf8_string, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ gsize bytes_written = 0;
+ GError* gerror = 0;
+
+ char *const buf = g_locale_from_utf8(
+ utf8_string.data(), utf8_string.bytes(), 0, &bytes_written, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return std::string(ScopedPtr<char>(buf).get(), bytes_written);
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring filename_to_utf8(const std::string& opsys_string)
+#else
+Glib::ustring filename_to_utf8(const std::string& opsys_string, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ gsize bytes_written = 0;
+ GError* gerror = 0;
+
+ char *const buf = g_filename_to_utf8(
+ opsys_string.data(), opsys_string.size(), 0, &bytes_written, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ const ScopedPtr<char> scoped_buf (buf);
+ return Glib::ustring(scoped_buf.get(), scoped_buf.get() + bytes_written);
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string filename_from_utf8(const Glib::ustring& utf8_string)
+#else
+std::string filename_from_utf8(const Glib::ustring& utf8_string, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ gsize bytes_written = 0;
+ GError* gerror = 0;
+
+ char *const buf = g_filename_from_utf8(
+ utf8_string.data(), utf8_string.bytes(), 0, &bytes_written, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return std::string(ScopedPtr<char>(buf).get(), bytes_written);
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string filename_from_uri(const Glib::ustring& uri, Glib::ustring& hostname)
+#else
+std::string filename_from_uri(const Glib::ustring& uri, Glib::ustring& hostname, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ char* hostname_buf = 0;
+ GError* gerror = 0;
+
+ char *const buf = g_filename_from_uri(uri.c_str(), &hostname_buf, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ // Let's take ownership at this point.
+ const ScopedPtr<char> scoped_buf (buf);
+
+ if(hostname_buf)
+ hostname = ScopedPtr<char>(hostname_buf).get();
+ else
+ hostname.erase();
+
+ return std::string(scoped_buf.get());
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string filename_from_uri(const Glib::ustring& uri)
+#else
+std::string filename_from_uri(const Glib::ustring& uri, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ char *const buf = g_filename_from_uri(uri.c_str(), 0, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return std::string(ScopedPtr<char>(buf).get());
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring filename_to_uri(const std::string& filename, const Glib::ustring& hostname)
+#else
+Glib::ustring filename_to_uri(const std::string& filename, const Glib::ustring& hostname, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ char *const buf = g_filename_to_uri(filename.c_str(), hostname.c_str(), &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return Glib::ustring(ScopedPtr<char>(buf).get());
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring filename_to_uri(const std::string& filename)
+#else
+Glib::ustring filename_to_uri(const std::string& filename, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ char *const buf = g_filename_to_uri(filename.c_str(), 0, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return Glib::ustring(ScopedPtr<char>(buf).get());
+}
+
+Glib::ustring filename_display_basename(const std::string& filename)
+{
+ char *const buf = g_filename_display_basename(filename.c_str());
+
+ return Glib::ustring(ScopedPtr<char>(buf).get());
+}
+
+
+Glib::ustring filename_display_name(const std::string& filename)
+{
+ char *const buf = g_filename_display_name(filename.c_str());
+
+ return Glib::ustring(ScopedPtr<char>(buf).get());
+}
+
+} // namespace Glib
+
+
+namespace
+{
+} // anonymous namespace
+
+
+Glib::ConvertError::ConvertError(Glib::ConvertError::Code error_code, const Glib::ustring& error_message)
+:
+ Glib::Error (G_CONVERT_ERROR, error_code, error_message)
+{}
+
+Glib::ConvertError::ConvertError(GError* gobject)
+:
+ Glib::Error (gobject)
+{}
+
+Glib::ConvertError::Code Glib::ConvertError::code() const
+{
+ return static_cast<Code>(Glib::Error::code());
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+void Glib::ConvertError::throw_func(GError* gobject)
+{
+ throw Glib::ConvertError(gobject);
+}
+#else
+//When not using exceptions, we just pass the Exception object around without throwing it:
+std::auto_ptr<Glib::Error> Glib::ConvertError::throw_func(GError* gobject)
+{
+ return std::auto_ptr<Glib::Error>(new Glib::ConvertError(gobject));
+}
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
diff --git a/libs/glibmm2/glib/glibmm/convert.h b/libs/glibmm2/glib/glibmm/convert.h
new file mode 100644
index 0000000000..81d24f96a1
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/convert.h
@@ -0,0 +1,361 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_CONVERT_H
+#define _GLIBMM_CONVERT_H
+
+
+/* $Id: convert.hg,v 1.5 2006/05/12 08:08:44 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <glib/gtypes.h> /* for gsize */
+
+#include <glibmm/error.h>
+#include <glibmm/ustring.h>
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GIConv* GIConv; }
+#endif
+
+
+namespace Glib
+{
+
+/** @defgroup CharsetConv Character Set Conversion
+ * Utility functions for converting strings between different character sets.
+ * @{
+ */
+
+/** Exception class for charset conversion errors.
+ * Glib::convert() and friends throw a ConvertError exception if the charset
+ * conversion failed for some reason. When writing non-trivial applications
+ * you should always catch those errors, and then try to recover, or tell the
+ * user the input was invalid.
+ */
+class ConvertError : public Glib::Error
+{
+public:
+ enum Code
+ {
+ NO_CONVERSION,
+ ILLEGAL_SEQUENCE,
+ FAILED,
+ PARTIAL_INPUT,
+ BAD_URI,
+ NOT_ABSOLUTE_PATH
+ };
+
+ ConvertError(Code error_code, const Glib::ustring& error_message);
+ explicit ConvertError(GError* gobject);
+ Code code() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+private:
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ static void throw_func(GError* gobject);
+#else
+ //When not using exceptions, we just pass the Exception object around without throwing it:
+ static std::auto_ptr<Glib::Error> throw_func(GError* gobject);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ friend void wrap_init(); // uses throw_func()
+#endif
+};
+
+
+/** Thin %iconv() wrapper.
+ * glibmm provides Glib::convert() and Glib::locale_to_utf8() which
+ * are likely more convenient than the raw iconv wrappers. However,
+ * creating an IConv object once and using the convert() method could
+ * be useful when converting multiple times between the same charsets.
+ */
+class IConv
+{
+public:
+ /** Open new conversion descriptor.
+ * @param to_codeset Destination codeset.
+ * @param from_codeset %Source codeset.
+ * @throw Glib::ConvertError
+ */
+ IConv(const std::string& to_codeset, const std::string& from_codeset);
+
+ explicit IConv(GIConv gobject);
+
+ /** Close conversion descriptor.
+ */
+ ~IConv();
+
+ /** Same as the standard UNIX routine %iconv(), but may be implemented
+ * via libiconv on UNIX flavors that lack a native implementation. glibmm
+ * provides Glib::convert() and Glib::locale_to_utf8() which are likely
+ * more convenient than the raw iconv wrappers.
+ * @param inbuf Bytes to convert.
+ * @param inbytes_left In/out parameter, bytes remaining to convert in @a inbuf.
+ * @param outbuf Converted output bytes.
+ * @param outbytes_left In/out parameter, bytes available to fill in @a outbuf.
+ * @return Count of non-reversible conversions, or <tt>static_cast<size_t>(-1)</tt> on error.
+ */
+ size_t iconv(char** inbuf, gsize* inbytes_left, char** outbuf, gsize* outbytes_left);
+
+ /** Reset conversion descriptor to initial state.
+ * Same as <tt>iconv(0, 0, 0, 0)</tt>, but implemented slightly differently
+ * in order to work on Sun Solaris <= 7. It's also more obvious so you're
+ * encouraged to use it.
+ */
+ void reset();
+
+ /** Convert from one encoding to another.
+ * @param str The string to convert.
+ * @return The converted string.
+ * @throw Glib::ConvertError
+ */
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ std::string convert(const std::string& str);
+ #else
+ std::string convert(const std::string& str, std::auto_ptr<Glib::Error>& error);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ GIConv gobj() { return gobject_; }
+
+private:
+ GIConv gobject_;
+
+ // noncopyable
+ IConv(const IConv&);
+ IConv& operator=(const IConv&);
+};
+
+
+/** Get the charset used by the current locale.
+ * @return Whether the current locale uses the UTF-8 charset.
+ */
+bool get_charset();
+
+/** Get the charset used by the current locale.
+ * @param charset Will be filled with the charset's name.
+ * @return Whether the current locale uses the UTF-8 charset.
+ */
+bool get_charset(std::string& charset);
+
+/** Convert from one encoding to another.
+ * @param str The string to convert.
+ * @param to_codeset Name of the target charset.
+ * @param from_codeset Name of the source charset.
+ * @return The converted string.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string convert(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset);
+#else
+std::string convert(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Converts a string from one character set to another, possibly including
+ * fallback sequences for characters not representable in the output.
+ * Characters not in the target encoding will be represented as Unicode
+ * escapes <tt>\\x{XXXX}</tt> or <tt>\\x{XXXXXX}</tt>.
+ * @param str The string to convert.
+ * @param to_codeset Name of the target charset.
+ * @param from_codeset Name of the source charset.
+ * @return The converted string.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string convert_with_fallback(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset);
+#else
+std::string convert_with_fallback(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Converts a string from one character set to another, possibly including
+ * fallback sequences for characters not representable in the output.
+ * @note It is not guaranteed that the specification for the fallback sequences
+ * in @a fallback will be honored. Some systems may do a approximate conversion
+ * from @a from_codeset to @a to_codeset in their iconv() functions, in which
+ * case Glib will simply return that approximate conversion.
+ *
+ * @param str The string to convert.
+ * @param to_codeset Name of the target charset.
+ * @param from_codeset Name of the source charset.
+ * @param fallback UTF-8 string to be used in place of characters which aren't
+ * available in the target encoding. All characters in the fallback string
+ * @em must be available in the target encoding.
+ * @return The converted string.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string convert_with_fallback(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset,
+ const Glib::ustring& fallback);
+#else
+std::string convert_with_fallback(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset,
+ const Glib::ustring& fallback, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Convert from the current locale's encoding to UTF-8.
+ * Convenience wrapper around Glib::convert().
+ * @param opsys_string The string to convert. Must be encoded in the charset
+ * used by the operating system's current locale.
+ * @return The input string converted to UTF-8 encoding.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring locale_to_utf8(const std::string& opsys_string);
+#else
+Glib::ustring locale_to_utf8(const std::string& opsys_string, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Convert from UTF-8 to the current locale's encoding.
+ * Convenience wrapper around Glib::convert().
+ * @param utf8_string The UTF-8 string to convert.
+ * @return The input string converted to the charset used by the operating
+ * system's current locale.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string locale_from_utf8(const Glib::ustring& utf8_string);
+#else
+std::string locale_from_utf8(const Glib::ustring& utf8_string, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Converts a string which is in the encoding used for filenames into
+ * a UTF-8 string.
+ * @param opsys_string A string in the encoding for filenames.
+ * @return The converted string.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring filename_to_utf8(const std::string& opsys_string);
+#else
+Glib::ustring filename_to_utf8(const std::string& opsys_string, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Converts a string from UTF-8 to the encoding used for filenames.
+ * @param utf8_string A UTF-8 encoded string.
+ * @return The converted string.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string filename_from_utf8(const Glib::ustring& utf8_string);
+#else
+std::string filename_from_utf8(const Glib::ustring& utf8_string, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Converts an escaped UTF-8 encoded URI to a local filename
+ * in the encoding used for filenames.
+ * @param uri A string in the encoding for filenames.
+ * @param hostname Location to store hostname for the URI. If there is no
+ * hostname in the URI, <tt>""</tt> will be stored in this location.
+ * @return The resulting filename.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string filename_from_uri(const Glib::ustring& uri, Glib::ustring& hostname);
+#else
+std::string filename_from_uri(const Glib::ustring& uri, Glib::ustring& hostname, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Converts an escaped UTF-8 encoded URI to a local filename in the encoding
+ * used for filenames.
+ * @param uri A string in the encoding for filenames.
+ * @return The resulting filename.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string filename_from_uri(const Glib::ustring& uri);
+#else
+std::string filename_from_uri(const Glib::ustring& uri, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Converts an absolute filename to an escaped UTF-8 encoded URI.
+ * @param filename An absolute filename specified in the encoding used
+ * for filenames by the operating system.
+ * @param hostname A UTF-8 encoded hostname.
+ * @return The resulting URI.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring filename_to_uri(const std::string& filename, const Glib::ustring& hostname);
+#else
+Glib::ustring filename_to_uri(const std::string& filename, const Glib::ustring& hostname, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Converts an absolute filename to an escaped UTF-8 encoded URI.
+ * @param filename An absolute filename specified in the encoding used
+ * for filenames by the operating system.
+ * @return The resulting URI.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring filename_to_uri(const std::string& filename);
+#else
+Glib::ustring filename_to_uri(const std::string& filename, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Returns the display basename for the particular filename, guaranteed
+ * to be valid UTF-8. The display name might not be identical to the filename,
+ * for instance there might be problems converting it to UTF-8, and some files
+ * can be translated in the display
+ *
+ * You must pass the whole absolute pathname to this function so that
+ * translation of well known locations can be done.
+ *
+ * This function is preferred over filename_display_name() if you know the
+ * whole path, as it allows translation.
+ *
+ * @param filename An absolute pathname in the GLib file name encoding.
+ * @result A string containing a rendition of the basename of the filename in valid UTF-8
+ */
+Glib::ustring filename_display_basename(const std::string& filename);
+
+/** Converts a filename into a valid UTF-8 string. The
+ * conversion is not necessarily reversible, so you
+ * should keep the original around and use the return
+ * value of this function only for display purposes.
+ * Unlike g_filename_to_utf8(), the result is guaranteed
+ * to be non-empty even if the filename actually isn't in the GLib
+ * file name encoding.
+ *
+ * If you know the whole pathname of the file you should use
+ * g_filename_display_basename(), since that allows location-based
+ * translation of filenames.
+ *
+ * @param filename: a pathname hopefully in the GLib file name encoding
+ * @result A string containing a rendition of the filename in valid UTF-8.
+ */
+Glib::ustring filename_display_name(const std::string& filename);
+
+/** @} group CharsetConv */
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_CONVERT_H */
+
diff --git a/libs/glibmm2/glib/glibmm/date.cc b/libs/glibmm2/glib/glibmm/date.cc
new file mode 100644
index 0000000000..26ed7309ec
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/date.cc
@@ -0,0 +1,381 @@
+// Generated by gtkmmproc -- DO NOT MODIFY!
+
+
+#include <glibmm/date.h>
+#include <glibmm/private/date_p.h>
+
+// -*- c++ -*-
+/* $Id: date.ccg,v 1.7 2006/07/16 13:54:02 jjongsma Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gmem.h>
+#include <glib/gmessages.h>
+
+#include <ctime>
+#include <algorithm>
+
+#include <glibmm/convert.h>
+#include <glibmm/utility.h>
+
+#include <glibmmconfig.h>
+GLIBMM_USING_STD(max)
+
+namespace Glib
+{
+
+Date::Date()
+{
+ g_date_clear(&gobject_, 1);
+}
+
+Date::Date(Date::Day day, Date::Month month, Date::Year year)
+{
+ g_date_clear(&gobject_, 1);
+ g_date_set_dmy(&gobject_, day, (GDateMonth) month, year);
+}
+
+Date::Date(guint32 julian_day)
+{
+ g_date_clear(&gobject_, 1);
+ g_date_set_julian(&gobject_, julian_day);
+}
+
+Date::Date(const GDate& castitem)
+:
+ gobject_ (castitem)
+{}
+
+void Date::clear()
+{
+ g_date_clear(&gobject_, 1);
+}
+
+void Date::set_parse(const Glib::ustring& str)
+{
+ g_date_set_parse(&gobject_, str.c_str());
+}
+
+#ifndef GLIBMM_DISABLE_DEPRECATED
+
+void Date::set_time(GTime time)
+{
+ //This method, and the C function that it wraps, are deprecated.
+ g_date_set_time(&gobject_, time);
+}
+#endif // GLIBMM_DISABLE_DEPRECATED
+
+
+void Date::set_time(time_t timet)
+{
+ g_date_set_time_t(&gobject_, timet);
+}
+
+void Date::set_time_current()
+{
+ //As suggested in the C documentation:
+ g_date_set_time_t(&gobject_, time(NULL));
+}
+
+void Date::set_time(const GTimeVal& timeval)
+{
+ g_date_set_time_val(&gobject_, const_cast<GTimeVal*>(&timeval));
+}
+
+void Date::set_month(Date::Month month)
+{
+ g_date_set_month(&gobject_, (GDateMonth) month);
+}
+
+void Date::set_day(Date::Day day)
+{
+ g_date_set_day(&gobject_, day);
+}
+
+void Date::set_year(Date::Year year)
+{
+ g_date_set_year(&gobject_, year);
+}
+
+void Date::set_dmy(Date::Day day, Date::Month month, Date::Year year)
+{
+ g_date_set_dmy(&gobject_, day, (GDateMonth) month, year);
+}
+
+void Date::set_julian(guint32 julian_day)
+{
+ g_date_set_julian(&gobject_, julian_day);
+}
+
+Date& Date::add_days(int n_days)
+{
+ if(n_days >= 0)
+ g_date_add_days(&gobject_, n_days);
+ else
+ g_date_subtract_days(&gobject_, -n_days);
+ return *this;
+}
+
+Date& Date::subtract_days(int n_days)
+{
+ if(n_days >= 0)
+ g_date_subtract_days(&gobject_, n_days);
+ else
+ g_date_add_days(&gobject_, -n_days);
+ return *this;
+}
+
+Date& Date::add_months(int n_months)
+{
+ if(n_months >= 0)
+ g_date_add_months(&gobject_, n_months);
+ else
+ g_date_subtract_months(&gobject_, -n_months);
+ return *this;
+}
+
+Date& Date::subtract_months(int n_months)
+{
+ if(n_months >= 0)
+ g_date_subtract_months(&gobject_, n_months);
+ else
+ g_date_add_months(&gobject_, -n_months);
+ return *this;
+}
+
+Date& Date::add_years(int n_years)
+{
+ if(n_years >= 0)
+ g_date_add_years(&gobject_, n_years);
+ else
+ g_date_subtract_years(&gobject_, -n_years);
+ return *this;
+}
+
+Date& Date::subtract_years(int n_years)
+{
+ if(n_years >= 0)
+ g_date_subtract_years(&gobject_, n_years);
+ else
+ g_date_add_years(&gobject_, -n_years);
+ return *this;
+}
+
+int Date::days_between(const Date& rhs) const
+{
+ return g_date_days_between(&gobject_, &rhs.gobject_);
+}
+
+int Date::compare(const Date& rhs) const
+{
+ return g_date_compare(&gobject_, &rhs.gobject_);
+}
+
+Date& Date::clamp(const Date& min_date, const Date& max_date)
+{
+ g_date_clamp(&gobject_, &min_date.gobject_, &max_date.gobject_);
+ return *this;
+}
+
+Date& Date::clamp_min(const Date& min_date)
+{
+ g_date_clamp(&gobject_, &min_date.gobject_, 0 /* see the C docs */);
+ return *this;
+}
+
+Date& Date::clamp_max(const Date& max_date)
+{
+ g_date_clamp(&gobject_, 0 /* see the C docs */, &max_date.gobject_);
+ return *this;
+}
+
+void Date::order(Date& other)
+{
+ g_date_order(&gobject_, &other.gobject_);
+}
+
+Date::Weekday Date::get_weekday() const
+{
+ return (Date::Weekday) g_date_get_weekday(&gobject_);
+}
+
+Date::Month Date::get_month() const
+{
+ return (Date::Month) g_date_get_month(&gobject_);
+}
+
+Date::Year Date::get_year() const
+{
+ return g_date_get_year(&gobject_);
+}
+
+Date::Day Date::get_day() const
+{
+ return g_date_get_day(&gobject_);
+}
+
+guint32 Date::get_julian() const
+{
+ return g_date_get_julian(&gobject_);
+}
+
+unsigned int Date::get_day_of_year() const
+{
+ return g_date_get_day_of_year(&gobject_);
+}
+
+unsigned int Date::get_monday_week_of_year() const
+{
+ return g_date_get_monday_week_of_year(&gobject_);
+}
+
+unsigned int Date::get_sunday_week_of_year() const
+{
+ return g_date_get_sunday_week_of_year(&gobject_);
+}
+
+bool Date::is_first_of_month() const
+{
+ return g_date_is_first_of_month(&gobject_);
+}
+
+bool Date::is_last_of_month() const
+{
+ return g_date_is_last_of_month(&gobject_);
+}
+
+//static
+guint8 Date::get_days_in_month(Date::Month month, Date::Year year)
+{
+ return g_date_get_days_in_month((GDateMonth) month, year);
+}
+
+//static
+guint8 Date::get_monday_weeks_in_year(Date::Year year)
+{
+ return g_date_get_monday_weeks_in_year(year);
+}
+
+//static
+guint8 Date::get_sunday_weeks_in_year(Date::Year year)
+{
+ return g_date_get_sunday_weeks_in_year(year);
+}
+
+//static
+bool Date::is_leap_year(Date::Year year)
+{
+ return g_date_is_leap_year(year);
+}
+
+Glib::ustring Date::format_string(const Glib::ustring& format) const
+{
+ struct tm tm_data;
+ g_date_to_struct_tm(&gobject_, &tm_data);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ const std::string locale_format = locale_from_utf8(format);
+ #else
+ std::auto_ptr<Glib::Error> error; //TODO: Check it?
+ const std::string locale_format = locale_from_utf8(format, error);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ gsize bufsize = std::max<gsize>(2 * locale_format.size(), 128);
+
+ do
+ {
+ const ScopedPtr<char> buf (static_cast<char*>(g_malloc(bufsize)));
+
+ // Set the first byte to something other than '\0', to be able to
+ // recognize whether strftime actually failed or just returned "".
+ buf.get()[0] = '\1';
+ const gsize len = strftime(buf.get(), bufsize, locale_format.c_str(), &tm_data);
+
+ if(len != 0 || buf.get()[0] == '\0')
+ {
+ g_assert(len < bufsize);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ return locale_to_utf8(std::string(buf.get(), len));
+ #else
+ std::auto_ptr<Glib::Error> error; //TODO: Check it?
+ return locale_to_utf8(std::string(buf.get(), len), error);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+ }
+ while((bufsize *= 2) <= 65536);
+
+ // This error is quite unlikely (unless strftime is buggy).
+ g_warning("Glib::Date::format_string(): maximum size of strftime buffer exceeded, giving up");
+
+ return Glib::ustring();
+}
+
+void Date::to_struct_tm(struct tm& dest) const
+{
+ g_date_to_struct_tm(&gobject_, &dest);
+}
+
+bool Date::valid() const
+{
+ return g_date_valid(&gobject_);
+}
+
+//static
+bool Date::valid_day(Date::Day day)
+{
+ return g_date_valid_day(day);
+}
+
+//static
+bool Date::valid_month(Date::Month month)
+{
+ return g_date_valid_month((GDateMonth) month);
+}
+
+//static
+bool Date::valid_year(Date::Year year)
+{
+ return g_date_valid_year(year);
+}
+
+//static
+bool Date::valid_weekday(Date::Weekday weekday)
+{
+ return g_date_valid_weekday((GDateWeekday) weekday);
+}
+
+//static
+bool Date::valid_julian(guint32 julian_day)
+{
+ return g_date_valid_julian(julian_day);
+}
+
+//static
+bool Date::valid_dmy(Date::Day day, Date::Month month, Date::Year year)
+{
+ return g_date_valid_dmy(day, (GDateMonth) month, year);
+}
+
+} // namespace Glib
+
+
+namespace
+{
+} // anonymous namespace
+
+
diff --git a/libs/glibmm2/glib/glibmm/date.h b/libs/glibmm2/glib/glibmm/date.h
new file mode 100644
index 0000000000..93eacbde62
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/date.h
@@ -0,0 +1,454 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_DATE_H
+#define _GLIBMM_DATE_H
+
+
+/* $Id: date.hg,v 1.6 2005/11/29 15:53:27 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+ #undef G_DISABLE_DEPRECATED //So we can use deprecated functions in our deprecated methods.
+
+#include <glibmm/ustring.h>
+
+#include <glib/gdate.h>
+#include <glib/gtypes.h>
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { struct tm; }
+#endif
+
+namespace Glib
+{
+
+/** Julian calendar date.
+ */
+class Date
+{
+public:
+ typedef guint8 Day;
+ typedef guint16 Year;
+
+ /** @addtogroup glibmmEnums Enums and Flags */
+
+/**
+ * @ingroup glibmmEnums
+ */
+enum Month
+{
+ BAD_MONTH,
+ JANUARY,
+ FEBRUARY,
+ MARCH,
+ APRIL,
+ MAY,
+ JUNE,
+ JULY,
+ AUGUST,
+ SEPTEMBER,
+ OCTOBER,
+ NOVEMBER,
+ DECEMBER
+};
+
+
+ /**
+ * @ingroup glibmmEnums
+ */
+enum Weekday
+{
+ BAD_WEEKDAY,
+ MONDAY,
+ TUESDAY,
+ WEDNESDAY,
+ THURSDAY,
+ FRIDAY,
+ SATURDAY,
+ SUNDAY
+};
+
+
+ /**
+ * @ingroup glibmmEnums
+ */
+enum DMY
+{
+ DAY,
+ MONTH,
+ YEAR
+};
+
+
+ static const Day BAD_DAY = 0;
+ static const Year BAD_YEAR = 0;
+ static const guint32 BAD_JULIAN = 0;
+
+ Date();
+ Date(Day day, Month month, Year year);
+ explicit Date(guint32 julian_day);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ explicit Date(const GDate& castitem);
+#endif
+
+ void clear();
+ /** Clear the date. The cleared dates will not represent an existing date, but will not contain garbage.
+ * @param month Month to set.
+ */
+
+ /** Parses a user-inputted string str, and try to figure out what date it represents, taking the current locale into account. If the string is successfully parsed, the date will be valid after the call. Otherwise, it will be invalid.
+ * This function is not appropriate for file formats and the like; it isn't very precise, and its exact behavior varies with the locale. It's intended to be a heuristic routine that guesses what the user means by a given string (and it does work pretty well in that capacity).
+ * @param str String to parse.
+ */
+ void set_parse (const Glib::ustring& str);
+
+ #ifndef GLIBMM_DISABLE_DEPRECATED
+
+ /** Sets the value of a date from a GTime (time_t) value.
+ *
+ * @param time GTime value to set.
+ *
+ * @deprecated Please use set_time(time_t) or set_time(const GTimeVal&).
+ */
+ void set_time(GTime time);
+ #endif // GLIBMM_DISABLE_DEPRECATED
+
+
+ /** Sets the value of a date from a <type>time_t</type> value.
+ *
+ * @param timet time_t value to set
+ *
+ * @see set_time_current()
+ *
+ * Since: 2.10
+ */
+ void set_time(time_t timet);
+
+ /** Sets the value of a date from a GTimeVal value. Note that the
+ * tv_usec member is ignored, because Glib::Date can't make use of the
+ * additional precision.
+ *
+ * @see set_time_current()
+ *
+ * @param timeval GTimeVal value to set
+ *
+ * Since: 2.10
+ */
+ void set_time(const GTimeVal& timeval);
+
+ void set_time_current();
+
+ /** Sets the month of the year. If the resulting day-month-year triplet is invalid, the date will be invalid.
+ * @param month Month to set.
+ */
+ void set_month(Month month);
+
+ /** Sets the day of the month. If the resulting day-month-year triplet is invalid, the date will be invalid.
+ * @param day Day to set.
+ */
+ void set_day(Day day);
+
+ /** Sets the year. If the resulting day-month-year triplet is invalid, the date will be invalid.
+ * @param year Year to set.
+ */
+ void set_year(Year year);
+
+ /** Sets the value of a day, month, and year.. If the resulting day-month-year triplet is invalid, the date will be invalid.
+ * @param day Day to set.
+ * @param month Month to set.
+ * @param year Year to set.
+ */
+ void set_dmy(Day day, Month month, Year year);
+
+ /** Sets the value of a GDate from a Julian day number.
+ * @param julian_day Julian day to set.
+ */
+ void set_julian(guint32 julian_day);
+
+ //TODO: Why return Date& (which is always *this) from these methods?
+ //Isn't it enough to also change the current instance?
+ //Maybe we need a copy constructor too.
+ //murrayc
+
+ /** Add a number of days to a Date.
+ * @param n_days Days to add.
+ * @return Resulting Date
+ */
+ Date& add_days(int n_days);
+
+ /** Subtract n_days to a Date.
+ * @param n_days Days to subtract.
+ * @return Resulting Date
+ */
+ Date& subtract_days(int n_days);
+
+ /** Add n_months to a Date.
+ * @param n_months Months to add.
+ * @return Resulting Date
+ */
+ Date& add_months(int n_months);
+
+ /** Subtract n_months to a Date.
+ * @param n_months Months to subtract.
+ * @return Resulting Date
+ */
+ Date& subtract_months(int n_months);
+
+ /** Add n_days to a Date.
+ * @param n_years Years to add.
+ * @return Resulting Date
+ */
+ Date& add_years(int n_years);
+
+ /** Subtract n_years to a Date.
+ * @param n_years Years to subtract.
+ * @return Resulting Date
+ */
+ Date& subtract_years(int n_years);
+
+ /** Calculate days between two dates.
+ * @param rhs Date.
+ * @return Numbers of days.
+ */
+ int days_between(const Date& rhs) const;
+
+ /** Compare two dates.
+ * @param rhs Date to compare.
+ * @return Result of comparition.
+ */
+ int compare(const Date& rhs) const;
+
+ /** If date is prior to min_date, sets date equal to min_date.
+ * If date falls after max_date, sets date equal to max_date. All dates must be valid.
+ * See also clamp_min() and clamp_max().
+ * @param min_date Date minimum value.
+ * @param max_date Date maximum value.
+ * @return Date in interval.
+ */
+ Date& clamp(const Date& min_date, const Date& max_date);
+
+ /** If date is prior to min_date, sets date equal to min_date.
+ * See also clamp(), and clamp_max().
+ * @param min_date Date minimum value.
+ * @return Date in interval.
+ */
+ Date& clamp_min(const Date& min_date);
+
+ /** If date falls after max_date, sets date equal to max_date.
+ * See also clamp(), and clamp_min().
+ * @param max_date Date maximum value.
+ * @return Date in interval.
+ */
+ Date& clamp_max(const Date& max_date);
+
+ /** Checks if date is less than or equal to other date, and swap the values if this is not the case.
+ * @param other Date ro compare.
+ * @return Date.
+ */
+ void order(Date& other);
+
+ /** Returns the day of the week for a Date. The date must be valid.
+ * @return Day of the week as a Date::Weekday.
+ */
+ Weekday get_weekday() const;
+
+ /** Returns the month of the year. The date must be valid.
+ * @return Month of the year as a Date::Month.
+ */
+ Month get_month() const;
+
+ /** Returns the year of a Date. The date must be valid.
+ * @return Year in which the date falls.
+ */
+ Year get_year() const;
+
+ /** Returns the day of the month. The date must be valid.
+ * @return Day of the month..
+ */
+ Day get_day() const;
+
+ /** Returns the Julian day or "serial number" of the Date.
+ * The Julian day is simply the number of days since January 1, Year 1;
+ * i.e., January 1, Year 1 is Julian day 1; January 2, Year 1 is Julian day 2, etc.
+ * The date must be valid.
+ * @return Julian day.
+ */
+ guint32 get_julian() const;
+
+ /** Returns the day of the year, where Jan 1 is the first day of the year.
+ * The date must be valid.
+ * @return Julian day.
+ */
+ unsigned int get_day_of_year() const;
+
+ /** Returns the week of the year, where weeks are understood to start on Monday.
+ * If the date is before the first Monday of the year, return 0.
+ * The date must be valid.
+ * @return Week of the year.
+ */
+ unsigned int get_monday_week_of_year() const;
+
+ /** Returns the week of the year during which this date falls, if weeks are understood to being on Sunday.
+ * Can return 0 if the day is before the first Sunday of the year.
+ * The date must be valid.
+ * @return Week of the year.
+ */
+ unsigned int get_sunday_week_of_year() const;
+
+ /** Returns true if the date is on the first of a month.
+ * The date must be valid.
+ * @return true if the date is the first of the month.
+ */
+ bool is_first_of_month() const;
+
+ /** Returns true if the date is the last day of the month.
+ * The date must be valid.
+ * @return true if the date is the last day of the month.
+ */
+ bool is_last_of_month() const;
+
+ /** Returns the number of days in a month, taking leap years into account.
+ * @param month Month.
+ * @param year Year.
+ * @return Number of days in month during the year.
+ */
+ static guint8 get_days_in_month(Month month, Year year);
+
+ /** Returns the number of weeks in the year, where weeks are taken to start on Monday. Will be 52 or 53.
+ * (Years always have 52 7-day periods, plus 1 or 2 extra days depending on whether it's a leap year. This function is basically telling you how many Mondays are in the year, i.e. there are 53 Mondays if one of the extra days happens to be a Monday.)
+ * @param year Year to count weeks in.
+ * @return Number of weeks.
+ */
+ static guint8 get_monday_weeks_in_year(Year year);
+
+ /** Returns the number of weeks in the year, where weeks are taken to start on Sunday. Will be 52 or 53.
+ * (Years always have 52 7-day periods, plus 1 or 2 extra days depending on whether it's a leap year. This function is basically telling you how many Sundays are in the year, i.e. there are 53 Sundays if one of the extra days happens to be a Sunday.)
+ * @param year Year to count weeks in.
+ * @return Number of weeks.
+ */
+ static guint8 get_sunday_weeks_in_year(Year year);
+
+ /** Returns true if the year is a leap year.
+ * @param year Year to check.
+ * @return true if the year is a leap year.
+ */
+ static bool is_leap_year(Year year);
+
+ /** Convert date to string.
+ * @param format A format string as used by @c strftime(), in UTF-8
+ * encoding. Only date formats are allowed, the result of time formats
+ * is undefined.
+ * @return The formatted date string.
+ * @throw Glib::ConvertError
+ */
+ Glib::ustring format_string(const Glib::ustring& format) const;
+
+ /** Fills in the date-related bits of a struct tm using the date value. Initializes the non-date parts with something sane but meaningless.
+ * @param dest Struct tm to fill.
+ */
+ void to_struct_tm(struct tm& dest) const;
+
+ /** Returns true if the Date represents an existing day.
+ * @return true if the date is valid.
+ */
+ bool valid() const;
+
+ /** Returns true if the day of the month is valid (a day is valid if it's between 1 and 31 inclusive).
+ * @param day Day to check.
+ * @return true if the day is valid.
+ */
+ static bool valid_day(Day day);
+
+ /** Returns true if the month value is valid. The 12 Date::Month enumeration values are the only valid months.
+ * @param month Month to check.
+ * @return true if the month is valid.
+ */
+ static bool valid_month(Month month);
+
+
+ /** Returns true if the year is valid.
+ * Any year greater than 0 is valid, though there is a 16-bit limit to what Date will understand.
+ * @param year Year to check.
+ * @return true if the year is valid.
+ */
+ static bool valid_year(Year year);
+
+ /** Returns true if the weekday is valid.
+ * The 7 Date::Weekday enumeration values are the only valid.
+ * @param weekday Weekday to check.
+ * @return true if the weekday is valid.
+ */
+ static bool valid_weekday(Weekday weekday);
+
+ /** Returns true if the Julian day is valid.
+ * Anything greater than zero is basically a valid Julian, though there is a 32-bit limit.
+ * @param julian_day Julian day to check.
+ * @return true if the Julian day is valid.
+ */
+ static bool valid_julian(guint32 julian_day);
+
+
+ /** Returns true if the day-month-year triplet forms a valid, existing day in the range of days Date understands (Year 1 or later, no more than a few thousand years in the future).
+ * @param day Day to check.
+ * @param month Month to check.
+ * @param year Year to check.
+ * @return true if the date is a valid one.
+ */
+ static bool valid_dmy(Day day, Month month, Year year);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GDate* gobj() { return &gobject_; }
+ const GDate* gobj() const { return &gobject_; }
+#endif
+
+private:
+ GDate gobject_;
+};
+
+
+/** @relates Glib::Date */
+inline bool operator==(const Date& lhs, const Date& rhs)
+ { return (lhs.compare(rhs) == 0); }
+
+/** @relates Glib::Date */
+inline bool operator!=(const Date& lhs, const Date& rhs)
+ { return (lhs.compare(rhs) != 0); }
+
+/** @relates Glib::Date */
+inline bool operator<(const Date& lhs, const Date& rhs)
+ { return (lhs.compare(rhs) < 0); }
+
+/** @relates Glib::Date */
+inline bool operator>(const Date& lhs, const Date& rhs)
+ { return (lhs.compare(rhs) > 0); }
+
+/** @relates Glib::Date */
+inline bool operator<=(const Date& lhs, const Date& rhs)
+ { return (lhs.compare(rhs) <= 0); }
+
+/** @relates Glib::Date */
+inline bool operator>=(const Date& lhs, const Date& rhs)
+ { return (lhs.compare(rhs) >= 0); }
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_DATE_H */
+
diff --git a/libs/glibmm2/glib/glibmm/debug.cc b/libs/glibmm2/glib/glibmm/debug.cc
new file mode 100644
index 0000000000..5164fbf82d
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/debug.cc
@@ -0,0 +1,21 @@
+/* $Id: debug.cc,v 1.1.1.1 2003/01/07 16:58:44 murrayc Exp $ */
+
+/* Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/debug.h>
+
diff --git a/libs/glibmm2/glib/glibmm/debug.h b/libs/glibmm2/glib/glibmm/debug.h
new file mode 100644
index 0000000000..d61945dbf6
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/debug.h
@@ -0,0 +1,85 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_DEBUG_H
+#define _GLIBMM_DEBUG_H
+
+/* $Id: debug.h,v 1.2 2003/01/22 12:08:52 murrayc Exp $ */
+
+/* Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gmacros.h>
+#include <glibmmconfig.h>
+
+// Some stuff that's useful when debugging gtkmm internals:
+
+#ifdef GLIBMM_DEBUG_REFCOUNTING
+
+#include <glib/gmessages.h>
+
+/* We can't use G_GNUC_PRETTY_FUNCTION because it's always disabled in C++,
+ * even though __PRETTY_FUNCTION__ works fine in C++ as well if you use it
+ * right (i.e. concatenation with string literals isn't allowed).
+ */
+#ifdef __GNUC__
+#define GLIBMM_GNUC_PRETTY_FUNCTION __PRETTY_FUNCTION__
+#else
+#define GLIBMM_GNUC_PRETTY_FUNCTION ""
+#endif
+
+#define GLIBMM_DEBUG_REFERENCE(cppInstance, cInstance) \
+ G_STMT_START{ \
+ void *const cppInstance__ = (void*) (cppInstance); \
+ void *const cInstance__ = (void*) (cInstance); \
+ g_log(G_LOG_DOMAIN, \
+ G_LOG_LEVEL_DEBUG, \
+ "file %s: line %d (%s):\n" \
+ "ref: C++ instance: %p; C instance: %p, ref_count = %u, type = %s\n", \
+ __FILE__, \
+ __LINE__, \
+ GLIBMM_GNUC_PRETTY_FUNCTION, \
+ cppInstance__, \
+ cInstance__, \
+ G_OBJECT(cInstance__)->ref_count, \
+ G_OBJECT_TYPE_NAME(cInstance__)); \
+ }G_STMT_END
+
+#define GLIBMM_DEBUG_UNREFERENCE(cppInstance, cInstance) \
+ G_STMT_START{ \
+ void *const cppInstance__ = (void*) (cppInstance); \
+ void *const cInstance__ = (void*) (cInstance); \
+ g_log(G_LOG_DOMAIN, \
+ G_LOG_LEVEL_DEBUG, \
+ "file %s: line %d (%s):\n" \
+ "unref: C++ instance: %p; C instance: %p, ref_count = %u, type = %s\n", \
+ __FILE__, \
+ __LINE__, \
+ GLIBMM_GNUC_PRETTY_FUNCTION, \
+ cppInstance__, \
+ cInstance__, \
+ G_OBJECT(cInstance__)->ref_count, \
+ G_OBJECT_TYPE_NAME(cInstance__)); \
+ }G_STMT_END
+
+#else
+
+#define GLIBMM_DEBUG_REFERENCE(cppInstance,cInstance) G_STMT_START{ (void)0; }G_STMT_END
+#define GLIBMM_DEBUG_UNREFERENCE(cppInstance,cInstance) G_STMT_START{ (void)0; }G_STMT_END
+
+#endif /* GLIBMM_DEBUG_REFCOUNTING */
+
+#endif /* _GLIBMM_DEBUG_H */
+
diff --git a/libs/glibmm2/glib/glibmm/dispatcher.cc b/libs/glibmm2/glib/glibmm/dispatcher.cc
new file mode 100644
index 0000000000..f5883e69d6
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/dispatcher.cc
@@ -0,0 +1,463 @@
+// -*- c++ -*-
+/* $Id: dispatcher.cc,v 1.13 2006/05/12 08:08:43 murrayc Exp $ */
+
+/* Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/dispatcher.h>
+#include <glibmm/exceptionhandler.h>
+#include <glibmm/fileutils.h>
+#include <glibmm/main.h>
+#include <glibmm/thread.h>
+
+#include <cerrno>
+#include <fcntl.h>
+#include <glib.h>
+
+#ifndef G_OS_WIN32
+#include <unistd.h>
+
+#if defined(_tru64) //TODO: Use the real define
+//EINTR is not defined on Tru64
+//I have tried including these
+//#include <sys/types.h>
+//#include <sys/statvfs.h>
+//#include <signal.h>
+ #ifndef EINTR
+ #define EINTR 0
+ #endif
+#endif
+
+#else
+#include <windows.h>
+#include <io.h>
+#include <direct.h>
+#include <list>
+#endif /* G_OS_WIN32 */
+
+
+namespace
+{
+
+struct DispatchNotifyData
+{
+ unsigned long tag;
+ Glib::Dispatcher* dispatcher;
+ Glib::DispatchNotifier* notifier;
+
+ DispatchNotifyData()
+ : tag (0), dispatcher (0), notifier (0) {}
+
+ DispatchNotifyData(unsigned long tag_, Glib::Dispatcher* dispatcher_, Glib::DispatchNotifier* notifier_)
+ : tag (tag_), dispatcher (dispatcher_), notifier (notifier_) {}
+};
+
+static void warn_failed_pipe_io(const char* what, int err_no)
+{
+#ifdef G_OS_WIN32
+ const char *const message = g_win32_error_message(err_no);
+#else
+ const char *const message = g_strerror(err_no);
+#endif
+ g_critical("Error in inter-thread communication: %s() failed: %s", what, message);
+}
+
+#ifndef G_OS_WIN32
+/*
+ * Try to set the close-on-exec flag of the file descriptor,
+ * so that it won't be leaked if a new process is spawned.
+ */
+static void fd_set_close_on_exec(int fd)
+{
+ const int flags = fcntl(fd, F_GETFD, 0);
+ g_return_if_fail(flags >= 0);
+
+ fcntl(fd, F_SETFD, flags | FD_CLOEXEC);
+}
+#endif /* !G_OS_WIN32 */
+
+/*
+ * One word: paranoia.
+ */
+#ifdef G_OS_WIN32
+static void fd_close_and_invalidate(HANDLE& fd)
+{
+ if(fd != 0)
+ {
+ if(!CloseHandle(fd))
+ warn_failed_pipe_io("CloseHandle", GetLastError());
+
+ fd = 0;
+ }
+}
+#else /* !G_OS_WIN32 */
+static void fd_close_and_invalidate(int& fd)
+{
+ if(fd >= 0)
+ {
+ int result;
+
+ do
+ result = close(fd);
+ while(result < 0 && errno == EINTR);
+
+ if(result < 0)
+ warn_failed_pipe_io("close", errno);
+
+ fd = -1;
+ }
+}
+#endif /* !G_OS_WIN32 */
+
+} // anonymous namespace
+
+
+namespace Glib
+{
+
+class DispatchNotifier : public sigc::trackable
+{
+public:
+ ~DispatchNotifier();
+
+ static DispatchNotifier* reference_instance(const Glib::RefPtr<MainContext>& context);
+ static void unreference_instance(DispatchNotifier* notifier);
+
+ void send_notification(Dispatcher* dispatcher);
+
+protected:
+ // Only used by reference_instance(). Should be private, but that triggers
+ // a silly gcc warning even though DispatchNotifier has static methods.
+ explicit DispatchNotifier(const Glib::RefPtr<MainContext>& context);
+
+private:
+ static Glib::StaticPrivate<DispatchNotifier> thread_specific_instance_;
+
+ Glib::RefPtr<MainContext> context_;
+ int ref_count_;
+#ifdef G_OS_WIN32
+ HANDLE fd_receiver_;
+ Glib::Mutex mutex_;
+ std::list<DispatchNotifyData> notify_queue_;
+#else
+ int fd_receiver_;
+ int fd_sender_;
+#endif /* !G_OS_WIN32 */
+ sigc::connection conn_io_handler_;
+
+ void create_pipe();
+ bool pipe_io_handler(Glib::IOCondition condition);
+
+ // noncopyable
+ DispatchNotifier(const DispatchNotifier&);
+ DispatchNotifier& operator=(const DispatchNotifier&);
+};
+
+
+/**** Glib::DispatchNotifier ***********************************************/
+
+Glib::StaticPrivate<DispatchNotifier>
+DispatchNotifier::thread_specific_instance_ = GLIBMM_STATIC_PRIVATE_INIT;
+
+DispatchNotifier::DispatchNotifier(const Glib::RefPtr<MainContext>& context)
+:
+ context_ (context),
+ ref_count_ (0),
+#ifdef G_OS_WIN32
+ fd_receiver_ (0),
+ mutex_ (),
+ notify_queue_ ()
+#else
+ fd_receiver_ (-1),
+ fd_sender_ (-1)
+#endif
+{
+ create_pipe();
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+#ifdef G_OS_WIN32
+ conn_io_handler_ = context_->signal_io().connect(
+ sigc::mem_fun(*this, &DispatchNotifier::pipe_io_handler),
+ GPOINTER_TO_INT(fd_receiver_), Glib::IO_IN);
+#else /* !G_OS_WIN32 */
+ conn_io_handler_ = context_->signal_io().connect(
+ sigc::mem_fun(*this, &DispatchNotifier::pipe_io_handler),
+ fd_receiver_, Glib::IO_IN);
+#endif /* !G_OS_WIN32 */
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+#ifndef G_OS_WIN32
+ fd_close_and_invalidate(fd_sender_);
+#endif /* !G_OS_WIN32 */
+ fd_close_and_invalidate(fd_receiver_);
+
+ throw;
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+}
+
+DispatchNotifier::~DispatchNotifier()
+{
+ // Disconnect manually because we don't inherit from sigc::trackable
+ conn_io_handler_.disconnect();
+
+#ifndef G_OS_WIN32
+ fd_close_and_invalidate(fd_sender_);
+#endif /* !G_OS_WIN32 */
+ fd_close_and_invalidate(fd_receiver_);
+}
+
+void DispatchNotifier::create_pipe()
+{
+#ifdef G_OS_WIN32
+ // On Win32 we are using synchronization object instead of pipe
+ // thus storing its handle as fd_receiver_.
+ fd_receiver_ = CreateEvent(0, FALSE, FALSE, 0);
+
+ if(!fd_receiver_)
+ {
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ GError* const error = g_error_new(G_FILE_ERROR, G_FILE_ERROR_FAILED,
+ "Failed to create event for inter-thread communication: %s",
+ g_win32_error_message(GetLastError()));
+ throw Glib::FileError(error);
+#else
+ return; //TODO: Provide an alternative to the exception.
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+#else /* !G_OS_WIN32 */
+ int filedes[2] = { -1, -1 };
+
+ if(pipe(filedes) < 0)
+ {
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ GError* const error = g_error_new(G_FILE_ERROR, g_file_error_from_errno(errno),
+ "Failed to create pipe for inter-thread communication: %s",
+ g_strerror(errno));
+ throw Glib::FileError(error);
+#else
+ return; //TODO: Provide an alternative to the exception.
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+ fd_set_close_on_exec(filedes[0]);
+ fd_set_close_on_exec(filedes[1]);
+
+ fd_receiver_ = filedes[0];
+ fd_sender_ = filedes[1];
+#endif /* !G_OS_WIN32 */
+}
+
+// static
+DispatchNotifier* DispatchNotifier::reference_instance(const Glib::RefPtr<MainContext>& context)
+{
+ DispatchNotifier* instance = thread_specific_instance_.get();
+
+ if(!instance)
+ {
+ instance = new DispatchNotifier(context);
+ thread_specific_instance_.set(instance);
+ }
+ else
+ {
+ // Prevent massive mess-up.
+ g_return_val_if_fail(instance->context_ == context, 0);
+ }
+
+ ++instance->ref_count_; // initially 0
+
+ return instance;
+}
+
+// static
+void DispatchNotifier::unreference_instance(DispatchNotifier* notifier)
+{
+ DispatchNotifier *const instance = thread_specific_instance_.get();
+
+ // Yes, the notifier argument is only used to check for sanity.
+ g_return_if_fail(instance == notifier);
+
+ if(--instance->ref_count_ <= 0)
+ {
+ g_return_if_fail(instance->ref_count_ == 0); // could be < 0 if messed up
+
+ // This will cause deletion of the notifier object.
+ thread_specific_instance_.set(0);
+ }
+}
+
+void DispatchNotifier::send_notification(Dispatcher* dispatcher)
+{
+#ifdef G_OS_WIN32
+ {
+ Glib::Mutex::Lock lock (mutex_);
+ notify_queue_.push_back(DispatchNotifyData(0xdeadbeef, dispatcher, this));
+ }
+
+ // Send notification event to GUI-thread.
+ if(!SetEvent(fd_receiver_))
+ {
+ warn_failed_pipe_io("SetEvent", GetLastError());
+ return;
+ }
+#else /* !G_OS_WIN32 */
+ DispatchNotifyData data (0xdeadbeef, dispatcher, this);
+ gssize n_written;
+
+ do
+ n_written = write(fd_sender_, &data, sizeof(data));
+ while(n_written < 0 && errno == EINTR);
+
+ if(n_written < 0)
+ {
+ warn_failed_pipe_io("write", errno);
+ return;
+ }
+
+ // All data must be written in a single call to write(), otherwise we can't
+ // guarantee reentrancy since another thread might be scheduled between two
+ // write() calls. The manpage is a bit unclear about this -- but I hope
+ // it's safe to assume immediate success for the tiny amount of data we're
+ // writing.
+ g_return_if_fail(n_written == sizeof(data));
+#endif /* !G_OS_WIN32 */
+}
+
+bool DispatchNotifier::pipe_io_handler(Glib::IOCondition)
+{
+#ifdef G_OS_WIN32
+ DispatchNotifyData data;
+
+ for(;;)
+ {
+ {
+ Glib::Mutex::Lock lock (mutex_);
+
+ if(notify_queue_.empty())
+ break;
+
+ data = notify_queue_.front();
+ notify_queue_.pop_front();
+ }
+
+ g_return_val_if_fail(data.tag == 0xdeadbeef, true);
+ g_return_val_if_fail(data.notifier == this, true);
+
+ // Actually, we wouldn't need the try/catch block because the Glib::Source
+ // C callback already does it for us. However, we do it anyway because the
+ // default return value is 'false', which is not what we want.
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ data.dispatcher->signal_();
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+#else /* !G_OS_WIN32 */
+ DispatchNotifyData data;
+ gsize n_read = 0;
+
+ do
+ {
+ void * const buffer = reinterpret_cast<guint8*>(&data) + n_read;
+ const gssize result = read(fd_receiver_, buffer, sizeof(data) - n_read);
+
+ if(result < 0)
+ {
+ if(errno == EINTR)
+ continue;
+
+ warn_failed_pipe_io("read", errno);
+ return true;
+ }
+
+ n_read += result;
+ }
+ while(n_read < sizeof(data));
+
+ g_return_val_if_fail(data.tag == 0xdeadbeef, true);
+ g_return_val_if_fail(data.notifier == this, true);
+
+ // Actually, we wouldn't need the try/catch block because the Glib::Source
+ // C callback already does it for us. However, we do it anyway because the
+ // default return value is 'false', which is not what we want.
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ data.dispatcher->signal_(); // emit
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+#endif /* !G_OS_WIN32 */
+
+ return true;
+}
+
+
+/**** Glib::Dispatcher *****************************************************/
+
+Dispatcher::Dispatcher()
+:
+ signal_ (),
+ notifier_ (DispatchNotifier::reference_instance(MainContext::get_default()))
+{}
+
+Dispatcher::Dispatcher(const Glib::RefPtr<MainContext>& context)
+:
+ signal_ (),
+ notifier_ (DispatchNotifier::reference_instance(context))
+{}
+
+Dispatcher::~Dispatcher()
+{
+ DispatchNotifier::unreference_instance(notifier_);
+}
+
+void Dispatcher::emit()
+{
+ notifier_->send_notification(this);
+}
+
+void Dispatcher::operator()()
+{
+ emit();
+}
+
+sigc::connection Dispatcher::connect(const sigc::slot<void>& slot)
+{
+ return signal_.connect(slot);
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/dispatcher.h b/libs/glibmm2/glib/glibmm/dispatcher.h
new file mode 100644
index 0000000000..ab350f02d7
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/dispatcher.h
@@ -0,0 +1,103 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_DISPATCHER_H
+#define _GLIBMM_DISPATCHER_H
+
+/* $Id: dispatcher.h,v 1.4 2006/05/12 08:08:43 murrayc Exp $ */
+
+/* Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <sigc++/sigc++.h>
+#include <glibmm/main.h>
+
+
+namespace Glib
+{
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+class DispatchNotifier;
+#endif
+
+/** Signal class for inter-thread communication.
+ * @ingroup Threads
+ * Glib::Dispatcher works similar to sigc::signal<void>. But unlike normal
+ * signals, the notification happens asynchronously through a pipe. This is
+ * a simple and efficient way of communicating between threads, and especially
+ * useful in a thread model with a single GUI thread.
+ *
+ * No mutex locking is involved, apart from the operating system's internal
+ * I/O locking. That implies some usage rules:
+ *
+ * @li Only one thread may connect to the signal and receive notification, but
+ * multiple senders are allowed even without locking.
+ * @li The GLib main loop must run in the receiving thread (this will be the
+ * GUI thread usually).
+ * @li The Dispatcher object must be instantiated by the receiver thread.
+ * @li The Dispatcher object should be instantiated before creating any of the
+ * sender threads, if you want to avoid extra locking.
+ *
+ * Notes about performance:
+ *
+ * @li After instantiation, Glib::Dispatcher will never lock any mutexes on its
+ * own. The interaction with the GLib main loop might involve locking on the
+ * @em receiver side. The @em sender side, however, is guaranteed not to lock,
+ * except for internal locking in the <tt>%write()</tt> system call.
+ * @li All Dispatcher instances of a receiver thread share the same pipe. That
+ * is, if you use Glib::Dispatcher only to notify the GUI thread, only one pipe
+ * is created no matter how many Dispatcher objects you have.
+ */
+class Dispatcher
+{
+public:
+ /** Create new Dispatcher instance using the default main context.
+ * @throw Glib::FileError
+ */
+ Dispatcher();
+
+ /** Create new Dispatcher instance using an arbitrary main context.
+ * @throw Glib::FileError
+ */
+ explicit Dispatcher(const Glib::RefPtr<MainContext>& context);
+ ~Dispatcher();
+
+ void emit();
+ void operator()();
+
+ sigc::connection connect(const sigc::slot<void>& slot);
+
+private:
+ sigc::signal<void> signal_;
+ DispatchNotifier* notifier_;
+
+ // noncopyable
+ Dispatcher(const Dispatcher&);
+ Dispatcher& operator=(const Dispatcher&);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ friend class Glib::DispatchNotifier;
+#endif
+};
+
+/*! A Glib::Dispatcher example.
+ * @example thread/dispatcher.cc
+ */
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_DISPATCHER_H */
+
diff --git a/libs/glibmm2/glib/glibmm/error.cc b/libs/glibmm2/glib/glibmm/error.cc
new file mode 100644
index 0000000000..cc3ba7583a
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/error.cc
@@ -0,0 +1,198 @@
+// -*- c++ -*-
+/* $Id: error.cc,v 1.4 2006/05/12 08:08:43 murrayc Exp $ */
+
+/* error.cc
+ *
+ * Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gerror.h>
+#include <glib/gmessages.h>
+
+#include <map>
+#include <glibmmconfig.h>
+#include <glibmm/error.h>
+#include <glibmm/wrap_init.h>
+
+GLIBMM_USING_STD(map)
+
+namespace
+{
+
+typedef std::map<GQuark,Glib::Error::ThrowFunc> ThrowFuncTable;
+
+static ThrowFuncTable* throw_func_table = 0;
+
+} // anonymous namespace
+
+
+namespace Glib
+{
+
+Error::Error()
+:
+ gobject_ (0)
+{}
+
+Error::Error(GQuark domain, int code, const Glib::ustring& message)
+:
+ gobject_ (g_error_new_literal(domain, code, message.c_str()))
+{}
+
+Error::Error(GError* gobject, bool take_copy)
+:
+ gobject_ ((take_copy && gobject) ? g_error_copy(gobject) : gobject)
+{}
+
+Error::Error(const Error& other)
+:
+ Exception(other),
+ gobject_ ((other.gobject_) ? g_error_copy(other.gobject_) : 0)
+{}
+
+Error& Error::operator=(const Error& other)
+{
+ if(gobject_ != other.gobject_)
+ {
+ if(gobject_)
+ {
+ g_error_free(gobject_);
+ gobject_ = 0;
+ }
+ if(other.gobject_)
+ {
+ gobject_ = g_error_copy(other.gobject_);
+ }
+ }
+ return *this;
+}
+
+Error::~Error() throw()
+{
+ if(gobject_)
+ g_error_free(gobject_);
+}
+
+GQuark Error::domain() const
+{
+ g_return_val_if_fail(gobject_ != 0, 0);
+
+ return gobject_->domain;
+}
+
+int Error::code() const
+{
+ g_return_val_if_fail(gobject_ != 0, -1);
+
+ return gobject_->code;
+}
+
+Glib::ustring Error::what() const
+{
+ g_return_val_if_fail(gobject_ != 0, "");
+ g_return_val_if_fail(gobject_->message != 0, "");
+
+ return gobject_->message;
+}
+
+bool Error::matches(GQuark domain, int code) const
+{
+ return g_error_matches(gobject_, domain, code);
+}
+
+GError* Error::gobj()
+{
+ return gobject_;
+}
+
+const GError* Error::gobj() const
+{
+ return gobject_;
+}
+
+void Error::propagate(GError** dest)
+{
+ g_propagate_error(dest, gobject_);
+ gobject_ = 0;
+}
+
+// static
+void Error::register_init()
+{
+ if(!throw_func_table)
+ {
+ throw_func_table = new ThrowFuncTable();
+ Glib::wrap_init(); // make sure that at least the Glib exceptions are registered
+ }
+}
+
+// static
+void Error::register_cleanup()
+{
+ if(throw_func_table)
+ {
+ delete throw_func_table;
+ throw_func_table = 0;
+ }
+}
+
+// static
+void Error::register_domain(GQuark domain, Error::ThrowFunc throw_func)
+{
+ g_assert(throw_func_table != 0);
+
+ (*throw_func_table)[domain] = throw_func;
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+// static, noreturn
+void Error::throw_exception(GError* gobject)
+#else
+std::auto_ptr<Glib::Error> Error::throw_exception(GError* gobject)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ g_assert(gobject != 0);
+
+ // Just in case Gtk::Main hasn't been instantiated yet.
+ if(!throw_func_table)
+ register_init();
+
+ if(const ThrowFunc throw_func = (*throw_func_table)[gobject->domain])
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ (*throw_func)(gobject);
+ #else
+ return (*throw_func)(gobject);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ g_assert_not_reached();
+ }
+
+ g_warning("Glib::Error::throw_exception():\n "
+ "unknown error domain '%s': throwing generic Glib::Error exception\n",
+ (gobject->domain) ? g_quark_to_string(gobject->domain) : "(null)");
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ // Doesn't copy, because error-returning functions return a newly allocated GError for us.
+ throw Glib::Error(gobject);
+#else
+ return std::auto_ptr<Glib::Error>(new Glib::Error(gobject));
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+}
+
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/error.h b/libs/glibmm2/glib/glibmm/error.h
new file mode 100644
index 0000000000..653f7d4619
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/error.h
@@ -0,0 +1,92 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_ERROR_H
+#define _GLIBMM_ERROR_H
+/* $Id: error.h,v 1.3 2006/10/04 12:04:05 murrayc Exp $ */
+
+/* Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GError GError; }
+#endif
+
+#include <glib/gquark.h>
+#include <glibmm/exception.h>
+#include <glibmmconfig.h> //For GLIBMM_EXCEPTIONS_ENABLED
+
+#ifndef GLIBMM_EXCEPTIONS_ENABLED
+//When not usinge exceptions, we pass auto_ptrs of the exceptions objects around instead.
+#include <memory> //For std::auto_ptr
+#endif
+
+
+namespace Glib
+{
+
+class Error : public Glib::Exception
+{
+public:
+ Error();
+ Error(GQuark domain, int code, const Glib::ustring& message);
+ explicit Error(GError* gobject, bool take_copy = false);
+
+ Error(const Error& other);
+ Error& operator=(const Error& other);
+
+ virtual ~Error() throw();
+
+ GQuark domain() const;
+ int code() const;
+ virtual Glib::ustring what() const;
+
+ bool matches(GQuark domain, int code) const;
+
+ GError* gobj();
+ const GError* gobj() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+ void propagate(GError** dest);
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ typedef void (* ThrowFunc) (GError*);
+#else
+ //When not using exceptions, we just pass the Exception object around without throwing it:
+ typedef std::auto_ptr<Glib::Error> (* ThrowFunc) (GError*);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ static void register_init();
+ static void register_cleanup();
+ static void register_domain(GQuark domain, ThrowFunc throw_func);
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ static void throw_exception(GError* gobject) G_GNUC_NORETURN;
+#else
+ static std::auto_ptr<Glib::Error> throw_exception(GError* gobject);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+protected:
+ GError* gobject_;
+};
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_ERROR_H */
+
diff --git a/libs/glibmm2/glib/glibmm/exception.cc b/libs/glibmm2/glib/glibmm/exception.cc
new file mode 100644
index 0000000000..255affbace
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/exception.cc
@@ -0,0 +1,40 @@
+// -*- c++ -*-
+/* $Id: exception.cc,v 1.1.1.1 2003/01/07 16:58:45 murrayc Exp $ */
+
+/* exception.cc
+ *
+ * Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gmessages.h>
+#include <glibmm/exception.h>
+
+
+namespace Glib
+{
+
+Exception::~Exception() throw()
+{}
+
+Glib::ustring Exception::what() const
+{
+ g_assert_not_reached();
+ return Glib::ustring();
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/exception.h b/libs/glibmm2/glib/glibmm/exception.h
new file mode 100644
index 0000000000..ce55cdc81c
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/exception.h
@@ -0,0 +1,42 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_EXCEPTION_H
+#define _GLIBMM_EXCEPTION_H
+/* $Id: exception.h,v 1.1.1.1 2003/01/07 16:58:45 murrayc Exp $ */
+
+/* exception.h
+ *
+ * Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/ustring.h>
+
+
+namespace Glib
+{
+
+class Exception
+{
+public:
+ virtual ~Exception() throw() = 0;
+ virtual Glib::ustring what() const = 0;
+};
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_EXCEPTION_H */
+
diff --git a/libs/glibmm2/glib/glibmm/exceptionhandler.cc b/libs/glibmm2/glib/glibmm/exceptionhandler.cc
new file mode 100644
index 0000000000..0bf1cbd6df
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/exceptionhandler.cc
@@ -0,0 +1,163 @@
+// -*- c++ -*-
+/* $Id: exceptionhandler.cc,v 1.5 2006/05/12 08:08:43 murrayc Exp $ */
+
+/* exceptionhandler.cc
+ *
+ * Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib.h>
+#include <exception>
+#include <list>
+
+#include <glibmmconfig.h>
+#include <glibmm/error.h>
+#include <glibmm/exceptionhandler.h>
+#include <glibmm/thread.h>
+
+GLIBMM_USING_STD(exception)
+GLIBMM_USING_STD(list)
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+
+namespace
+{
+
+typedef sigc::signal<void> HandlerList;
+
+// Each thread has its own list of exception handlers
+// to avoid thread synchronization problems.
+static Glib::StaticPrivate<HandlerList> thread_specific_handler_list = GLIBMM_STATIC_PRIVATE_INIT;
+
+
+static void glibmm_exception_warning(const GError* error)
+{
+ g_assert(error != 0);
+
+ g_critical("\n"
+ "unhandled exception (type Glib::Error) in signal handler:\n"
+ "domain: %s\n"
+ "code : %d\n"
+ "what : %s\n",
+ g_quark_to_string(error->domain), error->code,
+ (error->message) ? error->message : "(null)");
+}
+
+static void glibmm_unexpected_exception()
+{
+ try
+ {
+ throw; // re-throw current exception
+ }
+ catch(const Glib::Error& error)
+ {
+ // Access the GError directly, to avoid possible exceptions from C++ code.
+ glibmm_exception_warning(error.gobj());
+
+ // For most failures that cause a Glib::Error exception, aborting the
+ // program seems too harsh. Instead, give control back to the main loop.
+ return;
+ }
+ catch(const std::exception& except)
+ {
+ g_error("\n"
+ "unhandled exception (type std::exception) in signal handler:\n"
+ "what: %s\n", except.what());
+ }
+ catch(...)
+ {
+ g_error("\nunhandled exception (type unknown) in signal handler\n");
+ }
+}
+
+} // anonymous namespace
+
+
+namespace Glib
+{
+
+sigc::connection add_exception_handler(const sigc::slot<void>& slot)
+{
+ HandlerList* handler_list = thread_specific_handler_list.get();
+
+ if(!handler_list)
+ {
+ handler_list = new HandlerList();
+ thread_specific_handler_list.set(handler_list);
+ }
+
+ handler_list->slots().push_front(slot);
+ return handler_list->slots().begin();
+}
+
+// internal
+void exception_handlers_invoke() throw()
+{
+ // This function will be called from our GLib signal handler proxies
+ // if an exception has been caught. It's not possible to throw C++
+ // exceptions through C signal handlers. To handle this situation, the
+ // programmer can install slots to global Reusable Exception Handlers.
+ //
+ // A handler has to re-throw the current exception in a try block, and then
+ // catch the exceptions it knows about. Any unknown exceptions should just
+ // fall through, i.e. the handler must not do catch(...).
+ //
+ // We now invoke each of the installed slots until the exception has been
+ // handled. If there are no more handlers in the list and the exception
+ // is still unhandled, call glibmm_unexpected_exception().
+
+ if(HandlerList *const handler_list = thread_specific_handler_list.get())
+ {
+ HandlerList::iterator pslot = handler_list->slots().begin();
+
+ while(pslot != handler_list->slots().end())
+ {
+ // Calling an empty slot would mean ignoring the exception,
+ // thus we have to check for dead slots explicitly.
+ if(pslot->empty())
+ {
+ pslot = handler_list->slots().erase(pslot);
+ continue;
+ }
+
+ // Call the Reusable Exception Handler, which should re-throw
+ // the exception that's currently on the stack.
+ try
+ {
+ (*pslot)();
+ }
+ catch(...) // unhandled, try next slot
+ {
+ ++pslot;
+ continue;
+ }
+
+ // The exception has either been handled or ignored.
+ // Give control back to the GLib main loop.
+ return;
+ }
+ }
+
+ // Critical: The exception is still unhandled.
+ glibmm_unexpected_exception();
+}
+
+} // namespace Glib
+
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
diff --git a/libs/glibmm2/glib/glibmm/exceptionhandler.h b/libs/glibmm2/glib/glibmm/exceptionhandler.h
new file mode 100644
index 0000000000..af617fab7f
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/exceptionhandler.h
@@ -0,0 +1,48 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_EXCEPTIONHANDLER_H
+#define _GLIBMM_EXCEPTIONHANDLER_H
+
+/* $Id: exceptionhandler.h,v 1.3 2006/05/12 08:08:43 murrayc Exp $ */
+
+/* exceptionhandler.h
+ *
+ * Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <sigc++/sigc++.h>
+#include <glibmmconfig.h>
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+
+namespace Glib
+{
+
+/** Specify a slot to be called when an exception is thrown by a signal handler.
+ */
+sigc::connection add_exception_handler(const sigc::slot<void>& slot);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+// internal
+void exception_handlers_invoke() throw();
+#endif
+
+} // namespace Glib
+
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+#endif /* _GLIBMM_EXCEPTIONHANDLER_H */
+
diff --git a/libs/glibmm2/glib/glibmm/fileutils.cc b/libs/glibmm2/glib/glibmm/fileutils.cc
new file mode 100644
index 0000000000..6a79444819
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/fileutils.cc
@@ -0,0 +1,226 @@
+// Generated by gtkmmproc -- DO NOT MODIFY!
+
+
+#include <glibmm/fileutils.h>
+#include <glibmm/private/fileutils_p.h>
+
+// -*- c++ -*-
+/* $Id: fileutils.ccg,v 1.1.1.1 2003/01/07 16:58:25 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gdir.h>
+#include <glib/gfileutils.h>
+#include <glib/gstrfuncs.h>
+#include <glibmm/utility.h>
+
+
+namespace Glib
+{
+
+/**** Glib::Dir ************************************************************/
+
+Dir::Dir(const std::string& path)
+{
+ GError* error = 0;
+ gobject_ = g_dir_open(path.c_str(), 0, &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+Dir::Dir(GDir* gobject)
+:
+ gobject_ (gobject)
+{}
+
+Dir::~Dir()
+{
+ if(gobject_)
+ g_dir_close(gobject_);
+}
+
+std::string Dir::read_name()
+{
+ const char *const name = g_dir_read_name(gobject_);
+ return (name) ? std::string(name) : std::string();
+}
+
+void Dir::rewind()
+{
+ g_dir_rewind(gobject_);
+}
+
+void Dir::close()
+{
+ if(gobject_)
+ {
+ g_dir_close(gobject_);
+ gobject_ = 0;
+ }
+}
+
+DirIterator Dir::begin()
+{
+ g_dir_rewind(gobject_);
+ return DirIterator(gobject_, g_dir_read_name(gobject_));
+}
+
+DirIterator Dir::end()
+{
+ return DirIterator(gobject_, 0);
+}
+
+
+/**** Glib::DirIterator ****************************************************/
+
+DirIterator::DirIterator()
+:
+ gobject_ (0),
+ current_ (0)
+{}
+
+DirIterator::DirIterator(GDir* gobject, const char* current)
+:
+ gobject_ (gobject),
+ current_ (current)
+{}
+
+std::string DirIterator::operator*() const
+{
+ return (current_) ? std::string(current_) : std::string();
+}
+
+DirIterator& DirIterator::operator++()
+{
+ current_ = g_dir_read_name(gobject_);
+ return *this;
+}
+
+void DirIterator::operator++(int)
+{
+ current_ = g_dir_read_name(gobject_);
+}
+
+bool DirIterator::operator==(const DirIterator& rhs) const
+{
+ return (current_ == rhs.current_);
+}
+
+bool DirIterator::operator!=(const DirIterator& rhs) const
+{
+ return (current_ != rhs.current_);
+}
+
+
+bool file_test(const std::string& filename, FileTest test)
+{
+ return g_file_test(filename.c_str(), static_cast<GFileTest>(unsigned(test)));
+}
+
+int mkstemp(std::string& filename_template)
+{
+ const ScopedPtr<char> buf (g_strndup(filename_template.data(), filename_template.size()));
+ const int fileno = g_mkstemp(buf.get());
+
+ filename_template = buf.get();
+ return fileno;
+}
+
+int file_open_tmp(std::string& name_used, const std::string& prefix)
+{
+ std::string basename_template (prefix);
+ basename_template += "XXXXXX"; // this sillyness shouldn't be in the interface
+
+ GError* error = 0;
+ ScopedPtr<char> buf_name_used;
+
+ const int fileno = g_file_open_tmp(basename_template.c_str(), buf_name_used.addr(), &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+
+ name_used = buf_name_used.get();
+ return fileno;
+}
+
+int file_open_tmp(std::string& name_used)
+{
+ GError* error = 0;
+ ScopedPtr<char> buf_name_used;
+
+ const int fileno = g_file_open_tmp(0, buf_name_used.addr(), &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+
+ name_used = buf_name_used.get();
+ return fileno;
+}
+
+std::string file_get_contents(const std::string& filename)
+{
+ ScopedPtr<char> contents;
+ gsize length = 0;
+ GError* error = 0;
+
+ g_file_get_contents(filename.c_str(), contents.addr(), &length, &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+
+ return std::string(contents.get(), length);
+}
+
+} // namespace Glib
+
+
+namespace
+{
+} // anonymous namespace
+
+
+Glib::FileError::FileError(Glib::FileError::Code error_code, const Glib::ustring& error_message)
+:
+ Glib::Error (G_FILE_ERROR, error_code, error_message)
+{}
+
+Glib::FileError::FileError(GError* gobject)
+:
+ Glib::Error (gobject)
+{}
+
+Glib::FileError::Code Glib::FileError::code() const
+{
+ return static_cast<Code>(Glib::Error::code());
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+void Glib::FileError::throw_func(GError* gobject)
+{
+ throw Glib::FileError(gobject);
+}
+#else
+//When not using exceptions, we just pass the Exception object around without throwing it:
+std::auto_ptr<Glib::Error> Glib::FileError::throw_func(GError* gobject)
+{
+ return std::auto_ptr<Glib::Error>(new Glib::FileError(gobject));
+}
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
diff --git a/libs/glibmm2/glib/glibmm/fileutils.h b/libs/glibmm2/glib/glibmm/fileutils.h
new file mode 100644
index 0000000000..c749ffbb11
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/fileutils.h
@@ -0,0 +1,482 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_FILEUTILS_H
+#define _GLIBMM_FILEUTILS_H
+
+
+/* $Id: fileutils.hg,v 1.3 2004/01/22 18:38:12 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GDir GDir; }
+#endif
+
+#include <iterator>
+#include <string>
+
+#include <glibmmconfig.h>
+#include <glibmm/error.h>
+
+GLIBMM_USING_STD(input_iterator_tag)
+GLIBMM_USING_STD(string)
+
+
+namespace Glib
+{
+
+/** @addtogroup glibmmEnums Enums and Flags */
+
+/**
+ * @ingroup glibmmEnums
+ * @par Bitwise operators:
+ * <tt>%FileTest operator|(FileTest, FileTest)</tt><br>
+ * <tt>%FileTest operator&(FileTest, FileTest)</tt><br>
+ * <tt>%FileTest operator^(FileTest, FileTest)</tt><br>
+ * <tt>%FileTest operator~(FileTest)</tt><br>
+ * <tt>%FileTest& operator|=(FileTest&, FileTest)</tt><br>
+ * <tt>%FileTest& operator&=(FileTest&, FileTest)</tt><br>
+ * <tt>%FileTest& operator^=(FileTest&, FileTest)</tt><br>
+ */
+enum FileTest
+{
+ FILE_TEST_IS_REGULAR = 1 << 0,
+ FILE_TEST_IS_SYMLINK = 1 << 1,
+ FILE_TEST_IS_DIR = 1 << 2,
+ FILE_TEST_IS_EXECUTABLE = 1 << 3,
+ FILE_TEST_EXISTS = 1 << 4
+};
+
+/** @ingroup glibmmEnums */
+inline FileTest operator|(FileTest lhs, FileTest rhs)
+ { return static_cast<FileTest>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline FileTest operator&(FileTest lhs, FileTest rhs)
+ { return static_cast<FileTest>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline FileTest operator^(FileTest lhs, FileTest rhs)
+ { return static_cast<FileTest>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline FileTest operator~(FileTest flags)
+ { return static_cast<FileTest>(~static_cast<unsigned>(flags)); }
+
+/** @ingroup glibmmEnums */
+inline FileTest& operator|=(FileTest& lhs, FileTest rhs)
+ { return (lhs = static_cast<FileTest>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); }
+
+/** @ingroup glibmmEnums */
+inline FileTest& operator&=(FileTest& lhs, FileTest rhs)
+ { return (lhs = static_cast<FileTest>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); }
+
+/** @ingroup glibmmEnums */
+inline FileTest& operator^=(FileTest& lhs, FileTest rhs)
+ { return (lhs = static_cast<FileTest>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs))); }
+
+
+/** @defgroup FileUtils File Utilities
+ * Various file-related classes and functions.
+ */
+
+/** Exception class for file-related errors.
+ * @ingroup FileUtils
+ */
+class FileError : public Glib::Error
+{
+public:
+ enum Code
+ {
+ EXISTS,
+ IS_DIRECTORY,
+ ACCESS_DENIED,
+ NAME_TOO_LONG,
+ NO_SUCH_ENTITY,
+ NOT_DIRECTORY,
+ NO_SUCH_DEVICE,
+ NOT_DEVICE,
+ READONLY_FILESYSTEM,
+ TEXT_FILE_BUSY,
+ FAULTY_ADDRESS,
+ SYMLINK_LOOP,
+ NO_SPACE_LEFT,
+ NOT_ENOUGH_MEMORY,
+ TOO_MANY_OPEN_FILES,
+ FILE_TABLE_OVERFLOW,
+ BAD_FILE_DESCRIPTOR,
+ INVALID_ARGUMENT,
+ BROKEN_PIPE,
+ TRYAGAIN,
+ INTERRUPTED,
+ IO_ERROR,
+ NOT_OWNER,
+ NOSYS,
+ FAILED
+ };
+
+ FileError(Code error_code, const Glib::ustring& error_message);
+ explicit FileError(GError* gobject);
+ Code code() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+private:
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ static void throw_func(GError* gobject);
+#else
+ //When not using exceptions, we just pass the Exception object around without throwing it:
+ static std::auto_ptr<Glib::Error> throw_func(GError* gobject);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ friend void wrap_init(); // uses throw_func()
+#endif
+};
+
+
+/** @enum FileError::Code
+ * Values corresponding to <tt>errno</tt> codes returned from file operations
+ * on UNIX.
+ * Unlike <tt>errno</tt> codes, FileError::Code values are available on all
+ * systems, even Windows. The exact meaning of each code depends on what sort
+ * of file operation you were performing; the UNIX documentation gives more
+ * details. The following error code descriptions come from the GNU C Library
+ * manual, and are under the copyright of that manual.
+ *
+ * It's not very portable to make detailed assumptions about exactly which
+ * errors will be returned from a given operation. Some errors don't occur on
+ * some systems, etc., sometimes there are subtle differences in when a system
+ * will report a given error, etc.
+ */
+
+/** @var FileError::Code FileError::EXISTS
+ * <tt>(EEXIST)</tt> Operation not permitted; only the owner of the file (or
+ * other resource) or processes with special privileges can perform the operation.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::IS_DIRECTORY
+ * <tt>(EISDIR)</tt> File is a directory; you cannot open a directory for writing,
+ * or create or remove hard links to it.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::ACCESS_DENIED
+ * <tt>(EACCES)</tt> Permission denied; the file permissions do not allow the
+ * attempted operation.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::NAME_TOO_LONG
+ * <tt>(ENAMETOOLONG)</tt> Filename too long.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::NO_SUCH_ENTITY
+ * <tt>(ENOENT)</tt> No such file or directory. This is a "file doesn't exist"
+ * error for ordinary files that are referenced in contexts where they are expected
+ * to already exist.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::NOT_DIRECTORY
+ * <tt>(ENOTDIR)</tt> A file that isn't a directory was specified when a directory
+ * is required.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::NO_SUCH_DEVICE
+ * <tt>(ENXIO)</tt> No such device or address. The system tried to use the device
+ * represented by a file you specified, and it couldn't find the device. This can
+ * mean that the device file was installed incorrectly, or that the physical device
+ * is missing or not correctly attached to the computer.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::NOT_DEVICE
+ * <tt>(ENODEV)</tt> This file is of a type that doesn't support mapping.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::READONLY_FILESYSTEM
+ * <tt>(EROFS)</tt> The directory containing the new link can't be modified
+ * because it's on a read-only file system.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::TEXT_FILE_BUSY
+ * <tt>(ETXTBSY)</tt> Text file busy.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::FAULTY_ADDRESS
+ * <tt>(EFAULT)</tt> You passed in a pointer to bad memory. (Glib won't
+ * reliably return this, don't pass in pointers to bad memory.)
+ * <br><br>
+ */
+/** @var FileError::Code FileError::SYMLINK_LOOP
+ * <tt>(ELOOP)</tt> Too many levels of symbolic links were encountered in
+ * looking up a file name. This often indicates a cycle of symbolic links.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::NO_SPACE_LEFT
+ * <tt>(ENOSPC)</tt> No space left on device; write operation on a file failed
+ * because the disk is full.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::NOT_ENOUGH_MEMORY
+ * <tt>(ENOMEM)</tt> No memory available. The system cannot allocate more
+ * virtual memory because its capacity is full.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::TOO_MANY_OPEN_FILES
+ * <tt>(EMFILE)</tt> The current process has too many files open and can't
+ * open any more. Duplicate descriptors do count toward this limit.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::FILE_TABLE_OVERFLOW
+ * <tt>(ENFILE)</tt> There are too many distinct file openings in the
+ * entire system.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::BAD_FILE_DESCRIPTOR
+ * <tt>(EBADF)</tt> Bad file descriptor; for example, I/O on a descriptor
+ * that has been closed or reading from a descriptor open only for writing
+ * (or vice versa).
+ * <br><br>
+ */
+/** @var FileError::Code FileError::INVALID_ARGUMENT
+ * <tt>(EINVAL)</tt> Invalid argument. This is used to indicate various kinds
+ * of problems with passing the wrong argument to a library function.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::BROKEN_PIPE
+ * <tt>(EPIPE)</tt> Broken pipe; there is no process reading from the other
+ * end of a pipe. Every library function that returns this error code also
+ * generates a <tt>SIGPIPE</tt> signal; this signal terminates the program
+ * if not handled or blocked. Thus, your program will never actually see
+ * this code unless it has handled or blocked <tt>SIGPIPE</tt>.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::TRYAGAIN
+ * <tt>(EAGAIN)</tt> Resource temporarily unavailable; the call might work
+ * if you try again later.
+ * We used TRYAGAIN instead of TRY_AGAIN, because that is a defined as a macro by a Unix header.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::INTERRUPTED
+ * <tt>(EINTR)</tt> Interrupted function call; an asynchronous signal occurred
+ * and prevented completion of the call. When this happens, you should try
+ * the call again.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::IO_ERROR
+ * <tt>(EIO)</tt> Input/output error; usually used for physical read or write
+ * errors. I.e. the disk or other physical device hardware is returning errors.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::NOT_OWNER
+ * <tt>(EPERM)</tt> Operation not permitted; only the owner of the file (or other
+ * resource) or processes with special privileges can perform the operation.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::FAILED
+ * Does not correspond to a UNIX error code; this is the standard "failed for
+ * unspecified reason" error code present in all Glib::Error error code
+ * enumerations. Returned if no specific code applies.
+ */
+
+class Dir;
+
+/** The iterator type of Glib::Dir.
+ * @ingroup FileUtils
+ */
+class DirIterator
+{
+public:
+ typedef std::input_iterator_tag iterator_category;
+ typedef std::string value_type;
+ typedef int difference_type;
+ typedef value_type reference;
+ typedef void pointer;
+
+ DirIterator();
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ DirIterator(GDir* gobject, const char* current);
+#endif
+
+ std::string operator*() const;
+ DirIterator& operator++();
+
+ /** @note DirIterator has input iterator semantics, which means real
+ * postfix increment is impossible. The return type is @c void to
+ * prevent surprising behaviour.
+ */
+ void operator++(int);
+
+ bool operator==(const DirIterator& rhs) const;
+ bool operator!=(const DirIterator& rhs) const;
+
+private:
+ GDir* gobject_;
+ const char* current_;
+};
+
+
+/** Utility class representing an open directory.
+ * @ingroup FileUtils
+ * It's highly recommended to use the iterator interface. With iterators,
+ * reading an entire directory into a STL container is really easy:
+ * @code
+ * Glib::Dir dir (directory_path);
+ * std::list<std::string> entries (dir.begin(), dir.end());
+ * @endcode
+ * @note The encoding of the directory entries isn't necessarily UTF-8.
+ * Use Glib::filename_to_utf8() if you need to display them.
+ */
+class Dir
+{
+public:
+ typedef DirIterator iterator;
+ typedef DirIterator const_iterator;
+
+ /** Opens a directory for reading. The names of the files in the
+ * directory can then be retrieved using read_name().
+ * @param path The path to the directory you are interested in.
+ * @throw Glib::FileError
+ */
+ explicit Dir(const std::string& path);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ explicit Dir(GDir* gobject);
+#endif
+
+ /** Closes the directory and deallocates all related resources.
+ */
+ ~Dir();
+
+ /** Retrieves the name of the next entry in the directory.
+ * The <tt>'.'</tt> and <tt>'..'</tt> entries are omitted.
+ * @return The entry's name or <tt>""</tt> if there are no more entries.
+ * @see begin(), end()
+ */
+ std::string read_name();
+
+ /** Resets the directory. The next call to
+ * read_name() will return the first entry again.
+ */
+ void rewind();
+
+ /** Closes the directory and deallocates all related resources.
+ * Note that close() is implicitely called by ~Dir(). Thus you don't
+ * need to call close() yourself unless you want to close the directory
+ * before the destructor runs.
+ */
+ void close();
+
+ /** Get the begin of an input iterator sequence.
+ * @return An input iterator pointing to the first directory entry.
+ */
+ DirIterator begin();
+
+ /** Get the end of an input iterator sequence.
+ * @return An input iterator pointing behind the last directory entry.
+ */
+ DirIterator end();
+
+private:
+ GDir* gobject_;
+
+ // noncopyable
+ Dir(const Dir&);
+ Dir& operator=(const Dir&);
+};
+
+
+/** Returns @c true if any of the tests in the bitfield @a test are true.
+ * @ingroup FileUtils
+ * For example, <tt>(Glib::FILE_TEST_EXISTS | Glib::FILE_TEST_IS_DIR)</tt> will
+ * return @c true if the file exists; the check whether it's a directory
+ * doesn't matter since the existence test is true. With the current set of
+ * available tests, there's no point passing in more than one test at a time.
+ *
+ * Apart from <tt>Glib::FILE_TEST_IS_SYMLINK</tt> all tests follow symbolic
+ * links, so for a symbolic link to a regular file file_test() will return
+ * @c true for both <tt>Glib::FILE_TEST_IS_SYMLINK</tt> and
+ * <tt>Glib::FILE_TEST_IS_REGULAR</tt>.
+ *
+ * @note For a dangling symbolic link file_test() will return @c true for
+ * <tt>Glib::FILE_TEST_IS_SYMLINK</tt> and @c false for all other flags.
+ *
+ * @param filename A filename to test.
+ * @param test Bitfield of Glib::FileTest flags.
+ * @return Whether a test was true.
+ */
+bool file_test(const std::string& filename, FileTest test);
+
+/** Opens a temporary file.
+ * @ingroup FileUtils
+ * See the %mkstemp() documentation on most UNIX-like systems. This is a
+ * portability wrapper, which simply calls %mkstemp() on systems that have
+ * it, and implements it in GLib otherwise.
+ * @param filename_template A string that should match the rules for
+ * %mkstemp(), i.e. end in <tt>"XXXXXX"</tt>. The <tt>X</tt> string
+ * will be modified to form the name of a file that didn't exist.
+ * @return A file handle (as from open()) to the file opened for reading
+ * and writing. The file is opened in binary mode on platforms where there
+ * is a difference. The file handle should be closed with close(). In
+ * case of errors, <tt>-1</tt> is returned.
+ */
+int mkstemp(std::string& filename_template);
+
+/** Opens a file for writing in the preferred directory for temporary files
+ * (as returned by Glib::get_tmp_dir()).
+ * @ingroup FileUtils
+ * @a prefix should a basename template; it'll be suffixed by 6 characters
+ * in order to form a unique filename. No directory components are allowed.
+ *
+ * The actual name used is returned in @a name_used.
+ *
+ * @param prefix Template for file name, basename only.
+ * @retval name_used The actual name used.
+ * @return A file handle (as from <tt>open()</tt>) to the file opened for reading
+ * and writing. The file is opened in binary mode on platforms where there is a
+ * difference. The file handle should be closed with <tt>close()</tt>.
+ * @throw Glib::FileError
+ */
+int file_open_tmp(std::string& name_used, const std::string& prefix);
+
+/** Opens a file for writing in the preferred directory for temporary files
+ * (as returned by Glib::get_tmp_dir()).
+ * @ingroup FileUtils
+ * This function works like file_open_tmp(std::string&, const std::string&)
+ * but uses a default basename prefix.
+ *
+ * @retval name_used The actual name used.
+ * @return A file handle (as from <tt>open()</tt>) to the file opened for reading
+ * and writing. The file is opened in binary mode on platforms where there is a
+ * difference. The file handle should be closed with <tt>close()</tt>.
+ * @throw Glib::FileError
+ */
+int file_open_tmp(std::string& name_used);
+
+/** Reads an entire file into a string, with good error checking.
+ * @ingroup FileUtils
+ * @param filename A file to read contents from.
+ * @return The file contents.
+ * @throw Glib::FileError
+ */
+std::string file_get_contents(const std::string& filename);
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_FILEUTILS_H */
+
diff --git a/libs/glibmm2/glib/glibmm/helperlist.h b/libs/glibmm2/glib/glibmm/helperlist.h
new file mode 100644
index 0000000000..71990ced74
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/helperlist.h
@@ -0,0 +1,165 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_HELPERLIST_H
+#define _GLIBMM_HELPERLIST_H
+/* $Id: helperlist.h,v 1.1.1.1 2003/01/07 16:58:46 murrayc Exp $ */
+
+/* helperlist.h
+ *
+ * Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/containers.h>
+
+namespace Glib
+{
+
+// This class has some pure virtual methods which need to be implemented by derived classes.
+template< typename T_Child, typename T_CppElement, typename T_Iterator >
+class HelperList
+{
+public:
+ HelperList()
+ : gparent_(0)
+ {}
+
+ HelperList(GObject* gparent)
+ : gparent_(gparent)
+ {}
+
+ virtual ~HelperList()
+ {}
+
+ typedef T_Child value_type;
+ typedef value_type& reference;
+ typedef const value_type& const_reference;
+
+ typedef T_Iterator iterator;
+ typedef List_ConstIterator<iterator> const_iterator;
+ typedef List_ReverseIterator<iterator> reverse_iterator;
+ typedef List_ConstIterator<reverse_iterator> const_reverse_iterator;
+
+ typedef T_CppElement element_type;
+
+ typedef size_t difference_type;
+ typedef size_t size_type;
+
+ //These are implemented differently for each Helper List.
+ virtual iterator erase(iterator) = 0;
+
+ virtual void erase(iterator start, iterator stop)
+ {
+ while(start != stop)
+ start = erase(start); //Implemented in derived class.
+ }
+
+ virtual void remove(const_reference) = 0;
+
+ size_type size() const
+ {
+ return g_list_length(glist());
+ }
+
+ inline size_type max_size() { return size_type(-1); }
+ inline bool empty() { return glist() == 0; }
+
+ inline iterator begin()
+ {return begin_();}
+ inline iterator end()
+ {return end_();}
+
+ inline const_iterator begin() const
+ { return const_iterator(begin_()); }
+ inline const_iterator end() const
+ { return const_iterator(end_()); }
+
+ inline reverse_iterator rbegin()
+ { return reverse_iterator(end_()); }
+ inline reverse_iterator rend()
+ { return reverse_iterator(begin_()); }
+
+ inline const_reverse_iterator rbegin() const
+ { return const_reverse_iterator(reverse_iterator(end_())); }
+ inline const_reverse_iterator rend() const
+ { return const_reverse_iterator(reverse_iterator(begin_())); }
+
+ reference front() const
+ {
+ return *begin();
+ }
+
+ reference back() const
+ {
+ return *(--end());
+ }
+
+ reference operator[](size_type l) const
+ {
+ size_type j = 0;
+ iterator i;
+ for(i = begin(), j = 0; i != end(), j < l; ++i, ++j);
+ return (*i);
+ }
+
+// iterator find(const_reference w)
+// {
+// iterator i = begin();
+// for(i = begin(); i != end() && (*i != w); i++);
+// return i;
+// }
+//
+// iterator find(Widget& w)
+// {
+// iterator i;
+// for (i = begin(); i != end() && ((*i)->$1() != &w); i++);
+// return i;
+// }
+
+ //Derived classes might choose to reimplement these as public:
+ inline void pop_front()
+ { erase(begin()); }
+ inline void pop_back()
+ { erase(--end()); }
+
+ void clear()
+ { erase(begin(), end()); }
+
+ GObject* gparent()
+ { return gparent_; };
+ const GObject* gparent() const
+ { return gparent_; };
+
+protected:
+ virtual GList*& glist() const = 0; // front of list
+
+ iterator begin_() const
+ {
+ return iterator(glist(), glist());
+ }
+
+ iterator end_() const
+ {
+ return iterator(glist(), (GList*)0);
+ }
+
+ GObject* gparent_;
+};
+
+
+} /* namespace Glib */
+
+#endif /* _GLIBMM_HELPERLIST_H */
+
diff --git a/libs/glibmm2/glib/glibmm/i18n.h b/libs/glibmm2/glib/glibmm/i18n.h
new file mode 100644
index 0000000000..e0dfc11c66
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/i18n.h
@@ -0,0 +1,30 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_I18N_H
+#define _GLIBMM_I18N_H
+
+/* $Id: i18n.h,v 1.1 2004/03/02 23:29:56 murrayc Exp $ */
+
+/* Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+// Include this file to define internationalization macros such as _().
+// This file must be included by the application, after system headers such as <iostream>.
+
+#include <glib/gi18n.h>
+
+#endif /* _GLIBMM_I18N_H */
+
diff --git a/libs/glibmm2/glib/glibmm/init.cc b/libs/glibmm2/glib/glibmm/init.cc
new file mode 100644
index 0000000000..bda5bcc636
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/init.cc
@@ -0,0 +1,34 @@
+// -*- c++ -*-
+/* $Id: init.cc,v 1.1 2003/11/03 09:27:31 murrayc Exp $ */
+
+/* Copyright (C) 2003 The glibmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/wrap.h>
+#include <glibmm/error.h>
+
+namespace Glib
+{
+
+void init()
+{
+ Glib::wrap_register_init();
+ Glib::Error::register_init(); //also calls Glib::wrap_init();
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/init.h b/libs/glibmm2/glib/glibmm/init.h
new file mode 100644
index 0000000000..d1ddd11410
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/init.h
@@ -0,0 +1,39 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_INIT_H
+#define _GLIBMM_INIT_H
+
+/* $Id: init.h,v 1.1 2003/11/03 09:27:31 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+namespace Glib
+{
+
+/** Initialize glibmm.
+ * You may call this more than once.
+ * You do nott need to call this if you are using Glib::MainLoop or Gtk::Main,
+ * because they call it for you.
+ */
+void init();
+
+} // namespace Glib
+
+
+
+#endif /* _GLIBMM_INIT_H */
+
diff --git a/libs/glibmm2/glib/glibmm/interface.cc b/libs/glibmm2/glib/glibmm/interface.cc
new file mode 100644
index 0000000000..4db73f354f
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/interface.cc
@@ -0,0 +1,95 @@
+// -*- c++ -*-
+/* $Id: interface.cc,v 1.3 2005/03/07 15:42:20 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/interface.h>
+#include <glibmm/private/interface_p.h>
+
+
+namespace Glib
+{
+
+/**** Glib::Interface_Class ************************************************/
+
+void Interface_Class::add_interface(GType instance_type) const
+{
+ //This check is distabled, because it checks whether any of the types's bases implement the interface, not just the specific type.
+ //if( !g_type_is_a(instance_type, gtype_) ) //For convenience, don't complain about calling this twice.
+ //{
+ const GInterfaceInfo interface_info =
+ {
+ class_init_func_,
+ 0, // interface_finalize
+ 0, // interface_data
+ };
+
+ g_type_add_interface_static(instance_type, gtype_, &interface_info);
+ //}
+}
+
+
+/**** Interface Glib::Interface ********************************************/
+
+Interface::Interface(const Interface_Class& interface_class)
+{
+ //gobject_ will be set in the Object constructor.
+ //Any instantiable class that derives from Interface should also inherit from Object.
+
+ // If I understand it correctly, gobject_ shouldn't be 0 now. daniel.
+ // TODO: Make this a g_assert() if the assumption above is correct.
+
+ g_return_if_fail(gobject_ != 0);
+
+ if(custom_type_name_ && !is_anonymous_custom_())
+ {
+ void *const instance_class = G_OBJECT_GET_CLASS(gobject_);
+
+ if(!g_type_interface_peek(instance_class, interface_class.get_type()))
+ {
+ interface_class.add_interface(G_OBJECT_CLASS_TYPE(instance_class));
+ }
+ }
+}
+
+Interface::Interface(GObject* castitem)
+{
+ // Connect GObject and wrapper instances.
+ ObjectBase::initialize(castitem);
+}
+
+Interface::~Interface()
+{}
+
+GType Interface::get_type()
+{
+ return G_TYPE_INTERFACE;
+}
+
+GType Interface::get_base_type()
+{
+ return G_TYPE_INTERFACE;
+}
+
+RefPtr<ObjectBase> wrap_interface(GObject* object, bool take_copy)
+{
+ return Glib::RefPtr<ObjectBase>( wrap_auto(object, take_copy) );
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/interface.h b/libs/glibmm2/glib/glibmm/interface.h
new file mode 100644
index 0000000000..b0ee8088eb
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/interface.h
@@ -0,0 +1,72 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_INTERFACE_H
+#define _GLIBMM_INTERFACE_H
+
+/* $Id: interface.h,v 1.1.1.1 2003/01/07 16:58:46 murrayc Exp $ */
+
+/* Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/object.h>
+
+
+namespace Glib
+{
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+class Interface_Class;
+#endif
+
+// There is no base GInterface struct in Glib, though there is G_TYPE_INTERFACE enum value.
+class Interface : virtual public Glib::ObjectBase
+{
+public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ typedef Interface CppObjectType;
+ typedef Interface_Class CppClassType;
+ typedef GTypeInterface BaseClassType;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+ explicit Interface(const Glib::Interface_Class& interface_class);
+ explicit Interface(GObject* castitem);
+ virtual ~Interface();
+
+ //void add_interface(GType gtype_implementer);
+
+ // Hook for translating API
+ //static Glib::Interface* wrap_new(GTypeInterface*);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ static GType get_type() G_GNUC_CONST;
+ static GType get_base_type() G_GNUC_CONST;
+#endif
+
+ inline GObject* gobj() { return gobject_; }
+ inline const GObject* gobj() const { return gobject_; }
+
+private:
+ // noncopyable
+ Interface(const Interface&);
+ Interface& operator=(const Interface&);
+};
+
+RefPtr<ObjectBase> wrap_interface(GObject* object, bool take_copy = false);
+
+} // namespace Glib
+
+#endif /* _GLIBMM_INTERFACE_H */
+
diff --git a/libs/glibmm2/glib/glibmm/iochannel.cc b/libs/glibmm2/glib/glibmm/iochannel.cc
new file mode 100644
index 0000000000..7a2f086f8d
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/iochannel.cc
@@ -0,0 +1,889 @@
+// Generated by gtkmmproc -- DO NOT MODIFY!
+
+
+#include <glibmm/iochannel.h>
+#include <glibmm/private/iochannel_p.h>
+
+// -*- c++ -*-
+/* $Id: iochannel.ccg,v 1.6 2006/10/04 12:04:09 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/exceptionhandler.h>
+#include <glibmm/iochannel.h>
+#include <glibmm/utility.h>
+#include <glibmm/main.h>
+#include <glib.h>
+
+
+namespace
+{
+
+// Glib::IOChannel reference counting issues:
+//
+// Normally, you'd expect that the C++ object stays around as long as the
+// C instance does. Also Glib::wrap() usually returns always the same C++
+// wrapper object for a single C instance.
+//
+// Unfortunately it isn't possible to implement these features if we didn't
+// create the underlying GIOChannel. That is, when wrapping existing
+// GIOChannel instances such as returned by e.g. g_io_channel_unix_new() or
+// g_io_channel_new_file(). Neither is there a way to hook up a wrapper
+// object in an existing GIOChannel, nor exists any destroy notification.
+//
+// So that means: If the IOChannel is implemented in C++ -- that is, our
+// GlibmmIOChannel backend is used -- we use the GIOChannel reference
+// counting mechanism. If the IOChannel backend is unknown, then the
+// wrapper instance holds always exactly one reference to the GIOChannel.
+// The wrapper object itself is then managed via our own refcounting
+// mechanism. To do that a utility class ForeignIOChannel is introduced to
+// override reference() and unreference().
+
+class ForeignIOChannel : public Glib::IOChannel
+{
+public:
+ ForeignIOChannel(GIOChannel* gobject, bool take_copy)
+ : Glib::IOChannel(gobject, take_copy), ref_count_(0) {}
+
+ virtual void reference() const;
+ virtual void unreference() const;
+
+private:
+ mutable int ref_count_;
+};
+
+void ForeignIOChannel::reference() const
+{
+ ++ref_count_;
+}
+
+void ForeignIOChannel::unreference() const
+{
+ if (!(--ref_count_)) delete this;
+}
+
+} // anonymous namespace
+
+
+namespace Glib
+{
+
+class GlibmmIOChannel
+{
+public:
+ GIOChannel base;
+ Glib::IOChannel* wrapper;
+
+ static const GIOFuncs vfunc_table;
+
+ static GIOStatus io_read(GIOChannel* channel, char* buf, gsize count,
+ gsize* bytes_read, GError** err);
+
+ static GIOStatus io_write(GIOChannel* channel, const char* buf, gsize count,
+ gsize* bytes_written, GError** err);
+
+ static GIOStatus io_seek (GIOChannel* channel, gint64 offset, GSeekType type, GError** err);
+ static GIOStatus io_close(GIOChannel* channel, GError** err);
+
+ static GSource* io_create_watch(GIOChannel* channel, GIOCondition condition);
+ static void io_free(GIOChannel* channel);
+
+ static GIOStatus io_set_flags(GIOChannel* channel, GIOFlags flags, GError** err);
+ static GIOFlags io_get_flags(GIOChannel* channel);
+};
+
+// static
+const GIOFuncs GlibmmIOChannel::vfunc_table =
+{
+ &GlibmmIOChannel::io_read,
+ &GlibmmIOChannel::io_write,
+ &GlibmmIOChannel::io_seek,
+ &GlibmmIOChannel::io_close,
+ &GlibmmIOChannel::io_create_watch,
+ &GlibmmIOChannel::io_free,
+ &GlibmmIOChannel::io_set_flags,
+ &GlibmmIOChannel::io_get_flags,
+};
+
+
+/**** GLib::IOChannel ******************************************************/
+
+/* Construct a custom C++-implemented IOChannel. GlibmmIOChannel is an
+ * extended GIOChannel struct which allows us to hook up a pointer to this
+ * persistent wrapper instance.
+ */
+IOChannel::IOChannel()
+:
+ gobject_ (static_cast<GIOChannel*>(g_malloc(sizeof(GlibmmIOChannel))))
+{
+ g_io_channel_init(gobject_);
+ gobject_->funcs = const_cast<GIOFuncs*>(&GlibmmIOChannel::vfunc_table);
+
+ reinterpret_cast<GlibmmIOChannel*>(gobject_)->wrapper = this;
+}
+
+/* Construct an IOChannel wrapper for an already created GIOChannel.
+ * See the comment at the top of this file for an explanation of the
+ * problems with this approach.
+ */
+IOChannel::IOChannel(GIOChannel* gobject, bool take_copy)
+:
+ gobject_ (gobject)
+{
+ // This ctor should never be called for GlibmmIOChannel instances.
+ g_assert(gobject != 0);
+ g_assert(gobject->funcs != &GlibmmIOChannel::vfunc_table);
+
+ if(take_copy)
+ g_io_channel_ref(gobject_);
+}
+
+IOChannel::~IOChannel()
+{
+ if(gobject_)
+ {
+ // Check whether this IOChannel is implemented in C++, i.e. whether it
+ // uses our GlibmmIOChannel forwarding backend. Normally, this will never
+ // be true because the wrapper should only be deleted in the io_free()
+ // callback, which clears gobject_ before deleting. But in case the ctor
+ // of a derived class threw an exception the GIOChannel must be destroyed
+ // prematurely.
+ //
+ if(gobject_->funcs == &GlibmmIOChannel::vfunc_table)
+ {
+ // Disconnect the wrapper object so that it won't be deleted twice.
+ reinterpret_cast<GlibmmIOChannel*>(gobject_)->wrapper = 0;
+ }
+
+ GIOChannel *const tmp_gobject = gobject_;
+ gobject_ = 0;
+
+ g_io_channel_unref(tmp_gobject);
+ }
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::RefPtr<IOChannel> IOChannel::create_from_file(const std::string& filename, const std::string& mode)
+#else
+Glib::RefPtr<IOChannel> IOChannel::create_from_file(const std::string& filename, const std::string& mode, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ GIOChannel *const channel = g_io_channel_new_file(filename.c_str(), mode.c_str(), &gerror);
+
+ if(gerror)
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ Glib::Error::throw_exception(gerror);
+ #else
+ error = Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+ return Glib::wrap(channel, false);
+}
+
+Glib::RefPtr<IOChannel> IOChannel::create_from_fd(int fd)
+{
+ return Glib::wrap(g_io_channel_unix_new(fd), false);
+}
+
+#ifdef G_OS_WIN32
+
+Glib::RefPtr<IOChannel> IOChannel::create_from_win32_fd(int fd)
+{
+ return Glib::wrap(g_io_channel_win32_new_fd(fd), false);
+}
+
+Glib::RefPtr<IOChannel> IOChannel::create_from_win32_socket(int socket)
+{
+ return Glib::wrap(g_io_channel_win32_new_socket(socket), false);
+}
+
+#endif /* G_OS_WIN32 */
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+IOStatus IOChannel::write(const Glib::ustring& str)
+#else
+IOStatus IOChannel::write(const Glib::ustring& str, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ gsize bytes_written = 0;
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ return write(str.data(), str.bytes(), bytes_written);
+#else
+ return write(str.data(), str.bytes(), bytes_written, error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+IOStatus IOChannel::read_line(Glib::ustring& line)
+#else
+IOStatus IOChannel::read_line(Glib::ustring& line, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ Glib::ScopedPtr<char> buf;
+ GError* gerror = 0;
+ gsize bytes = 0;
+
+ const GIOStatus status = g_io_channel_read_line(gobj(), buf.addr(), &bytes, 0, &gerror);
+
+ if(gerror)
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ Glib::Error::throw_exception(gerror);
+ #else
+ error = Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+ if(buf.get())
+ line.assign(buf.get(), buf.get() + bytes);
+ else
+ line.erase();
+
+ return (IOStatus) status;
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+IOStatus IOChannel::read_to_end(Glib::ustring& str)
+#else
+IOStatus IOChannel::read_to_end(Glib::ustring& str, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ Glib::ScopedPtr<char> buf;
+ GError* gerror = 0;
+ gsize bytes = 0;
+
+ const GIOStatus status = g_io_channel_read_to_end(gobj(), buf.addr(), &bytes, &gerror);
+
+ if(gerror)
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ Glib::Error::throw_exception(gerror);
+ #else
+ error = Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+ if(buf.get())
+ str.assign(buf.get(), buf.get() + bytes);
+ else
+ str.erase();
+
+ return (IOStatus) status;
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+IOStatus IOChannel::read(Glib::ustring& str, gsize count)
+#else
+IOStatus IOChannel::read(Glib::ustring& str, gsize count, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ Glib::ScopedPtr<char> buf (g_new(char, count));
+ GError* gerror = 0;
+ gsize bytes = 0;
+
+ const GIOStatus status = g_io_channel_read_chars(gobj(), buf.get(), count, &bytes, &gerror);
+
+ if(gerror)
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ Glib::Error::throw_exception(gerror);
+ #else
+ error = Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+ if(buf.get())
+ str.assign(buf.get(), buf.get() + bytes);
+ else
+ str.erase();
+
+ return (IOStatus) status;
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+IOStatus IOChannel::set_encoding(const std::string& encoding)
+#else
+IOStatus IOChannel::set_encoding(const std::string& encoding, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+
+ const GIOStatus status = g_io_channel_set_encoding(
+ gobj(), (encoding.empty()) ? 0 : encoding.c_str(), &gerror);
+
+ if(gerror)
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ Glib::Error::throw_exception(gerror);
+ #else
+ error = Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+ return (IOStatus) status;
+}
+
+std::string IOChannel::get_encoding() const
+{
+ const char *const encoding = g_io_channel_get_encoding(gobject_);
+ return (encoding) ? std::string(encoding) : std::string();
+}
+
+void IOChannel::set_line_term(const std::string& term)
+{
+ if(term.empty())
+ g_io_channel_set_line_term(gobj(), 0, 0);
+ else
+ g_io_channel_set_line_term(gobj(), term.data(), term.size());
+}
+
+std::string IOChannel::get_line_term() const
+{
+ int len = 0;
+ const char *const term = g_io_channel_get_line_term(gobject_, &len);
+
+ return (term) ? std::string(term, len) : std::string();
+}
+
+Glib::RefPtr<IOSource> IOChannel::create_watch(IOCondition condition)
+{
+ // The corresponding unreference() takes place in the dtor
+ // of the Glib::RefPtr<IOChannel> object below.
+ reference();
+ return IOSource::create(Glib::RefPtr<IOChannel>(this), condition);
+}
+
+IOStatus IOChannel::read_vfunc(char*, gsize, gsize&)
+{
+ g_assert_not_reached();
+ return IO_STATUS_ERROR;
+}
+
+IOStatus IOChannel::write_vfunc(const char*, gsize, gsize&)
+{
+ g_assert_not_reached();
+ return IO_STATUS_ERROR;
+}
+
+IOStatus IOChannel::seek_vfunc(gint64, SeekType)
+{
+ g_assert_not_reached();
+ return IO_STATUS_ERROR;
+}
+
+IOStatus IOChannel::close_vfunc()
+{
+ g_assert_not_reached();
+ return IO_STATUS_ERROR;
+}
+
+Glib::RefPtr<Glib::Source> IOChannel::create_watch_vfunc(IOCondition)
+{
+ g_assert_not_reached();
+ return Glib::RefPtr<Glib::Source>();
+}
+
+IOStatus IOChannel::set_flags_vfunc(IOFlags)
+{
+ g_assert_not_reached();
+ return IO_STATUS_ERROR;
+}
+
+IOFlags IOChannel::get_flags_vfunc()
+{
+ g_assert_not_reached();
+ return IOFlags(0);
+}
+
+void IOChannel::reference() const
+{
+ g_io_channel_ref(gobject_);
+}
+
+void IOChannel::unreference() const
+{
+ g_io_channel_unref(gobject_);
+}
+
+Glib::RefPtr<IOChannel> wrap(GIOChannel* gobject, bool take_copy)
+{
+ IOChannel* cpp_object = 0;
+
+ if(gobject)
+ {
+ if(gobject->funcs == &GlibmmIOChannel::vfunc_table)
+ {
+ cpp_object = reinterpret_cast<GlibmmIOChannel*>(gobject)->wrapper;
+
+ if(take_copy && cpp_object)
+ cpp_object->reference();
+ }
+ else
+ {
+ cpp_object = new ForeignIOChannel(gobject, take_copy);
+ cpp_object->reference(); // the refcount is initially 0
+ }
+ }
+
+ return Glib::RefPtr<IOChannel>(cpp_object);
+}
+
+
+/**** Glib::GlibmmIOChannel ************************************************/
+
+// static
+GIOStatus GlibmmIOChannel::io_read(GIOChannel* channel, char* buf, gsize count,
+ gsize* bytes_read, GError** err)
+{
+ if(!&err) err = err; //Avoid an unused parameter warning when GLIBMM_EXCEPTIONS_ENABLED is used.
+
+ IOChannel *const wrapper = reinterpret_cast<GlibmmIOChannel*>(channel)->wrapper;
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ return (GIOStatus) wrapper->read_vfunc(buf, count, *bytes_read);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(Glib::Error& error)
+ {
+ error.propagate(err);
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return G_IO_STATUS_ERROR;
+}
+
+// static
+GIOStatus GlibmmIOChannel::io_write(GIOChannel* channel, const char* buf, gsize count,
+ gsize* bytes_written, GError** err)
+{
+ if(!&err) err = err; //Avoid an unused parameter warning when GLIBMM_EXCEPTIONS_ENABLED is used.
+
+ IOChannel *const wrapper = reinterpret_cast<GlibmmIOChannel*>(channel)->wrapper;
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ return (GIOStatus) wrapper->write_vfunc(buf, count, *bytes_written);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(Glib::Error& error)
+ {
+ error.propagate(err);
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return G_IO_STATUS_ERROR;
+}
+
+// static
+GIOStatus GlibmmIOChannel::io_seek(GIOChannel* channel, gint64 offset, GSeekType type, GError** err)
+{
+ if(!&err) err = err; //Avoid an unused parameter warning when GLIBMM_EXCEPTIONS_ENABLED is used.
+
+ IOChannel *const wrapper = reinterpret_cast<GlibmmIOChannel*>(channel)->wrapper;
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ return (GIOStatus) wrapper->seek_vfunc(offset, (SeekType) type);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(Glib::Error& error)
+ {
+ error.propagate(err);
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return G_IO_STATUS_ERROR;
+}
+
+// static
+GIOStatus GlibmmIOChannel::io_close(GIOChannel* channel, GError** err)
+{
+ if(!&err) err = err; //Avoid an unused parameter warning when GLIBMM_EXCEPTIONS_ENABLED is used.
+
+ IOChannel *const wrapper = reinterpret_cast<GlibmmIOChannel*>(channel)->wrapper;
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ return (GIOStatus) wrapper->close_vfunc();
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(Glib::Error& error)
+ {
+ error.propagate(err);
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ return G_IO_STATUS_ERROR;
+}
+
+// static
+GSource* GlibmmIOChannel::io_create_watch(GIOChannel* channel, GIOCondition condition)
+{
+ IOChannel *const wrapper = reinterpret_cast<GlibmmIOChannel*>(channel)->wrapper;
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ const Glib::RefPtr<Source> source = wrapper->create_watch_vfunc((IOCondition) condition);
+ return (source) ? source->gobj_copy() : 0;
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return 0;
+}
+
+// static
+void GlibmmIOChannel::io_free(GIOChannel* channel)
+{
+ if(IOChannel *const wrapper = reinterpret_cast<GlibmmIOChannel*>(channel)->wrapper)
+ {
+ wrapper->gobject_ = 0;
+ delete wrapper;
+ }
+
+ g_free(channel);
+}
+
+// static
+GIOStatus GlibmmIOChannel::io_set_flags(GIOChannel* channel, GIOFlags flags, GError** err)
+{
+ if(!&err) err = err; //Avoid an unused parameter warning when GLIBMM_EXCEPTIONS_ENABLED is used.
+
+ IOChannel *const wrapper = reinterpret_cast<GlibmmIOChannel*>(channel)->wrapper;
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ return (GIOStatus) wrapper->set_flags_vfunc((IOFlags) flags);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(Glib::Error& error)
+ {
+ error.propagate(err);
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return G_IO_STATUS_ERROR;
+}
+
+// static
+GIOFlags GlibmmIOChannel::io_get_flags(GIOChannel* channel)
+{
+ IOChannel *const wrapper = reinterpret_cast<GlibmmIOChannel*>(channel)->wrapper;
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ return (GIOFlags) wrapper->get_flags_vfunc();
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return GIOFlags(0);
+}
+
+} // namespace Glib
+
+
+namespace
+{
+} // anonymous namespace
+
+
+Glib::IOChannelError::IOChannelError(Glib::IOChannelError::Code error_code, const Glib::ustring& error_message)
+:
+ Glib::Error (G_IO_CHANNEL_ERROR, error_code, error_message)
+{}
+
+Glib::IOChannelError::IOChannelError(GError* gobject)
+:
+ Glib::Error (gobject)
+{}
+
+Glib::IOChannelError::Code Glib::IOChannelError::code() const
+{
+ return static_cast<Code>(Glib::Error::code());
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+void Glib::IOChannelError::throw_func(GError* gobject)
+{
+ throw Glib::IOChannelError(gobject);
+}
+#else
+//When not using exceptions, we just pass the Exception object around without throwing it:
+std::auto_ptr<Glib::Error> Glib::IOChannelError::throw_func(GError* gobject)
+{
+ return std::auto_ptr<Glib::Error>(new Glib::IOChannelError(gobject));
+}
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+namespace Glib
+{
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+IOStatus IOChannel::read(gunichar& unichar)
+#else
+IOStatus IOChannel::read(gunichar& unichar, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ IOStatus retvalue = ((IOStatus)(g_io_channel_read_unichar(gobj(), &(unichar), &(gerror))));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return retvalue;
+
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+IOStatus IOChannel::read(char* buf, gsize count, gsize& bytes_read)
+#else
+IOStatus IOChannel::read(char* buf, gsize count, gsize& bytes_read, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ IOStatus retvalue = ((IOStatus)(g_io_channel_read_chars(gobj(), buf, count, &(bytes_read), &(gerror))));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return retvalue;
+
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+IOStatus IOChannel::write(const char* buf, gssize count, gsize& bytes_written)
+#else
+IOStatus IOChannel::write(const char* buf, gssize count, gsize& bytes_written, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ IOStatus retvalue = ((IOStatus)(g_io_channel_write_chars(gobj(), buf, count, &(bytes_written), &(gerror))));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return retvalue;
+
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+IOStatus IOChannel::write(gunichar unichar)
+#else
+IOStatus IOChannel::write(gunichar unichar, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ IOStatus retvalue = ((IOStatus)(g_io_channel_write_unichar(gobj(), unichar, &(gerror))));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return retvalue;
+
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+IOStatus IOChannel::seek(gint64 offset, SeekType type)
+#else
+IOStatus IOChannel::seek(gint64 offset, SeekType type, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ IOStatus retvalue = ((IOStatus)(g_io_channel_seek_position(gobj(), offset, ((GSeekType)(type)), &(gerror))));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return retvalue;
+
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+IOStatus IOChannel::flush()
+#else
+IOStatus IOChannel::flush(std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ IOStatus retvalue = ((IOStatus)(g_io_channel_flush(gobj(), &(gerror))));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return retvalue;
+
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+IOStatus IOChannel::close(bool flush)
+#else
+IOStatus IOChannel::close(bool flush, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ IOStatus retvalue = ((IOStatus)(g_io_channel_shutdown(gobj(), static_cast<int>(flush), &(gerror))));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return retvalue;
+
+}
+
+gsize IOChannel::get_buffer_size() const
+{
+ return g_io_channel_get_buffer_size(const_cast<GIOChannel*>(gobj()));
+}
+
+void IOChannel::set_buffer_size(gsize size)
+{
+g_io_channel_set_buffer_size(gobj(), size);
+}
+
+IOFlags IOChannel::get_flags() const
+{
+ return ((IOFlags)(g_io_channel_get_flags(const_cast<GIOChannel*>(gobj()))));
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+IOStatus IOChannel::set_flags(IOFlags flags)
+#else
+IOStatus IOChannel::set_flags(IOFlags flags, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ IOStatus retvalue = ((IOStatus)(g_io_channel_set_flags(gobj(), ((GIOFlags)(flags)), &(gerror))));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return retvalue;
+
+}
+
+void IOChannel::set_buffered(bool buffered)
+{
+g_io_channel_set_buffered(gobj(), static_cast<int>(buffered));
+}
+
+bool IOChannel::get_buffered() const
+{
+ return g_io_channel_get_buffered(const_cast<GIOChannel*>(gobj()));
+}
+
+IOCondition IOChannel::get_buffer_condition() const
+{
+ return ((IOCondition)(g_io_channel_get_buffer_condition(const_cast<GIOChannel*>(gobj()))));
+}
+
+bool IOChannel::get_close_on_unref() const
+{
+ return g_io_channel_get_close_on_unref(const_cast<GIOChannel*>(gobj()));
+}
+
+void IOChannel::set_close_on_unref(bool do_close)
+{
+g_io_channel_set_close_on_unref(gobj(), static_cast<int>(do_close));
+}
+
+
+} // namespace Glib
+
+
diff --git a/libs/glibmm2/glib/glibmm/iochannel.h b/libs/glibmm2/glib/glibmm/iochannel.h
new file mode 100644
index 0000000000..5ecc5cf8c1
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/iochannel.h
@@ -0,0 +1,766 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_IOCHANNEL_H
+#define _GLIBMM_IOCHANNEL_H
+
+
+// -*- c++ -*-
+/* $Id: iochannel.hg,v 1.8 2006/05/12 08:08:44 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <glibmm/error.h>
+#include <glibmm/main.h>
+#include <glibmm/refptr.h>
+#include <glibmm/ustring.h>
+#include <glib/gtypes.h>
+
+#include <string>
+#include <glibmmconfig.h>
+
+GLIBMM_USING_STD(string)
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GIOChannel GIOChannel; }
+#endif
+
+
+namespace Glib
+{
+
+class Source;
+class IOSource;
+
+/** @addtogroup glibmmEnums Enums and Flags */
+
+/**
+ * @ingroup glibmmEnums
+ */
+enum SeekType
+{
+ SEEK_TYPE_CUR,
+ SEEK_TYPE_SET,
+ SEEK_TYPE_END
+};
+
+
+/**
+ * @ingroup glibmmEnums
+ */
+enum IOStatus
+{
+ IO_STATUS_ERROR,
+ IO_STATUS_NORMAL,
+ IO_STATUS_EOF,
+ IO_STATUS_AGAIN
+};
+
+
+/**
+ * @ingroup glibmmEnums
+ * @par Bitwise operators:
+ * <tt>%IOFlags operator|(IOFlags, IOFlags)</tt><br>
+ * <tt>%IOFlags operator&(IOFlags, IOFlags)</tt><br>
+ * <tt>%IOFlags operator^(IOFlags, IOFlags)</tt><br>
+ * <tt>%IOFlags operator~(IOFlags)</tt><br>
+ * <tt>%IOFlags& operator|=(IOFlags&, IOFlags)</tt><br>
+ * <tt>%IOFlags& operator&=(IOFlags&, IOFlags)</tt><br>
+ * <tt>%IOFlags& operator^=(IOFlags&, IOFlags)</tt><br>
+ */
+enum IOFlags
+{
+ IO_FLAG_APPEND = 1 << 0,
+ IO_FLAG_NONBLOCK = 1 << 1,
+ IO_FLAG_IS_READABLE = 1 << 2,
+ IO_FLAG_IS_WRITEABLE = 1 << 3,
+ IO_FLAG_IS_SEEKABLE = 1 << 4,
+ IO_FLAG_GET_MASK = 0x0,
+ IO_FLAG_SET_MASK = 0x1
+};
+
+/** @ingroup glibmmEnums */
+inline IOFlags operator|(IOFlags lhs, IOFlags rhs)
+ { return static_cast<IOFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline IOFlags operator&(IOFlags lhs, IOFlags rhs)
+ { return static_cast<IOFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline IOFlags operator^(IOFlags lhs, IOFlags rhs)
+ { return static_cast<IOFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline IOFlags operator~(IOFlags flags)
+ { return static_cast<IOFlags>(~static_cast<unsigned>(flags)); }
+
+/** @ingroup glibmmEnums */
+inline IOFlags& operator|=(IOFlags& lhs, IOFlags rhs)
+ { return (lhs = static_cast<IOFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); }
+
+/** @ingroup glibmmEnums */
+inline IOFlags& operator&=(IOFlags& lhs, IOFlags rhs)
+ { return (lhs = static_cast<IOFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); }
+
+/** @ingroup glibmmEnums */
+inline IOFlags& operator^=(IOFlags& lhs, IOFlags rhs)
+ { return (lhs = static_cast<IOFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs))); }
+
+
+/** Exception class for IOChannel errors.
+ */
+class IOChannelError : public Glib::Error
+{
+public:
+ enum Code
+ {
+ FILE_TOO_BIG,
+ INVALID_ARGUMENT,
+ IO_ERROR,
+ IS_DIRECTORY,
+ NO_SPACE_LEFT,
+ NO_SUCH_DEVICE,
+ OVERFLOWN,
+ BROKEN_PIPE,
+ FAILED
+ };
+
+ IOChannelError(Code error_code, const Glib::ustring& error_message);
+ explicit IOChannelError(GError* gobject);
+ Code code() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+private:
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ static void throw_func(GError* gobject);
+#else
+ //When not using exceptions, we just pass the Exception object around without throwing it:
+ static std::auto_ptr<Glib::Error> throw_func(GError* gobject);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ friend void wrap_init(); // uses throw_func()
+#endif
+};
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+class GlibmmIOChannel;
+#endif
+
+/** IOChannel aims to provide portable I/O support for files, pipes
+ * and sockets, and to integrate them with the GLib main event loop.
+ *
+ * Note that IOChannels implement an automatic implicit character set
+ * conversion to the data stream, and usually will not pass by default
+ * binary data unchanged. To set the encoding of the channel, use e.g.
+ * set_encoding("ISO-8859-15"). To set the channel to no encoding, use
+ * set_encoding() without any arguments.
+ *
+ * You can create an IOChannel with one of the static create methods, or
+ * implement one yourself, in which case you have to 1)&nbsp;override all
+ * _vfunc() members. 2)&nbsp;set the GIOChannel flags in your constructor.
+ *
+ * @note This feature of being able to implement a custom Glib::IOChannel is
+ * deprecated in glibmm&nbsp;2.2. The vfunc interface has not yet stabilized
+ * enough to allow that -- the C++ wrapper went in by pure accident. Besides,
+ * it isn't terribly useful either. Thus please refrain from overriding any
+ * IOChannel vfuncs.
+ */
+class IOChannel : public sigc::trackable
+{
+ public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ typedef IOChannel CppObjectType;
+ typedef GIOChannel BaseObjectType;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+private:
+
+
+public:
+ virtual ~IOChannel();
+
+ /** Open a file @a filename as an I/O channel using mode @a mode.
+ * This channel will be closed when the last reference to it is dropped,
+ * so there is no need to call close() (though doing so will not cause
+ * problems, as long as no attempt is made to access the channel after
+ * it is closed).
+ * @param filename The name of the file to open.
+ * @param mode One of <tt>"r"</tt>, <tt>"w"</tt>, <tt>"a"</tt>,
+ * <tt>"r+"</tt>, <tt>"w+"</tt>, <tt>"a+"</tt>. These have the
+ * same meaning as in <tt>fopen()</tt>.
+ * @return An IOChannel for the opened file.
+ * @throw Glib::FileError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ static Glib::RefPtr<IOChannel> create_from_file(const std::string& filename, const std::string& mode);
+#else
+ static Glib::RefPtr<IOChannel> create_from_file(const std::string& filename, const std::string& mode, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Creates an I/O channel from a file descriptor.
+ * On Unix, IOChannels created with this function work for any file
+ * descriptor or socket.
+ *
+ * On Win32, this can be used either for files opened with the MSVCRT (the
+ * Microsoft run-time C library) <tt>_open()</tt> or <tt>_pipe()</tt>,
+ * including file descriptors 0, 1 and 2 (corresponding to <tt>stdin</tt>,
+ * <tt>stdout</tt> and <tt>stderr</tt>), or for Winsock <tt>SOCKET</tt>s. If
+ * the parameter is a legal file descriptor, it is assumed to be such,
+ * otherwise it should be a <tt>SOCKET</tt>. This relies on <tt>SOCKET</tt>s
+ * and file descriptors not overlapping. If you want to be certain, call
+ * either create_from_win32_fd() or create_from_win32_socket() instead as
+ * appropriate.
+ *
+ * The term file descriptor as used in the context of Win32 refers to the
+ * emulated Unix-like file descriptors MSVCRT provides. The native
+ * corresponding concept is file <tt>HANDLE</tt>. There isn't as of yet
+ * a way to get IOChannels for Win32 file <tt>HANDLE</tt>s.
+ */
+ static Glib::RefPtr<IOChannel> create_from_fd(int fd);
+
+
+/* defined(DOXYGEN_SHOULD_SKIP_THIS) actually does the opposite of what it looks like... */
+#if defined(G_OS_WIN32) || defined(DOXYGEN_SHOULD_SKIP_THIS)
+
+ /** Create an I/O channel for C runtime (emulated Unix-like) file descriptors.
+ * After calling add_watch() on a I/O channel returned by this function, you
+ * shouldn't call read() on the file descriptor. This is because adding
+ * polling for a file descriptor is implemented on Win32 by starting a thread
+ * that sits blocked in a <tt>%read()</tt> from the file descriptor most of
+ * the time. All reads from the file descriptor should be done by this
+ * internal GLib thread. Your code should call only IOChannel::read().
+ */
+ static Glib::RefPtr<IOChannel> create_from_win32_fd(int fd);
+
+
+ /** Create an I/O channel for a winsock socket. The parameter should be a
+ * <tt>SOCKET</tt>. Contrary to I/O channels for file descriptors (on Win32),
+ * you can use normal <tt>recv()</tt> or <tt>recvfrom()</tt> on sockets even
+ * if GLib is polling them.
+ */
+ static Glib::RefPtr<IOChannel> create_from_win32_socket(int socket);
+
+
+#endif /* defined(G_OS_WIN32) || defined(DOXYGEN_SHOULD_SKIP_THIS) */
+
+ /** Read a single UCS-4 character.
+ * @retval unichar The Unicode character.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+
+ /** This function cannot be called on a channel with <tt>0</tt> encoding.
+ * @param thechar A location to return a character.
+ * @param error A location to return an error of type G::ConvertError
+ * or G::IOChannelError.
+ * @return A G::IOStatus.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ IOStatus read(gunichar& unichar);
+#else
+ IOStatus read(gunichar& unichar, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Read a character sequence into memory.
+ * @param buf A buffer to read data into.
+ * @param count The size of the buffer in bytes. Note that the buffer may
+ * not be complelely filled even if there is data in the buffer if the
+ * remaining data is not a complete character.
+ * @retval bytes_read The number of bytes read. This may be zero even on
+ * success if @a count < 6 and the channel's encoding is not <tt>""</tt>.
+ * This indicates that the next UTF-8 character is too wide for the buffer.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+
+ /** Replacement for g_io_channel_read() with the new API.
+ * @param buf A buffer to read data into.
+ * @param count The size of the buffer. Note that the buffer may
+ * not be complelely filled even if there is data
+ * in the buffer if the remaining data is not a
+ * complete character.
+ * @param bytes_read The number of bytes read. This may be zero even on
+ * success if count &lt; 6 and the channel's encoding is non-<tt>0</tt>.
+ * This indicates that the next UTF-8 character is too wide for
+ * the buffer.
+ * @param error A location to return an error of type G::ConvertError
+ * or G::IOChannelError.
+ * @return The status of the operation.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ IOStatus read(char* buf, gsize count, gsize& bytes_read);
+#else
+ IOStatus read(char* buf, gsize count, gsize& bytes_read, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Read a maximum of @a count bytes into @a str.
+ * @param count The maximum number of bytes to read.
+ * @retval str The characters that have been read.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ IOStatus read(Glib::ustring& str, gsize count);
+#else
+ IOStatus read(Glib::ustring& str, gsize count, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ /** Read a whole line.
+ * Reads until the line separator is found, which is included
+ * in the result string.
+ * @retval line The line that was read.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ IOStatus read_line(Glib::ustring& line);
+#else
+ IOStatus read_line(Glib::ustring& line, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Reads all the remaining data from the file.
+ * @retval str The resulting string.
+ * @return Glib::IO_STATUS_NORMAL on success. This function never
+ * returns Glib::IO_STATUS_EOF.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ IOStatus read_to_end(Glib::ustring& str);
+#else
+ IOStatus read_to_end(Glib::ustring& str, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Write a string to the I/O channel.
+ * Note that this method does not return the number of characters written.
+ * If the channel is blocking and the returned value is
+ * Glib::IO_STATUS_NORMAL, the whole string was written.
+ * @param str the string to write.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ IOStatus write(const Glib::ustring& str);
+#else
+ IOStatus write(const Glib::ustring& str, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ /** Write a memory area of @a count bytes to the I/O channel.
+ * @param buf The start of the memory area.
+ * @param count The number of bytes to write.
+ * @retval bytes_written The number of bytes written to the channel.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+
+ /** Replacement for g_io_channel_write() with the new API.
+ *
+ * On seekable channels with encodings other than <tt>0</tt> or UTF-8, generic
+ * mixing of reading and writing is not allowed. A call to g_io_channel_write_chars()
+ * may only be made on a channel from which data has been read in the
+ * cases described in the documentation for g_io_channel_set_encoding().
+ * @param buf A buffer to write data from.
+ * @param count The size of the buffer. If -1, the buffer
+ * is taken to be a nul-terminated string.
+ * @param bytes_written The number of bytes written. This can be nonzero
+ * even if the return value is not G::IO_STATUS_NORMAL.
+ * If the return value is G::IO_STATUS_NORMAL and the
+ * channel is blocking, this will always be equal
+ * to @a count if @a count &gt;= 0.
+ * @param error A location to return an error of type G::ConvertError
+ * or G::IOChannelError.
+ * @return The status of the operation.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ IOStatus write(const char* buf, gssize count, gsize& bytes_written);
+#else
+ IOStatus write(const char* buf, gssize count, gsize& bytes_written, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Write a single UCS-4 character to the I/O channel.
+ * @param unichar The character to write.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+
+ /** This function cannot be called on a channel with <tt>0</tt> encoding.
+ * @param thechar A character.
+ * @param error A location to return an error of type G::ConvertError
+ * or G::IOChannelError.
+ * @return A G::IOStatus.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ IOStatus write(gunichar unichar);
+#else
+ IOStatus write(gunichar unichar, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Seek the I/O channel to a specific position.
+ * @param offset The offset in bytes from the position specified by @a type.
+ * @param type A SeekType. The type Glib::SEEK_TYPE_CUR is only allowed in
+ * those cases where a call to set_encoding() is allowed. See the
+ * documentation for set_encoding() for details.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+
+ /** Replacement for g_io_channel_seek() with the new API.
+ * @param offset The offset in bytes from the position specified by @a type .
+ * @param type A G::SeekType. The type G::SEEK_CUR is only allowed in those
+ * cases where a call to g_io_channel_set_encoding()
+ * is allowed. See the documentation for
+ * g_io_channel_set_encoding() for details.
+ * @param error A location to return an error of type G::IOChannelError.
+ * @return The status of the operation.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ IOStatus seek(gint64 offset, SeekType type = SEEK_TYPE_SET);
+#else
+ IOStatus seek(gint64 offset, SeekType type, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Flush the buffers of the I/O channel.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+
+ /** Flushes the write buffer for the GIOChannel.
+ * @param error Location to store an error of type G::IOChannelError.
+ * @return The status of the operation: One of
+ * G::IO_CHANNEL_NORMAL, G::IO_CHANNEL_AGAIN, or
+ * G::IO_CHANNEL_ERROR.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ IOStatus flush();
+#else
+ IOStatus flush(std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Close the I/O channel.
+ * Any pending data to be written will be flushed if @a flush is <tt>true</tt>.
+ * The channel will not be freed until the last reference is dropped.
+ * Accessing the channel after closing it is considered an error.
+ * @param flush Whether to flush() pending data before closing the channel.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ */
+
+ /** Close an IO channel. Any pending data to be written will be
+ * flushed if @a flush is <tt>true</tt>. The channel will not be freed until the
+ * last reference is dropped using g_io_channel_unref().
+ * @param flush If <tt>true</tt>, flush pending.
+ * @param err Location to store a G::IOChannelError.
+ * @return The status of the operation.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ IOStatus close(bool flush = true);
+#else
+ IOStatus close(bool flush, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Get the IOChannel internal buffer size.
+ * @return The buffer size.
+ */
+
+ /** Gets the buffer size.
+ * @return The size of the buffer.
+ */
+ gsize get_buffer_size() const;
+
+ /** Set the internal IOChannel buffer size.
+ * @param size The buffer size the IOChannel should use.
+ */
+
+ /** Sets the buffer size.
+ * @param size The size of the buffer. 0 == pick a good size.
+ */
+ void set_buffer_size(gsize size);
+
+ /** Get the current flags for a IOChannel, including read-only
+ * flags such as Glib::IO_FLAG_IS_READABLE.
+ *
+ * The values of the flags Glib::IO_FLAG_IS_READABLE and
+ * Glib::IO_FLAG_IS_WRITEABLE are cached for internal use by the channel when
+ * it is created. If they should change at some later point (e.g. partial
+ * shutdown of a socket with the UNIX <tt>shutdown()</tt> function), the user
+ * should immediately call get_flags() to update the internal values of these
+ * flags.
+ * @return Bitwise combination of the flags set on the channel.
+ */
+
+ /** Gets the current flags for a G::IOChannel, including read-only
+ * flags such as G::IO_FLAG_IS_READABLE.
+ *
+ * The values of the flags G::IO_FLAG_IS_READABLE and G::IO_FLAG_IS_WRITEABLE
+ * are cached for internal use by the channel when it is created.
+ * If they should change at some later point (e.g. partial shutdown
+ * of a socket with the UNIX shutdown() function), the user
+ * should immediately call g_io_channel_get_flags() to update
+ * the internal values of these flags.
+ * @return The flags which are set on the channel.
+ */
+ IOFlags get_flags() const;
+
+ /** Set flags on the IOChannel.
+ * @param flags Bitwise combination of the flags to set.
+ * @return The operation result code.
+ * @throw Glib::IOChannelError
+ */
+
+ /** Sets the (writeable) flags in @a channel to ( @a flags & G::IO_CHANNEL_SET_MASK).
+ * @param flags The flags to set on the IO channel.
+ * @param error A location to return an error of type G::IOChannelError.
+ * @return The status of the operation.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ IOStatus set_flags(IOFlags flags);
+#else
+ IOStatus set_flags(IOFlags flags, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Set the buffering status of the I/O channel.
+ * The buffering state can only be set if the channel's encoding is
+ * <tt>""</tt>. For any other encoding, the channel must be buffered.
+ *
+ * A buffered channel can only be set unbuffered if the channel's internal
+ * buffers have been flushed. Newly created channels or channels which have
+ * returned Glib::IO_STATUS_EOF not require such a flush. For write-only
+ * channels, a call to flush() is sufficient. For all other channels, the
+ * buffers may be flushed by a call to seek(). This includes the possibility
+ * of seeking with seek type Glib::SEEK_TYPE_CUR and an offset of zero. Note
+ * that this means that socket-based channels cannot be set unbuffered once
+ * they have had data read from them.
+ *
+ * The default state of the channel is buffered.
+ *
+ * @param buffered Whether to set the channel buffered or unbuffered.
+ */
+
+ /** The buffering state can only be set if the channel's encoding
+ * is <tt>0</tt>. For any other encoding, the channel must be buffered.
+ *
+ * A buffered channel can only be set unbuffered if the channel's
+ * internal buffers have been flushed. Newly created channels or
+ * channels which have returned G::IO_STATUS_EOF
+ * not require such a flush. For write-only channels, a call to
+ * g_io_channel_flush() is sufficient. For all other channels,
+ * the buffers may be flushed by a call to g_io_channel_seek_position().
+ * This includes the possibility of seeking with seek type G::SEEK_CUR
+ * and an offset of zero. Note that this means that socket-based
+ * channels cannot be set unbuffered once they have had data
+ * read from them.
+ *
+ * On unbuffered channels, it is safe to mix read and write
+ * calls from the new and old APIs, if this is necessary for
+ * maintaining old code.
+ *
+ * The default state of the channel is buffered.
+ * @param buffered Whether to set the channel buffered or unbuffered.
+ */
+ void set_buffered(bool buffered);
+
+ /** Get the buffering status of the I/O channel.
+ * @return The buffering status of the channel.
+ */
+
+ /** Returns whether @a channel is buffered.
+ * @return <tt>true</tt> if the @a channel is buffered.
+ */
+ bool get_buffered() const;
+
+ /** Returns an IOCondition depending on whether there is data to be
+ * read/space to write data in the internal buffers in the I/O channel.
+ * Only the flags Glib::IO_IN and Glib::IO_OUT may be set.
+ * @return Bitwise combination of Glib::IOCondition flags.
+ */
+
+ /** This function returns a G::IOCondition depending on whether there
+ * is data to be read/space to write data in the
+ * internal buffers in the G::IOChannel. Only the flags G::IO_IN and
+ * G::IO_OUT may be set.
+ * @return A G::IOCondition.
+ */
+ IOCondition get_buffer_condition() const;
+
+ /** Returns whether the file/socket/whatever associated with the I/O channel
+ * will be closed when the channel receives its final unref and is destroyed.
+ * The default value of this is <tt>true</tt> for channels created by
+ * create_from_file(), and <tt>false</tt> for all other channels.
+ * @return Whether the channel will be closed on the final unref of the
+ * IOChannel object.
+ */
+
+ /** Returns whether the file/socket/whatever associated with @a channel
+ * will be closed when @a channel receives its final unref and is
+ * destroyed. The default value of this is <tt>true</tt> for channels created
+ * by g_io_channel_new_file(), and <tt>false</tt> for all other channels.
+ * @return Whether the channel will be closed on the final unref of
+ * the GIOChannel data structure.
+ */
+ bool get_close_on_unref() const;
+
+ /** Setting this flag to <tt>true</tt> for a channel you have already closed
+ * can cause problems.
+ * @param do_close Whether to close the channel on the final unref of the
+ * IOChannel object. The default value of this is <tt>true</tt> for channels
+ * created by create_from_file(), and <tt>false</tt> for all other channels.
+ */
+
+ /** Setting this flag to <tt>true</tt> for a channel you have already closed
+ * can cause problems.
+ * @param do_close Whether to close the channel on the final unref of
+ * the GIOChannel data structure. The default value of
+ * this is <tt>true</tt> for channels created by g_io_channel_new_file(),
+ * and <tt>false</tt> for all other channels.
+ */
+ void set_close_on_unref(bool do_close);
+
+ /** Sets the encoding for the input/output of the channel.
+ * The internal encoding is always UTF-8. The default encoding for the
+ * external file is UTF-8. The encoding <tt>""</tt> is safe to use with
+ * binary data.
+ *
+ * The encoding can only be set if one of the following conditions
+ * is true:
+ *
+ * -# The channel was just created, and has not been written to or read from
+ * yet.
+ * -# The channel is write-only.
+ * -# The channel is a file, and the file pointer was just repositioned by a
+ * call to seek_position(). (This flushes all the internal buffers.)
+ * -# The current encoding is <tt>""</tt> or UTF-8.
+ * -# One of the read methods has just returned Glib::IO_STATUS_EOF (or, in
+ * the case of read_to_end(), Glib::IO_STATUS_NORMAL).
+ * -# The read() method has returned Glib::IO_STATUS_AGAIN or thrown
+ * a Glib::Error exception. This may be useful in the case of
+ * ConvertError::ILLEGAL_SEQUENCE. Returning one of these statuses
+ * from read_line() or read_to_end() does <em>not</em> guarantee that
+ * the encoding can be changed.
+ *
+ * Channels which do not meet one of the above conditions cannot call
+ * seek_position() with a seek type of Glib::SEEK_TYPE_CUR and, if they
+ * are "seekable", cannot call write() after calling one of the API
+ * "read" methods.
+ *
+ * @param encoding The encoding name, or <tt>""</tt> for binary.
+ * @return Glib::IO_STATUS_NORMAL if the encoding was successfully set.
+ * @throw Glib::IOChannelError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ IOStatus set_encoding(const std::string& encoding = std::string());
+#else
+ IOStatus set_encoding(const std::string& encoding, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Get the encoding of the I/O channel.
+ * @return The current encoding of the channel.
+ */
+ std::string get_encoding() const;
+
+
+ void set_line_term(const std::string& term = std::string());
+
+
+ std::string get_line_term() const;
+
+
+ /** Creates an IOSource object.
+ * Create a slot from a function to be called when condition is met
+ * for the channel with sigc::ptr_fun() or sigc::mem_fun() and pass
+ * it into the connect() function of the returned IOSource object.
+ * Polling of the channel will start when you attach a MainContext
+ * object to the returned IOSource object using its attach() function.
+ *
+ * Glib::signal_io().connect() is a simpler interface to the same
+ * functionality, for the case where you want to add the source to the
+ * default main context.
+ * @param condition The condition to watch for.
+ * @return An IOSource object that can be polled from a MainContext's event loop.
+ */
+ Glib::RefPtr<IOSource> create_watch(IOCondition condition);
+
+
+ virtual void reference() const;
+ virtual void unreference() const;
+
+
+ GIOChannel* gobj() { return gobject_; }
+ const GIOChannel* gobj() const { return gobject_; }
+
+protected:
+ GIOChannel* gobject_;
+
+ /** Constructor that should be used by derived classes.
+ * Use this constructor if you want to inherit from IOChannel.
+ * It will set up a GIOChannel that will call the vfuncs of your
+ * class even if it is being used from C code, and it will keep
+ * a reference to the C++ code while the GIOChannel exists.
+ */
+ IOChannel();
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ IOChannel(GIOChannel* gobject, bool take_copy);
+#endif
+
+ virtual IOStatus read_vfunc(char* buf, gsize count, gsize& bytes_read);
+ virtual IOStatus write_vfunc(const char* buf, gsize count, gsize& bytes_written);
+ virtual IOStatus seek_vfunc(gint64 offset, SeekType type);
+ virtual IOStatus close_vfunc();
+ virtual IOStatus set_flags_vfunc(IOFlags flags);
+ virtual IOFlags get_flags_vfunc();
+ virtual Glib::RefPtr<Glib::Source> create_watch_vfunc(IOCondition cond);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ friend class Glib::GlibmmIOChannel;
+#endif
+
+
+};
+
+Glib::RefPtr<IOChannel> wrap(GIOChannel* gobject, bool take_copy = false);
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_IOCHANNEL_H */
+
diff --git a/libs/glibmm2/glib/glibmm/keyfile.cc b/libs/glibmm2/glib/glibmm/keyfile.cc
new file mode 100644
index 0000000000..541f1e9bfc
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/keyfile.cc
@@ -0,0 +1,526 @@
+// Generated by gtkmmproc -- DO NOT MODIFY!
+
+
+#include <glibmm/keyfile.h>
+#include <glibmm/private/keyfile_p.h>
+
+/* Copyright 2006 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+namespace Glib
+{
+
+/**** Glib::KeyFile ********************************************************/
+
+KeyFile::KeyFile()
+{
+ gobject_ = g_key_file_new();
+ owns_gobject_ = true;
+}
+
+KeyFile::KeyFile(GKeyFile* castitem, bool takes_ownership)
+{
+ gobject_ = castitem;
+ owns_gobject_ = takes_ownership;
+}
+
+KeyFile::~KeyFile()
+{
+ if (owns_gobject_)
+ g_key_file_free(gobject_);
+}
+
+bool KeyFile::load_from_data(const Glib::ustring& data, KeyFileFlags flags)
+{
+ GError *error = 0;
+ bool retvalue = g_key_file_load_from_data(gobj(), data.c_str(), data.bytes(), ((GKeyFileFlags)(flags)), &(error));
+ if(error) :: Glib::Error::throw_exception(error);
+ return retvalue;
+}
+
+bool KeyFile::load_from_data_dirs(const std::string& file, std::string& full_path, KeyFileFlags flags)
+{
+ GError *error = 0;
+ char *full_path_c;
+ bool retvalue = g_key_file_load_from_data_dirs(gobj(), file.c_str(), &full_path_c, ((GKeyFileFlags)(flags)), &(error));
+ full_path = Glib::convert_return_gchar_ptr_to_ustring(full_path_c);
+ if(error) :: Glib::Error::throw_exception(error);
+ return retvalue;
+}
+
+Glib::ustring KeyFile::to_data()
+{
+ GError *error = 0;
+ gsize size;
+ Glib::ustring retvalue = Glib::convert_return_gchar_ptr_to_ustring(g_key_file_to_data(gobj(), &size, &error));
+ if(error) :: Glib::Error::throw_exception(error);
+ return retvalue;
+}
+
+Glib::ArrayHandle<Glib::ustring> KeyFile::get_groups() const
+{
+ gchar** group_names = 0;
+ gsize number_of_groups = 0;
+ group_names = g_key_file_get_groups(const_cast<GKeyFile*>(gobj()), &number_of_groups);
+ return Glib::ArrayHandle<Glib::ustring>(group_names, number_of_groups, Glib::OWNERSHIP_DEEP);
+}
+
+Glib::ArrayHandle<Glib::ustring> KeyFile::get_keys(const Glib::ustring& group_name) const
+{
+ gchar** key_names = 0;
+ gsize number_of_keys = 0;
+ GError* error = 0;
+ key_names = g_key_file_get_keys(const_cast<GKeyFile*>(gobj()), group_name.c_str(), &number_of_keys, &error);
+ if(error)
+ Glib::Error::throw_exception(error);
+ return Glib::ArrayHandle<Glib::ustring>(key_names, number_of_keys, Glib::OWNERSHIP_DEEP);
+}
+
+Glib::ustring KeyFile::get_locale_string(const Glib::ustring& group_name, const Glib::ustring& key) const
+{
+ GError *error = 0;
+ Glib::ustring retvalue = Glib::convert_return_gchar_ptr_to_ustring(g_key_file_get_locale_string(const_cast<GKeyFile*>(gobj()), group_name.c_str(), key.c_str(), 0, &(error)));
+ if(error) ::Glib::Error::throw_exception(error);
+ return retvalue;
+}
+
+int KeyFile::get_integer(const Glib::ustring& key) const
+{
+ GError *error = 0;
+ int retvalue = g_key_file_get_integer(const_cast<GKeyFile*>(gobj()), 0, key.c_str(), &(error));
+ if(error) ::Glib::Error::throw_exception(error);
+ return retvalue;
+}
+
+Glib::ArrayHandle<Glib::ustring> KeyFile::get_string_list(const Glib::ustring& group_name, const Glib::ustring& key) const
+{
+ gchar** string_list = 0;
+ gsize length_of_list = 0;
+ GError* error = 0;
+ string_list = g_key_file_get_string_list(const_cast<GKeyFile*>(gobj()), group_name.c_str(), key.c_str(), &length_of_list, &error);
+ if(error)
+ Glib::Error::throw_exception(error);
+ return Glib::ArrayHandle<Glib::ustring>(string_list, length_of_list, Glib::OWNERSHIP_DEEP);
+}
+
+Glib::ArrayHandle<Glib::ustring> KeyFile::get_locale_string_list(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& locale) const
+{
+ gchar** string_list = 0;
+ gsize length_of_list = 0;
+ GError* error = 0;
+ string_list = g_key_file_get_locale_string_list(const_cast<GKeyFile*>(gobj()), group_name.c_str(), key.c_str(), locale.c_str(), &length_of_list, &error);
+ if(error)
+ Glib::Error::throw_exception(error);
+ return Glib::ArrayHandle<Glib::ustring>(string_list, length_of_list, Glib::OWNERSHIP_DEEP);
+}
+
+Glib::ArrayHandle<bool> KeyFile::get_boolean_list(const Glib::ustring& group_name, const Glib::ustring& key) const
+{
+ gboolean* bool_list = 0;
+ gsize length_of_list = 0;
+ GError* error = 0;
+ bool_list = g_key_file_get_boolean_list(const_cast<GKeyFile*>(gobj()), group_name.c_str(), key.c_str(), &length_of_list, &error);
+ if(error)
+ Glib::Error::throw_exception(error);
+ return Glib::ArrayHandle<bool>(&bool_list, length_of_list, Glib::OWNERSHIP_DEEP);
+}
+
+Glib::ArrayHandle<int> KeyFile::get_integer_list(const Glib::ustring& group_name, const Glib::ustring& key) const
+{
+ gint* integer_list = 0;
+ gsize length_of_list = 0;
+ GError* error = 0;
+ integer_list = g_key_file_get_integer_list(const_cast<GKeyFile*>(gobj()), group_name.c_str(), key.c_str(), &length_of_list, &error);
+ if(error)
+ Glib::Error::throw_exception(error);
+ return Glib::ArrayHandle<int>(integer_list, length_of_list, Glib::OWNERSHIP_DEEP);
+}
+
+void KeyFile::set_string_list(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ArrayHandle<Glib::ustring>& list)
+{
+ gsize length_of_list = list.size();
+ g_key_file_set_string_list(gobj(), group_name.c_str(), key.c_str(), list.data(), length_of_list);
+}
+
+void KeyFile::set_locale_string_list(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& locale, const Glib::ArrayHandle<Glib::ustring>& list)
+{
+ gsize length_of_list = list.size();
+ g_key_file_set_locale_string_list(gobj(), group_name.c_str(), key.c_str(), locale.c_str(), list.data(), length_of_list);
+}
+
+void KeyFile::set_integer_list(const Glib::ustring& group_name, const Glib::ustring& key, Glib::ArrayHandle<int>& list)
+{
+ gsize length_of_list = list.size();
+ g_key_file_set_integer_list(gobj(), group_name.c_str(), key.c_str(), const_cast<int*>(list.data()), length_of_list);
+}
+
+void KeyFile::set_boolean_list(const Glib::ustring& group_name, const Glib::ustring& key, Glib::ArrayHandle<bool>& list)
+{
+ gsize length_of_list = list.size();
+ g_key_file_set_boolean_list(gobj(), group_name.c_str(), key.c_str(), *(list.data()), length_of_list);
+}
+
+Glib::ustring KeyFile::get_comment() const
+{
+ GError *error = 0;
+ Glib::ustring retvalue = Glib::convert_return_gchar_ptr_to_ustring(g_key_file_get_comment(const_cast<GKeyFile*>(gobj()), 0, 0, &(error)));
+ if(error) ::Glib::Error::throw_exception(error);
+ return retvalue;
+}
+
+Glib::ustring KeyFile::get_comment(const Glib::ustring& group_name) const
+{
+ GError *error = 0;
+ Glib::ustring retvalue = Glib::convert_return_gchar_ptr_to_ustring(g_key_file_get_comment(const_cast<GKeyFile*>(gobj()), group_name.c_str(), 0, &(error)));
+ if(error) ::Glib::Error::throw_exception(error);
+ return retvalue;
+}
+
+void KeyFile::set_comment(const Glib::ustring& comment)
+{
+ GError *error = 0;
+ g_key_file_set_comment(gobj(), 0, 0, comment.c_str(), &(error));
+ if(error) ::Glib::Error::throw_exception(error);
+}
+
+void KeyFile::set_comment(const Glib::ustring& group_name, const Glib::ustring& comment)
+{
+ GError *error = 0;
+ g_key_file_set_comment(gobj(), group_name.c_str(), 0, comment.c_str(), &(error));
+ if(error) ::Glib::Error::throw_exception(error);
+}
+
+}
+
+namespace
+{
+} // anonymous namespace
+
+
+Glib::KeyFileError::KeyFileError(Glib::KeyFileError::Code error_code, const Glib::ustring& error_message)
+:
+ Glib::Error (G_KEY_FILE_ERROR, error_code, error_message)
+{}
+
+Glib::KeyFileError::KeyFileError(GError* gobject)
+:
+ Glib::Error (gobject)
+{}
+
+Glib::KeyFileError::Code Glib::KeyFileError::code() const
+{
+ return static_cast<Code>(Glib::Error::code());
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+void Glib::KeyFileError::throw_func(GError* gobject)
+{
+ throw Glib::KeyFileError(gobject);
+}
+#else
+//When not using exceptions, we just pass the Exception object around without throwing it:
+std::auto_ptr<Glib::Error> Glib::KeyFileError::throw_func(GError* gobject)
+{
+ return std::auto_ptr<Glib::Error>(new Glib::KeyFileError(gobject));
+}
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+namespace Glib
+{
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+bool KeyFile::load_from_file(const std::string& filename, KeyFileFlags flags)
+#else
+bool KeyFile::load_from_file(const std::string& filename, KeyFileFlags flags, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ bool retvalue = g_key_file_load_from_file(gobj(), filename.c_str(), ((GKeyFileFlags)(flags)), &(gerror));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return retvalue;
+
+}
+
+Glib::ustring KeyFile::get_start_group() const
+{
+ return Glib::convert_return_gchar_ptr_to_ustring(g_key_file_get_start_group(const_cast<GKeyFile*>(gobj())));
+}
+
+bool KeyFile::has_group(const Glib::ustring& group_name) const
+{
+ return g_key_file_has_group(const_cast<GKeyFile*>(gobj()), group_name.c_str());
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+bool KeyFile::has_key(const Glib::ustring& group_name, const Glib::ustring& key) const
+#else
+bool KeyFile::has_key(const Glib::ustring& group_name, const Glib::ustring& key, std::auto_ptr<Glib::Error>& error) const
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ bool retvalue = g_key_file_has_key(const_cast<GKeyFile*>(gobj()), group_name.c_str(), key.c_str(), &(gerror));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return retvalue;
+
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring KeyFile::get_value(const Glib::ustring& group_name, const Glib::ustring& key) const
+#else
+Glib::ustring KeyFile::get_value(const Glib::ustring& group_name, const Glib::ustring& key, std::auto_ptr<Glib::Error>& error) const
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ Glib::ustring retvalue = Glib::convert_return_gchar_ptr_to_ustring(g_key_file_get_value(const_cast<GKeyFile*>(gobj()), group_name.c_str(), key.c_str(), &(gerror)));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return retvalue;
+
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring KeyFile::get_string(const Glib::ustring& group_name, const Glib::ustring& key) const
+#else
+Glib::ustring KeyFile::get_string(const Glib::ustring& group_name, const Glib::ustring& key, std::auto_ptr<Glib::Error>& error) const
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ Glib::ustring retvalue = Glib::convert_return_gchar_ptr_to_ustring(g_key_file_get_string(const_cast<GKeyFile*>(gobj()), group_name.c_str(), key.c_str(), &(gerror)));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return retvalue;
+
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring KeyFile::get_locale_string(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& locale) const
+#else
+Glib::ustring KeyFile::get_locale_string(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& locale, std::auto_ptr<Glib::Error>& error) const
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ Glib::ustring retvalue = Glib::convert_return_gchar_ptr_to_ustring(g_key_file_get_locale_string(const_cast<GKeyFile*>(gobj()), group_name.c_str(), key.c_str(), locale.c_str(), &(gerror)));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return retvalue;
+
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+bool KeyFile::get_boolean(const Glib::ustring& group_name, const Glib::ustring& key) const
+#else
+bool KeyFile::get_boolean(const Glib::ustring& group_name, const Glib::ustring& key, std::auto_ptr<Glib::Error>& error) const
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ bool retvalue = g_key_file_get_boolean(const_cast<GKeyFile*>(gobj()), group_name.c_str(), key.c_str(), &(gerror));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return retvalue;
+
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+int KeyFile::get_integer(const Glib::ustring& group_name, const Glib::ustring& key) const
+#else
+int KeyFile::get_integer(const Glib::ustring& group_name, const Glib::ustring& key, std::auto_ptr<Glib::Error>& error) const
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ int retvalue = g_key_file_get_integer(const_cast<GKeyFile*>(gobj()), group_name.c_str(), key.c_str(), &(gerror));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return retvalue;
+
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring KeyFile::get_comment(const Glib::ustring& group_name, const Glib::ustring& key) const
+#else
+Glib::ustring KeyFile::get_comment(const Glib::ustring& group_name, const Glib::ustring& key, std::auto_ptr<Glib::Error>& error) const
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ Glib::ustring retvalue = Glib::convert_return_gchar_ptr_to_ustring(g_key_file_get_comment(const_cast<GKeyFile*>(gobj()), group_name.c_str(), key.c_str(), &(gerror)));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return retvalue;
+
+}
+
+void KeyFile::set_list_separator(gchar separator)
+{
+g_key_file_set_list_separator(gobj(), separator);
+}
+
+void KeyFile::set_value(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& value)
+{
+g_key_file_set_value(gobj(), group_name.c_str(), key.c_str(), value.c_str());
+}
+
+void KeyFile::set_string(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& string)
+{
+g_key_file_set_string(gobj(), group_name.c_str(), key.c_str(), string.c_str());
+}
+
+void KeyFile::set_locale_string(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& locale, const Glib::ustring& string)
+{
+g_key_file_set_locale_string(gobj(), group_name.c_str(), key.c_str(), locale.c_str(), string.c_str());
+}
+
+void KeyFile::set_boolean(const Glib::ustring& group_name, const Glib::ustring& key, bool value)
+{
+g_key_file_set_boolean(gobj(), group_name.c_str(), key.c_str(), static_cast<int>(value));
+}
+
+void KeyFile::set_integer(const Glib::ustring& group_name, const Glib::ustring& key, int value)
+{
+g_key_file_set_integer(gobj(), group_name.c_str(), key.c_str(), value);
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+void KeyFile::set_comment(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& comment)
+#else
+void KeyFile::set_comment(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& comment, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ g_key_file_set_comment(gobj(), group_name.c_str(), key.c_str(), comment.c_str(), &(gerror));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+void KeyFile::remove_comment(const Glib::ustring& group_name, const Glib::ustring& key)
+#else
+void KeyFile::remove_comment(const Glib::ustring& group_name, const Glib::ustring& key, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ g_key_file_remove_comment(gobj(), group_name.c_str(), key.c_str(), &(gerror));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+void KeyFile::remove_key(const Glib::ustring& group_name, const Glib::ustring& key)
+#else
+void KeyFile::remove_key(const Glib::ustring& group_name, const Glib::ustring& key, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ g_key_file_remove_key(gobj(), group_name.c_str(), key.c_str(), &(gerror));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+void KeyFile::remove_group(const Glib::ustring& group_name)
+#else
+void KeyFile::remove_group(const Glib::ustring& group_name, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ g_key_file_remove_group(gobj(), group_name.c_str(), &(gerror));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+}
+
+
+} // namespace Glib
+
+
diff --git a/libs/glibmm2/glib/glibmm/keyfile.h b/libs/glibmm2/glib/glibmm/keyfile.h
new file mode 100644
index 0000000000..3625578a70
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/keyfile.h
@@ -0,0 +1,651 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_KEYFILE_H
+#define _GLIBMM_KEYFILE_H
+
+
+/* Copyright(C) 2006 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or(at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <glibmm/ustring.h>
+#include <glibmm/arrayhandle.h>
+#include <glibmm/error.h>
+#include <glibmm/utility.h>
+#include <glib/gkeyfile.h>
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GKeyFile GKeyFile; }
+#endif
+
+namespace Glib
+{
+
+ /** @addtogroup glibmmEnums Enums and Flags */
+
+/**
+ * @ingroup glibmmEnums
+ * @par Bitwise operators:
+ * <tt>%KeyFileFlags operator|(KeyFileFlags, KeyFileFlags)</tt><br>
+ * <tt>%KeyFileFlags operator&(KeyFileFlags, KeyFileFlags)</tt><br>
+ * <tt>%KeyFileFlags operator^(KeyFileFlags, KeyFileFlags)</tt><br>
+ * <tt>%KeyFileFlags operator~(KeyFileFlags)</tt><br>
+ * <tt>%KeyFileFlags& operator|=(KeyFileFlags&, KeyFileFlags)</tt><br>
+ * <tt>%KeyFileFlags& operator&=(KeyFileFlags&, KeyFileFlags)</tt><br>
+ * <tt>%KeyFileFlags& operator^=(KeyFileFlags&, KeyFileFlags)</tt><br>
+ */
+enum KeyFileFlags
+{
+ KEY_FILE_NONE = 0,
+ KEY_FILE_KEEP_COMMENTS = 1 << 0,
+ KEY_FILE_KEEP_TRANSLATIONS = 1 << 1
+};
+
+/** @ingroup glibmmEnums */
+inline KeyFileFlags operator|(KeyFileFlags lhs, KeyFileFlags rhs)
+ { return static_cast<KeyFileFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline KeyFileFlags operator&(KeyFileFlags lhs, KeyFileFlags rhs)
+ { return static_cast<KeyFileFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline KeyFileFlags operator^(KeyFileFlags lhs, KeyFileFlags rhs)
+ { return static_cast<KeyFileFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline KeyFileFlags operator~(KeyFileFlags flags)
+ { return static_cast<KeyFileFlags>(~static_cast<unsigned>(flags)); }
+
+/** @ingroup glibmmEnums */
+inline KeyFileFlags& operator|=(KeyFileFlags& lhs, KeyFileFlags rhs)
+ { return (lhs = static_cast<KeyFileFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); }
+
+/** @ingroup glibmmEnums */
+inline KeyFileFlags& operator&=(KeyFileFlags& lhs, KeyFileFlags rhs)
+ { return (lhs = static_cast<KeyFileFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); }
+
+/** @ingroup glibmmEnums */
+inline KeyFileFlags& operator^=(KeyFileFlags& lhs, KeyFileFlags rhs)
+ { return (lhs = static_cast<KeyFileFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs))); }
+
+
+ /** Exception class for KeyFile errors.
+ */
+ class KeyFileError : public Glib::Error
+{
+public:
+ enum Code
+ {
+ UNKNOWN_ENCODING,
+ PARSE,
+ NOT_FOUND,
+ KEY_NOT_FOUND,
+ GROUP_NOT_FOUND,
+ INVALID_VALUE
+ };
+
+ KeyFileError(Code error_code, const Glib::ustring& error_message);
+ explicit KeyFileError(GError* gobject);
+ Code code() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+private:
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ static void throw_func(GError* gobject);
+#else
+ //When not using exceptions, we just pass the Exception object around without throwing it:
+ static std::auto_ptr<Glib::Error> throw_func(GError* gobject);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ friend void wrap_init(); // uses throw_func()
+#endif
+};
+
+
+class KeyFile
+{
+ public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ typedef KeyFile CppObjectType;
+ typedef GKeyFile BaseObjectType;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+private:
+
+public:
+
+ /** Creates a new, empty KeyFile object.
+ */
+ KeyFile();
+
+ /** Destructor
+ */
+ ~KeyFile();
+
+
+ /** Creates a glibmm KeyFile wrapper for a GKeyFile object.
+ * Note, when using this that when the wrapper is deleted,
+ * it will not automatically deleted the GKeyFile unless you
+ * set the delete_c_instance boolean to true.
+ * @param castitem The C instance to wrap
+ * @param delete_c_instance If the C instance should be deleted when
+ * the wrapper is deleted.
+ */
+ KeyFile(GKeyFile* castitem, bool takes_ownership = false);
+
+public:
+
+
+ /** Loads a key file into an empty G::KeyFile structure.
+ * If the file could not be loaded then %error is set to
+ * either a G::FileError or G::KeyFileError.
+ * @param file The path of a filename to load, in the GLib file name encoding.
+ * @param flags Flags from G::KeyFileFlags.
+ * @param error Return location for a G::Error, or <tt>0</tt>.
+ * @return <tt>true</tt> if a key file could be loaded, <tt>false</tt> othewise
+ * @newin2p6.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ bool load_from_file(const std::string& filename, KeyFileFlags flags = Glib::KEY_FILE_NONE);
+#else
+ bool load_from_file(const std::string& filename, KeyFileFlags flags, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Loads a KeyFile from memory
+ * @param data The data to use as a KeyFile
+ * @param flags Bitwise combination of the flags to use for the KeyFile
+ * @return true if the KeyFile was successfully loaded, false otherwise
+ * @throw Glib::KeyFileError
+ */
+
+ bool load_from_data(const Glib::ustring& data, KeyFileFlags flags = Glib::KEY_FILE_NONE);
+
+
+ /** Looks for a KeyFile named @a file in the paths returned from
+ * g_get_user_data_dir() and g_get_system_data_dirs() and loads them
+ * into the keyfile object, placing the full path to the file in
+ * @a full_path.
+ * @param file The file to search for
+ * @param full_path Return location for a string containing the full path of the file
+ * @param flags Bitwise combination of the flags to use for the KeyFile
+ * @return true if the KeyFile was successfully loaded, false otherwise
+ * @throw Glib::KeyFileError
+ * @throw Glib::FileError
+ */
+ bool load_from_data_dirs(const std::string& file, std::string& full_path, KeyFileFlags flags = Glib::KEY_FILE_NONE);
+
+
+ /** Outputs the KeyFile as a string
+ * @return A string object holding the contents of KeyFile
+ */
+ Glib::ustring to_data();
+
+
+ /** Returns the name of the start group of the file.
+ * @return The start group of the key file.
+ *
+ * @newin2p6.
+ */
+ Glib::ustring get_start_group() const;
+
+ /** Gets a list of all groups in the KeyFile
+ * @returns A list containing the names of the groups
+ */
+ Glib::ArrayHandle<Glib::ustring> get_groups() const;
+
+
+ /** Gets a list of all keys from the group @a group_name.
+ * @param group_name The name of a group
+ * @returns A list containing the names of the keys in @a group_name
+ */
+ Glib::ArrayHandle<Glib::ustring> get_keys(const Glib::ustring& group_name) const;
+
+
+ /** Looks whether the key file has the group @a group_name .
+ * @param group_name A group name.
+ * @return <tt>true</tt> if @a group_name is a part of @a key_file , <tt>false</tt>
+ * otherwise.
+ * @newin2p6.
+ */
+ bool has_group(const Glib::ustring& group_name) const;
+
+ /** Looks whether the key file has the key @a key in the group
+ * @a group_name .
+ * @param group_name A group name.
+ * @param key A key name.
+ * @param error Return location for a G::Error.
+ * @return <tt>true</tt> if @a key is a part of @a group_name , <tt>false</tt>
+ * otherwise.
+ *
+ * @newin2p6.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ bool has_key(const Glib::ustring& group_name, const Glib::ustring& key) const;
+#else
+ bool has_key(const Glib::ustring& group_name, const Glib::ustring& key, std::auto_ptr<Glib::Error>& error) const;
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Returns the value associated with @a key under @a group_name .
+ *
+ * In the event the key cannot be found, <tt>0</tt> is returned and
+ * @a error is set to G::KEY_FILE_ERROR_KEY_NOT_FOUND. In the
+ * event that the @a group_name cannot be found, <tt>0</tt> is returned
+ * and @a error is set to G::KEY_FILE_ERROR_GROUP_NOT_FOUND.
+ * @param group_name A group name.
+ * @param key A key.
+ * @param error Return location for a G::Error, or <tt>0</tt>.
+ * @return A newly allocated string or <tt>0</tt> if the specified
+ * key cannot be found.
+ *
+ * @newin2p6.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ Glib::ustring get_value(const Glib::ustring& group_name, const Glib::ustring& key) const;
+#else
+ Glib::ustring get_value(const Glib::ustring& group_name, const Glib::ustring& key, std::auto_ptr<Glib::Error>& error) const;
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Returns the value associated with @a key under @a group_name .
+ *
+ * In the event the key cannot be found, <tt>0</tt> is returned and
+ * @a error is set to G::KEY_FILE_ERROR_KEY_NOT_FOUND. In the
+ * event that the @a group_name cannot be found, <tt>0</tt> is returned
+ * and @a error is set to G::KEY_FILE_ERROR_GROUP_NOT_FOUND.
+ * @param group_name A group name.
+ * @param key A key.
+ * @param error Return location for a G::Error, or <tt>0</tt>.
+ * @return A newly allocated string or <tt>0</tt> if the specified
+ * key cannot be found.
+ *
+ * @newin2p6.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ Glib::ustring get_string(const Glib::ustring& group_name, const Glib::ustring& key) const;
+#else
+ Glib::ustring get_string(const Glib::ustring& group_name, const Glib::ustring& key, std::auto_ptr<Glib::Error>& error) const;
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Gets the value associated with @a key under @a group_name translated
+ * into the current locale.
+ */
+ Glib::ustring get_locale_string(const Glib::ustring& group_name, const Glib::ustring& key) const;
+
+
+ /** Returns the value associated with @a key under @a group_name
+ * translated in the given @a locale if available. If @a locale is
+ * <tt>0</tt> then the current locale is assumed.
+ *
+ * If @a key cannot be found then <tt>0</tt> is returned and @a error is set to
+ * G::KEY_FILE_ERROR_KEY_NOT_FOUND. If the value associated
+ * with @a key cannot be interpreted or no suitable translation can
+ * be found then the untranslated value is returned.
+ * @param group_name A group name.
+ * @param key A key.
+ * @param locale A locale or <tt>0</tt>.
+ * @param error Return location for a G::Error, or <tt>0</tt>.
+ * @return A newly allocated string or <tt>0</tt> if the specified
+ * key cannot be found.
+ *
+ * @newin2p6.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ Glib::ustring get_locale_string(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& locale) const;
+#else
+ Glib::ustring get_locale_string(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& locale, std::auto_ptr<Glib::Error>& error) const;
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Returns the value associated with @a key under @a group_name as a
+ * boolean.
+ *
+ * If @a key cannot be found then the return value is undefined and
+ * @a error is set to G::KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if
+ * the value associated with @a key cannot be interpreted as a boolean
+ * then the return value is also undefined and @a error is set to
+ * G::KEY_FILE_ERROR_INVALID_VALUE.
+ * @param group_name A group name.
+ * @param key A key.
+ * @param error Return location for a G::Error.
+ * @return The value associated with the key as a boolean
+ * @newin2p6.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ bool get_boolean(const Glib::ustring& group_name, const Glib::ustring& key) const;
+#else
+ bool get_boolean(const Glib::ustring& group_name, const Glib::ustring& key, std::auto_ptr<Glib::Error>& error) const;
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Gets the value in the first group, under @a key, interpreting it as
+ * an integer.
+ * @param key The name of the key
+ * @return The value of @a key as an integer
+ * @throws Glib::KeyFileError
+ */
+ int get_integer(const Glib::ustring& key) const;
+
+
+ /** Returns the value associated with @a key under @a group_name as an
+ * integer. If @a group_name is <tt>0</tt>, the start_group is used.
+ *
+ * If @a key cannot be found then the return value is undefined and
+ * @a error is set to G::KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if
+ * the value associated with @a key cannot be interpreted as an integer
+ * then the return value is also undefined and @a error is set to
+ * G::KEY_FILE_ERROR_INVALID_VALUE.
+ * @param group_name A group name.
+ * @param key A key.
+ * @param error Return location for a G::Error.
+ * @return The value associated with the key as an integer.
+ *
+ * @newin2p6.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ int get_integer(const Glib::ustring& group_name, const Glib::ustring& key) const;
+#else
+ int get_integer(const Glib::ustring& group_name, const Glib::ustring& key, std::auto_ptr<Glib::Error>& error) const;
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Returns the values associated with @a key under @a group_name
+ * @param group_name The name of a group
+ * @param key The name of a key
+ * @return A list containing the values requested
+ * @throws Glib::KeyFileError
+ */
+ Glib::ArrayHandle<Glib::ustring> get_string_list(const Glib::ustring& group_name, const Glib::ustring& key) const;
+
+
+ /** Returns the values associated with @a key under @a group_name
+ * translated into the current locale, if available.
+ * @param group_name The name of a group
+ * @param key The name of a key
+ * @return A list containing the values requested
+ * @throws Glib::KeyFileError
+ */
+ Glib::ArrayHandle<Glib::ustring> get_locale_string_list(const Glib::ustring& group_name, const Glib::ustring& key) const;
+
+ /** Returns the values associated with @a key under @a group_name
+ * translated into @a locale, if available.
+ * @param group_name The name of a group
+ * @param key The name of a key
+ * @param locale The name of a locale
+ * @return A list containing the values requested
+ * @throws Glib::KeyFileError
+ */
+ Glib::ArrayHandle<Glib::ustring> get_locale_string_list(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& locale) const;
+
+
+ /** Returns the values associated with @a key under @a group_name
+ * @param group_name The name of a group
+ * @param key The name of a key
+ * @return A list of booleans
+ * @throws Glib::KeyFileError
+ */
+ Glib::ArrayHandle<bool> get_boolean_list(const Glib::ustring& group_name, const Glib::ustring& key) const;
+
+
+ /** Returns the values associated with @a key under @a group_name
+ * @param group_name The name of a group
+ * @param key The name of a key
+ * @return A list of integers
+ * @throws Glib::KeyFileError
+ */
+ Glib::ArrayHandle<int> get_integer_list(const Glib::ustring& group_name, const Glib::ustring& key) const;
+
+
+ /** Get comment from top of file
+ * @return The comment
+ */
+ Glib::ustring get_comment() const;
+
+ /** Get comment from above a group
+ * @param group_name The group
+ * @return The comment
+ */
+ Glib::ustring get_comment(const Glib::ustring& group_name) const;
+
+
+ /** Retrieves a comment above @a key from @a group_name .
+ * @a group_name . If @a key is <tt>0</tt> then @a comment will
+ * be read from above @a group_name . If both @a key
+ * and @a group_name are <tt>0</tt>, then @a comment will
+ * be read from above the first group in the file.
+ * @param group_name A group name, or <tt>0</tt>.
+ * @param key A key.
+ * @param error Return location for a G::Error.
+ * @return A comment that should be freed with g_free()
+ *
+ * @newin2p6.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ Glib::ustring get_comment(const Glib::ustring& group_name, const Glib::ustring& key) const;
+#else
+ Glib::ustring get_comment(const Glib::ustring& group_name, const Glib::ustring& key, std::auto_ptr<Glib::Error>& error) const;
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Sets the character which is used to separate
+ * values in lists. Typically ';' or ',' are used
+ * as separators. The default list separator is ';'.
+ *
+ * @newin2p6
+ * @param separator The separator.
+ */
+ void set_list_separator(gchar separator);
+
+ /** Associates a new value with @a key under @a group_name . If @a key
+ * cannot be found then it is created. If @a group_name cannot be
+ * found then it is created.
+ *
+ * @newin2p6
+ * @param group_name A group name.
+ * @param key A key.
+ * @param value A string.
+ */
+ void set_value(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& value);
+
+ /** Associates a new string value with @a key under @a group_name . If
+ * @a key cannot be found then it is created. If @a group_name
+ * cannot be found then it is created.
+ *
+ * @newin2p6
+ * @param group_name A group name.
+ * @param key A key.
+ * @param string A string.
+ */
+ void set_string(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& string);
+
+ /** Associates a string value for @a key and @a locale under
+ * @a group_name . If the translation for @a key cannot be found
+ * then it is created.
+ *
+ * @newin2p6
+ * @param group_name A group name.
+ * @param key A key.
+ * @param locale A locale.
+ * @param string A string.
+ */
+ void set_locale_string(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& locale, const Glib::ustring& string);
+
+ /** Associates a new boolean value with @a key under @a group_name .
+ * If @a key cannot be found then it is created.
+ *
+ * @newin2p6
+ * @param group_name A group name.
+ * @param key A key.
+ * @param value <tt>true</tt> or <tt>false</tt>.
+ */
+ void set_boolean(const Glib::ustring& group_name, const Glib::ustring& key, bool value);
+
+ /** Associates a new integer value with @a key under @a group_name .
+ * If @a key cannot be found then it is created.
+ *
+ * @newin2p6
+ * @param group_name A group name.
+ * @param key A key.
+ * @param value An integer value.
+ */
+ void set_integer(const Glib::ustring& group_name, const Glib::ustring& key, int value);
+
+ /** Sets a list of string values for @a key under @a group_name. If
+ * key cannot be found it is created. If @a group_name cannot be found
+ * it is created.
+ * @param group_name The name of a group
+ * @param key The name of a key
+ * @param list A list holding objects of type Glib::ustring
+ */
+ void set_string_list(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ArrayHandle<Glib::ustring>& list);
+
+
+ /** Sets a list of string values for the @a key under @a group_name and marks
+ * them as being for @a locale. If the @a key or @a group_name cannot be
+ * found, they are created.
+ * @param group_name The name of a group
+ * @param key The name of a key
+ * @param locale A locale
+ * @param list A list holding objects of type Glib::ustring
+ */
+ void set_locale_string_list(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& locale, const Glib::ArrayHandle<Glib::ustring>& list);
+
+
+ /** Sets a list of booleans for the @a key under @a group_name.
+ * If either the @a key or @a group_name cannot be found they are created
+ * @param group_name The name of a group
+ * @param key The name of a key
+ * @param list A list holding object of type bool
+ */
+ void set_boolean_list(const Glib::ustring& group_name, const Glib::ustring& key, Glib::ArrayHandle<bool>& list);
+
+
+ /** Sets a list of integers for the @a key under @a group_name.
+ * If either the @a key or @a group_name cannot be found they are created
+ * @param group_name The name of a group
+ * @param key The name of a key
+ * @param list A list holding object of type int
+ */
+ void set_integer_list(const Glib::ustring& group_name, const Glib::ustring& key, Glib::ArrayHandle<int>& list);
+
+
+ /** Places @a comment at the start of the file, before the first group.
+ * @param comment The Comment
+ */
+ void set_comment(const Glib::ustring& comment);
+
+ /** Places @a comment above @a group_name.
+ * @param group_name The Group the comment should be above
+ * @param comment The comment
+ */
+ void set_comment(const Glib::ustring& group_name, const Glib::ustring& comment);
+
+ /** Places a comment above @a key from @a group_name.
+ * @param key Key comment should be above
+ * @param group_name Group comment is in
+ * @param comment The comment
+ */
+
+ /** Places a comment above @a key from @a group_name .
+ * @a group_name . If @a key is <tt>0</tt> then @a comment will
+ * be written above @a group_name . If both @a key
+ * and @a group_name are <tt>0</tt>, then @a comment will
+ * be written above the first group in the file.
+ *
+ * @newin2p6
+ * @param group_name A group name, or <tt>0</tt>.
+ * @param key A key.
+ * @param comment A comment.
+ * @param error Return location for a G::Error.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ void set_comment(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& comment);
+#else
+ void set_comment(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& comment, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Removes a comment above @a key from @a group_name .
+ * @a group_name . If @a key is <tt>0</tt> then @a comment will
+ * be written above @a group_name . If both @a key
+ * and @a group_name are <tt>0</tt>, then @a comment will
+ * be written above the first group in the file.
+ *
+ * @newin2p6
+ * @param group_name A group name, or <tt>0</tt>.
+ * @param key A key.
+ * @param error Return location for a G::Error.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ void remove_comment(const Glib::ustring& group_name, const Glib::ustring& key);
+#else
+ void remove_comment(const Glib::ustring& group_name, const Glib::ustring& key, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Removes @a key in @a group_name from the key file.
+ *
+ * @newin2p6
+ * @param group_name A group name.
+ * @param key A key name to remove.
+ * @param error Return location for a G::Error or <tt>0</tt>.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ void remove_key(const Glib::ustring& group_name, const Glib::ustring& key);
+#else
+ void remove_key(const Glib::ustring& group_name, const Glib::ustring& key, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ /** Removes the specified group, @a group_name ,
+ * from the key file.
+ *
+ * @newin2p6
+ * @param group_name A group name.
+ * @param error Return location for a G::Error or <tt>0</tt>.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ void remove_group(const Glib::ustring& group_name);
+#else
+ void remove_group(const Glib::ustring& group_name, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ GKeyFile* gobj() { return gobject_; }
+ const GKeyFile* gobj() const { return gobject_; }
+
+protected:
+ GKeyFile* gobject_;
+ bool owns_gobject_;
+
+private:
+ // noncopyable
+ KeyFile(const KeyFile&);
+ KeyFile& operator=(const KeyFile&);
+
+
+};
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_KEYFILE_H */
+
diff --git a/libs/glibmm2/glib/glibmm/listhandle.h b/libs/glibmm2/glib/glibmm/listhandle.h
new file mode 100644
index 0000000000..2f26eb9ab7
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/listhandle.h
@@ -0,0 +1,406 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_LISTHANDLE_H
+#define _GLIBMM_LISTHANDLE_H
+
+/* $Id: listhandle.h,v 1.3 2003/04/21 17:39:41 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/glist.h>
+#include <glibmm/containerhandle_shared.h>
+
+
+namespace Glib
+{
+
+namespace Container_Helpers
+{
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+/* Create and fill a GList as efficient as possible.
+ * This requires bidirectional iterators.
+ */
+template <class Bi, class Tr>
+GList* create_list(Bi pbegin, Bi pend, Tr)
+{
+ GList* head = 0;
+
+ while(pend != pbegin)
+ {
+ // Use & to force a warning if the iterator returns a temporary object.
+ const void *const item = Tr::to_c_type(*&*--pend);
+ head = g_list_prepend(head, const_cast<void*>(item));
+ }
+
+ return head;
+}
+
+/* Create a GList from a 0-terminated input sequence.
+ * Build it in reverse order and reverse the whole list afterwards,
+ * because appending to the list would be horribly inefficient.
+ */
+template <class For, class Tr>
+GList* create_list(For pbegin, Tr)
+{
+ GList* head = 0;
+
+ while(*pbegin)
+ {
+ // Use & to force a warning if the iterator returns a temporary object.
+ const void *const item = Tr::to_c_type(*&*pbegin);
+ head = g_list_prepend(head, const_cast<void*>(item));
+ ++pbegin;
+ }
+
+ return g_list_reverse(head);
+}
+
+
+/* Convert from any container that supports bidirectional iterators.
+ */
+template <class Tr, class Cont>
+struct ListSourceTraits
+{
+ static GList* get_data(const Cont& cont)
+ { return Glib::Container_Helpers::create_list(cont.begin(), cont.end(), Tr()); }
+
+ static const Glib::OwnershipType initial_ownership = Glib::OWNERSHIP_SHALLOW;
+};
+
+/* Convert from a 0-terminated array. The Cont
+ * argument must be a pointer to the first element.
+ */
+template <class Tr, class Cont>
+struct ListSourceTraits<Tr,Cont*>
+{
+ static GList* get_data(const Cont* array)
+ { return (array) ? Glib::Container_Helpers::create_list(array, Tr()) : 0; }
+
+ static const Glib::OwnershipType initial_ownership = Glib::OWNERSHIP_SHALLOW;
+};
+
+template <class Tr, class Cont>
+struct ListSourceTraits<Tr,const Cont*> : ListSourceTraits<Tr,Cont*>
+{};
+
+/* Convert from a 0-terminated array. The Cont argument must be a pointer
+ * to the first element. For consistency, the array must be 0-terminated,
+ * even though the array size is known at compile time.
+ */
+template <class Tr, class Cont, size_t N>
+struct ListSourceTraits<Tr,Cont[N]>
+{
+ static GList* get_data(const Cont* array)
+ { return Glib::Container_Helpers::create_list(array, array + (N - 1), Tr()); }
+
+ static const Glib::OwnershipType initial_ownership = Glib::OWNERSHIP_SHALLOW;
+};
+
+template <class Tr, class Cont, size_t N>
+struct ListSourceTraits<Tr,const Cont[N]> : ListSourceTraits<Tr,Cont[N]>
+{};
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+
+/**
+ * @ingroup ContHelpers
+ * If a method takes this as an argument, or has this as a return type, then you can use a standard
+ * container such as std::list or std::vector.
+ */
+template <class Tr>
+class ListHandleIterator
+{
+public:
+ typedef typename Tr::CppType CppType;
+ typedef typename Tr::CType CType;
+
+ typedef std::forward_iterator_tag iterator_category;
+ typedef CppType value_type;
+ typedef ptrdiff_t difference_type;
+ typedef value_type reference;
+ typedef void pointer;
+
+ explicit inline ListHandleIterator(const GList* node);
+
+ inline value_type operator*() const;
+ inline ListHandleIterator<Tr> & operator++();
+ inline const ListHandleIterator<Tr> operator++(int);
+
+ inline bool operator==(const ListHandleIterator<Tr>& rhs) const;
+ inline bool operator!=(const ListHandleIterator<Tr>& rhs) const;
+
+private:
+ const GList* node_;
+};
+
+} // namespace Container_Helpers
+
+
+/**
+ * @ingroup ContHandles
+ */
+template < class T, class Tr = Glib::Container_Helpers::TypeTraits<T> >
+class ListHandle
+{
+public:
+ typedef typename Tr::CppType CppType;
+ typedef typename Tr::CType CType;
+
+ typedef CppType value_type;
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+
+ typedef Glib::Container_Helpers::ListHandleIterator<Tr> const_iterator;
+ typedef Glib::Container_Helpers::ListHandleIterator<Tr> iterator;
+
+ template <class Cont> inline
+ ListHandle(const Cont& container);
+
+ // Take over ownership of an array created by GTK+ functions.
+ inline ListHandle(GList* glist, Glib::OwnershipType ownership);
+
+ // Copying clears the ownership flag of the source handle.
+ inline ListHandle(const ListHandle<T,Tr>& other);
+
+ ~ListHandle();
+
+ inline const_iterator begin() const;
+ inline const_iterator end() const;
+
+ template <class U> inline operator std::vector<U>() const;
+ template <class U> inline operator std::deque<U>() const;
+ template <class U> inline operator std::list<U>() const;
+
+ template <class Cont> inline
+ void assign_to(Cont& container) const;
+
+ template <class Out> inline
+ void copy(Out pdest) const;
+
+ inline GList* data() const;
+ inline size_t size() const;
+ inline bool empty() const;
+
+private:
+ GList * plist_;
+ mutable Glib::OwnershipType ownership_;
+
+ // No copy assignment.
+ ListHandle<T,Tr>& operator=(const ListHandle<T,Tr>&);
+};
+
+
+/***************************************************************************/
+/* Inline implementation */
+/***************************************************************************/
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+namespace Container_Helpers
+{
+
+/**** Glib::Container_Helpers::ListHandleIterator<> ************************/
+
+template <class Tr> inline
+ListHandleIterator<Tr>::ListHandleIterator(const GList* node)
+:
+ node_ (node)
+{}
+
+template <class Tr> inline
+typename ListHandleIterator<Tr>::value_type ListHandleIterator<Tr>::operator*() const
+{
+ return Tr::to_cpp_type(static_cast<typename Tr::CTypeNonConst>(node_->data));
+}
+
+template <class Tr> inline
+ListHandleIterator<Tr>& ListHandleIterator<Tr>::operator++()
+{
+ node_ = node_->next;
+ return *this;
+}
+
+template <class Tr> inline
+const ListHandleIterator<Tr> ListHandleIterator<Tr>::operator++(int)
+{
+ const ListHandleIterator<Tr> tmp (*this);
+ node_ = node_->next;
+ return tmp;
+}
+
+template <class Tr> inline
+bool ListHandleIterator<Tr>::operator==(const ListHandleIterator<Tr>& rhs) const
+{
+ return (node_ == rhs.node_);
+}
+
+template <class Tr> inline
+bool ListHandleIterator<Tr>::operator!=(const ListHandleIterator<Tr>& rhs) const
+{
+ return (node_ != rhs.node_);
+}
+
+} // namespace Container_Helpers
+
+
+/**** Glib::ListHandle<> ***************************************************/
+
+template <class T, class Tr>
+ template <class Cont>
+inline
+ListHandle<T,Tr>::ListHandle(const Cont& container)
+:
+ plist_ (Glib::Container_Helpers::ListSourceTraits<Tr,Cont>::get_data(container)),
+ ownership_ (Glib::Container_Helpers::ListSourceTraits<Tr,Cont>::initial_ownership)
+{}
+
+template <class T, class Tr> inline
+ListHandle<T,Tr>::ListHandle(GList* glist, Glib::OwnershipType ownership)
+:
+ plist_ (glist),
+ ownership_ (ownership)
+{}
+
+template <class T, class Tr> inline
+ListHandle<T,Tr>::ListHandle(const ListHandle<T,Tr>& other)
+:
+ plist_ (other.plist_),
+ ownership_ (other.ownership_)
+{
+ other.ownership_ = Glib::OWNERSHIP_NONE;
+}
+
+template <class T, class Tr>
+ListHandle<T,Tr>::~ListHandle()
+{
+ if(ownership_ != Glib::OWNERSHIP_NONE)
+ {
+ if(ownership_ != Glib::OWNERSHIP_SHALLOW)
+ {
+ // Deep ownership: release each container element.
+ for(GList* node = plist_; node != 0; node = node->next)
+ Tr::release_c_type(static_cast<typename Tr::CTypeNonConst>(node->data));
+ }
+ g_list_free(plist_);
+ }
+}
+
+template <class T, class Tr> inline
+typename ListHandle<T,Tr>::const_iterator ListHandle<T,Tr>::begin() const
+{
+ return Glib::Container_Helpers::ListHandleIterator<Tr>(plist_);
+}
+
+template <class T, class Tr> inline
+typename ListHandle<T,Tr>::const_iterator ListHandle<T,Tr>::end() const
+{
+ return Glib::Container_Helpers::ListHandleIterator<Tr>(0);
+}
+
+template <class T, class Tr>
+ template <class U>
+inline
+ListHandle<T,Tr>::operator std::vector<U>() const
+{
+#ifdef GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS
+ return std::vector<U>(this->begin(), this->end());
+#else
+ std::vector<U> temp;
+ temp.reserve(this->size());
+ Glib::Container_Helpers::fill_container(temp, this->begin(), this->end());
+ return temp;
+#endif
+}
+
+template <class T, class Tr>
+ template <class U>
+inline
+ListHandle<T,Tr>::operator std::deque<U>() const
+{
+#ifdef GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS
+ return std::deque<U>(this->begin(), this->end());
+#else
+ std::deque<U> temp;
+ Glib::Container_Helpers::fill_container(temp, this->begin(), this->end());
+ return temp;
+#endif
+}
+
+template <class T, class Tr>
+ template <class U>
+inline
+ListHandle<T,Tr>::operator std::list<U>() const
+{
+#ifdef GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS
+ return std::list<U>(this->begin(), this->end());
+#else
+ std::list<U> temp;
+ Glib::Container_Helpers::fill_container(temp, this->begin(), this->end());
+ return temp;
+#endif
+}
+
+template <class T, class Tr>
+ template <class Cont>
+inline
+void ListHandle<T,Tr>::assign_to(Cont& container) const
+{
+#ifdef GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS
+ container.assign(this->begin(), this->end());
+#else
+ Cont temp;
+ Glib::Container_Helpers::fill_container(temp, this->begin(), this->end());
+ container.swap(temp);
+#endif
+}
+
+template <class T, class Tr>
+ template <class Out>
+inline
+void ListHandle<T,Tr>::copy(Out pdest) const
+{
+ std::copy(this->begin(), this->end(), pdest);
+}
+
+template <class T, class Tr> inline
+GList* ListHandle<T,Tr>::data() const
+{
+ return plist_;
+}
+
+template <class T, class Tr> inline
+size_t ListHandle<T,Tr>::size() const
+{
+ return g_list_length(plist_);
+}
+
+template <class T, class Tr> inline
+bool ListHandle<T,Tr>::empty() const
+{
+ return (plist_ == 0);
+}
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_LISTHANDLE_H */
+
diff --git a/libs/glibmm2/glib/glibmm/main.cc b/libs/glibmm2/glib/glibmm/main.cc
new file mode 100644
index 0000000000..0075b49fd6
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/main.cc
@@ -0,0 +1,1070 @@
+// -*- c++ -*-
+/* $Id: main.cc,v 1.11 2006/05/12 08:08:43 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/main.h>
+#include <glibmm/exceptionhandler.h>
+#include <glibmm/thread.h>
+#include <glibmm/wrap.h>
+#include <glibmm/iochannel.h>
+
+#include <glib/gmessages.h>
+#include <algorithm>
+
+GLIBMM_USING_STD(min)
+
+
+namespace
+{
+
+class SourceConnectionNode
+{
+public:
+ explicit inline SourceConnectionNode(const sigc::slot_base& slot);
+
+ static void* notify(void* data);
+ static void destroy_notify_callback(void* data);
+
+ inline void install(GSource* source);
+ inline sigc::slot_base* get_slot();
+
+private:
+ sigc::slot_base slot_;
+ GSource* source_;
+};
+
+inline
+SourceConnectionNode::SourceConnectionNode(const sigc::slot_base& slot)
+:
+ slot_ (slot),
+ source_ (0)
+{
+ slot_.set_parent(this, &SourceConnectionNode::notify);
+}
+
+void* SourceConnectionNode::notify(void* data)
+{
+ SourceConnectionNode *const self = static_cast<SourceConnectionNode*>(data);
+
+ // if there is no object, this call was triggered from destroy_notify_handler(),
+ // because we set self->source_ to 0 there:
+ if (self->source_)
+ {
+ GSource* s = self->source_;
+ self->source_ = 0;
+ g_source_destroy(s);
+
+ // Destroying the object triggers execution of destroy_notify_handler(),
+ // eiter immediately or later, so we leave that to do the deletion.
+ }
+
+ return 0;
+}
+
+// static
+void SourceConnectionNode::destroy_notify_callback(void* data)
+{
+ SourceConnectionNode *const self = static_cast<SourceConnectionNode*>(data);
+
+ if (self)
+ {
+ // The GLib side is disconnected now, thus the GSource* is no longer valid.
+ self->source_ = 0;
+
+ delete self;
+ }
+}
+
+inline
+void SourceConnectionNode::install(GSource* source)
+{
+ source_ = source;
+}
+
+inline
+sigc::slot_base* SourceConnectionNode::get_slot()
+{
+ return &slot_;
+}
+
+
+/* We use the callback data member of GSource to store both a pointer to our
+ * wrapper and a pointer to the connection node that is currently being used.
+ * The one and only SourceCallbackData object of a Glib::Source is constructed
+ * in the ctor of Glib::Source and destroyed after the GSource object when the
+ * reference counter of the GSource object reaches zero!
+ */
+struct SourceCallbackData
+{
+ explicit inline SourceCallbackData(Glib::Source* wrapper_);
+
+ void set_node(SourceConnectionNode* node_);
+
+ static void destroy_notify_callback(void* data);
+
+ Glib::Source* wrapper;
+ SourceConnectionNode* node;
+};
+
+inline
+SourceCallbackData::SourceCallbackData(Glib::Source* wrapper_)
+:
+ wrapper (wrapper_),
+ node (0)
+{}
+
+void SourceCallbackData::set_node(SourceConnectionNode* node_)
+{
+ if(node)
+ SourceConnectionNode::destroy_notify_callback(node);
+
+ node = node_;
+}
+
+// static
+void SourceCallbackData::destroy_notify_callback(void* data)
+{
+ SourceCallbackData *const self = static_cast<SourceCallbackData*>(data);
+
+ if(self->node)
+ SourceConnectionNode::destroy_notify_callback(self->node);
+
+ if(self->wrapper)
+ Glib::Source::destroy_notify_callback(self->wrapper);
+
+ delete self;
+}
+
+
+/* Retrieve the callback data from a wrapped GSource object.
+ */
+static SourceCallbackData* glibmm_source_get_callback_data(GSource* source)
+{
+ g_return_val_if_fail(source->callback_funcs->get != 0, 0);
+
+ GSourceFunc func;
+ void* user_data = 0;
+
+ // Retrieve the callback function and data.
+ (*source->callback_funcs->get)(source->callback_data, source, &func, &user_data);
+
+ return static_cast<SourceCallbackData*>(user_data);
+}
+
+/* Glib::Source doesn't use the callback function installed with
+ * g_source_set_callback(). Instead, it invokes the sigc++ slot
+ * directly from dispatch_vfunc(), which is both simpler and more
+ * efficient.
+ * For correctness, provide a pointer to this dummy callback rather
+ * than some random pointer. That also allows for sanity checks
+ * here as well as in Source::dispatch_vfunc().
+ */
+static gboolean glibmm_dummy_source_callback(void*)
+{
+ g_assert_not_reached();
+ return 0;
+}
+
+/* Only used by SignalTimeout::connect() and SignalIdle::connect().
+ * These don't use Glib::Source, to avoid the unnecessary overhead
+ * of a completely unused wrapper object.
+ */
+static gboolean glibmm_source_callback(void* data)
+{
+ SourceConnectionNode *const conn_data = static_cast<SourceConnectionNode*>(data);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ // Recreate the specific slot from the generic slot node.
+ return (*static_cast<sigc::slot<bool>*>(conn_data->get_slot()))();
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ return 0;
+}
+
+static gboolean glibmm_iosource_callback(GIOChannel*, GIOCondition condition, void* data)
+{
+ SourceCallbackData *const callback_data = static_cast<SourceCallbackData*>(data);
+ g_return_val_if_fail(callback_data->node != 0, 0);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ // Recreate the specific slot from the generic slot node.
+ return (*static_cast<sigc::slot<bool, Glib::IOCondition>*>(callback_data->node->get_slot()))
+ ((Glib::IOCondition) condition);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ return 0;
+}
+
+/* Only used by SignalChildWatch::connect().
+ * These don't use Glib::Source, to avoid the unnecessary overhead
+ * of a completely unused wrapper object.
+ */
+static gboolean glibmm_child_watch_callback(GPid pid, gint child_status, void* data)
+{
+ SourceConnectionNode *const conn_data = static_cast<SourceConnectionNode*>(data);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ //Recreate the specific slot from the generic slot node.
+ (*static_cast<sigc::slot<void, GPid, int>*>(conn_data->get_slot()))(pid, child_status);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ return 0;
+}
+
+} // anonymous namespace
+
+
+namespace Glib
+{
+
+/**** Glib::PollFD *********************************************************/
+
+PollFD::PollFD()
+{
+ gobject_.fd = 0;
+ gobject_.events = 0;
+ gobject_.revents = 0;
+}
+
+PollFD::PollFD(int fd)
+{
+ gobject_.fd = fd;
+ gobject_.events = 0;
+ gobject_.revents = 0;
+}
+
+PollFD::PollFD(int fd, IOCondition events)
+{
+ gobject_.fd = fd;
+ gobject_.events = events;
+ gobject_.revents = 0;
+}
+
+
+/**** Glib::SignalTimeout **************************************************/
+
+inline
+SignalTimeout::SignalTimeout(GMainContext* context)
+:
+ context_ (context)
+{}
+
+sigc::connection SignalTimeout::connect(const sigc::slot<bool>& slot,
+ unsigned int interval, int priority)
+{
+ SourceConnectionNode *const conn_node = new SourceConnectionNode(slot);
+ const sigc::connection connection (*conn_node->get_slot());
+
+ GSource *const source = g_timeout_source_new(interval);
+
+ if(priority != G_PRIORITY_DEFAULT)
+ g_source_set_priority(source, priority);
+
+ g_source_set_callback(
+ source, &glibmm_source_callback, conn_node,
+ &SourceConnectionNode::destroy_notify_callback);
+
+ g_source_attach(source, context_);
+ g_source_unref(source); // GMainContext holds a reference
+
+ conn_node->install(source);
+ return connection;
+}
+
+SignalTimeout signal_timeout()
+{
+ return SignalTimeout(0); // 0 means default context
+}
+
+
+/**** Glib::SignalIdle *****************************************************/
+
+inline
+SignalIdle::SignalIdle(GMainContext* context)
+:
+ context_ (context)
+{}
+
+sigc::connection SignalIdle::connect(const sigc::slot<bool>& slot, int priority)
+{
+ SourceConnectionNode *const conn_node = new SourceConnectionNode(slot);
+ const sigc::connection connection (*conn_node->get_slot());
+
+ GSource *const source = g_idle_source_new();
+
+ if(priority != G_PRIORITY_DEFAULT)
+ g_source_set_priority(source, priority);
+
+ g_source_set_callback(
+ source, &glibmm_source_callback, conn_node,
+ &SourceConnectionNode::destroy_notify_callback);
+
+ g_source_attach(source, context_);
+ g_source_unref(source); // GMainContext holds a reference
+
+ conn_node->install(source);
+ return connection;
+}
+
+SignalIdle signal_idle()
+{
+ return SignalIdle(0); // 0 means default context
+}
+
+
+/**** Glib::SignalIO *******************************************************/
+
+inline
+SignalIO::SignalIO(GMainContext* context)
+:
+ context_ (context)
+{}
+
+sigc::connection SignalIO::connect(const sigc::slot<bool,IOCondition>& slot,
+ int fd, IOCondition condition, int priority)
+{
+ const Glib::RefPtr<IOSource> source = IOSource::create(fd, condition);
+
+ if(priority != G_PRIORITY_DEFAULT)
+ source->set_priority(priority);
+
+ const sigc::connection connection = source->connect(slot);
+
+ g_source_attach(source->gobj(), context_);
+
+ return connection;
+}
+
+sigc::connection SignalIO::connect(const sigc::slot<bool,IOCondition>& slot,
+ const Glib::RefPtr<IOChannel>& channel,
+ IOCondition condition, int priority)
+{
+ const Glib::RefPtr<IOSource> source = IOSource::create(channel, condition);
+
+ if(priority != G_PRIORITY_DEFAULT)
+ source->set_priority(priority);
+
+ const sigc::connection connection = source->connect(slot);
+
+ g_source_attach(source->gobj(), context_);
+
+ return connection;
+}
+
+SignalIO signal_io()
+{
+ return SignalIO(0); // 0 means default context
+}
+
+/**** Glib::SignalChildWatch **************************************************/
+
+inline
+SignalChildWatch::SignalChildWatch(GMainContext* context)
+:
+ context_ (context)
+{}
+
+sigc::connection SignalChildWatch::connect(const sigc::slot<void, GPid, int>& slot,
+ GPid pid, int priority)
+{
+ SourceConnectionNode *const conn_node = new SourceConnectionNode(slot);
+ const sigc::connection connection(*conn_node->get_slot());
+
+ GSource *const source = g_child_watch_source_new(pid);
+
+ if(priority != G_PRIORITY_DEFAULT)
+ g_source_set_priority(source, priority);
+
+ g_source_set_callback(
+ source, (GSourceFunc)&glibmm_child_watch_callback, conn_node,
+ &SourceConnectionNode::destroy_notify_callback);
+
+ g_source_attach(source, context_);
+ g_source_unref(source); // GMainContext holds a reference
+
+ conn_node->install(source);
+ return connection;
+}
+
+SignalChildWatch signal_child_watch()
+{
+ return SignalChildWatch(0); // 0 means default context
+}
+
+/**** Glib::MainContext ****************************************************/
+
+// static
+Glib::RefPtr<MainContext> MainContext::create()
+{
+ return Glib::RefPtr<MainContext>(reinterpret_cast<MainContext*>(g_main_context_new()));
+}
+
+// static
+Glib::RefPtr<MainContext> MainContext::get_default()
+{
+ return Glib::wrap(g_main_context_default(), true);
+}
+
+bool MainContext::iteration(bool may_block)
+{
+ return g_main_context_iteration(gobj(), may_block);
+}
+
+bool MainContext::pending()
+{
+ return g_main_context_pending(gobj());
+}
+
+void MainContext::wakeup()
+{
+ g_main_context_wakeup(gobj());
+}
+
+bool MainContext::acquire()
+{
+ return g_main_context_acquire(gobj());
+}
+
+bool MainContext::wait(Glib::Cond& cond, Glib::Mutex& mutex)
+{
+ return g_main_context_wait(gobj(), cond.gobj(), mutex.gobj());
+}
+
+void MainContext::release()
+{
+ g_main_context_release(gobj());
+}
+
+bool MainContext::prepare(int& priority)
+{
+ return g_main_context_prepare(gobj(), &priority);
+}
+
+bool MainContext::prepare()
+{
+ return g_main_context_prepare(gobj(), 0);
+}
+
+void MainContext::query(int max_priority, int& timeout, std::vector<PollFD>& fds)
+{
+ if(fds.empty())
+ fds.resize(8); // rather bogus number, but better than 0
+
+ for(;;)
+ {
+ const int size_before = fds.size();
+ const int size_needed = g_main_context_query(
+ gobj(), max_priority, &timeout, reinterpret_cast<GPollFD*>(&fds.front()), size_before);
+
+ fds.resize(size_needed);
+
+ if(size_needed <= size_before)
+ break;
+ }
+}
+
+bool MainContext::check(int max_priority, std::vector<PollFD>& fds)
+{
+ if(!fds.empty())
+ return g_main_context_check(gobj(), max_priority, reinterpret_cast<GPollFD*>(&fds.front()), fds.size());
+ else
+ return false;
+}
+
+void MainContext::dispatch()
+{
+ g_main_context_dispatch(gobj());
+}
+
+void MainContext::set_poll_func(GPollFunc poll_func)
+{
+ g_main_context_set_poll_func(gobj(), poll_func);
+}
+
+GPollFunc MainContext::get_poll_func()
+{
+ return g_main_context_get_poll_func(gobj());
+}
+
+void MainContext::add_poll(PollFD& fd, int priority)
+{
+ g_main_context_add_poll(gobj(), fd.gobj(), priority);
+}
+
+void MainContext::remove_poll(PollFD& fd)
+{
+ g_main_context_remove_poll(gobj(), fd.gobj());
+}
+
+SignalTimeout MainContext::signal_timeout()
+{
+ return SignalTimeout(gobj());
+}
+
+SignalIdle MainContext::signal_idle()
+{
+ return SignalIdle(gobj());
+}
+
+SignalIO MainContext::signal_io()
+{
+ return SignalIO(gobj());
+}
+
+SignalChildWatch MainContext::signal_child_watch()
+{
+ return SignalChildWatch(gobj());
+}
+
+void MainContext::reference() const
+{
+ g_main_context_ref(reinterpret_cast<GMainContext*>(const_cast<MainContext*>(this)));
+}
+
+void MainContext::unreference() const
+{
+ g_main_context_unref(reinterpret_cast<GMainContext*>(const_cast<MainContext*>(this)));
+}
+
+GMainContext* MainContext::gobj()
+{
+ return reinterpret_cast<GMainContext*>(this);
+}
+
+const GMainContext* MainContext::gobj() const
+{
+ return reinterpret_cast<const GMainContext*>(this);
+}
+
+GMainContext* MainContext::gobj_copy() const
+{
+ reference();
+ return const_cast<GMainContext*>(gobj());
+}
+
+Glib::RefPtr<MainContext> wrap(GMainContext* gobject, bool take_copy)
+{
+ if(take_copy && gobject)
+ g_main_context_ref(gobject);
+
+ return Glib::RefPtr<MainContext>(reinterpret_cast<MainContext*>(gobject));
+}
+
+
+/**** Glib::MainLoop *******************************************************/
+
+Glib::RefPtr<MainLoop> MainLoop::create(bool is_running)
+{
+ return Glib::RefPtr<MainLoop>(
+ reinterpret_cast<MainLoop*>(g_main_loop_new(0, is_running)));
+}
+
+Glib::RefPtr<MainLoop> MainLoop::create(const Glib::RefPtr<MainContext>& context, bool is_running)
+{
+ return Glib::RefPtr<MainLoop>(
+ reinterpret_cast<MainLoop*>(g_main_loop_new(Glib::unwrap(context), is_running)));
+}
+
+void MainLoop::run()
+{
+ g_main_loop_run(gobj());
+}
+
+void MainLoop::quit()
+{
+ g_main_loop_quit(gobj());
+}
+
+bool MainLoop::is_running()
+{
+ return g_main_loop_is_running(gobj());
+}
+
+Glib::RefPtr<MainContext> MainLoop::get_context()
+{
+ return Glib::wrap(g_main_loop_get_context(gobj()), true);
+}
+
+//static:
+int MainLoop::depth()
+{
+ return g_main_depth();
+}
+
+void MainLoop::reference() const
+{
+ g_main_loop_ref(reinterpret_cast<GMainLoop*>(const_cast<MainLoop*>(this)));
+}
+
+void MainLoop::unreference() const
+{
+ g_main_loop_unref(reinterpret_cast<GMainLoop*>(const_cast<MainLoop*>(this)));
+}
+
+GMainLoop* MainLoop::gobj()
+{
+ return reinterpret_cast<GMainLoop*>(this);
+}
+
+const GMainLoop* MainLoop::gobj() const
+{
+ return reinterpret_cast<const GMainLoop*>(this);
+}
+
+GMainLoop* MainLoop::gobj_copy() const
+{
+ reference();
+ return const_cast<GMainLoop*>(gobj());
+}
+
+Glib::RefPtr<MainLoop> wrap(GMainLoop* gobject, bool take_copy)
+{
+ if(take_copy && gobject)
+ g_main_loop_ref(gobject);
+
+ return Glib::RefPtr<MainLoop>(reinterpret_cast<MainLoop*>(gobject));
+}
+
+
+/**** Glib::Source *********************************************************/
+
+// static
+const GSourceFuncs Source::vfunc_table_ =
+{
+ &Source::prepare_vfunc,
+ &Source::check_vfunc,
+ &Source::dispatch_vfunc,
+ 0, // finalize_vfunc // We can't use finalize_vfunc because there is no way
+ // to store a pointer to our wrapper anywhere in GSource so
+ // that it persists until finalize_vfunc would be called from here.
+ 0, // closure_callback
+ 0, // closure_marshal
+};
+
+unsigned int Source::attach(const Glib::RefPtr<MainContext>& context)
+{
+ return g_source_attach(gobject_, Glib::unwrap(context));
+}
+
+unsigned int Source::attach()
+{
+ return g_source_attach(gobject_, 0);
+}
+
+void Source::destroy()
+{
+ g_source_destroy(gobject_);
+}
+
+void Source::set_priority(int priority)
+{
+ g_source_set_priority(gobject_, priority);
+}
+
+int Source::get_priority() const
+{
+ return g_source_get_priority(gobject_);
+}
+
+void Source::set_can_recurse(bool can_recurse)
+{
+ g_source_set_can_recurse(gobject_, can_recurse);
+}
+
+bool Source::get_can_recurse() const
+{
+ return g_source_get_can_recurse(gobject_);
+}
+
+unsigned int Source::get_id() const
+{
+ return g_source_get_id(gobject_);
+}
+
+Glib::RefPtr<MainContext> Source::get_context()
+{
+ return Glib::wrap(g_source_get_context(gobject_), true);
+}
+
+GSource* Source::gobj_copy() const
+{
+ return g_source_ref(gobject_);
+}
+
+void Source::reference() const
+{
+ g_source_ref(gobject_);
+}
+
+void Source::unreference() const
+{
+ g_source_unref(gobject_);
+}
+
+Source::Source()
+:
+ gobject_ (g_source_new(const_cast<GSourceFuncs*>(&vfunc_table_), sizeof(GSource)))
+{
+ g_source_set_callback(
+ gobject_, &glibmm_dummy_source_callback,
+ new SourceCallbackData(this), // our persistant callback data object
+ &SourceCallbackData::destroy_notify_callback);
+}
+
+Source::Source(GSource* cast_item, GSourceFunc callback_func)
+:
+ gobject_ (cast_item)
+{
+ g_source_set_callback(
+ gobject_, callback_func,
+ new SourceCallbackData(this), // our persistant callback data object
+ &SourceCallbackData::destroy_notify_callback);
+}
+
+Source::~Source()
+{
+ // The dtor should be invoked by destroy_notify_callback() only, which clears
+ // gobject_ before deleting. However, we might also get to this point if
+ // a derived ctor threw an exception, and then we need to unref manually.
+
+ if(gobject_)
+ {
+ SourceCallbackData *const data = glibmm_source_get_callback_data(gobject_);
+ data->wrapper = 0;
+
+ GSource *const tmp_gobject = gobject_;
+ gobject_ = 0;
+
+ g_source_unref(tmp_gobject);
+ }
+}
+
+sigc::connection Source::connect_generic(const sigc::slot_base& slot)
+{
+ SourceConnectionNode *const conn_node = new SourceConnectionNode(slot);
+ const sigc::connection connection (*conn_node->get_slot());
+
+ // Don't override the callback data. Reuse the existing one
+ // calling SourceCallbackData::set_node() to register conn_node.
+ SourceCallbackData *const data = glibmm_source_get_callback_data(gobject_);
+ data->set_node(conn_node);
+
+ conn_node->install(gobject_);
+ return connection;
+}
+
+void Source::add_poll(Glib::PollFD& poll_fd)
+{
+ g_source_add_poll(gobject_, poll_fd.gobj());
+}
+
+void Source::remove_poll(Glib::PollFD& poll_fd)
+{
+ g_source_remove_poll(gobject_, poll_fd.gobj());
+}
+
+void Source::get_current_time(Glib::TimeVal& current_time)
+{
+ g_source_get_current_time(gobject_, &current_time);
+}
+
+inline // static
+Source* Source::get_wrapper(GSource* source)
+{
+ SourceCallbackData *const data = glibmm_source_get_callback_data(source);
+ return data->wrapper;
+}
+
+// static
+gboolean Source::prepare_vfunc(GSource* source, int* timeout)
+{
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ Source *const self = get_wrapper(source);
+ return self->prepare(*timeout);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return 0;
+}
+
+// static
+gboolean Source::check_vfunc(GSource* source)
+{
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ Source *const self = get_wrapper(source);
+ return self->check();
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return 0;
+}
+
+// static
+gboolean Source::dispatch_vfunc(GSource*, GSourceFunc callback, void* user_data)
+{
+ SourceCallbackData *const callback_data = static_cast<SourceCallbackData*>(user_data);
+
+ g_return_val_if_fail(callback == &glibmm_dummy_source_callback, 0);
+ g_return_val_if_fail(callback_data != 0 && callback_data->node != 0, 0);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ Source *const self = callback_data->wrapper;
+ return self->dispatch(callback_data->node->get_slot());
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ return 0;
+}
+
+// static
+void Source::destroy_notify_callback(void* data)
+{
+ if(data)
+ {
+ Source *const self = static_cast<Source*>(data);
+
+ // gobject_ is already invalid at this point.
+ self->gobject_ = 0;
+
+ // No exception checking: if the dtor throws, you're out of luck anyway.
+ delete self;
+ }
+}
+
+
+/**** Glib::TimeoutSource **************************************************/
+
+// static
+Glib::RefPtr<TimeoutSource> TimeoutSource::create(unsigned int interval)
+{
+ return Glib::RefPtr<TimeoutSource>(new TimeoutSource(interval));
+}
+
+sigc::connection TimeoutSource::connect(const sigc::slot<bool>& slot)
+{
+ return connect_generic(slot);
+}
+
+TimeoutSource::TimeoutSource(unsigned int interval)
+:
+ interval_ (interval)
+{
+ expiration_.assign_current_time();
+ expiration_.add_milliseconds(std::min<unsigned long>(G_MAXLONG, interval_));
+}
+
+TimeoutSource::~TimeoutSource()
+{}
+
+bool TimeoutSource::prepare(int& timeout)
+{
+ Glib::TimeVal current_time;
+ get_current_time(current_time);
+
+ Glib::TimeVal remaining = expiration_;
+ remaining.subtract(current_time);
+
+ if(remaining.negative())
+ {
+ // Already expired.
+ timeout = 0;
+ }
+ else
+ {
+ const unsigned long milliseconds =
+ static_cast<unsigned long>(remaining.tv_sec) * 1000U +
+ static_cast<unsigned long>(remaining.tv_usec) / 1000U;
+
+ // Set remaining milliseconds.
+ timeout = std::min<unsigned long>(G_MAXINT, milliseconds);
+
+ // Check if the system time has been set backwards. (remaining > interval)
+ remaining.add_milliseconds(- std::min<unsigned long>(G_MAXLONG, interval_) - 1);
+ if(!remaining.negative())
+ {
+ // Oh well. Reset the expiration time to now + interval;
+ // this at least avoids hanging for long periods of time.
+ expiration_ = current_time;
+ expiration_.add_milliseconds(interval_);
+ timeout = std::min<unsigned int>(G_MAXINT, interval_);
+ }
+ }
+
+ return (timeout == 0);
+}
+
+bool TimeoutSource::check()
+{
+ Glib::TimeVal current_time;
+ get_current_time(current_time);
+
+ return (expiration_ <= current_time);
+}
+
+bool TimeoutSource::dispatch(sigc::slot_base* slot)
+{
+ const bool again = (*static_cast<sigc::slot<bool>*>(slot))();
+
+ if(again)
+ {
+ get_current_time(expiration_);
+ expiration_.add_milliseconds(std::min<unsigned long>(G_MAXLONG, interval_));
+ }
+
+ return again;
+}
+
+
+/**** Glib::IdleSource *****************************************************/
+
+// static
+Glib::RefPtr<IdleSource> IdleSource::create()
+{
+ return Glib::RefPtr<IdleSource>(new IdleSource());
+}
+
+sigc::connection IdleSource::connect(const sigc::slot<bool>& slot)
+{
+ return connect_generic(slot);
+}
+
+IdleSource::IdleSource()
+{
+ set_priority(PRIORITY_DEFAULT_IDLE);
+}
+
+IdleSource::~IdleSource()
+{}
+
+bool IdleSource::prepare(int& timeout)
+{
+ timeout = 0;
+ return true;
+}
+
+bool IdleSource::check()
+{
+ return true;
+}
+
+bool IdleSource::dispatch(sigc::slot_base* slot)
+{
+ return (*static_cast<sigc::slot<bool>*>(slot))();
+}
+
+
+/**** Glib::IOSource *******************************************************/
+
+// static
+Glib::RefPtr<IOSource> IOSource::create(int fd, IOCondition condition)
+{
+ return Glib::RefPtr<IOSource>(new IOSource(fd, condition));
+}
+
+Glib::RefPtr<IOSource> IOSource::create(const Glib::RefPtr<IOChannel>& channel, IOCondition condition)
+{
+ return Glib::RefPtr<IOSource>(new IOSource(channel, condition));
+}
+
+sigc::connection IOSource::connect(const sigc::slot<bool,IOCondition>& slot)
+{
+ return connect_generic(slot);
+}
+
+IOSource::IOSource(int fd, IOCondition condition)
+:
+ poll_fd_ (fd, condition)
+{
+ add_poll(poll_fd_);
+}
+
+IOSource::IOSource(const Glib::RefPtr<IOChannel>& channel, IOCondition condition)
+:
+ Source(g_io_create_watch(channel->gobj(), (GIOCondition) condition),
+ (GSourceFunc) &glibmm_iosource_callback)
+{}
+
+IOSource::~IOSource()
+{}
+
+bool IOSource::prepare(int& timeout)
+{
+ timeout = -1;
+ return false;
+}
+
+bool IOSource::check()
+{
+ return ((poll_fd_.get_revents() & poll_fd_.get_events()) != 0);
+}
+
+bool IOSource::dispatch(sigc::slot_base* slot)
+{
+ return (*static_cast<sigc::slot<bool,IOCondition>*>(slot))
+ (poll_fd_.get_revents());
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/main.h b/libs/glibmm2/glib/glibmm/main.h
new file mode 100644
index 0000000000..1bd1be0c86
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/main.h
@@ -0,0 +1,738 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_MAIN_H
+#define _GLIBMM_MAIN_H
+
+/* $Id: main.h,v 1.9 2005/03/14 15:22:13 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/giochannel.h>
+#include <glib/gmain.h>
+
+#include <vector>
+#include <sigc++/sigc++.h>
+
+#include <glibmmconfig.h>
+#include <glibmm/refptr.h>
+#include <glibmm/timeval.h>
+
+GLIBMM_USING_STD(vector)
+
+
+namespace Glib
+{
+
+class Cond;
+class Mutex;
+class IOChannel;
+
+
+/** @defgroup MainLoop The Main Event Loop
+ * Manages all available sources of events.
+ * @{
+ */
+
+enum
+{
+ /*! Use this for high priority event sources. It is not used within
+ * GLib or GTK+.<br><br>
+ */
+ PRIORITY_HIGH = -100,
+
+ /*! Use this for default priority event sources. In glibmm this
+ * priority is used by default when installing timeout handlers with
+ * SignalTimeout::connect(). In GDK this priority is used for events
+ * from the X server.<br><br>
+ */
+ PRIORITY_DEFAULT = 0,
+
+ /*! Use this for high priority idle functions. GTK+ uses
+ * <tt>PRIORITY_HIGH_IDLE&nbsp;+&nbsp;10</tt> for resizing operations, and
+ * <tt>PRIORITY_HIGH_IDLE&nbsp;+&nbsp;20</tt> for redrawing operations.
+ * (This is done to ensure that any pending resizes are processed before
+ * any pending redraws, so that widgets are not redrawn twice unnecessarily.)
+ * <br><br>
+ */
+ PRIORITY_HIGH_IDLE = 100,
+
+ /*! Use this for default priority idle functions. In glibmm this priority is
+ * used by default when installing idle handlers with SignalIdle::connect().
+ * <br><br>
+ */
+ PRIORITY_DEFAULT_IDLE = 200,
+
+ /*! Use this for very low priority background tasks. It is not used within
+ * GLib or GTK+.
+ */
+ PRIORITY_LOW = 300
+};
+
+
+/** A bitwise combination representing an I/O condition to watch for on an
+ * event source.
+ * The flags correspond to those used by the <tt>%poll()</tt> system call
+ * on UNIX (see <tt>man 2 poll</tt>). To test for individual flags, do
+ * something like this:
+ * @code
+ * if((condition & Glib::IO_OUT) != 0)
+ * do_some_output();
+ * @endcode
+ * @par Bitwise operators:
+ * <tt>IOCondition operator|(IOCondition, IOCondition)</tt><br>
+ * <tt>IOCondition operator&(IOCondition, IOCondition)</tt><br>
+ * <tt>IOCondition operator^(IOCondition, IOCondition)</tt><br>
+ * <tt>IOCondition operator~(IOCondition)</tt><br>
+ * <tt>IOCondition& operator|=(IOCondition&, IOCondition)</tt><br>
+ * <tt>IOCondition& operator&=(IOCondition&, IOCondition)</tt><br>
+ * <tt>IOCondition& operator^=(IOCondition&, IOCondition)</tt><br>
+ */
+enum IOCondition
+{
+ IO_IN = G_IO_IN, /*!< @hideinitializer There is data to read. */
+ IO_OUT = G_IO_OUT, /*!< @hideinitializer Data can be written (without blocking). */
+ IO_PRI = G_IO_PRI, /*!< @hideinitializer There is urgent data to read. */
+ IO_ERR = G_IO_ERR, /*!< @hideinitializer %Error condition. */
+ IO_HUP = G_IO_HUP, /*!< @hideinitializer Hung up (the connection has been broken,
+ usually for pipes and sockets). */
+ IO_NVAL = G_IO_NVAL /*!< @hideinitializer Invalid request. The file descriptor is not open. */
+};
+
+inline IOCondition operator|(IOCondition lhs, IOCondition rhs)
+ { return static_cast<IOCondition>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); }
+
+inline IOCondition operator&(IOCondition lhs, IOCondition rhs)
+ { return static_cast<IOCondition>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); }
+
+inline IOCondition operator^(IOCondition lhs, IOCondition rhs)
+ { return static_cast<IOCondition>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); }
+
+inline IOCondition operator~(IOCondition flags)
+ { return static_cast<IOCondition>(~static_cast<unsigned>(flags)); }
+
+inline IOCondition& operator|=(IOCondition& lhs, IOCondition rhs)
+ { return (lhs = static_cast<IOCondition>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); }
+
+inline IOCondition& operator&=(IOCondition& lhs, IOCondition rhs)
+ { return (lhs = static_cast<IOCondition>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); }
+
+inline IOCondition& operator^=(IOCondition& lhs, IOCondition rhs)
+ { return (lhs = static_cast<IOCondition>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs))); }
+
+
+class PollFD
+{
+public:
+ PollFD();
+ explicit PollFD(int fd);
+ PollFD(int fd, IOCondition events);
+
+ void set_fd(int fd) { gobject_.fd = fd; }
+ int get_fd() const { return gobject_.fd; }
+
+ void set_events(IOCondition events) { gobject_.events = events; }
+ IOCondition get_events() const { return static_cast<IOCondition>(gobject_.events); }
+
+ void set_revents(IOCondition revents) { gobject_.revents = revents; }
+ IOCondition get_revents() const { return static_cast<IOCondition>(gobject_.revents); }
+
+ GPollFD* gobj() { return &gobject_; }
+ const GPollFD* gobj() const { return &gobject_; }
+
+private:
+ GPollFD gobject_;
+};
+
+
+class SignalTimeout
+{
+public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ explicit inline SignalTimeout(GMainContext* context);
+#endif
+
+ /** Connects a timeout handler.
+ * @code
+ * Glib::signal_timeout().connect(sigc::ptr_fun(&timeout_handler), 1000);
+ * @endcode
+ * is equivalent to:
+ * @code
+ * const Glib::RefPtr<Glib::TimeoutSource> timeout_source = Glib::TimeoutSource::create(1000);
+ * timeout_source->connect(sigc::ptr_fun(&timeout_handler));
+ * timeout_source->attach(Glib::MainContext::get_default());
+ * @endcode
+ * @param slot A slot to call when @a interval elapsed.
+ * @param interval The timeout in milliseconds.
+ * @param priority The priority of the new event source.
+ * @return A connection handle, which can be used to disconnect the handler.
+ */
+ sigc::connection connect(const sigc::slot<bool>& slot, unsigned int interval,
+ int priority = PRIORITY_DEFAULT);
+private:
+ GMainContext* context_;
+
+ // no copy assignment
+ SignalTimeout& operator=(const SignalTimeout&);
+};
+
+
+class SignalIdle
+{
+public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ explicit inline SignalIdle(GMainContext* context);
+#endif
+
+ /** Connects an idle handler.
+ * @code
+ * Glib::signal_idle().connect(sigc::ptr_fun(&idle_handler));
+ * @endcode
+ * is equivalent to:
+ * @code
+ * const Glib::RefPtr<Glib::IdleSource> idle_source = Glib::IdleSource::create();
+ * idle_source->connect(sigc::ptr_fun(&idle_handler));
+ * idle_source->attach(Glib::MainContext::get_default());
+ * @endcode
+ * @param slot A slot to call when the main loop is idle.
+ * @param priority The priority of the new event source.
+ * @return A connection handle, which can be used to disconnect the handler.
+ */
+ sigc::connection connect(const sigc::slot<bool>& slot, int priority = PRIORITY_DEFAULT_IDLE);
+
+private:
+ GMainContext* context_;
+
+ // no copy assignment
+ SignalIdle& operator=(const SignalIdle&);
+};
+
+
+class SignalIO
+{
+public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ explicit inline SignalIO(GMainContext* context);
+#endif
+
+ /** Connects an I/O handler.
+ * @code
+ * Glib::signal_io().connect(sigc::ptr_fun(&io_handler), fd, Glib::IO_IN | Glib::IO_HUP);
+ * @endcode
+ * is equivalent to:
+ * @code
+ * const Glib::RefPtr<Glib::IOSource> io_source = Glib::IOSource::create(fd, Glib::IO_IN | Glib::IO_HUP);
+ * io_source->connect(sigc::ptr_fun(&io_handler));
+ * io_source->attach(Glib::MainContext::get_default());
+ * @endcode
+ * @param slot A slot to call when polling @a fd results in an event that matches @a condition.
+ * The event will be passed as a parameter to @a slot.
+ * If @a io_handler returns <tt>false</tt> the signal is disconnected.
+ * @param fd The file descriptor (or a @c HANDLE on Win32 systems) to watch.
+ * @param condition The conditions to watch for.
+ * @param priority The priority of the new event source.
+ * @return A connection handle, which can be used to disconnect the handler.
+ */
+ sigc::connection connect(const sigc::slot<bool,IOCondition>& slot, int fd,
+ IOCondition condition, int priority = PRIORITY_DEFAULT);
+
+ /** Connects an I/O channel.
+ * @code
+ * Glib::signal_io().connect(sigc::ptr_fun(&io_handler), channel, Glib::IO_IN | Glib::IO_HUP);
+ * @endcode
+ * is equivalent to:
+ * @code
+ * const Glib::RefPtr<Glib::IOSource> io_source = Glib::IOSource::create(channel, Glib::IO_IN | Glib::IO_HUP);
+ * io_source->connect(sigc::ptr_fun(&io_handler));
+ * io_source->attach(Glib::MainContext::get_default());
+ * @endcode
+ * @param slot A slot to call when polling @a channel results in an event that matches @a condition.
+ * The event will be passed as a parameter to @a slot.
+ * If @a io_handler returns <tt>false</tt> the signal is disconnected.
+ * @param channel The IOChannel object to watch.
+ * @param condition The conditions to watch for.
+ * @param priority The priority of the new event source.
+ * @return A connection handle, which can be used to disconnect the handler.
+ */
+ sigc::connection connect(const sigc::slot<bool,IOCondition>& slot, const Glib::RefPtr<IOChannel>& channel,
+ IOCondition condition, int priority = PRIORITY_DEFAULT);
+
+private:
+ GMainContext* context_;
+
+ // no copy assignment
+ SignalIO& operator=(const SignalIO&);
+};
+
+class SignalChildWatch
+{
+public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ explicit inline SignalChildWatch(GMainContext* context);
+#endif
+ /** Connects a child watch handler.
+ * @code
+ * Glib::signal_child_watch().connect(sigc::ptr_fun(&child_watch_handler), pid);
+ * @endcode
+ * @param slot A slot to call when child @a pid exited.
+ * @param pid The child to watch for.
+ * @param priority The priority of the new event source.
+ * @return A connection handle, which can be used to disconnect the handler.
+ */
+ sigc::connection connect(const sigc::slot<void,GPid, int>& slot, GPid pid,
+int priority = PRIORITY_DEFAULT);
+private:
+ GMainContext* context_;
+
+ // no copy assignment
+ SignalChildWatch& operator=(const SignalChildWatch&);
+};
+
+/** Convenience timeout signal.
+ * @return A signal proxy; you want to use SignalTimeout::connect().
+ */
+SignalTimeout signal_timeout();
+
+/** Convenience idle signal.
+ * @return A signal proxy; you want to use SignalIdle::connect().
+ */
+SignalIdle signal_idle();
+
+/** Convenience I/O signal.
+ * @return A signal proxy; you want to use SignalIO::connect().
+ */
+SignalIO signal_io();
+
+/** Convenience child watch signal.
+ * @return A signal proxy; you want to use SignalChildWatch::connect().
+ */
+SignalChildWatch signal_child_watch();
+
+
+/** Main context.
+ */
+class MainContext
+{
+public:
+ typedef Glib::MainContext CppObjectType;
+ typedef GMainContext BaseObjectType;
+
+ /** Creates a new MainContext.
+ * @return The new MainContext.
+ */
+ static Glib::RefPtr<MainContext> create();
+ /** Returns the default main context.
+ * This is the main context used for main loop functions when a main loop is not explicitly specified.
+ * @return The new MainContext.
+ */
+ static Glib::RefPtr<MainContext> get_default();
+
+ /** Runs a single iteration for the given main loop.
+ * This involves checking to see if any event sources are ready to be processed, then if no events sources are
+ * ready and may_block is true, waiting for a source to become ready, then dispatching the highest priority events
+ * sources that are ready. Note that even when may_block is true, it is still possible for iteration() to return
+ * false, since the the wait may be interrupted for other reasons than an event source becoming ready.
+ * @param may_block Whether the call may block.
+ * @return true if events were dispatched.
+ */
+ bool iteration(bool may_block);
+
+ /** Checks if any sources have pending events for the given context.
+ * @return true if events are pending.
+ */
+ bool pending();
+
+ /** If context is currently waiting in a poll(), interrupt the poll(), and continue the iteration process.
+ */
+ void wakeup();
+
+ /** Tries to become the owner of the specified context.
+ * If some other context is the owner of the context, returns FALSE immediately. Ownership is properly recursive:
+ * the owner can require ownership again and will release ownership when release() is called as many times as
+ * acquire().
+ * You must be the owner of a context before you can call prepare(), query(), check(), dispatch().
+ * @return true if the operation succeeded, and this thread is now the owner of context.
+ */
+ bool acquire();
+
+
+ /** Tries to become the owner of the specified context, as with acquire(). But if another thread is the owner,
+ * atomically drop mutex and wait on cond until that owner releases ownership or until cond is signaled, then try
+ * again (once) to become the owner.
+ * @param cond A condition variable.
+ * @param mutex A mutex, currently held.
+ * @return true if the operation succeeded, and this thread is now the owner of context.
+ */
+ bool wait(Glib::Cond& cond, Glib::Mutex& mutex);
+
+ /** Releases ownership of a context previously acquired by this thread with acquire(). If the context was acquired
+ * multiple times, the only release ownership when release() is called as many times as it was acquired.
+ */
+ void release();
+
+
+
+ /** Prepares to poll sources within a main loop. The resulting information for polling is determined by calling query().
+ * @param priority Location to store priority of highest priority source already ready.
+ * @return true if some source is ready to be dispatched prior to polling.
+ */
+ bool prepare(int& priority);
+ /** Prepares to poll sources within a main loop. The resulting information for polling is determined by calling query().
+ * @return true if some source is ready to be dispatched prior to polling.
+ */
+ bool prepare();
+
+ /** Determines information necessary to poll this main loop.
+ * @param max_priority Maximum priority source to check.
+ * @param timeout Location to store timeout to be used in polling.
+ * @param fds Location to store Glib::PollFD records that need to be polled.
+ * @return the number of records actually stored in fds, or, if more than n_fds records need to be stored, the number of records that need to be stored.
+ */
+ void query(int max_priority, int& timeout, std::vector<PollFD>& fds);
+
+ /** Passes the results of polling back to the main loop.
+ * @param max_priority Maximum numerical priority of sources to check.
+ * @param fds Vector of Glib::PollFD's that was passed to the last call to query()
+ * @return true if some sources are ready to be dispatched.
+ */
+ bool check(int max_priority, std::vector<PollFD>& fds);
+
+ /** Dispatches all pending sources.
+ */
+ void dispatch();
+
+ //TODO: Use slot instead?
+ /** Sets the function to use to handle polling of file descriptors. It will be used instead of the poll() system call (or GLib's replacement function, which is used where poll() isn't available).
+ * This function could possibly be used to integrate the GLib event loop with an external event loop.
+ * @param poll_func The function to call to poll all file descriptors.
+ */
+ void set_poll_func(GPollFunc poll_func);
+
+ /** Gets the poll function set by g_main_context_set_poll_func().
+ * @return The poll function
+ */
+ GPollFunc get_poll_func();
+
+ /** Adds a file descriptor to the set of file descriptors polled for this context. This will very seldomly be used directly. Instead a typical event source will use Glib::Source::add_poll() instead.
+ * @param fd A PollFD structure holding information about a file descriptor to watch.
+ * @param priority The priority for this file descriptor which should be the same as the priority used for Glib::Source::attach() to ensure that the file descriptor is polled whenever the results may be needed.
+ */
+ void add_poll(PollFD& fd, int priority);
+
+ /** Removes file descriptor from the set of file descriptors to be polled for a particular context.
+ * @param fd A PollFD structure holding information about a file descriptor.
+ */
+ void remove_poll(PollFD& fd);
+
+ /** Timeout signal, attached to this MainContext.
+ * @return A signal proxy; you want to use SignalTimeout::connect().
+ */
+ SignalTimeout signal_timeout();
+
+ /** Idle signal, attached to this MainContext.
+ * @return A signal proxy; you want to use SignalIdle::connect().
+ */
+ SignalIdle signal_idle();
+
+ /** I/O signal, attached to this MainContext.
+ * @return A signal proxy; you want to use SignalIO::connect().
+ */
+ SignalIO signal_io();
+
+ /** child watch signal, attached to this MainContext.
+ * @return A signal proxy; you want to use SignalChildWatch::connect().
+ */
+ SignalChildWatch signal_child_watch();
+
+ void reference() const;
+ void unreference() const;
+
+ GMainContext* gobj();
+ const GMainContext* gobj() const;
+ GMainContext* gobj_copy() const;
+
+private:
+ // Glib::MainContext can neither be constructed nor deleted.
+ MainContext();
+ void operator delete(void*, size_t);
+
+ // noncopyable
+ MainContext(const MainContext& other);
+ MainContext& operator=(const MainContext& other);
+
+};
+
+/** @relates Glib::MainContext */
+Glib::RefPtr<MainContext> wrap(GMainContext* gobject, bool take_copy = false);
+
+
+class MainLoop
+{
+public:
+ typedef Glib::MainLoop CppObjectType;
+ typedef GMainLoop BaseObjectType;
+
+ static Glib::RefPtr<MainLoop> create(bool is_running = false);
+ static Glib::RefPtr<MainLoop> create(const Glib::RefPtr<MainContext>& context,
+ bool is_running = false);
+
+ /** Runs a main loop until quit() is called on the loop.
+ * If this is called for the thread of the loop's MainContext, it will process events from the loop, otherwise it will simply wait.
+ */
+ void run();
+
+ /** Stops a MainLoop from running. Any calls to run() for the loop will return.
+ */
+ void quit();
+
+ /** Checks to see if the main loop is currently being run via run().
+ * @return true if the mainloop is currently being run.
+ */
+ bool is_running();
+
+ /** Returns the MainContext of loop.
+ * @return The MainContext of loop.
+ */
+ Glib::RefPtr<MainContext> get_context();
+
+ //TODO: C++ize the (big) g_main_depth docs here.
+ static int depth();
+
+ /** Increases the reference count on a MainLoop object by one.
+ */
+ void reference() const;
+
+ /** Decreases the reference count on a MainLoop object by one.
+ * If the result is zero, free the loop and free all associated memory.
+ */
+ void unreference() const;
+
+ GMainLoop* gobj();
+ const GMainLoop* gobj() const;
+ GMainLoop* gobj_copy() const;
+
+private:
+ // Glib::MainLoop can neither be constructed nor deleted.
+ MainLoop();
+ void operator delete(void*, size_t);
+
+ MainLoop(const MainLoop&);
+ MainLoop& operator=(const MainLoop&);
+};
+
+/** @relates Glib::MainLoop */
+Glib::RefPtr<MainLoop> wrap(GMainLoop* gobject, bool take_copy = false);
+
+
+class Source
+{
+public:
+ typedef Glib::Source CppObjectType;
+ typedef GSource BaseObjectType;
+
+ static Glib::RefPtr<Source> create() /* = 0 */;
+
+ /** Adds a Source to a context so that it will be executed within that context.
+ * @param context A MainContext.
+ * @return The ID for the source within the MainContext.
+ */
+ unsigned int attach(const Glib::RefPtr<MainContext>& context);
+
+ /** Adds a Source to a context so that it will be executed within that context.
+ * The default context will be used.
+ * @return The ID for the source within the MainContext.
+ */
+ unsigned int attach();
+
+ //TODO: Does this destroy step make sense in C++? Should it just be something that happens in a destructor?
+
+ /** Removes a source from its MainContext, if any, and marks it as destroyed.
+ * The source cannot be subsequently added to another context.
+ */
+ void destroy();
+
+ /** Sets the priority of a source. While the main loop is being run, a source will be dispatched if it is ready to be dispatched and no sources at a higher (numerically smaller) priority are ready to be dispatched.
+ * @param priority The new priority.
+ */
+ void set_priority(int priority);
+
+ /** Gets the priority of a source.
+ * @return The priority of the source.
+ */
+ int get_priority() const;
+
+ /** Sets whether a source can be called recursively.
+ * If @a can_recurse is true, then while the source is being dispatched then this source will be processed normally. Otherwise, all processing of this source is blocked until the dispatch function returns.
+ * @param can_recurse Whether recursion is allowed for this source.
+ */
+ void set_can_recurse(bool can_recurse);
+
+ /** Checks whether a source is allowed to be called recursively. see set_can_recurse().
+ * @return Whether recursion is allowed.
+ */
+ bool get_can_recurse() const;
+
+ /** Returns the numeric ID for a particular source.
+ * The ID of a source is unique within a particular main loop context. The reverse mapping from ID to source is done by MainContext::find_source_by_id().
+ * @return The ID for the source.
+ */
+ unsigned int get_id() const;
+
+ //TODO: Add a const version of this method?
+ /** Gets the MainContext with which the source is associated.
+ * Calling this function on a destroyed source is an error.
+ * @return The MainContext with which the source is associated, or a null RefPtr if the context has not yet been added to a source.
+ */
+ Glib::RefPtr<MainContext> get_context();
+
+ GSource* gobj() { return gobject_; }
+ const GSource* gobj() const { return gobject_; }
+ GSource* gobj_copy() const;
+
+ void reference() const;
+ void unreference() const;
+
+protected:
+ /** Construct an object that uses the virtual functions prepare(), check() and dispatch().
+ */
+ Source();
+
+ /** Wrap an existing GSource object and install the given callback function.
+ * The constructed object doesn't use the virtual functions prepare(), check() and dispatch().
+ * This constructor is for use by derived types that need to wrap a GSource object.
+ * The callback function can be a static member function. But beware -
+ * depending on the actual implementation of the GSource's virtual functions
+ * the expected type of the callback function can differ from GSourceFunc.
+ */
+ Source(GSource* cast_item, GSourceFunc callback_func);
+
+ virtual ~Source();
+
+ sigc::connection connect_generic(const sigc::slot_base& slot);
+
+ /** Adds a file descriptor to the set of file descriptors polled for this source.
+ * The event source's check function will typically test the revents field in the PollFD and return true if events need to be processed.
+ * @param poll_fd A PollFD object holding information about a file descriptor to watch.
+ */
+ void add_poll(PollFD& poll_fd);
+
+ /** Removes a file descriptor from the set of file descriptors polled for this source.
+ * @param poll_fd A PollFD object previously passed to add_poll().
+ */
+ void remove_poll(PollFD& poll_fd);
+
+ /** Gets the "current time" to be used when checking this source. The advantage of calling this function over calling get_current_time() directly is that when checking multiple sources, GLib can cache a single value instead of having to repeatedly get the system time.
+ * @param current_time Glib::TimeVal in which to store current time
+ */
+ void get_current_time(Glib::TimeVal& current_time);
+
+ virtual bool prepare(int& timeout) = 0;
+ virtual bool check() = 0;
+ virtual bool dispatch(sigc::slot_base* slot) = 0;
+
+private:
+ GSource* gobject_;
+
+#ifndef DOXGEN_SHOULD_SKIP_THIS
+
+ static inline Source* get_wrapper(GSource* source);
+
+ static const GSourceFuncs vfunc_table_;
+
+ static gboolean prepare_vfunc(GSource* source, int* timeout);
+ static gboolean check_vfunc(GSource* source);
+ static gboolean dispatch_vfunc(GSource* source, GSourceFunc callback, void* user_data);
+public:
+ static void destroy_notify_callback(void* data);
+private:
+
+#endif /* DOXGEN_SHOULD_SKIP_THIS */
+
+ // noncopyable
+ Source(const Source&);
+ Source& operator=(const Source&);
+};
+
+
+class TimeoutSource : public Glib::Source
+{
+public:
+ typedef Glib::TimeoutSource CppObjectType;
+
+ static Glib::RefPtr<TimeoutSource> create(unsigned int interval);
+ sigc::connection connect(const sigc::slot<bool>& slot);
+
+protected:
+ explicit TimeoutSource(unsigned int interval);
+ virtual ~TimeoutSource();
+
+ virtual bool prepare(int& timeout);
+ virtual bool check();
+ virtual bool dispatch(sigc::slot_base* slot);
+
+private:
+ Glib::TimeVal expiration_;
+ unsigned int interval_;
+};
+
+
+class IdleSource : public Glib::Source
+{
+public:
+ typedef Glib::IdleSource CppObjectType;
+
+ static Glib::RefPtr<IdleSource> create();
+ sigc::connection connect(const sigc::slot<bool>& slot);
+
+protected:
+ IdleSource();
+ virtual ~IdleSource();
+
+ virtual bool prepare(int& timeout);
+ virtual bool check();
+ virtual bool dispatch(sigc::slot_base* slot_data);
+};
+
+
+class IOSource : public Glib::Source
+{
+public:
+ typedef Glib::IOSource CppObjectType;
+
+ static Glib::RefPtr<IOSource> create(int fd, IOCondition condition);
+ static Glib::RefPtr<IOSource> create(const Glib::RefPtr<IOChannel>& channel, IOCondition condition);
+ sigc::connection connect(const sigc::slot<bool,IOCondition>& slot);
+
+protected:
+ IOSource(int fd, IOCondition condition);
+ IOSource(const Glib::RefPtr<IOChannel>& channel, IOCondition condition);
+ virtual ~IOSource();
+
+ virtual bool prepare(int& timeout);
+ virtual bool check();
+ virtual bool dispatch(sigc::slot_base* slot);
+
+private:
+ PollFD poll_fd_;
+};
+
+/** @} group MainLoop */
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_MAIN_H */
+
diff --git a/libs/glibmm2/glib/glibmm/markup.cc b/libs/glibmm2/glib/glibmm/markup.cc
new file mode 100644
index 0000000000..4979583808
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/markup.cc
@@ -0,0 +1,387 @@
+// Generated by gtkmmproc -- DO NOT MODIFY!
+
+
+#include <glibmm/markup.h>
+#include <glibmm/private/markup_p.h>
+
+// -*- c++ -*-
+/* $Id: markup.ccg,v 1.5 2006/10/04 12:04:09 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/markup.h>
+#include <glibmm/exceptionhandler.h>
+#include <glibmm/utility.h>
+#include <glib.h>
+
+
+namespace Glib
+{
+
+namespace Markup
+{
+
+Glib::ustring escape_text(const Glib::ustring& text)
+{
+ const Glib::ScopedPtr<char> buf (g_markup_escape_text(text.data(), text.bytes()));
+ return Glib::ustring(buf.get());
+}
+
+
+/**** Glib::Markup::AttributeKeyLess ***************************************/
+
+bool AttributeKeyLess::operator()(const Glib::ustring& lhs, const Glib::ustring& rhs) const
+{
+ return (lhs.raw() < rhs.raw());
+}
+
+
+/**** Glib::Markup::ParserCallbacks ****************************************/
+
+class ParserCallbacks
+{
+public:
+ static const GMarkupParser vfunc_table;
+
+ static void start_element(GMarkupParseContext* context,
+ const char* element_name,
+ const char** attribute_names,
+ const char** attribute_values,
+ void* user_data,
+ GError** error);
+
+ static void end_element(GMarkupParseContext* context,
+ const char* element_name,
+ void* user_data,
+ GError** error);
+
+ static void text(GMarkupParseContext* context,
+ const char* text,
+ gsize text_len,
+ void* user_data,
+ GError** error);
+
+ static void passthrough(GMarkupParseContext* context,
+ const char* passthrough_text,
+ gsize text_len,
+ void* user_data,
+ GError** error);
+
+ static void error(GMarkupParseContext* context,
+ GError* error,
+ void* user_data);
+};
+
+
+const GMarkupParser ParserCallbacks::vfunc_table =
+{
+ &ParserCallbacks::start_element,
+ &ParserCallbacks::end_element,
+ &ParserCallbacks::text,
+ &ParserCallbacks::passthrough,
+ &ParserCallbacks::error,
+};
+
+void ParserCallbacks::start_element(GMarkupParseContext* context,
+ const char* element_name,
+ const char** attribute_names,
+ const char** attribute_values,
+ void* user_data,
+ GError** error)
+{
+ if(!&error) error = error; //Avoid an unused parameter warning when GLIBMM_EXCEPTIONS_ENABLED is used.
+
+ ParseContext& cpp_context = *static_cast<ParseContext*>(user_data);
+ g_return_if_fail(context == cpp_context.gobj());
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ Parser::AttributeMap attributes;
+
+ if(attribute_names && attribute_values)
+ {
+ const char *const * pname = attribute_names;
+ const char *const * pvalue = attribute_values;
+
+ for(; *pname && *pvalue; ++pname, ++pvalue)
+ attributes.insert(Parser::AttributeMap::value_type(*pname, *pvalue));
+
+ g_return_if_fail(*pname == 0 && *pvalue == 0);
+ }
+
+ cpp_context.get_parser()->on_start_element(cpp_context, element_name, attributes);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(MarkupError& err)
+ {
+ err.propagate(error);
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+}
+
+void ParserCallbacks::end_element(GMarkupParseContext* context,
+ const char* element_name,
+ void* user_data,
+ GError** error)
+{
+ if(!&error) error = error; //Avoid an unused parameter warning when GLIBMM_EXCEPTIONS_ENABLED is used.
+
+ ParseContext& cpp_context = *static_cast<ParseContext*>(user_data);
+ g_return_if_fail(context == cpp_context.gobj());
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ cpp_context.get_parser()->on_end_element(cpp_context, element_name);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(MarkupError& err)
+ {
+ err.propagate(error);
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+}
+
+void ParserCallbacks::text(GMarkupParseContext* context,
+ const char* text,
+ gsize text_len,
+ void* user_data,
+ GError** error)
+{
+ if(!&error) error = error; //Avoid an unused parameter warning when GLIBMM_EXCEPTIONS_ENABLED is used.
+
+ ParseContext& cpp_context = *static_cast<ParseContext*>(user_data);
+ g_return_if_fail(context == cpp_context.gobj());
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ cpp_context.get_parser()->on_text(cpp_context, Glib::ustring(text, text + text_len));
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(MarkupError& err)
+ {
+ err.propagate(error);
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+}
+
+void ParserCallbacks::passthrough(GMarkupParseContext* context,
+ const char* passthrough_text,
+ gsize text_len,
+ void* user_data,
+ GError** error)
+{
+ if(!&error) error = error; //Avoid an unused parameter warning when GLIBMM_EXCEPTIONS_ENABLED is used.
+
+ ParseContext& cpp_context = *static_cast<ParseContext*>(user_data);
+ g_return_if_fail(context == cpp_context.gobj());
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ cpp_context.get_parser()->on_passthrough(
+ cpp_context, Glib::ustring(passthrough_text, passthrough_text + text_len));
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(MarkupError& err)
+ {
+ err.propagate(error);
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+}
+
+void ParserCallbacks::error(GMarkupParseContext* context,
+ GError* error,
+ void* user_data)
+{
+ ParseContext& cpp_context = *static_cast<ParseContext*>(user_data);
+
+ g_return_if_fail(context == cpp_context.gobj());
+ g_return_if_fail(error->domain == G_MARKUP_ERROR);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ cpp_context.get_parser()->on_error(cpp_context, MarkupError(g_error_copy(error)));
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+}
+
+
+/**** Glib::Markup::Parser *************************************************/
+
+Parser::Parser()
+{}
+
+Parser::~Parser()
+{}
+
+void Parser::on_start_element(ParseContext&, const Glib::ustring&, const Parser::AttributeMap&)
+{}
+
+void Parser::on_end_element(ParseContext&, const Glib::ustring&)
+{}
+
+void Parser::on_text(ParseContext&, const Glib::ustring&)
+{}
+
+void Parser::on_passthrough(ParseContext&, const Glib::ustring&)
+{}
+
+void Parser::on_error(ParseContext&, const MarkupError&)
+{}
+
+
+/**** Glib::Markup::ParseContext *******************************************/
+
+ParseContext::ParseContext(Parser& parser, ParseFlags flags)
+:
+ parser_ (&parser),
+ gobject_ (g_markup_parse_context_new(&ParserCallbacks::vfunc_table, (GMarkupParseFlags) flags,
+ this, &ParseContext::destroy_notify_callback))
+{}
+
+ParseContext::~ParseContext()
+{
+ parser_ = 0;
+ g_markup_parse_context_free(gobject_);
+}
+
+void ParseContext::parse(const Glib::ustring& text)
+{
+ GError* error = 0;
+ g_markup_parse_context_parse(gobject_, text.data(), text.bytes(), &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+void ParseContext::parse(const char* text_begin, const char* text_end)
+{
+ GError* error = 0;
+ g_markup_parse_context_parse(gobject_, text_begin, text_end - text_begin, &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+void ParseContext::end_parse()
+{
+ GError* error = 0;
+ g_markup_parse_context_end_parse(gobject_, &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+Glib::ustring ParseContext::get_element() const
+{
+ const char *const element_name = g_markup_parse_context_get_element(gobject_);
+ return (element_name) ? Glib::ustring(element_name) : Glib::ustring();
+}
+
+int ParseContext::get_line_number() const
+{
+ int line_number = 0;
+ g_markup_parse_context_get_position(gobject_, &line_number, 0);
+ return line_number;
+}
+
+int ParseContext::get_char_number() const
+{
+ int char_number = 0;
+ g_markup_parse_context_get_position(gobject_, 0, &char_number);
+ return char_number;
+}
+
+// static
+void ParseContext::destroy_notify_callback(void* data)
+{
+ ParseContext *const self = static_cast<ParseContext*>(data);
+
+ // Detect premature destruction.
+ g_return_if_fail(self->parser_ == 0);
+}
+
+} // namespace Markup
+
+} // namespace Glib
+
+
+namespace
+{
+} // anonymous namespace
+
+
+Glib::MarkupError::MarkupError(Glib::MarkupError::Code error_code, const Glib::ustring& error_message)
+:
+ Glib::Error (G_MARKUP_ERROR, error_code, error_message)
+{}
+
+Glib::MarkupError::MarkupError(GError* gobject)
+:
+ Glib::Error (gobject)
+{}
+
+Glib::MarkupError::Code Glib::MarkupError::code() const
+{
+ return static_cast<Code>(Glib::Error::code());
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+void Glib::MarkupError::throw_func(GError* gobject)
+{
+ throw Glib::MarkupError(gobject);
+}
+#else
+//When not using exceptions, we just pass the Exception object around without throwing it:
+std::auto_ptr<Glib::Error> Glib::MarkupError::throw_func(GError* gobject)
+{
+ return std::auto_ptr<Glib::Error>(new Glib::MarkupError(gobject));
+}
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
diff --git a/libs/glibmm2/glib/glibmm/markup.h b/libs/glibmm2/glib/glibmm/markup.h
new file mode 100644
index 0000000000..0ae7e68ffc
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/markup.h
@@ -0,0 +1,427 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_MARKUP_H
+#define _GLIBMM_MARKUP_H
+
+
+/* $Id: markup.hg,v 1.5 2005/01/21 12:48:05 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <glibmm/error.h>
+#include <sigc++/sigc++.h>
+
+#include <map>
+#include <glibmmconfig.h>
+
+GLIBMM_USING_STD(map)
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GMarkupParseContext GMarkupParseContext; }
+#endif
+
+
+namespace Glib
+{
+
+/** @defgroup Markup Simple XML Subset Parser
+ *
+ * The Glib::Markup parser is intended to parse a simple markup format that's a
+ * subset of XML. This is a small, efficient, easy-to-use parser. It should not
+ * be used if you expect to interoperate with other applications generating
+ * full-scale XML. However, it's very useful for application data files, config
+ * files, etc. where you know your application will be the only one writing the
+ * file. Full-scale XML parsers should be able to parse the subset used by
+ * Glib::Markup parser, so you can easily migrate to full-scale XML at a later
+ * time if the need arises.
+ *
+ * Glib::Markup is not guaranteed to signal an error on all invalid XML;
+ * the parser may accept documents that an XML parser would not. However,
+ * invalid XML documents are not considered valid Glib::Markup documents.
+ *
+ * @par Simplifications to XML include:
+ *
+ * - Only UTF-8 encoding is allowed.
+ * - No user-defined entities.
+ * - Processing instructions, comments and the doctype declaration are "passed
+ * through" but are not interpreted in any way.
+ * - No DTD or validation.
+ *
+ * @par The markup format does support:
+ *
+ * - Elements
+ * - Attributes
+ * - 5 standard entities: <tt>\&amp; \&lt; \&gt; \&quot; \&apos;</tt>
+ * - Character references
+ * - Sections marked as <tt>CDATA</tt>
+ *
+ * @{
+ */
+
+/** %Exception class for markup parsing errors.
+ */
+class MarkupError : public Glib::Error
+{
+public:
+ enum Code
+ {
+ BAD_UTF8,
+ EMPTY,
+ PARSE,
+ UNKNOWN_ELEMENT,
+ UNKNOWN_ATTRIBUTE,
+ INVALID_CONTENT
+ };
+
+ MarkupError(Code error_code, const Glib::ustring& error_message);
+ explicit MarkupError(GError* gobject);
+ Code code() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+private:
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ static void throw_func(GError* gobject);
+#else
+ //When not using exceptions, we just pass the Exception object around without throwing it:
+ static std::auto_ptr<Glib::Error> throw_func(GError* gobject);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ friend void wrap_init(); // uses throw_func()
+#endif
+};
+
+
+/*! @var MarkupError::Code MarkupError::BAD_UTF8
+ * Text being parsed was not valid UTF-8.
+ */
+/*! @var MarkupError::Code MarkupError::EMPTY
+ * Document contained nothing, or only whitespace.
+ */
+/*! @var MarkupError::Code MarkupError::PARSE
+ * Document was ill-formed.
+ */
+/*! @var MarkupError::Code MarkupError::UNKNOWN_ELEMENT
+ * This error should be set by Glib::Markup::Parser virtual methods;
+ * element wasn't known.
+ */
+/*! @var MarkupError::Code MarkupError::UNKNOWN_ATTRIBUTE
+ * This error should be set by Glib::Markup::Parser virtual methods;
+ * attribute wasn't known.
+ */
+/*! @var MarkupError::Code MarkupError::INVALID_CONTENT
+ * This error should be set by Glib::Markup::Parser virtual methods;
+ * something was wrong with contents of the document, e.g. invalid attribute value.
+ */
+
+/** @} group Markup */
+
+
+namespace Markup
+{
+
+class ParseContext;
+
+/** @ingroup Markup */
+typedef Glib::MarkupError Error;
+
+
+/** Escapes text so that the markup parser will parse it verbatim.
+ * Less than, greater than, ampersand, etc. are replaced with the corresponding
+ * entities. This function would typically be used when writing out a file to
+ * be parsed with the markup parser.
+ * @ingroup Markup
+ * @param text Some valid UTF-8 text.
+ * @return Escaped text.
+ */
+Glib::ustring escape_text(const Glib::ustring& text);
+
+
+/** @addtogroup glibmmEnums Enums and Flags */
+
+/** There are no flags right now. Pass <tt>Glib::Markup::ParseFlags(0)</tt> for
+ * the flags argument to all functions (this should be the default argument
+ * anyway).
+ * @ingroup glibmmEnums
+ * @par Bitwise operators:
+ * <tt>%ParseFlags operator|(ParseFlags, ParseFlags)</tt><br>
+ * <tt>%ParseFlags operator&(ParseFlags, ParseFlags)</tt><br>
+ * <tt>%ParseFlags operator^(ParseFlags, ParseFlags)</tt><br>
+ * <tt>%ParseFlags operator~(ParseFlags)</tt><br>
+ * <tt>%ParseFlags& operator|=(ParseFlags&, ParseFlags)</tt><br>
+ * <tt>%ParseFlags& operator&=(ParseFlags&, ParseFlags)</tt><br>
+ * <tt>%ParseFlags& operator^=(ParseFlags&, ParseFlags)</tt><br>
+ */
+enum ParseFlags
+{
+ DO_NOT_USE_THIS_UNSUPPORTED_FLAG = 1 << 0
+};
+
+/** @ingroup glibmmEnums */
+inline ParseFlags operator|(ParseFlags lhs, ParseFlags rhs)
+ { return static_cast<ParseFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline ParseFlags operator&(ParseFlags lhs, ParseFlags rhs)
+ { return static_cast<ParseFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline ParseFlags operator^(ParseFlags lhs, ParseFlags rhs)
+ { return static_cast<ParseFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline ParseFlags operator~(ParseFlags flags)
+ { return static_cast<ParseFlags>(~static_cast<unsigned>(flags)); }
+
+/** @ingroup glibmmEnums */
+inline ParseFlags& operator|=(ParseFlags& lhs, ParseFlags rhs)
+ { return (lhs = static_cast<ParseFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); }
+
+/** @ingroup glibmmEnums */
+inline ParseFlags& operator&=(ParseFlags& lhs, ParseFlags rhs)
+ { return (lhs = static_cast<ParseFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); }
+
+/** @ingroup glibmmEnums */
+inline ParseFlags& operator^=(ParseFlags& lhs, ParseFlags rhs)
+ { return (lhs = static_cast<ParseFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs))); }
+
+
+/*! @var Markup::ParseFlags DO_NOT_USE_THIS_UNSUPPORTED_FLAG
+ * Flag you should not use.
+ */
+
+
+/** Binary predicate used by Markup::Parser::AttributeMap.
+ * @ingroup Markup
+ * Unlike <tt>operator<(const ustring& lhs, const ustring& rhs)</tt>
+ * which would be used by the default <tt>std::less<></tt> predicate,
+ * the AttributeKeyLess predicate is locale-independent. This is both
+ * more correct and much more efficient.
+ */
+class AttributeKeyLess
+{
+public:
+ typedef Glib::ustring first_argument_type;
+ typedef Glib::ustring second_argument_type;
+ typedef bool result_type;
+
+ bool operator()(const Glib::ustring& lhs, const Glib::ustring& rhs) const;
+};
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+class ParserCallbacks;
+#endif
+
+/** The abstract markup parser base class.
+ * @ingroup Markup
+ * To implement a parser for your markup format, derive from
+ * Glib::Markup::Parser and implement the virtual methods.
+ *
+ * You don't have to override all of the virtual methods. If a particular
+ * method is not implement the data passed to it will be ignored. Except for
+ * the error method, any of these callbacks can throw an error exception; in
+ * particular the MarkupError::UNKNOWN_ELEMENT,
+ * MarkupError::UNKNOWN_ATTRIBUTE, and MarkupError::INVALID_CONTENT errors
+ * are intended to be thrown from these overridden methods. If you throw an
+ * error from a method, Glib::Markup::ParseContext::parse() will report that
+ * error back to its caller.
+ */
+class Parser : public sigc::trackable
+{
+public:
+ typedef std::map<Glib::ustring, Glib::ustring, Glib::Markup::AttributeKeyLess> AttributeMap;
+
+ virtual ~Parser() = 0;
+
+protected:
+ /** Constructs a Parser object.
+ * Note that Markup::Parser is an abstract class which can't be instantiated
+ * directly. To implement the parser for your markup format, derive from
+ * Markup::Parser and implement the virtual methods.
+ */
+ Parser();
+
+ /** Called for open tags <tt>\<foo bar="baz"\></tt>.
+ * This virtual method is invoked when the opening tag of an element is seen.
+ * @param context The Markup::ParseContext object the parsed data belongs to.
+ * @param element_name The name of the element.
+ * @param attributes A map of attribute name/value pairs.
+ * @throw Glib::MarkupError An exception <em>you</em> should throw if
+ * something went wrong, for instance if an unknown attribute name was
+ * encountered. In particular the MarkupError::UNKNOWN_ELEMENT,
+ * MarkupError::UNKNOWN_ATTRIBUTE, and MarkupError::INVALID_CONTENT
+ * errors are intended to be thrown from user-implemented methods.
+ */
+ virtual void on_start_element(ParseContext& context,
+ const Glib::ustring& element_name,
+ const AttributeMap& attributes);
+
+ /** Called for close tags <tt>\</foo\></tt>.
+ * This virtual method is invoked when the closing tag of an element is seen.
+ * @param context The Markup::ParseContext object the parsed data belongs to.
+ * @param element_name The name of the element.
+ * @throw Glib::MarkupError An exception <em>you</em> should throw if
+ * something went wrong, for instance if an unknown attribute name was
+ * encountered. In particular the MarkupError::UNKNOWN_ELEMENT,
+ * MarkupError::UNKNOWN_ATTRIBUTE, and MarkupError::INVALID_CONTENT
+ * errors are intended to be thrown from user-implemented methods.
+ */
+ virtual void on_end_element(ParseContext& context, const Glib::ustring& element_name);
+
+ /** Called for character data.
+ * This virtual method is invoked when some text is seen (text is always
+ * inside an element).
+ * @param context The Markup::ParseContext object the parsed data belongs to.
+ * @param text The parsed text in UTF-8 encoding.
+ * @throw Glib::MarkupError An exception <em>you</em> should throw if
+ * something went wrong, for instance if an unknown attribute name was
+ * encountered. In particular the MarkupError::UNKNOWN_ELEMENT,
+ * MarkupError::UNKNOWN_ATTRIBUTE, and MarkupError::INVALID_CONTENT
+ * errors are intended to be thrown from user-implemented methods.
+ */
+ virtual void on_text(ParseContext& context, const Glib::ustring& text);
+
+ /** Called for strings that should be re-saved verbatim in this same
+ * position, but are not otherwise interpretable.
+ * This virtual method is invoked for comments, processing instructions and
+ * doctype declarations; if you're re-writing the parsed document, write the
+ * passthrough text back out in the same position.
+ * @param context The Markup::ParseContext object the parsed data belongs to.
+ * @param passthrough_text The text that should be passed through.
+ * @throw Glib::MarkupError An exception <em>you</em> should throw if
+ * something went wrong, for instance if an unknown attribute name was
+ * encountered. In particular the MarkupError::UNKNOWN_ELEMENT,
+ * MarkupError::UNKNOWN_ATTRIBUTE, and MarkupError::INVALID_CONTENT
+ * errors are intended to be thrown from user-implemented methods.
+ */
+ virtual void on_passthrough(ParseContext& context, const Glib::ustring& passthrough_text);
+
+ /** Called on error, including one thrown by an overridden virtual method.
+ * @param context The Markup::ParseContext object the parsed data belongs to.
+ * @param error A MarkupError object with detailed information about the error.
+ */
+ virtual void on_error(ParseContext& context, const MarkupError& error);
+
+private:
+ // noncopyable
+ Parser(const Parser&);
+ Parser& operator=(const Parser&);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ friend class Glib::Markup::ParserCallbacks;
+#endif
+};
+
+
+/** A parse context is used to parse marked-up documents.
+ * @ingroup Markup
+ * You can feed any number of documents into a context, as long as no errors
+ * occur; once an error occurs, the parse context can't continue to parse text
+ * (you have to destroy it and create a new parse context).
+ */
+class ParseContext : public sigc::trackable
+{
+public:
+ /** Creates a new parse context.
+ * @param parser A Markup::Parser instance.
+ * @param flags Bitwise combination of Markup::ParseFlags.
+ */
+ explicit ParseContext(Parser& parser, ParseFlags flags = ParseFlags(0));
+ virtual ~ParseContext();
+
+ /** Feed some data to the ParseContext.
+ * The data need not be valid UTF-8; an error will be signalled if it's
+ * invalid. The data need not be an entire document; you can feed a document
+ * into the parser incrementally, via multiple calls to this function.
+ * Typically, as you receive data from a network connection or file, you feed
+ * each received chunk of data into this function, aborting the process if an
+ * error occurs. Once an error is reported, no further data may be fed to the
+ * ParseContext; all errors are fatal.
+ * @param text Chunk of text to parse.
+ * @throw Glib::MarkupError
+ */
+ void parse(const Glib::ustring& text);
+
+ /** Feed some data to the ParseContext.
+ * The data need not be valid UTF-8; an error will be signalled if it's
+ * invalid. The data need not be an entire document; you can feed a document
+ * into the parser incrementally, via multiple calls to this function.
+ * Typically, as you receive data from a network connection or file, you feed
+ * each received chunk of data into this function, aborting the process if an
+ * error occurs. Once an error is reported, no further data may be fed to the
+ * ParseContext; all errors are fatal.
+ * @param text_begin Begin of chunk of text to parse.
+ * @param text_end End of chunk of text to parse.
+ * @throw Glib::MarkupError
+ */
+ void parse(const char* text_begin, const char* text_end);
+
+ /** Signals to the ParseContext that all data has been fed into the parse
+ * context with parse(). This method reports an error if the document isn't
+ * complete, for example if elements are still open.
+ * @throw Glib::MarkupError
+ */
+ void end_parse();
+
+ /** Retrieves the name of the currently open element.
+ * @return The name of the currently open element, or <tt>""</tt>.
+ */
+ Glib::ustring get_element() const;
+
+ /** Retrieves the current line number.
+ * Intended for use in error messages; there are no strict semantics for what
+ * constitutes the "current" line number other than "the best number we could
+ * come up with for error messages."
+ */
+ int get_line_number() const;
+
+ /** Retrieves the number of the current character on the current line.
+ * Intended for use in error messages; there are no strict semantics for what
+ * constitutes the "current" character number other than "the best number we
+ * could come up with for error messages."
+ */
+ int get_char_number() const;
+
+ Parser* get_parser() { return parser_; }
+ const Parser* get_parser() const { return parser_; }
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GMarkupParseContext* gobj() { return gobject_; }
+ const GMarkupParseContext* gobj() const { return gobject_; }
+#endif
+
+private:
+ Markup::Parser* parser_;
+ GMarkupParseContext* gobject_;
+
+ // noncopyable
+ ParseContext(const ParseContext&);
+ ParseContext& operator=(const ParseContext&);
+
+ static void destroy_notify_callback(void* data);
+};
+
+} // namespace Markup
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_MARKUP_H */
+
diff --git a/libs/glibmm2/glib/glibmm/miscutils.cc b/libs/glibmm2/glib/glibmm/miscutils.cc
new file mode 100644
index 0000000000..57fa6ebb68
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/miscutils.cc
@@ -0,0 +1,264 @@
+// -*- c++ -*-
+/* $Id: miscutils.cc,v 1.6 2006/09/10 14:38:53 jjongsma Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <cstddef>
+#include <cstring>
+
+#include <glibmm/miscutils.h>
+#include <glibmm/utility.h>
+#include <glib.h>
+
+
+namespace Glib
+{
+
+Glib::ustring get_application_name()
+{
+ if(const char *const application_name = g_get_application_name())
+ {
+ // Lets be a bit more strict than the original GLib function and ensure
+ // we always return valid UTF-8. gtkmm coders surely won't expect invalid
+ // UTF-8 in a Glib::ustring returned by a glibmm function.
+
+ if(g_utf8_validate(application_name, -1, 0))
+ return Glib::ustring(application_name);
+
+ char *const appname_utf8 = g_filename_to_utf8(application_name, -1, 0, 0, 0);
+ g_return_val_if_fail(appname_utf8 != 0, "");
+
+ return Glib::ustring(ScopedPtr<char>(appname_utf8).get());
+ }
+
+ return Glib::ustring();
+}
+
+void set_application_name(const Glib::ustring& application_name)
+{
+ g_set_application_name(application_name.c_str());
+}
+
+std::string get_prgname()
+{
+ const char *const prgname = g_get_prgname();
+ return (prgname) ? std::string(prgname) : std::string();
+}
+
+void set_prgname(const std::string& prgname)
+{
+ g_set_prgname(prgname.c_str());
+}
+
+std::string getenv(const std::string& variable, bool& found)
+{
+ const char *const value = g_getenv(variable.c_str());
+ found = (value != 0);
+ return (value) ? std::string(value) : std::string();
+}
+
+std::string getenv(const std::string& variable)
+{
+ const char *const value = g_getenv(variable.c_str());
+ return (value) ? std::string(value) : std::string();
+}
+
+bool setenv(const std::string& variable, const std::string& value, bool overwrite)
+{
+ return g_setenv(variable.c_str(), value.c_str(), overwrite);
+}
+
+void unsetenv(const std::string& variable)
+{
+ g_unsetenv(variable.c_str());
+}
+
+std::string get_user_name()
+{
+ return std::string(g_get_user_name());
+}
+
+std::string get_real_name()
+{
+ return std::string(g_get_real_name());
+}
+
+std::string get_home_dir()
+{
+ const char *const value = g_get_home_dir();
+ return (value) ? std::string(value) : std::string();
+}
+
+std::string get_tmp_dir()
+{
+ return std::string(g_get_tmp_dir());
+}
+
+std::string get_current_dir()
+{
+ const ScopedPtr<char> buf (g_get_current_dir());
+ return std::string(buf.get());
+}
+
+std::string get_user_data_dir()
+{
+ return std::string(g_get_user_data_dir());
+}
+
+std::string get_user_config_dir()
+{
+ return std::string(g_get_user_config_dir());
+}
+
+std::string get_user_cache_dir()
+{
+ return std::string(g_get_user_cache_dir());
+}
+
+bool path_is_absolute(const std::string& filename)
+{
+ return g_path_is_absolute(filename.c_str());
+}
+
+std::string path_skip_root(const std::string& filename)
+{
+ // g_path_skip_root() returns a pointer _into_ the argument string,
+ // or NULL if there was no root component.
+
+ if(const char *const ptr = g_path_skip_root(filename.c_str()))
+ return std::string(ptr);
+ else
+ return std::string();
+}
+
+std::string path_get_basename(const std::string& filename)
+{
+ const ScopedPtr<char> buf (g_path_get_basename(filename.c_str()));
+ return std::string(buf.get());
+}
+
+std::string path_get_dirname(const std::string& filename)
+{
+ const ScopedPtr<char> buf (g_path_get_dirname(filename.c_str()));
+ return std::string(buf.get());
+}
+
+std::string build_filename(const Glib::ArrayHandle<std::string>& elements)
+{
+ return Glib::convert_return_gchar_ptr_to_stdstring( g_build_filenamev(const_cast<char**>(elements.data())) );
+
+}
+
+std::string build_filename(const std::string& elem1, const std::string& elem2)
+{
+ const char *const elements[] = { elem1.c_str(), elem2.c_str(), 0 };
+ return build_filename(elements);
+}
+
+std::string build_path(const std::string& separator, const Glib::ArrayHandle<std::string>& elements)
+{
+ return Glib::convert_return_gchar_ptr_to_stdstring( g_build_pathv(separator.c_str(), const_cast<char**>(elements.data())) );
+
+/* Yes, this reimplements the functionality of g_build_path() -- because
+ * it takes a varargs list, and calling it several times would result
+ * in different behaviour.
+ */
+ /*
+ std::string result;
+ result.reserve(256); //TODO: Explain why this magic number is useful. murrayc
+
+ const char *const sep = separator.c_str();
+ const size_t seplen = separator.length();
+
+ bool is_first = true;
+ bool have_leading = false;
+ const char* single_element = 0;
+ const char* last_trailing = 0;
+
+ const char *const *const elements_begin = elements.data();
+ const char *const *const elements_end = elements_begin + elements.size();
+
+ for(const char *const * pelement = elements_begin; pelement != elements_end; ++pelement)
+ {
+ const char* start = *pelement;
+
+ if(*start == '\0')
+ continue; // ignore empty elements
+
+ if(seplen != 0)
+ {
+ while(strncmp(start, sep, seplen) == 0)
+ start += seplen;
+ }
+
+ const char* end = start + strlen(start);
+
+ if(seplen != 0)
+ {
+ while(end >= start + seplen && strncmp(end - seplen, sep, seplen) == 0)
+ end -= seplen;
+
+ last_trailing = end;
+
+ while(last_trailing >= *pelement + seplen && strncmp(last_trailing - seplen, sep, seplen) == 0)
+ last_trailing -= seplen;
+
+ if(!have_leading)
+ {
+ // If the leading and trailing separator strings are in the
+ // same element and overlap, the result is exactly that element.
+ //
+ if(last_trailing <= start)
+ single_element = *pelement;
+
+ result.append(*pelement, start);
+ have_leading = true;
+ }
+ else
+ single_element = 0;
+ }
+
+ if(end == start)
+ continue;
+
+ if(!is_first)
+ result += separator;
+
+ result.append(start, end);
+ is_first = false;
+ }
+
+ if(single_element)
+ result = single_element;
+ else if(last_trailing)
+ result += last_trailing;
+
+ return result;
+ */
+}
+
+std::string find_program_in_path(const std::string& program)
+{
+ if(char *const buf = g_find_program_in_path(program.c_str()))
+ return std::string(ScopedPtr<char>(buf).get());
+ else
+ return std::string();
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/miscutils.h b/libs/glibmm2/glib/glibmm/miscutils.h
new file mode 100644
index 0000000000..27658b54bb
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/miscutils.h
@@ -0,0 +1,302 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_MISCUTILS_H
+#define _GLIBMM_MISCUTILS_H
+
+/* $Id: miscutils.h,v 1.5 2006/09/10 14:38:53 jjongsma Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/arrayhandle.h>
+#include <glibmm/ustring.h>
+
+
+namespace Glib
+{
+
+/** @defgroup MiscUtils Miscellaneous Utility Functions
+ * Miscellaneous Utility Functions -- a selection of portable utility functions.
+ * @{
+ */
+
+/** Gets a human-readable name for the application,
+ * as set by Glib::set_application_name().
+ * This name should be localized if possible, and is intended for display to
+ * the user. Contrast with Glib::get_prgname(), which gets a non-localized
+ * name. If Glib::set_application_name() has not been called, returns the
+ * result of Glib::get_prgname() (which may be empty if Glib::set_prgname()
+ * has also not been called).
+ *
+ * @return Human-readable application name. May return <tt>""</tt>.
+ */
+Glib::ustring get_application_name();
+
+/** Sets a human-readable name for the application.
+ * This name should be localized if possible, and is intended for display to
+ * the user. Contrast with Glib::set_prgname(), which sets a non-localized
+ * name. Glib::set_prgname() will be called automatically by
+ * <tt>gtk_init()</tt>, but Glib::set_application_name() will not.
+ *
+ * Note that for thread safety reasons, this function can only be called once.
+ *
+ * The application name will be used in contexts such as error messages,
+ * or when displaying an application's name in the task list.
+ *
+ * @param application_name Localized name of the application.
+ */
+void set_application_name(const Glib::ustring& application_name);
+
+/** Gets the name of the program.
+ * If you are using GDK or GTK+ the program name is set in <tt>gdk_init()</tt>,
+ * which is called by <tt>gtk_init()</tt>. The program name is found by taking
+ * the last component of <tt>argv[0]</tt>.
+ * @return The name of the program.
+ */
+std::string get_prgname();
+
+/** Sets the name of the program.
+ * @param prgname The name of the program.
+ */
+void set_prgname(const std::string& prgname);
+
+/** Returns the value of an environment variable. The name and value
+ * are in the GLib file name encoding. On Unix, this means the actual
+ * bytes which might or might not be in some consistent character set
+ * and encoding. On Windows, it is in UTF-8. On Windows, in case the
+ * environment variable's value contains references to other
+ * environment variables, they are expanded.
+ *
+ * @param variable The environment variable to get.
+ * @retval found <tt>true</tt> Whether the environment variable has been found.
+ * @return The value of the environment variable, or <tt>""</tt> if not found.
+ */
+std::string getenv(const std::string& variable, bool& found);
+
+/** Returns the value of an environment variable. The name and value
+ * are in the GLib file name encoding. On Unix, this means the actual
+ * bytes which might or might not be in some consistent character set
+ * and encoding. On Windows, it is in UTF-8. On Windows, in case the
+ * environment variable's value contains references to other
+ * environment variables, they are expanded.
+ *
+ * @param variable The environment variable to get.
+ * @return The value of the environment variable, or <tt>""</tt> if not found.
+ */
+std::string getenv(const std::string& variable);
+
+
+/** Sets an environment variable. Both the variable's name and value
+ * should be in the GLib file name encoding. On Unix, this means that
+ * they can be any sequence of bytes. On Windows, they should be in
+ * UTF-8.
+ *
+ * Note that on some systems, when variables are overwritten, the memory
+ * used for the previous variables and its value isn't reclaimed.
+ *
+ * @param variable The environment variable to set. It must not contain '='.
+ * @param value The value to which the variable should be set.
+ * @param overwrite Whether to change the variable if it already exists.
+ * @result false if the environment variable couldn't be set.
+ */
+bool setenv(const std::string& variable, const std::string& value, bool overwrite = true);
+
+/** Removes an environment variable from the environment.
+ *
+ * Note that on some systems, when variables are overwritten, the memory
+ * used for the previous variables and its value isn't reclaimed.
+ * Furthermore, this function can't be guaranteed to operate in a
+ * threadsafe way.
+ *
+ * @param variable: the environment variable to remove. It must not contain '='.
+ **/
+void unsetenv(const std::string& variable);
+
+/** Gets the user name of the current user.
+ * @return The name of the current user.
+ */
+std::string get_user_name();
+
+/** Gets the real name of the user.
+ * This usually comes from the user's entry in the <tt>passwd</tt> file.
+ * @return The user's real name.
+ */
+std::string get_real_name();
+
+/** Gets the current user's home directory.
+ * @return The current user's home directory or an empty string if not defined.
+ */
+std::string get_home_dir();
+
+/** Gets the directory to use for temporary files.
+ * This is found from inspecting the environment variables <tt>TMPDIR</tt>,
+ * <tt>TMP</tt>, and <tt>TEMP</tt> in that order. If none of those are defined
+ * <tt>"/tmp"</tt> is returned on UNIX and <tt>"C:\\"</tt> on Windows.
+ * @return The directory to use for temporary files.
+ */
+std::string get_tmp_dir();
+
+/** Gets the current directory.
+ * @return The current directory.
+ */
+std::string get_current_dir();
+
+/** Returns a base directory in which to access application data such as icons
+ * that is customized for a particular user.
+ *
+ * On UNIX platforms this is determined using the mechanisms described in the
+ * XDG Base Directory Specification
+ *
+ * @since glibmm 2.14
+ */
+std::string get_user_data_dir();
+
+/** Returns a base directory in which to store user-specific application
+ * configuration information such as user preferences and settings.
+ *
+ * On UNIX platforms this is determined using the mechanisms described in the
+ * XDG Base Directory Specification
+ *
+ * @since glibmm 2.14
+ */
+std::string get_user_config_dir();
+
+/** Returns a base directory in which to store non-essential, cached data
+ * specific to particular user.
+ *
+ * On UNIX platforms this is determined using the mechanisms described in the
+ * XDG Base Directory Specification
+ *
+ * @since glibmm 2.14
+ */
+std::string get_user_cache_dir();
+
+/** Returns @c true if the given @a filename is an absolute file name, i.e.\ it
+ * contains a full path from the root directory such as <tt>"/usr/local"</tt>
+ * on UNIX or <tt>"C:\\windows"</tt> on Windows systems.
+ * @param filename A file name.
+ * @return Whether @a filename is an absolute path.
+ */
+bool path_is_absolute(const std::string& filename);
+
+/** Returns the remaining part of @a filename after the root component,
+ * i.e.\ after the <tt>"/"</tt> on UNIX or <tt>"C:\\"</tt> on Windows.
+ * If @a filename is not an absolute path, <tt>""</tt> will be returned.
+ * @param filename A file name.
+ * @return The file name without the root component, or <tt>""</tt>.
+ */
+std::string path_skip_root(const std::string& filename);
+
+/** Gets the name of the file without any leading directory components.
+ * @param filename The name of the file.
+ * @return The name of the file without any leading directory components.
+ */
+std::string path_get_basename(const std::string& filename);
+
+/** Gets the directory components of a file name.
+ * If the file name has no directory components <tt>"."</tt> is returned.
+ * @param filename The name of the file.
+ * @return The directory components of the file.
+ */
+std::string path_get_dirname(const std::string& filename);
+
+/** Creates a filename from a series of elements using the correct
+ * separator for filenames.
+ * This function behaves identically to Glib::build_path(G_DIR_SEPARATOR_S,
+ * elements). No attempt is made to force the resulting filename to be an
+ * absolute path. If the first element is a relative path, the result will
+ * be a relative path.
+ * @param elements A container holding the elements of the path to build.
+ * Any STL compatible container type is accepted.
+ * @return The resulting path.
+ */
+std::string build_filename(const Glib::ArrayHandle<std::string>& elements);
+
+/** Creates a filename from two elements using the correct separator for filenames.
+ * No attempt is made to force the resulting filename to be an absolute path.
+ * If the first element is a relative path, the result will be a relative path.
+ * @param elem1 First path element.
+ * @param elem2 Second path element.
+ * @return The resulting path.
+ */
+std::string build_filename(const std::string& elem1, const std::string& elem2);
+
+/** Creates a path from a series of elements using @a separator as the
+ * separator between elements.
+ *
+ * At the boundary between two elements, any trailing occurrences of
+ * @a separator in the first element, or leading occurrences of @a separator
+ * in the second element are removed and exactly one copy of the separator is
+ * inserted.
+ *
+ * Empty elements are ignored.
+ *
+ * The number of leading copies of the separator on the result is
+ * the same as the number of leading copies of the separator on
+ * the first non-empty element.
+ *
+ * The number of trailing copies of the separator on the result is the same
+ * as the number of trailing copies of the separator on the last non-empty
+ * element. (Determination of the number of trailing copies is done without
+ * stripping leading copies, so if the separator is <tt>"ABA"</tt>,
+ * <tt>"ABABA"</tt> has 1 trailing copy.)
+ *
+ * However, if there is only a single non-empty element, and there
+ * are no characters in that element not part of the leading or
+ * trailing separators, then the result is exactly the original value
+ * of that element.
+ *
+ * Other than for determination of the number of leading and trailing
+ * copies of the separator, elements consisting only of copies
+ * of the separator are ignored.
+ *
+ * @param separator A string used to separate the elements of the path.
+ * @param elements A container holding the elements of the path to build.
+ * Any STL compatible container type is accepted.
+ * @return The resulting path.
+ */
+std::string build_path(const std::string& separator,
+ const Glib::ArrayHandle<std::string>& elements);
+
+/** Locates the first executable named @a program in the user's path, in the
+ * same way that <tt>execvp()</tt> would locate it.
+ * Returns a string with the absolute path name, or <tt>""</tt> if the program
+ * is not found in the path. If @a program is already an absolute path,
+ * returns a copy of @a program if @a program exists and is executable, and
+ * <tt>""</tt> otherwise.
+ *
+ * On Windows, if @a program does not have a file type suffix, tries to append
+ * the suffixes in the <tt>PATHEXT</tt> environment variable (if that doesn't
+ * exist, the suffixes .com, .exe, and .bat) in turn, and then look for the
+ * resulting file name in the same way as CreateProcess() would. This means
+ * first in the directory where the program was loaded from, then in the
+ * current directory, then in the Windows 32-bit system directory, then in the
+ * Windows directory, and finally in the directories in the <tt>PATH</tt>
+ * environment variable. If the program is found, the return value contains
+ * the full name including the type suffix.
+ *
+ * @param program A program name.
+ * @return An absolute path, or <tt>""</tt>.
+ */
+std::string find_program_in_path(const std::string& program);
+
+/** @} group MiscUtils */
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_FILEUTILS_H */
+
diff --git a/libs/glibmm2/glib/glibmm/module.cc b/libs/glibmm2/glib/glibmm/module.cc
new file mode 100644
index 0000000000..6fe92b897e
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/module.cc
@@ -0,0 +1,96 @@
+// Generated by gtkmmproc -- DO NOT MODIFY!
+
+
+#include <glibmm/module.h>
+#include <glibmm/private/module_p.h>
+
+// -*- c++ -*-
+/* $Id: module.ccg,v 1.2 2004/04/09 14:49:44 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/utility.h>
+#include <gmodule.h>
+
+namespace Glib
+{
+
+Module::Module(const std::string& file_name, ModuleFlags flags)
+:
+ gobject_ (g_module_open(file_name.c_str(), (GModuleFlags) flags))
+{}
+
+Module::~Module()
+{
+ if(gobject_)
+ g_module_close(gobject_);
+}
+
+Module::operator bool() const
+{
+ return (gobject_ != 0);
+}
+
+} // namespace Glib
+
+
+namespace
+{
+} // anonymous namespace
+
+
+namespace Glib
+{
+
+
+bool Module::get_supported()
+{
+ return g_module_supported();
+}
+
+
+void Module::make_resident()
+{
+g_module_make_resident(gobj());
+}
+
+std::string Module::get_last_error()
+{
+ return Glib::convert_const_gchar_ptr_to_stdstring(g_module_error());
+}
+
+
+bool Module::get_symbol(const std::string& symbol_name, void*& symbol) const
+{
+ return g_module_symbol(const_cast<GModule*>(gobj()), symbol_name.c_str(), &(symbol));
+}
+
+std::string Module::get_name() const
+{
+ return Glib::convert_const_gchar_ptr_to_stdstring(g_module_name(const_cast<GModule*>(gobj())));
+}
+
+std::string Module::build_path(const std::string& directory, const std::string& module_name)
+{
+ return Glib::convert_return_gchar_ptr_to_stdstring(g_module_build_path(directory.c_str(), module_name.c_str()));
+}
+
+
+} // namespace Glib
+
+
diff --git a/libs/glibmm2/glib/glibmm/module.h b/libs/glibmm2/glib/glibmm/module.h
new file mode 100644
index 0000000000..b7386fb498
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/module.h
@@ -0,0 +1,222 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_MODULE_H
+#define _GLIBMM_MODULE_H
+
+
+/* $Id: module.hg,v 1.5 2004/04/09 14:49:44 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <glibmmconfig.h>
+#include <string>
+
+GLIBMM_USING_STD(string)
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GModule GModule; }
+#endif
+
+
+namespace Glib
+{
+
+/** @addtogroup glibmmEnums Enums and Flags */
+
+/**
+ * @ingroup glibmmEnums
+ * @par Bitwise operators:
+ * <tt>%ModuleFlags operator|(ModuleFlags, ModuleFlags)</tt><br>
+ * <tt>%ModuleFlags operator&(ModuleFlags, ModuleFlags)</tt><br>
+ * <tt>%ModuleFlags operator^(ModuleFlags, ModuleFlags)</tt><br>
+ * <tt>%ModuleFlags operator~(ModuleFlags)</tt><br>
+ * <tt>%ModuleFlags& operator|=(ModuleFlags&, ModuleFlags)</tt><br>
+ * <tt>%ModuleFlags& operator&=(ModuleFlags&, ModuleFlags)</tt><br>
+ * <tt>%ModuleFlags& operator^=(ModuleFlags&, ModuleFlags)</tt><br>
+ */
+enum ModuleFlags
+{
+ MODULE_BIND_LAZY = 1 << 0,
+ MODULE_BIND_LOCAL = 1 << 1,
+ MODULE_BIND_MASK = 0x03
+};
+
+/** @ingroup glibmmEnums */
+inline ModuleFlags operator|(ModuleFlags lhs, ModuleFlags rhs)
+ { return static_cast<ModuleFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline ModuleFlags operator&(ModuleFlags lhs, ModuleFlags rhs)
+ { return static_cast<ModuleFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline ModuleFlags operator^(ModuleFlags lhs, ModuleFlags rhs)
+ { return static_cast<ModuleFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline ModuleFlags operator~(ModuleFlags flags)
+ { return static_cast<ModuleFlags>(~static_cast<unsigned>(flags)); }
+
+/** @ingroup glibmmEnums */
+inline ModuleFlags& operator|=(ModuleFlags& lhs, ModuleFlags rhs)
+ { return (lhs = static_cast<ModuleFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); }
+
+/** @ingroup glibmmEnums */
+inline ModuleFlags& operator&=(ModuleFlags& lhs, ModuleFlags rhs)
+ { return (lhs = static_cast<ModuleFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); }
+
+/** @ingroup glibmmEnums */
+inline ModuleFlags& operator^=(ModuleFlags& lhs, ModuleFlags rhs)
+ { return (lhs = static_cast<ModuleFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs))); }
+
+
+//TODO: Replace get_last_error() with exceptions?
+//Provide operator()?
+
+/** Dynamic Loading of Modules
+ * These functions provide a portable way to dynamically load object
+ * files (commonly known as 'plug-ins'). The current implementation
+ * supports all systems that provide an implementation of dlopen()
+ * (e.g. Linux/Sun), as well as HP-UX via its shl_load() mechanism,
+ * and Windows platforms via DLLs.
+ */
+class Module
+{
+ public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ typedef Module CppObjectType;
+ typedef GModule BaseObjectType;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+private:
+
+
+public:
+
+ /** Opens a module.
+ *
+ * First of all it tries to open file_name as a module. If that
+ * fails and file_name has the ".la"-suffix (and is a libtool
+ * archive) it tries to open the corresponding module. If that fails
+ * and it doesn't have the proper module suffix for the platform
+ * (G_MODULE_SUFFIX), this suffix will be appended and the
+ * corresponding module will be opended. If that fails and file_name
+ * doesn't have the ".la"-suffix, this suffix is appended and
+ * it tries to open the corresponding module.
+ *
+ * Use operator bool() to see whether the operation succeeded. For instance,
+ * @code
+ * Glib::Module module("plugins/helloworld");
+ * if(module)
+ * {
+ * void* func = 0;
+ * bool found = get_symbol("some_function", func);
+ * }
+ * @endcode
+ *
+ * @param file_name The library filename to open
+ * @param flags Flags to configure the load process
+ */
+ explicit Module(const std::string& file_name, ModuleFlags flags = ModuleFlags(0));
+
+ /** Close a module. The module will be removed from memory, unless
+ * <tt>make_resident</tt> has been called.
+ */
+ virtual ~Module();
+
+ /** Check whether the module was found.
+ */
+ operator bool() const;
+
+ /** Checks if modules are supported on the current platform.
+ * @returns true if available, false otherwise
+ */
+
+ static bool get_supported();
+
+ /** Ensures that a module will never be unloaded. Any calls to the
+ * Glib::Module destructor will not unload the module.
+ */
+
+ void make_resident();
+
+ /** Gets a string describing the last module error.
+ * @returns The error string
+ */
+
+ static std::string get_last_error();
+
+ /** Gets a symbol pointer from the module.
+ * @param symbol_name The name of the symbol to lookup
+ * @param symbol A pointer to set to the symbol
+ * @returns True if the symbol was found, false otherwise.
+ */
+
+ bool get_symbol(const std::string& symbol_name, void*& symbol) const;
+
+ /** Get the name of the module.
+ * @returns The name of the module
+ */
+
+ std::string get_name() const;
+
+ /** A portable way to build the filename of a module. The
+ * platform-specific prefix and suffix are added to the filename, if
+ * needed, and the result is added to the directory, using the
+ * correct separator character.
+ *
+ * The directory should specify the directory where the module can
+ * be found. It can be an empty string to indicate that the
+ * module is in a standard platform-specific directory, though this
+ * is not recommended since the wrong module may be found.
+ *
+ * For example, calling <tt>g_module_build_path()</tt> on a Linux
+ * system with a directory of <tt>/lib</tt> and a module_name of
+ * "mylibrary" will return <tt>/lib/libmylibrary.so</tt>. On a
+ * Windows system, using <tt>\\Windows</tt> as the directory it will
+ * return <tt>\\Windows\\mylibrary.dll</tt>.
+ *
+ * @param directory The directory the module is in
+ * @param module_name The name of the module
+ * @returns The system-specific filename of the module
+ */
+ // TODO: add an override which doesn't take a directory
+ // TODO: check what happens when directory is ""
+
+ static std::string build_path(const std::string& directory, const std::string& module_name);
+
+ GModule* gobj() { return gobject_; }
+ const GModule* gobj() const { return gobject_; }
+
+protected:
+ GModule* gobject_;
+
+private:
+ // noncopyable
+ Module(const Module&);
+ Module& operator=(const Module&);
+
+
+};
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_MODULE_H */
+
diff --git a/libs/glibmm2/glib/glibmm/object.cc b/libs/glibmm2/glib/glibmm/object.cc
new file mode 100644
index 0000000000..9a9c82b7ec
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/object.cc
@@ -0,0 +1,312 @@
+// -*- c++ -*-
+/* $Id: object.cc,v 1.6 2004/06/20 03:41:20 daniel Exp $ */
+
+/* Copyright 1998-2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/object.h>
+#include <glibmm/private/object_p.h>
+#include <glibmm/property.h>
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gobject/gvaluecollector.h>
+
+#include <cstdarg>
+
+#include <cstring>
+
+//Weak references:
+//I'm not sure what the point of these are apart from being a hacky way out of circular references,
+//but maybe we could make it easier to use them by making a Java Reference Object -style class like so:
+// Glib::WeakRef<SomeDerivedObject> weakrefSomeObject(object1);
+// ...
+// if(weakrefSomeObject->isStillAlive())
+// {
+// weakrefSomeObject->some_method();
+// }
+// else
+// {
+// //Deal with it, maybe recreating the object.
+// }
+//
+// Without this, the coder has to define his own signal handler which sets his own isStillAlive boolean.
+// weakrefSomeObject<> could still have its own signal_destroyed signal so that coders can choose to deal
+// with the destruction as soon as it happens instead of just checking later before they try to use it.
+
+
+namespace Glib
+{
+
+ConstructParams::ConstructParams(const Glib::Class& glibmm_class_)
+:
+ glibmm_class (glibmm_class_),
+ n_parameters (0),
+ parameters (0)
+{}
+
+/* The implementation is mostly copied from gobject.c, with some minor tweaks.
+ * Basically, it looks up each property name to get its GType, and then uses
+ * G_VALUE_COLLECT() to store the varargs argument in a GValue of the correct
+ * type.
+ */
+ConstructParams::ConstructParams(const Glib::Class& glibmm_class_,
+ const char* first_property_name, ...)
+:
+ glibmm_class (glibmm_class_),
+ n_parameters (0),
+ parameters (0)
+{
+ va_list var_args;
+ va_start(var_args, first_property_name);
+
+ GObjectClass *const g_class =
+ static_cast<GObjectClass*>(g_type_class_ref(glibmm_class.get_type()));
+
+ unsigned int n_alloced_params = 0;
+ char* collect_error = 0; // output argument of G_VALUE_COLLECT()
+
+ for(const char* name = first_property_name;
+ name != 0;
+ name = va_arg(var_args, char*))
+ {
+ GParamSpec *const pspec = g_object_class_find_property(g_class, name);
+
+ if(!pspec)
+ {
+ g_warning("Glib::ConstructParams::ConstructParams(): "
+ "object class `%s' has no property named `%s'",
+ g_type_name(glibmm_class.get_type()), name);
+ break;
+ }
+
+ if(n_parameters >= n_alloced_params)
+ parameters = g_renew(GParameter, parameters, n_alloced_params += 8);
+
+ GParameter& param = parameters[n_parameters];
+
+ param.name = name;
+ param.value.g_type = 0;
+
+ // Fill the GValue with the current vararg, and move on to the next one.
+ g_value_init(&param.value, G_PARAM_SPEC_VALUE_TYPE(pspec));
+ G_VALUE_COLLECT(&param.value, var_args, 0, &collect_error);
+
+ if(collect_error)
+ {
+ g_warning("Glib::ConstructParams::ConstructParams(): %s", collect_error);
+ g_free(collect_error);
+ g_value_unset(&param.value);
+ break;
+ }
+
+ ++n_parameters;
+ }
+
+ g_type_class_unref(g_class);
+
+ va_end(var_args);
+}
+
+ConstructParams::~ConstructParams()
+{
+ while(n_parameters > 0)
+ g_value_unset(&parameters[--n_parameters].value);
+
+ g_free(parameters);
+}
+
+/*
+ * Some compilers require the existance of a copy constructor in certain
+ * usage contexts. This implementation is fully functional, but unlikely
+ * to be ever actually called due to optimization.
+ */
+ConstructParams::ConstructParams(const ConstructParams& other)
+:
+ glibmm_class (other.glibmm_class),
+ n_parameters (other.n_parameters),
+ parameters (g_new(GParameter, n_parameters))
+{
+ for(unsigned int i = 0; i < n_parameters; ++i)
+ {
+ parameters[i].name = other.parameters[i].name;
+ parameters[i].value.g_type = 0;
+
+ g_value_init(&parameters[i].value, G_VALUE_TYPE(&other.parameters[i].value));
+ g_value_copy(&other.parameters[i].value, &parameters[i].value);
+ }
+}
+
+
+/**** Glib::Object_Class ***************************************************/
+
+const Glib::Class& Object_Class::init()
+{
+ if(!gtype_)
+ {
+ class_init_func_ = &Object_Class::class_init_function;
+ register_derived_type(G_TYPE_OBJECT);
+ }
+
+ return *this;
+}
+
+void Object_Class::class_init_function(void*, void*)
+{}
+
+Object* Object_Class::wrap_new(GObject* object)
+{
+ return new Object(object);
+}
+
+
+/**** Glib::Object *********************************************************/
+
+// static data
+Object::CppClassType Object::object_class_;
+
+Object::Object()
+{
+ // This constructor is ONLY for derived classes that are NOT wrappers of
+ // derived C objects. For instance, Gtk::Object should NOT use this
+ // constructor.
+
+ //g_warning("Object::Object(): Did you really mean to call this?");
+
+ // If Glib::ObjectBase has been constructed with a custom typeid, we derive
+ // a new GType on the fly. This works because ObjectBase is a virtual base
+ // class, therefore its constructor is always executed first.
+
+ GType object_type = G_TYPE_OBJECT; // the default -- not very useful
+
+ if(custom_type_name_ && !is_anonymous_custom_())
+ {
+ object_class_.init();
+ object_type = object_class_.clone_custom_type(custom_type_name_); //A type that is derived from GObject.
+ }
+
+ // Create a new GObject with the specified array of construct properties.
+ // This works with custom types too, since those inherit the properties of
+ // their base class.
+
+ void *const new_object = g_object_newv(object_type, 0, 0);
+
+ // Connect the GObject and Glib::Object instances.
+ ObjectBase::initialize(static_cast<GObject*>(new_object));
+
+}
+
+Object::Object(const Glib::ConstructParams& construct_params)
+{
+ GType object_type = construct_params.glibmm_class.get_type();
+
+ // If Glib::ObjectBase has been constructed with a custom typeid, we derive
+ // a new GType on the fly. This works because ObjectBase is a virtual base
+ // class, therefore its constructor is always executed first.
+
+ if(custom_type_name_ && !is_anonymous_custom_())
+ object_type = construct_params.glibmm_class.clone_custom_type(custom_type_name_);
+
+ // Create a new GObject with the specified array of construct properties.
+ // This works with custom types too, since those inherit the properties of
+ // their base class.
+
+ void *const new_object = g_object_newv(
+ object_type, construct_params.n_parameters, construct_params.parameters);
+
+ // Connect the GObject and Glib::Object instances.
+ ObjectBase::initialize(static_cast<GObject*>(new_object));
+}
+
+Object::Object(GObject* castitem)
+{
+ //I disabled this check because libglademm really does need to do this.
+ //(actually it tells libglade to instantiate "gtkmm_" types.
+ //The 2nd instance bug will be caught elsewhere anyway.
+/*
+ static const char gtkmm_prefix[] = "gtkmm__";
+ const char *const type_name = G_OBJECT_TYPE_NAME(castitem);
+
+ if(strncmp(type_name, gtkmm_prefix, sizeof(gtkmm_prefix) - 1) == 0)
+ {
+ g_warning("Glib::Object::Object(GObject*): "
+ "An object of type '%s' was created directly via g_object_new(). "
+ "The Object::Object(const Glib::ConstructParams&) constructor "
+ "should be used instead.\n"
+ "This could happen if the C instance lived longer than the C++ instance, so that "
+ "a second C++ instance was created automatically to wrap it. That would be a gtkmm bug that you should report.",
+ type_name);
+ }
+*/
+
+ // Connect the GObject and Glib::Object instances.
+ ObjectBase::initialize(castitem);
+}
+
+Object::~Object()
+{
+ cpp_destruction_in_progress_ = true;
+}
+
+/*
+RefPtr<Object> Object::create()
+{
+ // Derived classes will actually return RefPtr<>s that contain useful instances.
+ return RefPtr<Object>();
+}
+*/
+
+GType Object::get_type()
+{
+ return object_class_.init().get_type();
+}
+
+GType Object::get_base_type()
+{
+ return G_TYPE_OBJECT;
+}
+
+// Data services
+void* Object::get_data(const QueryQuark& id)
+{
+ return g_object_get_qdata(gobj(),id);
+}
+
+void Object::set_data(const Quark& id, void* data)
+{
+ g_object_set_qdata(gobj(),id,data);
+}
+
+void Object::set_data(const Quark& id, void* data, DestroyNotify destroy)
+{
+ g_object_set_qdata_full(gobj(), id, data, destroy);
+}
+
+void Object::remove_data(const QueryQuark& id)
+{
+ // missing in glib??
+ g_return_if_fail(id.id() > 0);
+ g_datalist_id_remove_data(&gobj()->qdata, id);
+}
+
+void* Object::steal_data(const QueryQuark& id)
+{
+ return g_object_steal_qdata(gobj(), id);
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/object.h b/libs/glibmm2/glib/glibmm/object.h
new file mode 100644
index 0000000000..6a06848b66
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/object.h
@@ -0,0 +1,290 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_OBJECT_H
+#define _GLIBMM_OBJECT_H
+/* $Id: object.h,v 1.14 2006/06/19 20:43:42 murrayc Exp $ */
+
+/* Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+//X11 defines DestroyNotify and some other non-prefixed stuff, and it's too late to change that now,
+//so let's give people a clue about the compilation errors that they will see:
+#ifdef DestroyNotify
+ #error "X11/Xlib.h seems to have been included before this header. Due to some commonly-named macros in X11/Xlib.h, it may only be included after any glibmm, gdkmm, or gtkmm headers."
+#endif //DestroyNotify
+
+#include <glibmm/objectbase.h>
+#include <glibmm/wrap.h>
+#include <glibmm/quark.h>
+#include <glibmm/refptr.h>
+#include <glibmm/utility.h> /* Could be private, but that would be tedious. */
+#include <glibmm/containerhandle_shared.h> //Because its specializations may be here.
+#include <glibmm/value.h>
+
+#include <glibmmconfig.h>
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C"
+{
+typedef struct _GObject GObject;
+typedef struct _GObjectClass GObjectClass;
+}
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+
+namespace Glib
+{
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+class Class;
+class Object_Class;
+class GSigConnectionNode;
+
+/* ConstructParams::ConstructParams() takes a varargs list of properties
+ * and values, like g_object_new() does. This list will then be converted
+ * to a GParameter array, for use with g_object_newv(). No overhead is
+ * involved, since g_object_new() is just a wrapper around g_object_newv()
+ * as well.
+ *
+ * The advantage of an auxilary ConstructParams object over g_object_new()
+ * is that the actual construction is always done in the Glib::Object ctor.
+ * This allows for neat tricks like easy creation of derived custom types,
+ * without adding special support to each ctor of every class.
+ *
+ * The comments in object.cc and objectbase.cc should explain in detail
+ * how this works.
+ */
+class ConstructParams
+{
+public:
+ const Glib::Class& glibmm_class;
+ unsigned int n_parameters;
+ GParameter* parameters;
+
+ explicit ConstructParams(const Glib::Class& glibmm_class_);
+ ConstructParams(const Glib::Class& glibmm_class_, const char* first_property_name, ...);
+ ~ConstructParams();
+
+ // This is only used by the C++ compiler (since g++ 3.4) to create temporary instances.
+ // Apparently the compiler will actually optimize away the use of this.
+ // See bug #132300.
+ ConstructParams(const ConstructParams& other);
+
+private:
+ // noncopyable
+ ConstructParams& operator=(const ConstructParams&);
+};
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+
+class GLIBMM_API Object : virtual public ObjectBase
+{
+public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ typedef Object CppObjectType;
+ typedef Object_Class CppClassType;
+ typedef GObject BaseObjectType;
+ typedef GObjectClass BaseClassType;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+protected:
+ Object(); //For use by C++-only sub-types.
+ explicit Object(const Glib::ConstructParams& construct_params);
+ explicit Object(GObject* castitem);
+ virtual ~Object(); //It should only be deleted by the callback.
+
+public:
+ //static RefPtr<Object> create(); //You must reimplement this in each derived class.
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ static GType get_type() G_GNUC_CONST;
+ static GType get_base_type() G_GNUC_CONST;
+#endif
+
+ //GObject* gobj_copy(); //Give a ref-ed copy to someone. Use for direct struct access.
+
+ // Glib::Objects contain a list<Quark, pair<void*, DestroyNotify> >
+ // to store run time data added to the object at run time.
+ //TODO: Use slots instead:
+ void* get_data(const QueryQuark &key);
+ void set_data(const Quark &key, void* data);
+ typedef void (*DestroyNotify) (gpointer data);
+ void set_data(const Quark &key, void* data, DestroyNotify notify);
+ void remove_data(const QueryQuark& quark);
+ // same as remove without notifying
+ void* steal_data(const QueryQuark& quark);
+
+ // convenience functions
+ //template <class T>
+ //void set_data_typed(const Quark& quark, const T& data)
+ // { set_data(quark, new T(data), delete_typed<T>); }
+
+ //template <class T>
+ //T& get_data_typed(const QueryQuark& quark)
+ // { return *static_cast<T*>(get_data(quark)); }
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+private:
+ friend class Glib::Object_Class;
+ static CppClassType object_class_;
+
+ // noncopyable
+ Object(const Object&);
+ Object& operator=(const Object&);
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+ // Glib::Object can not be dynamic because it lacks a float state.
+ //virtual void set_manage();
+};
+
+
+//For some (proably, more spec-compliant) compilers, these specializations must
+//be next to the objects that they use.
+#ifndef GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION
+#ifndef DOXYGEN_SHOULD_SKIP_THIS /* hide the specializations */
+
+namespace Container_Helpers
+{
+
+/** Partial specialization for pointers to GObject instances.
+ * @ingroup ContHelpers
+ * The C++ type is always a Glib::RefPtr<>.
+ */
+template <class T>
+struct TypeTraits< Glib::RefPtr<T> >
+{
+ typedef Glib::RefPtr<T> CppType;
+ typedef typename T::BaseObjectType * CType;
+ typedef typename T::BaseObjectType * CTypeNonConst;
+
+ static CType to_c_type (const CppType& ptr) { return Glib::unwrap(ptr); }
+ static CType to_c_type (CType ptr) { return ptr; }
+ static CppType to_cpp_type (CType ptr)
+ {
+ //return Glib::wrap(ptr, true);
+
+ //We copy/paste the wrap() implementation here,
+ //because we can not use a specific Glib::wrap(CType) overload here,
+ //because that would be "dependent", and g++ 3.4 does not allow that.
+ //The specific Glib::wrap() overloads don't do anything special anyway.
+ GObject* cobj = (GObject*)const_cast<CTypeNonConst>(ptr);
+ return Glib::RefPtr<T>( dynamic_cast<T*>(Glib::wrap_auto(cobj, true /* take_copy */)) );
+ //We use dynamic_cast<> in case of multiple inheritance.
+ }
+
+ static void release_c_type (CType ptr)
+ {
+ GLIBMM_DEBUG_UNREFERENCE(0, ptr);
+ g_object_unref(ptr);
+ }
+};
+
+//This confuses the SUN Forte compiler, so we ifdef it out:
+#ifdef GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS
+
+/** Partial specialization for pointers to const GObject instances.
+ * @ingroup ContHelpers
+ * The C++ type is always a Glib::RefPtr<>.
+ */
+template <class T>
+struct TypeTraits< Glib::RefPtr<const T> >
+{
+ typedef Glib::RefPtr<const T> CppType;
+ typedef const typename T::BaseObjectType * CType;
+ typedef typename T::BaseObjectType * CTypeNonConst;
+
+ static CType to_c_type (const CppType& ptr) { return Glib::unwrap(ptr); }
+ static CType to_c_type (CType ptr) { return ptr; }
+ static CppType to_cpp_type (CType ptr)
+ {
+ //return Glib::wrap(ptr, true);
+
+ //We copy/paste the wrap() implementation here,
+ //because we can not use a specific Glib::wrap(CType) overload here,
+ //because that would be "dependent", and g++ 3.4 does not allow that.
+ //The specific Glib::wrap() overloads don't do anything special anyway.
+ GObject* cobj = (GObject*)(ptr);
+ return Glib::RefPtr<const T>( dynamic_cast<const T*>(Glib::wrap_auto(cobj, true /* take_copy */)) );
+ //We use dynamic_cast<> in case of multiple inheritance.
+ }
+
+ static void release_c_type (CType ptr)
+ {
+ GLIBMM_DEBUG_UNREFERENCE(0, ptr);
+ g_object_unref(const_cast<CTypeNonConst>(ptr));
+ }
+};
+
+#endif //GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS
+
+} //namespace Container_Helpers
+
+
+template <class T, class PtrT> inline
+PtrT Value_Pointer<T,PtrT>::get_(Glib::Object*) const
+{
+ return dynamic_cast<T*>(get_object());
+}
+
+
+/** Partial specialization for RefPtr<> to Glib::Object.
+ * @ingroup glibmmValue
+ */
+template <class T>
+class Value< Glib::RefPtr<T> > : public ValueBase_Object
+{
+public:
+ typedef Glib::RefPtr<T> CppType;
+ typedef typename T::BaseObjectType* CType;
+
+ static GType value_type() { return T::get_base_type(); }
+
+ void set(const CppType& data) { set_object(data.operator->()); }
+ CppType get() const { return Glib::RefPtr<T>::cast_dynamic(get_object_copy()); }
+};
+
+//The SUN Forte Compiler has a problem with this:
+#ifdef GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS
+
+/** Partial specialization for RefPtr<> to const Glib::Object.
+ * @ingroup glibmmValue
+ */
+template <class T>
+class Value< Glib::RefPtr<const T> > : public ValueBase_Object
+{
+public:
+ typedef Glib::RefPtr<const T> CppType;
+ typedef typename T::BaseObjectType* CType;
+
+ static GType value_type() { return T::get_base_type(); }
+
+ void set(const CppType& data) { set_object(const_cast<T*>(data.operator->())); }
+ CppType get() const { return Glib::RefPtr<T>::cast_dynamic(get_object_copy()); }
+};
+#endif //GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS
+
+
+#endif //DOXYGEN_SHOULD_SKIP_THIS
+#endif //GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION
+
+} // namespace Glib
+
+#endif /* _GLIBMM_OBJECT_H */
+
diff --git a/libs/glibmm2/glib/glibmm/objectbase.cc b/libs/glibmm2/glib/glibmm/objectbase.cc
new file mode 100644
index 0000000000..fb0a61a164
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/objectbase.cc
@@ -0,0 +1,289 @@
+// -*- c++ -*-
+/* $Id: objectbase.cc,v 1.8 2006/11/10 02:24:49 murrayc Exp $ */
+
+/* Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib-object.h>
+
+#include <glibmm/quark.h>
+#include <glibmm/objectbase.h>
+#include <glibmm/propertyproxy_base.h> //For PropertyProxyConnectionNode
+
+
+namespace
+{
+
+// Used by the Glib::ObjectBase default ctor. Using an explicitly defined
+// char array rather than a string literal allows for fast pointer comparison,
+// which is otherwise not guaranteed to work.
+
+static const char anonymous_custom_type_name[] = "gtkmm__anonymous_custom_type";
+
+} // anonymous namespace
+
+
+namespace Glib
+{
+
+/**** Glib::ObjectBase *****************************************************/
+
+ObjectBase::ObjectBase()
+:
+ gobject_ (0),
+ custom_type_name_ (anonymous_custom_type_name),
+ cpp_destruction_in_progress_ (false)
+{}
+
+ObjectBase::ObjectBase(const char* custom_type_name)
+:
+ gobject_ (0),
+ custom_type_name_ (custom_type_name),
+ cpp_destruction_in_progress_ (false)
+{}
+
+ObjectBase::ObjectBase(const std::type_info& custom_type_info)
+:
+ gobject_ (0),
+ custom_type_name_ (custom_type_info.name()),
+ cpp_destruction_in_progress_ (false)
+{}
+
+// initialize() actually initializes the wrapper. Glib::ObjectBase is used
+// as virtual base class, which means the most-derived class' ctor invokes
+// the Glib::ObjectBase ctor -- thus it's useless for Glib::Object.
+//
+void ObjectBase::initialize(GObject* castitem)
+{
+ if(gobject_)
+ {
+ // initialize() might be called twice when used with MI, e.g. by the ctors
+ // of Glib::Object and Glib::Interface. However, they must both refer to
+ // the same underlying GObject instance.
+ //
+ g_assert(gobject_ == castitem);
+
+ // TODO: Think about it. Will this really be called twice?
+ g_printerr("ObjectBase::initialize() called twice for the same GObject\n");
+
+ return; // Don't initialize the wrapper twice.
+ }
+
+ //g_print("%s : %s\n", G_GNUC_PRETTY_FUNCTION, G_OBJECT_TYPE_NAME(castitem));
+
+ gobject_ = castitem;
+ _set_current_wrapper(castitem);
+}
+
+ObjectBase::~ObjectBase()
+{
+ // Normally, gobject_ should always be 0 at this point, because:
+ //
+ // a) Gtk::Object handles memory management on its own and always resets
+ // the gobject_ pointer in its destructor.
+ //
+ // b) Glib::Object instances that aren't Gtk::Objects will always be
+ // deleted by the destroy_notify_() virtual method. Calling delete
+ // on a Glib::Object is a programming error.
+ //
+ // The *only* situation where gobject_ is validly not 0 at this point
+ // happens if a derived class's ctor throws an exception. In that case
+ // we have to call g_object_unref() on our own.
+ //
+ if(GObject *const gobject = gobject_)
+ {
+#ifdef GLIBMM_DEBUG_REFCOUNTING
+ g_warning("(Glib::ObjectBase::~ObjectBase): gobject_ = %p", (void*) gobject_);
+#endif
+
+ gobject_ = 0;
+
+#ifdef GLIBMM_DEBUG_REFCOUNTING
+ g_warning("(Glib::ObjectBase::~ObjectBase): before g_object_steal_qdata()");
+#endif
+
+ // Remove the pointer to the wrapper from the underlying instance.
+ // This does _not_ cause invocation of the destroy_notify callback.
+ g_object_steal_qdata(gobject, quark_);
+
+#ifdef GLIBMM_DEBUG_REFCOUNTING
+ g_warning("(Glib::ObjectBase::~ObjectBase): calling g_object_unref()");
+#endif
+
+ g_object_unref(gobject);
+ }
+}
+
+void ObjectBase::reference() const
+{
+ GLIBMM_DEBUG_REFERENCE(this, gobject_);
+ g_object_ref(gobject_);
+}
+
+void ObjectBase::unreference() const
+{
+ GLIBMM_DEBUG_UNREFERENCE(this, gobject_);
+ g_object_unref(gobject_);
+}
+
+GObject* ObjectBase::gobj_copy() const
+{
+ reference();
+ return gobject_;
+}
+
+void ObjectBase::_set_current_wrapper(GObject* object)
+{
+ // Store a pointer to this wrapper in the underlying instance, so that we
+ // never create a second wrapper for the same underlying instance. Also,
+ // specify a callback that will tell us when it's time to delete this C++
+ // wrapper instance:
+
+ if(object)
+ {
+ if(!g_object_get_qdata(object, Glib::quark_))
+ {
+ g_object_set_qdata_full(object, Glib::quark_, this, &destroy_notify_callback_);
+ }
+ else
+ {
+ g_warning("This object, of type %s, already has a wrapper.\n"
+ "You should use wrap() instead of a constructor.",
+ G_OBJECT_TYPE_NAME(object));
+ }
+ }
+}
+
+// static
+ObjectBase* ObjectBase::_get_current_wrapper(GObject* object)
+{
+ if(object)
+ return static_cast<ObjectBase*>(g_object_get_qdata(object, Glib::quark_));
+ else
+ return 0;
+}
+
+// static
+void ObjectBase::destroy_notify_callback_(void* data)
+{
+ //GLIBMM_LIFECYCLE
+
+ // This method is called (indirectly) from g_object_run_dispose().
+ // Get the C++ instance associated with the C instance:
+ ObjectBase* cppObject = static_cast<ObjectBase*>(data); //Previously set with g_object_set_qdata_full().
+
+#ifdef GLIBMM_DEBUG_REFCOUNTING
+ g_warning("ObjectBase::destroy_notify_callback_: cppObject = %p, gobject_ = %p, gtypename = %s",
+ (void*) cppObject, (void*) cppObject->gobject_, cppObject->gobject_);
+#endif
+
+ if(cppObject) //This will be 0 if the C++ destructor has already run.
+ {
+ cppObject->destroy_notify_(); //Virtual - it does different things for GObject and GtkObject.
+ }
+}
+
+void ObjectBase::destroy_notify_()
+{
+ // The C instance is about to be disposed, making it unusable. Now is a
+ // good time to delete the C++ wrapper of the C instance. There is no way
+ // to force the disposal of the GObject (though GtkObject has
+ // gtk_object_destroy()), So this is the *only* place where we delete the
+ // C++ wrapper.
+ //
+ // This will only happen after the last unreference(), which will be done by
+ // the RefPtr<> destructor. There should be no way to access the wrapper or
+ // the undobjecterlying instance after that, so it's OK to delete this.
+
+#ifdef GLIBMM_DEBUG_REFCOUNTING
+ g_warning("Glib::ObjectBase::destroy_notify_: gobject_ = %p", (void*) gobject_);
+#endif
+
+ gobject_ = 0; // Make sure we don't unref it again in the dtor.
+
+ delete this;
+}
+
+bool ObjectBase::is_anonymous_custom_() const
+{
+ // Doing high-speed pointer comparison is OK here.
+ return (custom_type_name_ == anonymous_custom_type_name);
+}
+
+bool ObjectBase::is_derived_() const
+{
+ // gtkmmproc-generated classes initialize this to 0 by default.
+ return (custom_type_name_ != 0);
+}
+
+void ObjectBase::set_manage()
+{
+ // This is a private method and Gtk::manage() is a template function.
+ // Thus this will probably never run, unless you do something like:
+ //
+ // manage(static_cast<Gtk::Object*>(refptr.operator->()));
+
+ g_error("Glib::ObjectBase::set_manage(): "
+ "only Gtk::Object instances can be managed");
+}
+
+bool ObjectBase::_cpp_destruction_is_in_progress() const
+{
+ return cpp_destruction_in_progress_;
+}
+
+void ObjectBase::set_property_value(const Glib::ustring& property_name, const Glib::ValueBase& value)
+{
+ g_object_set_property(gobj(), property_name.c_str(), value.gobj());
+}
+
+void ObjectBase::get_property_value(const Glib::ustring& property_name, Glib::ValueBase& value) const
+{
+ g_object_get_property(const_cast<GObject*>(gobj()), property_name.c_str(), value.gobj());
+}
+
+void ObjectBase::connect_property_changed(const Glib::ustring& property_name, const sigc::slot<void>& slot)
+{
+ // Create a proxy to hold our connection info
+ // This will be deleted by destroy_notify_handler.
+ PropertyProxyConnectionNode* pConnectionNode = new PropertyProxyConnectionNode(slot, gobj());
+
+ // connect it to gtk+
+ // pConnectionNode will be passed as the data argument to the callback.
+ // The callback will then call the virtual Object::property_change_notify() method,
+ // which will contain a switch/case statement which will examine the property name.
+ const Glib::ustring notify_signal_name = "notify::" + property_name;
+ pConnectionNode->connection_id_ = g_signal_connect_data(gobj(),
+ notify_signal_name.c_str(), (GCallback)(&PropertyProxyConnectionNode::callback), pConnectionNode,
+ &PropertyProxyConnectionNode::destroy_notify_handler,
+ G_CONNECT_AFTER);
+}
+
+
+bool _gobject_cppinstance_already_deleted(GObject* gobject)
+{
+ //This function is used to prevent calling wrap() on a GTK+ instance whose gtkmm instance has been deleted.
+
+ if(gobject)
+ return (bool)g_object_get_qdata(gobject, Glib::quark_cpp_wrapper_deleted_); //true means that something is odd.
+ else
+ return false; //Nothing is particularly wrong.
+}
+
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/objectbase.h b/libs/glibmm2/glib/glibmm/objectbase.h
new file mode 100644
index 0000000000..a4bf9a526c
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/objectbase.h
@@ -0,0 +1,203 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_OBJECTBASE_H
+#define _GLIBMM_OBJECTBASE_H
+
+/* $Id: objectbase.h,v 1.13 2006/11/10 02:24:49 murrayc Exp $ */
+
+/* Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/signalproxy.h>
+#include <glibmm/propertyproxy.h>
+#include <glibmm/ustring.h>
+#include <glibmm/value.h>
+#include <sigc++/trackable.h>
+#include <typeinfo>
+#include <glibmmconfig.h>
+#include <glibmm/debug.h>
+
+#include <glibmmconfig.h>
+
+GLIBMM_USING_STD(type_info)
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GObject GObject; }
+#endif
+
+
+namespace Glib
+{
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+class GSigConnectionNode;
+#endif
+
+//This inherits virtually from sigc::trackable so that people can multiply inherit glibmm classes from other sigc::trackable-derived classes.
+//See bugzilla.gnome.org bug # 116280
+/** Glib::ObjectBase is a common base class for Objects and Interfaces.
+ *
+ * This is used as virtual base class. This means the ObjectBase
+ * constructor runs before all others, either implicitly or explicitly. Each of
+ * the available constructors initializes custom_type_name_ in a different way.
+ */
+class GLIBMM_API ObjectBase : virtual public sigc::trackable
+{
+protected:
+ /** This default constructor is called implicitly from the constructor of user-derived
+ * classes, even if, for instance, Gtk::Button calls a different ObjectBase constructor.
+ * This is normal behaviour for C++ virtual inheritance.
+ *
+ * The GType name will be gtkmm__anonymous_custom_type.
+ */
+ ObjectBase();
+
+ /** A derived constructor always overrides this choice.
+ * The C++ language itself ensures that the constructor
+ * is only invoked once.
+ *
+ * All classes generated by gtkmmproc use this constructor, with custom_type_name = 0,
+ * which essentially means it's not a custom type. This is used to optimize
+ * vfunc and signal handler callbacks -- since the C++ virtual methods are
+ * not overridden, invocation can be skipped.
+ *
+ * The GType name will be @a custom_type_name.
+ */
+ explicit ObjectBase(const char* custom_type_name);
+
+ /** This constructor is a special feature to allow creation of derived types on the
+ * fly, without having to use g_object_new() manually. This feature is
+ * sometimes necessary, e.g. to implement a custom Gtk::CellRenderer. The
+ * neat trick with the virtual base class ctor makes it possible to reuse
+ * the same direct base class' constructor as with non-custom types.
+ *
+ * The GType name will be @a custom_type_info.name().
+ */
+ explicit ObjectBase(const std::type_info& custom_type_info);
+
+ virtual ~ObjectBase() = 0;
+
+ // Called by Glib::Object and Glib::Interface constructors. See comments there.
+ void initialize(GObject* castitem);
+
+public:
+
+ /// You probably want to use a specific property_*() accessor method instead.
+ void set_property_value(const Glib::ustring& property_name, const Glib::ValueBase& value);
+
+ /// You probably want to use a specific property_*() accessor method instead.
+ void get_property_value(const Glib::ustring& property_name, Glib::ValueBase& value) const;
+
+ /// You probably want to use a specific property_*() accessor method instead.
+ template <class PropertyType>
+ void set_property(const Glib::ustring& property_name, const PropertyType& value);
+
+ /// You probably want to use a specific property_*() accessor method instead.
+ template <class PropertyType>
+ void get_property(const Glib::ustring& property_name, PropertyType& value) const;
+
+ /** You can use the signal_changed() signal of the property proxy instead,
+ * but this is necessary when using the reduced API.
+ */
+ void connect_property_changed(const Glib::ustring& property_name, const sigc::slot<void>& slot);
+
+ /** Increment the reference count for this object.
+ * You should never need to do this manually - use the object via a RefPtr instead.
+ */
+ virtual void reference() const;
+
+ /** Decrement the reference count for this object.
+ * You should never need to do this manually - use the object via a RefPtr instead.
+ */
+ virtual void unreference() const;
+
+ ///Provides access to the underlying C GtkObject.
+ inline GObject* gobj() { return gobject_; }
+
+ ///Provides access to the underlying C GtkObject.
+ inline const GObject* gobj() const { return gobject_; }
+
+ /// Give a ref-ed copy to someone. Use for direct struct access.
+ GObject* gobj_copy() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ static ObjectBase* _get_current_wrapper(GObject* object);
+ bool _cpp_destruction_is_in_progress() const;
+#endif //DOXYGEN_SHOULD_SKIP_THIS
+
+protected:
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GObject* gobject_; // the GLib/GDK/GTK+ object instance
+ const char* custom_type_name_;
+ bool cpp_destruction_in_progress_;
+
+ bool is_anonymous_custom_() const;
+ bool is_derived_() const;
+
+ static void destroy_notify_callback_(void* data);
+ virtual void destroy_notify_();
+
+ void _set_current_wrapper(GObject* object);
+#endif //DOXYGEN_SHOULD_SKIP_THIS
+
+private:
+ // noncopyable
+ ObjectBase(const ObjectBase&);
+ ObjectBase& operator=(const ObjectBase&);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ virtual void set_manage(); // calls g_error()
+#endif //DOXYGEN_SHOULD_SKIP_THIS
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ friend class Glib::GSigConnectionNode; // for GSigConnectionNode::notify()
+#endif
+};
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+template <class PropertyType> inline
+void ObjectBase::set_property(const Glib::ustring& property_name, const PropertyType& value)
+{
+ Glib::Value<PropertyType> property_value;
+ property_value.init(Glib::Value<PropertyType>::value_type());
+
+ property_value.set(value);
+ this->set_property_value(property_name, property_value);
+}
+
+template <class PropertyType> inline
+void ObjectBase::get_property(const Glib::ustring& property_name, PropertyType& value) const
+{
+ Glib::Value<PropertyType> property_value;
+ property_value.init(Glib::Value<PropertyType>::value_type());
+
+ this->get_property_value(property_name, property_value);
+
+ value = property_value.get();
+}
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+
+bool _gobject_cppinstance_already_deleted(GObject* gobject);
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_OBJECTBASE_H */
+
diff --git a/libs/glibmm2/glib/glibmm/optioncontext.cc b/libs/glibmm2/glib/glibmm/optioncontext.cc
new file mode 100644
index 0000000000..64d9468f2a
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/optioncontext.cc
@@ -0,0 +1,162 @@
+// Generated by gtkmmproc -- DO NOT MODIFY!
+
+
+#include <glibmm/optioncontext.h>
+#include <glibmm/private/optioncontext_p.h>
+
+// -*- c++ -*-
+/* $Id: optioncontext.ccg,v 1.4 2004/10/30 14:25:45 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/utility.h>
+#include <glib/goption.h>
+
+namespace Glib
+{
+
+
+OptionContext::OptionContext(const Glib::ustring& parameter_string)
+: gobject_( g_option_context_new(parameter_string.c_str()) ),
+ has_ownership_(true)
+{
+}
+
+OptionContext::OptionContext(GOptionContext* castitem, bool take_ownership)
+: gobject_(castitem),
+ has_ownership_(take_ownership)
+{
+}
+
+OptionContext::~OptionContext()
+{
+ if(has_ownership_)
+ g_option_context_free(gobj());
+
+ gobject_ = 0;
+}
+
+void OptionContext::add_group(OptionGroup& group)
+{
+ //Strangely, GObjectContext actually takes ownership of the GOptionGroup, deleting it later.
+ g_option_context_add_group(gobj(), (group).gobj_give_ownership());
+}
+
+void OptionContext::set_main_group(OptionGroup& group)
+{
+ //Strangely, GObjectContext actually takes ownership of the GOptionGroup, deleting it later.
+ g_option_context_set_main_group(gobj(), (group).gobj_give_ownership());
+}
+
+
+/*
+OptionGroup OptionContext::get_main_group() const
+{
+ const GOptionGroup* cobj = g_option_context_get_main_group(const_cast<GOptionContext*>( gobj()) );
+ OptionGroup cppObj(const_cast<GOptionGroup*>(cobj), true); // take_copy
+ return cppObj;
+}
+
+*/
+
+
+} // namespace Glib
+
+
+namespace
+{
+} // anonymous namespace
+
+
+Glib::OptionError::OptionError(Glib::OptionError::Code error_code, const Glib::ustring& error_message)
+:
+ Glib::Error (G_OPTION_ERROR, error_code, error_message)
+{}
+
+Glib::OptionError::OptionError(GError* gobject)
+:
+ Glib::Error (gobject)
+{}
+
+Glib::OptionError::Code Glib::OptionError::code() const
+{
+ return static_cast<Code>(Glib::Error::code());
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+void Glib::OptionError::throw_func(GError* gobject)
+{
+ throw Glib::OptionError(gobject);
+}
+#else
+//When not using exceptions, we just pass the Exception object around without throwing it:
+std::auto_ptr<Glib::Error> Glib::OptionError::throw_func(GError* gobject)
+{
+ return std::auto_ptr<Glib::Error>(new Glib::OptionError(gobject));
+}
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+namespace Glib
+{
+
+
+void OptionContext::set_help_enabled(bool help_enabled)
+{
+g_option_context_set_help_enabled(gobj(), static_cast<int>(help_enabled));
+}
+
+bool OptionContext::get_help_enabled() const
+{
+ return g_option_context_get_help_enabled(const_cast<GOptionContext*>(gobj()));
+}
+
+void OptionContext::set_ignore_unknown_options(bool ignore_unknown)
+{
+g_option_context_set_ignore_unknown_options(gobj(), static_cast<int>(ignore_unknown));
+}
+
+bool OptionContext::get_ignore_unknown_options() const
+{
+ return g_option_context_get_ignore_unknown_options(const_cast<GOptionContext*>(gobj()));
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+bool OptionContext::parse(int& argc, char**& argv)
+#else
+bool OptionContext::parse(int& argc, char**& argv, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ bool retvalue = g_option_context_parse(gobj(), &argc, &(argv), &(gerror));
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return retvalue;
+
+}
+
+
+} // namespace Glib
+
+
diff --git a/libs/glibmm2/glib/glibmm/optioncontext.h b/libs/glibmm2/glib/glibmm/optioncontext.h
new file mode 100644
index 0000000000..ee645eb66b
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/optioncontext.h
@@ -0,0 +1,211 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_OPTIONCONTEXT_H
+#define _GLIBMM_OPTIONCONTEXT_H
+
+
+/* $Id: optioncontext.hg,v 1.6 2005/01/10 17:42:17 murrayc Exp $ */
+
+/* Copyright (C) 2004 The glibmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <glibmm/optionentry.h>
+#include <glibmm/optiongroup.h>
+#include <glibmm/error.h>
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GOptionContext GOptionContext; }
+#endif
+
+
+namespace Glib
+{
+
+/** Exception class for options.
+ */
+class OptionError : public Glib::Error
+{
+public:
+ enum Code
+ {
+ UNKNOWN_OPTION,
+ BAD_VALUE,
+ FAILED
+ };
+
+ OptionError(Code error_code, const Glib::ustring& error_message);
+ explicit OptionError(GError* gobject);
+ Code code() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+private:
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ static void throw_func(GError* gobject);
+#else
+ //When not using exceptions, we just pass the Exception object around without throwing it:
+ static std::auto_ptr<Glib::Error> throw_func(GError* gobject);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ friend void wrap_init(); // uses throw_func()
+#endif
+};
+
+
+/** An OptionContext defines which options are accepted by the commandline option parser.
+ */
+class OptionContext
+{
+ public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ typedef OptionContext CppObjectType;
+ typedef GOptionContext BaseObjectType;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+private:
+
+public:
+
+ /** Creates a new option context.
+ * @param parameter_string A string which is displayed in the first line of --help output, after programname [OPTION...]
+ */
+ explicit OptionContext(const Glib::ustring& parameter_string = Glib::ustring());
+
+ //Note that, unlike Glib::Wrap(), this would create a second C++ instance for the same C instance,
+ //so it should be used carefully. For instance you could not access data in a derived class via this second instance.
+ explicit OptionContext(GOptionContext* castitem, bool take_ownership = false);
+ virtual ~OptionContext();
+
+
+ /** Enables or disables automatic generation of &lt;option&gt;--help&lt;/option&gt;
+ * output. By default, g_option_context_parse() recognizes
+ * &lt;option&gt;--help&lt;/option&gt;, &lt;option&gt;-?&lt;/option&gt;, &lt;option&gt;--help-all&lt;/option&gt;
+ * and &lt;option&gt;--help-&lt;/option&gt;&lt;replaceable&gt;groupname&lt;/replaceable&gt; and creates
+ * suitable output to stdout.
+ *
+ * @newin2p6
+ * @param help_enabled <tt>true</tt> to enable &lt;option&gt;--help&lt;/option&gt;, <tt>false</tt> to disable it.
+ */
+ void set_help_enabled(bool help_enabled = true);
+
+ /** Returns whether automatic &lt;option&gt;--help&lt;/option&gt; generation
+ * is turned on for @a context . See g_option_context_set_help_enabled().
+ * @return <tt>true</tt> if automatic help generation is turned on.
+ *
+ * @newin2p6.
+ */
+ bool get_help_enabled() const;
+
+ /** Sets whether to ignore unknown options or not. If an argument is
+ * ignored, it is left in the @a argv array after parsing. By default,
+ * g_option_context_parse() treats unknown options as error.
+ *
+ * This setting does not affect non-option arguments (i.e. arguments
+ * which don't start with a dash). But note that GOption cannot reliably
+ * determine whether a non-option belongs to a preceding unknown option.
+ *
+ * @newin2p6
+ * @param ignore_unknown <tt>true</tt> to ignore unknown options, <tt>false</tt> to produce
+ * an error when unknown options are met.
+ */
+ void set_ignore_unknown_options(bool ignore_unknown = true);
+
+ /** Returns whether unknown options are ignored or not. See
+ * g_option_context_set_ignore_unknown_options().
+ * @return <tt>true</tt> if unknown options are ignored.
+ *
+ * @newin2p6.
+ */
+ bool get_ignore_unknown_options() const;
+
+
+ /** Parses the command line arguments, recognizing options
+ * which have been added to @a context . A side-effect of
+ * calling this function is that g_set_prgname() will be
+ * called.
+ *
+ * If the parsing is successful, any parsed arguments are
+ * removed from the array and @a argc and @a argv are updated
+ * accordingly. A '--' option is stripped from @a argv
+ * unless there are unparsed options before and after it,
+ * or some of the options after it start with '-'. In case
+ * of an error, @a argc and @a argv are left unmodified.
+ *
+ * If automatic &lt;option&gt;--help&lt;/option&gt; support is enabled
+ * (see g_option_context_set_help_enabled()), and the
+ * @a argv array contains one of the recognized help options,
+ * this function will produce help output to stdout and
+ * call <tt>exit (0)</tt>.
+ * @param argc A pointer to the number of command line arguments.
+ * @param argv A pointer to the array of command line arguments.
+ * @param error A return location for errors.
+ * @return <tt>true</tt> if the parsing was successful,
+ * <tt>false</tt> if an error occurred
+ *
+ * @newin2p6.
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ bool parse(int& argc, char**& argv);
+#else
+ bool parse(int& argc, char**& argv, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ //g_option_context_add_main_entries(), just creates a group internally, adds them to it, and does a set_main_group()
+ //- a group without callbacks seems to do some simple default parsing.
+
+
+ /** Adds an OptionGroup to the context, so that parsing with context will recognize the options in the group.
+ * Note that the group will not be copied, so it should exist for as long as the context exists.
+ *
+ * @param group The group to add.
+ */
+ void add_group(OptionGroup& group);
+
+
+ /** Sets an OptionGroup as the main group of the context. This has the same effect as calling add_group(), the only
+ * difference is that the options in the main group are treated differently when generating --help output.
+ * Note that the group will not be copied, so it should exist for as long as the context exists.
+ *
+ * @param group The group to add.
+ */
+ void set_main_group(OptionGroup& group);
+
+
+ //We don't need this (hopefully), and the memory management would be really awkward.
+ //OptionGroup& get_main_group();
+ //const OptionGroup& get_main_group() const;
+
+
+ GOptionContext* gobj() { return gobject_; }
+ const GOptionContext* gobj() const { return gobject_; }
+
+protected:
+
+ GOptionContext* gobject_;
+ bool has_ownership_;
+
+
+};
+
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_OPTIONCONTEXT_H */
+
diff --git a/libs/glibmm2/glib/glibmm/optionentry.cc b/libs/glibmm2/glib/glibmm/optionentry.cc
new file mode 100644
index 0000000000..20c54ee7df
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/optionentry.cc
@@ -0,0 +1,149 @@
+// Generated by gtkmmproc -- DO NOT MODIFY!
+
+
+#include <glibmm/optionentry.h>
+#include <glibmm/private/optionentry_p.h>
+
+// -*- c++ -*-
+/* $Id: optionentry.ccg,v 1.8 2006/03/08 12:23:03 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/utility.h>
+#include <glib/goption.h>
+#include <glib/gmem.h>
+
+namespace Glib
+{
+
+OptionEntry::OptionEntry()
+{
+ gobject_ = g_new0(GOptionEntry, 1);
+}
+
+OptionEntry::~OptionEntry()
+{
+ g_free(const_cast<char*>(gobject_->long_name));
+ g_free(const_cast<char*>(gobject_->description));
+ g_free(const_cast<char*>(gobject_->arg_description));
+ g_free(gobject_);
+}
+
+OptionEntry::OptionEntry(const OptionEntry& src)
+{
+ gobject_ = g_new0(GOptionEntry, 1);
+
+ operator=(src);
+}
+
+OptionEntry& OptionEntry::operator=(const OptionEntry& src)
+{
+ if(this != &src)
+ {
+ if(gobject_->long_name)
+ g_free(const_cast<char*>(gobject_->long_name));
+
+ gobject_->long_name = g_strdup(src.gobject_->long_name);
+
+ gobject_->short_name = src.gobject_->short_name; //It's just one char.
+
+ gobject_->flags = src.gobject_->flags;
+ gobject_->arg = src.gobject_->arg;
+ gobject_->arg_data = src.gobject_->arg_data; //Shared, because it's not owned by any instance of this class anyway.
+
+ if(gobject_->description)
+ g_free(const_cast<char*>(gobject_->description));
+
+ gobject_->description = g_strdup(src.gobject_->description);
+
+ if(gobject_->arg_description)
+ g_free(const_cast<char*>(gobject_->arg_description));
+
+ gobject_->arg_description = g_strdup(src.gobject_->arg_description);
+ }
+
+ return *this;
+}
+
+
+} // namespace Glib
+
+
+namespace
+{
+} // anonymous namespace
+
+
+namespace Glib
+{
+
+
+ Glib::ustring OptionEntry::get_long_name() const
+{
+ return Glib::convert_const_gchar_ptr_to_ustring(gobj()->long_name);
+}
+
+ void OptionEntry::set_long_name(const Glib::ustring& value)
+{
+ gobj()->long_name = g_strdup((value).c_str());
+}
+
+ gchar OptionEntry::get_short_name() const
+{
+ return gobj()->short_name;
+}
+
+ void OptionEntry::set_short_name(const gchar& value)
+{
+ gobj()->short_name = value;
+}
+
+ int OptionEntry::get_flags() const
+{
+ return gobj()->flags;
+}
+
+ void OptionEntry::set_flags(const int& value)
+{
+ gobj()->flags = value;
+}
+
+ Glib::ustring OptionEntry::get_description() const
+{
+ return Glib::convert_const_gchar_ptr_to_ustring(gobj()->description);
+}
+
+ void OptionEntry::set_description(const Glib::ustring& value)
+{
+ gobj()->description = g_strdup((value).c_str());
+}
+
+ Glib::ustring OptionEntry::get_arg_description() const
+{
+ return Glib::convert_const_gchar_ptr_to_ustring(gobj()->arg_description);
+}
+
+ void OptionEntry::set_arg_description(const Glib::ustring& value)
+{
+ gobj()->arg_description = g_strdup((value).c_str());
+}
+
+
+} // namespace Glib
+
+
diff --git a/libs/glibmm2/glib/glibmm/optionentry.h b/libs/glibmm2/glib/glibmm/optionentry.h
new file mode 100644
index 0000000000..7f2f220d0b
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/optionentry.h
@@ -0,0 +1,112 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_OPTIONENTRY_H
+#define _GLIBMM_OPTIONENTRY_H
+
+
+/* $Id: optionentry.hg,v 1.11 2005/07/31 13:11:05 murrayc Exp $ */
+
+/* Copyright (C) 2004 The glibmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <glibmm/ustring.h>
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GOptionEntry GOptionEntry; }
+#endif
+
+
+namespace Glib
+{
+
+/** An OptionEntry defines a single option. To have an effect, it must be added to an OptionGroup with
+ * OptionGroup::add_entry().
+ *
+ * The long name of an option can be used to specify it in a commandline as --long_name.
+ * Every option must have a long name. To resolve conflicts if multiple option groups contain the same long name, it is also
+ * possible to specify the option as --groupname-long_name.
+ *
+ * If an option has a short name, it can be specified as -short_name in a commandline.
+ *
+ * The description for the option is shown in the --help output.
+ *
+ * The arg_descripton is the placeholder to use for the extra argument parsed by the option in --help output.
+ */
+class OptionEntry
+{
+ public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ typedef OptionEntry CppObjectType;
+ typedef GOptionEntry BaseObjectType;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+private:
+
+public:
+
+ //Copied from goption.h, instead of generated, so that we can put it inside the class.
+ enum Flags
+ {
+ FLAG_HIDDEN = 1 << 0,
+ FLAG_IN_MAIN = 1 << 1,
+ FLAG_REVERSE = 1 << 2,
+ FLAG_NO_ARG = 1 << 3,
+ FLAG_FILENAME = 1 << 4,
+ FLAG_OPTIONAL_ARG = 1 << 5,
+ FLAG_NOALIAS = 1 << 6
+ } GOptionFlags;
+
+ OptionEntry();
+ OptionEntry(const OptionEntry& src);
+ virtual ~OptionEntry();
+
+ OptionEntry& operator=(const OptionEntry& src);
+
+
+ Glib::ustring get_long_name() const;
+ void set_long_name(const Glib::ustring& value);
+
+ gchar get_short_name() const;
+ void set_short_name(const gchar& value);
+
+ int get_flags() const;
+ void set_flags(const int& value);
+
+ //TODO: G_OPTION_ARG_CALLBACK,
+
+ Glib::ustring get_description() const;
+ void set_description(const Glib::ustring& value);
+
+ Glib::ustring get_arg_description() const;
+ void set_arg_description(const Glib::ustring& value);
+
+ GOptionEntry* gobj() { return gobject_; }
+ const GOptionEntry* gobj() const { return gobject_; }
+
+protected:
+
+ GOptionEntry* gobject_;
+
+
+};
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_OPTIONENTRY_H */
+
diff --git a/libs/glibmm2/glib/glibmm/optiongroup.cc b/libs/glibmm2/glib/glibmm/optiongroup.cc
new file mode 100644
index 0000000000..42d61fe42a
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/optiongroup.cc
@@ -0,0 +1,457 @@
+// Generated by gtkmmproc -- DO NOT MODIFY!
+
+
+#include <glibmm/optiongroup.h>
+#include <glibmm/private/optiongroup_p.h>
+
+// -*- c++ -*-
+/* $Id: optiongroup.ccg,v 1.17 2006/01/28 12:09:22 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/optionentry.h>
+#include <glibmm/optioncontext.h>
+#include <glibmm/utility.h>
+//#include <glibmm/containers.h>
+#include <glib/goption.h>
+
+namespace Glib
+{
+
+namespace //anonymous
+{
+
+extern "C"
+{
+
+static gboolean g_callback_pre_parse(GOptionContext* context, GOptionGroup* /* group */, gpointer data, GError** /* TODO error */)
+{
+ OptionContext cppContext(context, false /* take_ownership */);
+ //OptionGroup cppGroup(group, true /* take_copy */); //Maybe this should be option_group.
+
+ OptionGroup* option_group = static_cast<OptionGroup*>(data);
+ if(option_group)
+ return option_group->on_pre_parse(cppContext, *option_group);
+ else
+ return false;
+}
+
+static gboolean g_callback_post_parse(GOptionContext* context, GOptionGroup* /* group */, gpointer data, GError** /* TODO error */)
+{
+ OptionContext cppContext(context, false /* take_ownership */);
+ //OptionGroup cppGroup(group, true /* take_copy */); //Maybe this should be option_group.
+
+ OptionGroup* option_group = static_cast<OptionGroup*>(data);
+ if(option_group)
+ {
+ return option_group->on_post_parse(cppContext, *option_group);
+ }
+ else
+ return false;
+}
+
+static void g_callback_error(GOptionContext* context, GOptionGroup* /* group */, gpointer data, GError** /* TODO error*/)
+{
+ OptionContext cppContext(context, false /* take_ownership */);
+ //OptionGroup cppGroup(group); //Maybe this should be option_group.
+
+ OptionGroup* option_group = static_cast<OptionGroup*>(data);
+ if(option_group)
+ return option_group->on_error(cppContext, *option_group);
+}
+
+} /* extern "C" */
+
+} //anonymous namespace
+
+
+OptionGroup::OptionGroup(const Glib::ustring& name, const Glib::ustring& description, const Glib::ustring& help_description)
+: gobject_( g_option_group_new(name.c_str(), description.c_str(), help_description.c_str(), this, 0 /* destroy_func */) ),
+ has_ownership_(true)
+{
+ //Connect callbacks, so that derived classes can override the virtual methods:
+ g_option_group_set_parse_hooks(gobj(), &g_callback_pre_parse, &g_callback_post_parse);
+ g_option_group_set_error_hook(gobj(), &g_callback_error);
+}
+
+OptionGroup::OptionGroup(GOptionGroup* castitem)
+: gobject_(castitem),
+ has_ownership_(true)
+{
+ //Always takes ownership - never takes copy.
+}
+
+
+OptionGroup::~OptionGroup()
+{
+ //Free any C types that were allocated during add_entry():
+ for(type_map_entries::iterator iter = map_entries_.begin(); iter != map_entries_.end(); ++iter)
+ {
+ CppOptionEntry& cpp_entry = iter->second;
+ cpp_entry.release_c_arg();
+ }
+
+ if(has_ownership_)
+ {
+ g_option_group_free(gobj());
+ gobject_ = 0;
+ }
+}
+
+void OptionGroup::add_entry(const OptionEntry& entry)
+{
+ //It does not copy the entry, so it needs to live as long as the group.
+
+ //g_option_group_add_entries takes an array, with the last item in the array having a null long_name.
+ //Hopefully this will be properly documented eventually - see bug #
+
+ //Create a temporary array, just so we can give the correct thing to g_option_group_add_entries:
+ GOptionEntry array[2];
+ array[0] = *(entry.gobj()); //Copy contents.
+ GLIBMM_INITIALIZE_STRUCT(array[1], GOptionEntry);
+
+ g_option_group_add_entries(gobj(), array);
+}
+
+void OptionGroup::add_entry(const OptionEntry& entry, bool& arg)
+{
+ add_entry_with_wrapper(entry, G_OPTION_ARG_NONE /* Actually a boolean on/off, depending on whether the argument name was given, without argument parameters. */, &arg);
+}
+
+void OptionGroup::add_entry(const OptionEntry& entry, int& arg)
+{
+ add_entry_with_wrapper(entry, G_OPTION_ARG_INT, &arg);
+}
+
+void OptionGroup::add_entry(const OptionEntry& entry, Glib::ustring& arg)
+{
+ add_entry_with_wrapper(entry, G_OPTION_ARG_STRING, &arg);
+}
+
+void OptionGroup::add_entry(const OptionEntry& entry, vecustrings& arg)
+{
+ add_entry_with_wrapper(entry, G_OPTION_ARG_STRING_ARRAY, &arg);
+}
+
+void OptionGroup::add_entry_filename(const OptionEntry& entry, std::string& arg)
+{
+ add_entry_with_wrapper(entry, G_OPTION_ARG_FILENAME, &arg);
+}
+
+void OptionGroup::add_entry_filename(const OptionEntry& entry, vecstrings& arg)
+{
+ add_entry_with_wrapper(entry, G_OPTION_ARG_FILENAME_ARRAY, &arg);
+}
+
+void OptionGroup::add_entry_with_wrapper(const OptionEntry& entry, GOptionArg arg_type, void* cpp_arg)
+{
+ const Glib::ustring name = entry.get_long_name();
+ type_map_entries::iterator iterFind = map_entries_.find(name);
+ if( iterFind == map_entries_.end() ) //If we have not added this entry already
+ {
+ CppOptionEntry cppEntry;
+ cppEntry.carg_type_ = arg_type;
+ cppEntry.allocate_c_arg();
+
+ cppEntry.cpparg_ = cpp_arg;
+
+ //Give the information to the C API:
+
+ cppEntry.entry_ = new OptionEntry(entry); //g_option_group_add_entry() does not take its own copy, so we must keep the instance alive. */
+ //cppEntry.entry_ is deleted in release_c_arg(), via the destructor.
+
+ cppEntry.entry_->gobj()->arg = arg_type;
+ cppEntry.entry_->gobj()->arg_data = cppEntry.carg_;
+
+ //Remember the C++/C mapping so that we can use it later:
+ map_entries_[name] = cppEntry;
+
+ add_entry(*(cppEntry.entry_));
+ }
+}
+
+
+bool OptionGroup::on_pre_parse(OptionContext& /* context */, OptionGroup& /* group */)
+{
+
+ return true;
+}
+
+bool OptionGroup::on_post_parse(OptionContext& /* context */, OptionGroup& /* group */)
+{
+ //Call this at the start of overrides.
+
+ //TODO: Maybe put this in the C callback:
+
+ //The C args have now been given values by GOption.
+ //Convert C values to C++ values:
+
+ for(type_map_entries::iterator iter = map_entries_.begin(); iter != map_entries_.end(); ++iter)
+ {
+ CppOptionEntry& cpp_entry = iter->second;
+ cpp_entry.convert_c_to_cpp();
+ }
+
+ return true;
+}
+
+void OptionGroup::on_error(OptionContext& /* context */, OptionGroup& /* group */)
+{
+}
+
+
+OptionGroup::CppOptionEntry::CppOptionEntry()
+: carg_type_(G_OPTION_ARG_NONE), carg_(0), cpparg_(0), entry_(0)
+{}
+
+void OptionGroup::CppOptionEntry::allocate_c_arg()
+{
+ //Create an instance of the appropriate C type.
+ //This will be destroyed in the OptionGroup destructor.
+ switch(carg_type_)
+ {
+ case G_OPTION_ARG_STRING: //The char* will be for UTF8 strins.
+ case G_OPTION_ARG_FILENAME: //The char* will be for strings in the current locale's encoding.
+ {
+ char** typed_arg = new char*;
+ *typed_arg = 0; //The C code will allocate a char* and put it here, for us to g_free() later.
+ carg_ = typed_arg;
+
+ break;
+ }
+ case G_OPTION_ARG_INT:
+ {
+ int* typed_arg = new int;
+ *typed_arg = 0;
+ carg_ = typed_arg;
+
+ break;
+ }
+ case G_OPTION_ARG_STRING_ARRAY:
+ case G_OPTION_ARG_FILENAME_ARRAY:
+ {
+ char*** typed_arg = new char**;
+ *typed_arg = 0;
+ carg_ = typed_arg;
+
+ break;
+ }
+ case G_OPTION_ARG_NONE: /* Actually a boolean. */
+ {
+ gboolean* typed_arg = new gboolean;
+ *typed_arg = 0;
+ carg_ = typed_arg;
+
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+}
+
+void OptionGroup::CppOptionEntry::release_c_arg()
+{
+ //Delete the instances that we created in allocate_c_arg().
+ //Notice that we delete the type that we created, but not the value to which it points.
+ if(carg_)
+ {
+ switch(carg_type_)
+ {
+ case G_OPTION_ARG_STRING:
+ case G_OPTION_ARG_FILENAME:
+ {
+ char** typed_arg = (char**)carg_;
+ g_free(*typed_arg); //Free the char* string at type_arg, which was allocated by the C code.
+ delete typed_arg; //Delete the char** that we allocated in allocate_c_arg;
+
+ break;
+ }
+ case G_OPTION_ARG_INT:
+ {
+ int* typed_arg = (int*)carg_;
+ delete typed_arg;
+
+ break;
+ }
+ case G_OPTION_ARG_STRING_ARRAY:
+ case G_OPTION_ARG_FILENAME_ARRAY:
+ {
+ delete (char**)carg_;
+ break;
+ }
+ case G_OPTION_ARG_NONE: /* Actually a boolean. */
+ {
+ gboolean* typed_arg = (gboolean*)carg_;
+ delete typed_arg;
+
+ break;
+ }
+ default:
+ {
+ /* TODO:
+ G_OPTION_ARG_CALLBACK,
+*/
+ break;
+ }
+ }
+
+ carg_ = 0;
+ }
+
+ if(entry_)
+ delete entry_;
+}
+
+void OptionGroup::CppOptionEntry::convert_c_to_cpp()
+{
+ switch(carg_type_)
+ {
+ case G_OPTION_ARG_STRING:
+ {
+ char** typed_arg = (char**)carg_;
+ Glib::ustring* typed_cpp_arg = (Glib::ustring*)cpparg_;
+ if(typed_arg && typed_cpp_arg)
+ {
+ char* pch = *typed_arg;
+ (*typed_cpp_arg) = Glib::convert_const_gchar_ptr_to_ustring(pch);
+
+ break;
+ }
+ }
+ case G_OPTION_ARG_FILENAME:
+ {
+ char** typed_arg = (char**)carg_;
+ std::string* typed_cpp_arg = (std::string*)cpparg_;
+ if(typed_arg && typed_cpp_arg)
+ {
+ char* pch = *typed_arg;
+ (*typed_cpp_arg) = Glib::convert_const_gchar_ptr_to_stdstring(pch);
+
+ break;
+ }
+ }
+ case G_OPTION_ARG_INT:
+ {
+ *((int*)cpparg_) = *((int*)carg_);
+ break;
+ }
+ case G_OPTION_ARG_STRING_ARRAY:
+ {
+ char*** typed_arg = (char***)carg_;
+ vecustrings* typed_cpp_arg = (vecustrings*)cpparg_;
+ if(typed_arg && typed_cpp_arg)
+ {
+ typed_cpp_arg->clear();
+
+ //The C array seems to be null-terminated.
+ //Glib::StringArrayHandle array_handle(*typed_arg, Glib::OWNERSHIP_NONE);
+
+ //The SUN Forte compiler complains about this:
+ // "optiongroup.cc", line 354: Error: Cannot assign Glib::ArrayHandle<Glib::ustring,
+ // Glib::Container_Helpers::TypeTraits<Glib::ustring>> to std::vector<Glib::ustring> without
+ // "std::vector<Glib::ustring>::operator=(const std::vector<Glib::ustring>&)";.
+ //
+ //(*typed_cpp_arg) = array_handle;
+ //
+ //And the Tru64 compiler does not even like us to instantiate the StringArrayHandle:
+ //
+ // cxx: Error: ../../glib/glibmm/containerhandle_shared.h, line 149: the operand
+ // of a pointer dynamic_cast must be a pointer to a complete class type
+ // return dynamic_cast<CppType>(Glib::wrap_auto(cobj, false /* take_copy */));
+
+ //for(Glib::StringArrayHandle::iterator iter = array_handle.begin(); iter != array_handle.end(); ++iter)
+ //{
+ // typed_cpp_arg->push_back(*iter);
+ //}
+
+ //So we do this:
+
+ char** char_array_next = *typed_arg;
+ while(char_array_next && *char_array_next)
+ {
+ typed_cpp_arg->push_back(*char_array_next);
+ ++char_array_next;
+ }
+ }
+
+ break;
+ }
+ case G_OPTION_ARG_FILENAME_ARRAY:
+ {
+ char*** typed_arg = (char***)carg_;
+ vecustrings* typed_cpp_arg = (vecustrings*)cpparg_;
+ if(typed_arg && typed_cpp_arg)
+ {
+ typed_cpp_arg->clear();
+
+ //See comments above about the SUN Forte and Tru64 compilers.
+
+ char** char_array_next = *typed_arg;
+ while(char_array_next && *char_array_next)
+ {
+ typed_cpp_arg->push_back(*char_array_next);
+ ++char_array_next;
+ }
+ }
+
+ break;
+ }
+ case G_OPTION_ARG_NONE: /* Actually a boolean. */
+ {
+ *((bool*)cpparg_) = *((gboolean*)carg_);
+ break;
+ }
+ default:
+ {
+ /* TODO:
+ G_OPTION_ARG_CALLBACK,
+ */
+ break;
+ }
+ }
+}
+
+GOptionGroup* OptionGroup::gobj_give_ownership()
+{
+ has_ownership_ = false;
+ return gobj();
+}
+
+} // namespace Glib
+
+
+namespace
+{
+} // anonymous namespace
+
+
+namespace Glib
+{
+
+
+void OptionGroup::set_translation_domain(const Glib::ustring& domain)
+{
+g_option_group_set_translation_domain(gobj(), domain.c_str());
+}
+
+
+} // namespace Glib
+
+
diff --git a/libs/glibmm2/glib/glibmm/optiongroup.h b/libs/glibmm2/glib/glibmm/optiongroup.h
new file mode 100644
index 0000000000..b3419ba13f
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/optiongroup.h
@@ -0,0 +1,141 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_OPTIONGROUP_H
+#define _GLIBMM_OPTIONGROUP_H
+
+
+/* $Id: optiongroup.hg,v 1.10 2005/01/10 17:42:17 murrayc Exp $ */
+
+/* Copyright (C) 2004 The glibmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <glibmm/ustring.h>
+#include <map>
+#include <vector>
+#include <glib/goption.h> //TODO: Try to hide this.
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GOptionGroup GOptionGroup; }
+#endif //DOXYGEN_SHOULD_SKIP_THIS
+
+
+namespace Glib
+{
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+class OptionEntry;
+class OptionContext;
+#endif //DOXYGEN_SHOULD_SKIP_THIS
+
+/** An OptionGroup defines the options in a single group.
+ * Libraries which need to parse commandline options are expected to provide a function that allows their OptionGroups to
+ * be added to the application's OptionContext.
+ */
+class OptionGroup
+{
+ public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ typedef OptionGroup CppObjectType;
+ typedef GOptionGroup BaseObjectType;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+private:
+
+public:
+ OptionGroup(const Glib::ustring& name, const Glib::ustring& description, const Glib::ustring& help_description = Glib::ustring());
+
+ /** This always takes ownership of the underlying GOptionGroup,
+ * so it is only useful with C functions that return newly-allocated GOptionGroups.
+ */
+ explicit OptionGroup(GOptionGroup* castitem);
+
+ virtual ~OptionGroup();
+
+
+ virtual bool on_pre_parse(OptionContext& context, OptionGroup& group);
+ virtual bool on_post_parse(OptionContext& context, OptionGroup& group);
+ virtual void on_error(OptionContext& context, OptionGroup& group);
+
+
+ void add_entry(const OptionEntry& entry);
+
+
+ typedef std::vector<Glib::ustring> vecustrings;
+ typedef std::vector<std::string> vecstrings;
+
+ void add_entry(const OptionEntry& entry, bool& arg);
+ void add_entry(const OptionEntry& entry, int& arg);
+ void add_entry(const OptionEntry& entry, Glib::ustring& arg);
+ void add_entry_filename(const OptionEntry& entry, std::string& arg);
+ void add_entry(const OptionEntry& entry, vecustrings& arg);
+ void add_entry_filename(const OptionEntry& entry, vecstrings& arg);
+
+/* TODO:
+void g_option_group_set_translate_func (GOptionGroup *group,
+ GTranslateFunc func,
+ gpointer data,
+ GDestroyNotify destroy_notify);
+*/
+
+ /** A convenience function to use gettext() for translating
+ * user-visible strings.
+ *
+ * @newin2p6
+ * @param domain The domain to use.
+ */
+ void set_translation_domain(const Glib::ustring& domain);
+
+ GOptionGroup* gobj() { return gobject_; }
+ const GOptionGroup* gobj() const { return gobject_; }
+ GOptionGroup* gobj_give_ownership();
+
+protected:
+
+ class CppOptionEntry
+ {
+ public:
+ CppOptionEntry();
+
+ void allocate_c_arg();
+ void convert_c_to_cpp();
+ void release_c_arg();
+
+ GOptionArg carg_type_;
+ void* carg_;
+ void* cpparg_;
+ OptionEntry* entry_;
+ };
+
+ void add_entry_with_wrapper(const OptionEntry& entry, GOptionArg arg_type, void* cpp_arg);
+
+ //Map of entry names to CppOptionEntry:
+ typedef std::map<Glib::ustring, CppOptionEntry> type_map_entries;
+ type_map_entries map_entries_;
+
+ GOptionGroup* gobject_;
+ bool has_ownership_; //Whether the gobject_ belongs to this C++ instance.
+
+
+};
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_OPTIONGROUP_H */
+
diff --git a/libs/glibmm2/glib/glibmm/pattern.cc b/libs/glibmm2/glib/glibmm/pattern.cc
new file mode 100644
index 0000000000..b512661d57
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/pattern.cc
@@ -0,0 +1,66 @@
+// -*- c++ -*-
+/* $Id: pattern.cc,v 1.1.1.1 2003/01/07 16:58:51 murrayc Exp $ */
+
+/* pattern.cc
+ *
+ * Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gpattern.h>
+#include <glibmm/pattern.h>
+
+
+namespace Glib
+{
+
+PatternSpec::PatternSpec(const Glib::ustring& pattern)
+:
+ gobject_ (g_pattern_spec_new(pattern.c_str()))
+{}
+
+PatternSpec::PatternSpec(GPatternSpec* gobject)
+:
+ gobject_ (gobject)
+{}
+
+PatternSpec::~PatternSpec()
+{
+ g_pattern_spec_free(gobject_);
+}
+
+bool PatternSpec::match(const Glib::ustring& str) const
+{
+ return g_pattern_match(gobject_, str.bytes(), str.c_str(), 0);
+}
+
+bool PatternSpec::match(const Glib::ustring& str, const Glib::ustring& str_reversed) const
+{
+ return g_pattern_match(gobject_, str.bytes(), str.c_str(), str_reversed.c_str());
+}
+
+bool PatternSpec::operator==(const PatternSpec& rhs) const
+{
+ return g_pattern_spec_equal(gobject_, rhs.gobject_);
+}
+
+bool PatternSpec::operator!=(const PatternSpec& rhs) const
+{
+ return !g_pattern_spec_equal(gobject_, rhs.gobject_);
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/pattern.h b/libs/glibmm2/glib/glibmm/pattern.h
new file mode 100644
index 0000000000..9f595bd6d1
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/pattern.h
@@ -0,0 +1,69 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_PATTERN_H
+#define _GLIBMM_PATTERN_H
+
+/* $Id: pattern.h,v 1.1.1.1 2003/01/07 16:58:51 murrayc Exp $ */
+
+/* pattern.h
+ *
+ * Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+extern "C" { typedef struct _GPatternSpec GPatternSpec; }
+
+#include <glibmm/ustring.h>
+
+
+namespace Glib
+{
+
+/** @defgroup PatternMatching Glob-style Pattern Matching
+ * Match strings against patterns containing '*' (wildcard) and '?' (joker).
+ * @{
+ */
+
+class PatternSpec
+{
+public:
+ explicit PatternSpec(const Glib::ustring& pattern);
+ explicit PatternSpec(GPatternSpec* gobject);
+ ~PatternSpec();
+
+ bool match(const Glib::ustring& str) const;
+ bool match(const Glib::ustring& str, const Glib::ustring& str_reversed) const;
+
+ bool operator==(const PatternSpec& rhs) const;
+ bool operator!=(const PatternSpec& rhs) const;
+
+ GPatternSpec* gobj() { return gobject_; }
+ const GPatternSpec* gobj() const { return gobject_; }
+
+private:
+ GPatternSpec* gobject_;
+
+ // noncopyable
+ PatternSpec(const PatternSpec&);
+ PatternSpec& operator=(const PatternSpec&);
+};
+
+/** @} group PatternMatching */
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_PATTERN_H */
+
diff --git a/libs/glibmm2/glib/glibmm/private/Makefile b/libs/glibmm2/glib/glibmm/private/Makefile
new file mode 100644
index 0000000000..e4541862bd
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/private/Makefile
@@ -0,0 +1,451 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# glib/glibmm/private/Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+srcdir = .
+top_srcdir = ../../..
+
+pkgdatadir = $(datadir)/glibmm
+pkglibdir = $(libdir)/glibmm
+pkgincludedir = $(includedir)/glibmm
+top_builddir = ../../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = i686-pc-linux-gnu
+host_triplet = i686-pc-linux-gnu
+DIST_COMMON = $(am__private_include_HEADERS_DIST) \
+ $(srcdir)/../../src/Makefile_list_of_hg.am_fragment \
+ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/build_shared/Makefile_gensrc_platform.am_fragment
+subdir = glib/glibmm/private
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/scripts/cxx.m4 \
+ $(top_srcdir)/scripts/cxx_std.m4 \
+ $(top_srcdir)/scripts/docgen.m4 \
+ $(top_srcdir)/scripts/glibmm_check_perl.m4 \
+ $(top_srcdir)/scripts/macros.m4 \
+ $(top_srcdir)/scripts/reduced.m4 $(top_srcdir)/scripts/sun.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h \
+ $(top_builddir)/glib/glibmmconfig.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+am__private_include_HEADERS_DIST = convert_p.h date_p.h fileutils_p.h \
+ iochannel_p.h keyfile_p.h markup_p.h module_p.h \
+ optioncontext_p.h optionentry_p.h optiongroup_p.h shell_p.h \
+ spawn_p.h thread_p.h unicode_p.h interface_p.h object_p.h
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(private_includedir)"
+private_includeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(private_include_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+ACLOCAL = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run aclocal-1.9 -I ./scripts
+AMDEP_FALSE = #
+AMDEP_TRUE =
+AMTAR = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run tar
+AR = ar
+AS = as
+AUTOCONF = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run autoconf
+AUTOHEADER = :
+AUTOMAKE = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS =
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2 -Wall -Wno-long-long
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DISABLE_DEPRECATED_API_CFLAGS =
+DISABLE_DEPRECATED_CFLAGS =
+DLLTOOL = dlltool
+ECHO = echo
+ECHO_C =
+ECHO_N = -n
+ECHO_T =
+EGREP = grep -E
+EXEEXT =
+F77 =
+FFLAGS =
+GLIBMM_CFLAGS = -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+GLIBMM_LIBS = -Wl,--export-dynamic -lsigc-2.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
+GLIBMM_MAJOR_VERSION = 2
+GLIBMM_MICRO_VERSION = 3
+GLIBMM_MINOR_VERSION = 13
+GLIBMM_RELEASE = 2.13
+GLIBMM_VERSION = 2.13.3
+GTHREAD_CFLAGS = -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+GTHREAD_LIBS = -pthread -lgthread-2.0 -lrt -lglib-2.0
+GTKMMPROC_MERGECDOCS =
+GTKMM_DOXYGEN_INPUT = /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/glib/glibmm/
+GTKMM_FALSE_FALSE =
+GTKMM_FALSE_TRUE = #
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =
+LIBGLIBMM_SO_VERSION = 1:24:0
+LIBOBJS =
+LIBS =
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS =
+M4 = m4
+MAINT = #
+MAINTAINER_MODE_FALSE =
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run makeinfo
+OBJDUMP = objdump
+OBJEXT = o
+OS_WIN32_FALSE =
+OS_WIN32_TRUE = #
+PACKAGE = glibmm
+PACKAGE_BUGREPORT =
+PACKAGE_NAME =
+PACKAGE_STRING =
+PACKAGE_TARNAME =
+PACKAGE_VERSION =
+PATH_SEPARATOR = :
+PERL_PATH = /usr/bin/perl
+PKG_CONFIG = /usr/bin/pkg-config
+PLATFORM_WIN32_FALSE =
+PLATFORM_WIN32_TRUE = #
+RANLIB = ranlib
+SET_MAKE =
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 2.13.3
+ac_ct_AR = ar
+ac_ct_AS =
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DLLTOOL =
+ac_ct_F77 =
+ac_ct_OBJDUMP =
+ac_ct_RANLIB = ranlib
+ac_ct_STRIP = strip
+ac_pt_PKG_CONFIG = /usr/bin/pkg-config
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE =
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE =
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = i686-pc-linux-gnu
+build_alias =
+build_cpu = i686
+build_os = linux-gnu
+build_vendor = pc
+datadir = ${prefix}/share
+exec_prefix = ${prefix}
+host = i686-pc-linux-gnu
+host_alias =
+host_cpu = i686
+host_os = linux-gnu
+host_vendor = pc
+includedir = ${prefix}/include
+infodir = ${prefix}/info
+install_sh = /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localstatedir = ${prefix}/var
+mandir = ${prefix}/man
+mkdir_p = mkdir -p --
+oldincludedir = /usr/include
+prefix = /usr/local
+program_transform_name = s,x,x,
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias =
+files_posix_hg =
+files_win32_hg =
+files_general_hg = convert.hg date.hg fileutils.hg iochannel.hg keyfile.hg markup.hg module.hg optioncontext.hg optionentry.hg optiongroup.hg shell.hg spawn.hg thread.hg unicode.hg
+files_all_hg = $(files_general_hg) $(files_posix_hg) $(files_win32_hg)
+files_hg = $(files_general_hg) $(files_posix_hg)
+#files_hg = $(files_general_hg) $(files_win32_hg)
+files_built_h = $(files_hg:.hg=_p.h)
+files_built_all_h = $(files_all_hg:.hg=_p.h)
+files_extra_h = interface_p.h object_p.h
+files_extra_all_h = interface_p.h object_p.h
+dist_sources = $(files_built_all_h) $(files_extra_all_h)
+DISTFILES = $(DIST_COMMON) $(dist_sources)
+private_includedir = $(includedir)/glibmm-2.4/glibmm/private
+private_include_HEADERS = $(files_built_h) $(files_extra_h)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(srcdir)/../../src/Makefile_list_of_hg.am_fragment $(top_srcdir)/build_shared/Makefile_gensrc_platform.am_fragment $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu glib/glibmm/private/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu glib/glibmm/private/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-private_includeHEADERS: $(private_include_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(private_includedir)" || $(mkdir_p) "$(DESTDIR)$(private_includedir)"
+ @list='$(private_include_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(private_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(private_includedir)/$$f'"; \
+ $(private_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(private_includedir)/$$f"; \
+ done
+
+uninstall-private_includeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(private_include_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(private_includedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(private_includedir)/$$f"; \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/../../../build_shared $(distdir)/../../src
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+ for dir in "$(DESTDIR)$(private_includedir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-private_includeHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+ maintainer-clean-local
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-private_includeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool ctags distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-private_includeHEADERS \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic \
+ maintainer-clean-local mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-info-am \
+ uninstall-private_includeHEADERS
+
+
+maintainer-clean-local:
+ (cd $(srcdir) && rm -f $(files_built_h))
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libs/glibmm2/glib/glibmm/private/Makefile.am b/libs/glibmm2/glib/glibmm/private/Makefile.am
new file mode 100644
index 0000000000..de70a5dfcf
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/private/Makefile.am
@@ -0,0 +1,20 @@
+## Copyright (c) 2001
+## The gtkmm development team.
+
+include $(srcdir)/../../src/Makefile_list_of_hg.am_fragment
+include $(top_srcdir)/build_shared/Makefile_gensrc_platform.am_fragment
+
+files_built_h = $(files_hg:.hg=_p.h)
+files_built_all_h = $(files_all_hg:.hg=_p.h)
+files_extra_h = interface_p.h object_p.h
+files_extra_all_h = interface_p.h object_p.h
+
+dist_sources = $(files_built_all_h) $(files_extra_all_h)
+DISTFILES = $(DIST_COMMON) $(dist_sources)
+
+private_includedir = $(includedir)/glibmm-2.4/glibmm/private
+private_include_HEADERS = $(files_built_h) $(files_extra_h)
+
+maintainer-clean-local:
+ (cd $(srcdir) && rm -f $(files_built_h))
+
diff --git a/libs/glibmm2/glib/glibmm/private/Makefile.in b/libs/glibmm2/glib/glibmm/private/Makefile.in
new file mode 100644
index 0000000000..d747694b8c
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/private/Makefile.in
@@ -0,0 +1,451 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(am__private_include_HEADERS_DIST) \
+ $(srcdir)/../../src/Makefile_list_of_hg.am_fragment \
+ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/build_shared/Makefile_gensrc_platform.am_fragment
+subdir = glib/glibmm/private
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/scripts/cxx.m4 \
+ $(top_srcdir)/scripts/cxx_std.m4 \
+ $(top_srcdir)/scripts/docgen.m4 \
+ $(top_srcdir)/scripts/glibmm_check_perl.m4 \
+ $(top_srcdir)/scripts/macros.m4 \
+ $(top_srcdir)/scripts/reduced.m4 $(top_srcdir)/scripts/sun.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h \
+ $(top_builddir)/glib/glibmmconfig.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+am__private_include_HEADERS_DIST = convert_p.h date_p.h fileutils_p.h \
+ iochannel_p.h keyfile_p.h markup_p.h module_p.h \
+ optioncontext_p.h optionentry_p.h optiongroup_p.h shell_p.h \
+ spawn_p.h thread_p.h unicode_p.h interface_p.h object_p.h
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(private_includedir)"
+private_includeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(private_include_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISABLE_DEPRECATED_API_CFLAGS = @DISABLE_DEPRECATED_API_CFLAGS@
+DISABLE_DEPRECATED_CFLAGS = @DISABLE_DEPRECATED_CFLAGS@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GLIBMM_CFLAGS = @GLIBMM_CFLAGS@
+GLIBMM_LIBS = @GLIBMM_LIBS@
+GLIBMM_MAJOR_VERSION = @GLIBMM_MAJOR_VERSION@
+GLIBMM_MICRO_VERSION = @GLIBMM_MICRO_VERSION@
+GLIBMM_MINOR_VERSION = @GLIBMM_MINOR_VERSION@
+GLIBMM_RELEASE = @GLIBMM_RELEASE@
+GLIBMM_VERSION = @GLIBMM_VERSION@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKMMPROC_MERGECDOCS = @GTKMMPROC_MERGECDOCS@
+GTKMM_DOXYGEN_INPUT = @GTKMM_DOXYGEN_INPUT@
+GTKMM_FALSE_FALSE = @GTKMM_FALSE_FALSE@
+GTKMM_FALSE_TRUE = @GTKMM_FALSE_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBGLIBMM_SO_VERSION = @LIBGLIBMM_SO_VERSION@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+M4 = @M4@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS_WIN32_FALSE = @OS_WIN32_FALSE@
+OS_WIN32_TRUE = @OS_WIN32_TRUE@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL_PATH = @PERL_PATH@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_WIN32_FALSE = @PLATFORM_WIN32_FALSE@
+PLATFORM_WIN32_TRUE = @PLATFORM_WIN32_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_AS = @ac_ct_AS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+files_posix_hg =
+files_win32_hg =
+files_general_hg = convert.hg date.hg fileutils.hg iochannel.hg keyfile.hg markup.hg module.hg optioncontext.hg optionentry.hg optiongroup.hg shell.hg spawn.hg thread.hg unicode.hg
+files_all_hg = $(files_general_hg) $(files_posix_hg) $(files_win32_hg)
+@OS_WIN32_FALSE@files_hg = $(files_general_hg) $(files_posix_hg)
+@OS_WIN32_TRUE@files_hg = $(files_general_hg) $(files_win32_hg)
+files_built_h = $(files_hg:.hg=_p.h)
+files_built_all_h = $(files_all_hg:.hg=_p.h)
+files_extra_h = interface_p.h object_p.h
+files_extra_all_h = interface_p.h object_p.h
+dist_sources = $(files_built_all_h) $(files_extra_all_h)
+DISTFILES = $(DIST_COMMON) $(dist_sources)
+private_includedir = $(includedir)/glibmm-2.4/glibmm/private
+private_include_HEADERS = $(files_built_h) $(files_extra_h)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/../../src/Makefile_list_of_hg.am_fragment $(top_srcdir)/build_shared/Makefile_gensrc_platform.am_fragment $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu glib/glibmm/private/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu glib/glibmm/private/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-private_includeHEADERS: $(private_include_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(private_includedir)" || $(mkdir_p) "$(DESTDIR)$(private_includedir)"
+ @list='$(private_include_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(private_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(private_includedir)/$$f'"; \
+ $(private_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(private_includedir)/$$f"; \
+ done
+
+uninstall-private_includeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(private_include_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(private_includedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(private_includedir)/$$f"; \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/../../../build_shared $(distdir)/../../src
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+ for dir in "$(DESTDIR)$(private_includedir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-private_includeHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+ maintainer-clean-local
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-private_includeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool ctags distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-private_includeHEADERS \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic \
+ maintainer-clean-local mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-info-am \
+ uninstall-private_includeHEADERS
+
+
+maintainer-clean-local:
+ (cd $(srcdir) && rm -f $(files_built_h))
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libs/glibmm2/glib/glibmm/private/convert_p.h b/libs/glibmm2/glib/glibmm/private/convert_p.h
new file mode 100644
index 0000000000..743540ad3f
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/private/convert_p.h
@@ -0,0 +1,8 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_CONVERT_P_H
+#define _GLIBMM_CONVERT_P_H
+
+
+#endif /* _GLIBMM_CONVERT_P_H */
+
diff --git a/libs/glibmm2/glib/glibmm/private/date_p.h b/libs/glibmm2/glib/glibmm/private/date_p.h
new file mode 100644
index 0000000000..71b1fdde1e
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/private/date_p.h
@@ -0,0 +1,8 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_DATE_P_H
+#define _GLIBMM_DATE_P_H
+
+
+#endif /* _GLIBMM_DATE_P_H */
+
diff --git a/libs/glibmm2/glib/glibmm/private/fileutils_p.h b/libs/glibmm2/glib/glibmm/private/fileutils_p.h
new file mode 100644
index 0000000000..27639284fa
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/private/fileutils_p.h
@@ -0,0 +1,8 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_FILEUTILS_P_H
+#define _GLIBMM_FILEUTILS_P_H
+
+
+#endif /* _GLIBMM_FILEUTILS_P_H */
+
diff --git a/libs/glibmm2/glib/glibmm/private/interface_p.h b/libs/glibmm2/glib/glibmm/private/interface_p.h
new file mode 100644
index 0000000000..805d8db3e5
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/private/interface_p.h
@@ -0,0 +1,24 @@
+// -*- c++ -*-
+
+#ifndef _GLIBMM_INTERFACE_P_H
+#define _GLIBMM_INTERFACE_P_H
+
+#include <glibmm/class.h>
+
+
+namespace Glib
+{
+
+class Interface_Class : public Glib::Class
+{
+public:
+ typedef Interface CppObjectType;
+ typedef GTypeInterface BaseClassType;
+
+ void add_interface(GType instance_type) const;
+};
+
+} // namespace Glib
+
+#endif /* _GLIBMM_INTERFACE_P_H */
+
diff --git a/libs/glibmm2/glib/glibmm/private/iochannel_p.h b/libs/glibmm2/glib/glibmm/private/iochannel_p.h
new file mode 100644
index 0000000000..c462983d3d
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/private/iochannel_p.h
@@ -0,0 +1,8 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_IOCHANNEL_P_H
+#define _GLIBMM_IOCHANNEL_P_H
+
+
+#endif /* _GLIBMM_IOCHANNEL_P_H */
+
diff --git a/libs/glibmm2/glib/glibmm/private/keyfile_p.h b/libs/glibmm2/glib/glibmm/private/keyfile_p.h
new file mode 100644
index 0000000000..b0de14162b
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/private/keyfile_p.h
@@ -0,0 +1,8 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_KEYFILE_P_H
+#define _GLIBMM_KEYFILE_P_H
+
+
+#endif /* _GLIBMM_KEYFILE_P_H */
+
diff --git a/libs/glibmm2/glib/glibmm/private/markup_p.h b/libs/glibmm2/glib/glibmm/private/markup_p.h
new file mode 100644
index 0000000000..807833d0a2
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/private/markup_p.h
@@ -0,0 +1,8 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_MARKUP_P_H
+#define _GLIBMM_MARKUP_P_H
+
+
+#endif /* _GLIBMM_MARKUP_P_H */
+
diff --git a/libs/glibmm2/glib/glibmm/private/module_p.h b/libs/glibmm2/glib/glibmm/private/module_p.h
new file mode 100644
index 0000000000..b65105b354
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/private/module_p.h
@@ -0,0 +1,8 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_MODULE_P_H
+#define _GLIBMM_MODULE_P_H
+
+
+#endif /* _GLIBMM_MODULE_P_H */
+
diff --git a/libs/glibmm2/glib/glibmm/private/object_p.h b/libs/glibmm2/glib/glibmm/private/object_p.h
new file mode 100644
index 0000000000..20a711898f
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/private/object_p.h
@@ -0,0 +1,28 @@
+// -*- c++ -*-
+
+#ifndef _GLIBMM_OBJECT_P_H
+#define _GLIBMM_OBJECT_P_H
+
+#include <glibmm/class.h>
+
+namespace Glib
+{
+
+class Object_Class : public Glib::Class
+{
+public:
+ typedef Object CppObjectType;
+ typedef GObject BaseObjectType;
+ typedef GObjectClass BaseClassType;
+
+ static void class_init_function(void* g_class, void* class_data);
+
+ const Glib::Class& init();
+
+ static Glib::Object* wrap_new(GObject*);
+};
+
+} // namespace Glib
+
+#endif /* _GLIBMM_OBJECT_P_H */
+
diff --git a/libs/glibmm2/glib/glibmm/private/optioncontext_p.h b/libs/glibmm2/glib/glibmm/private/optioncontext_p.h
new file mode 100644
index 0000000000..549b34970e
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/private/optioncontext_p.h
@@ -0,0 +1,8 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_OPTIONCONTEXT_P_H
+#define _GLIBMM_OPTIONCONTEXT_P_H
+
+
+#endif /* _GLIBMM_OPTIONCONTEXT_P_H */
+
diff --git a/libs/glibmm2/glib/glibmm/private/optionentry_p.h b/libs/glibmm2/glib/glibmm/private/optionentry_p.h
new file mode 100644
index 0000000000..f6f518f17b
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/private/optionentry_p.h
@@ -0,0 +1,8 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_OPTIONENTRY_P_H
+#define _GLIBMM_OPTIONENTRY_P_H
+
+
+#endif /* _GLIBMM_OPTIONENTRY_P_H */
+
diff --git a/libs/glibmm2/glib/glibmm/private/optiongroup_p.h b/libs/glibmm2/glib/glibmm/private/optiongroup_p.h
new file mode 100644
index 0000000000..fdd0cd9611
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/private/optiongroup_p.h
@@ -0,0 +1,8 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_OPTIONGROUP_P_H
+#define _GLIBMM_OPTIONGROUP_P_H
+
+
+#endif /* _GLIBMM_OPTIONGROUP_P_H */
+
diff --git a/libs/glibmm2/glib/glibmm/private/shell_p.h b/libs/glibmm2/glib/glibmm/private/shell_p.h
new file mode 100644
index 0000000000..e0b5b55f9a
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/private/shell_p.h
@@ -0,0 +1,8 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_SHELL_P_H
+#define _GLIBMM_SHELL_P_H
+
+
+#endif /* _GLIBMM_SHELL_P_H */
+
diff --git a/libs/glibmm2/glib/glibmm/private/spawn_p.h b/libs/glibmm2/glib/glibmm/private/spawn_p.h
new file mode 100644
index 0000000000..262bdc7ed4
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/private/spawn_p.h
@@ -0,0 +1,8 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_SPAWN_P_H
+#define _GLIBMM_SPAWN_P_H
+
+
+#endif /* _GLIBMM_SPAWN_P_H */
+
diff --git a/libs/glibmm2/glib/glibmm/private/thread_p.h b/libs/glibmm2/glib/glibmm/private/thread_p.h
new file mode 100644
index 0000000000..0f4d3c63d6
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/private/thread_p.h
@@ -0,0 +1,8 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_THREAD_P_H
+#define _GLIBMM_THREAD_P_H
+
+
+#endif /* _GLIBMM_THREAD_P_H */
+
diff --git a/libs/glibmm2/glib/glibmm/private/unicode_p.h b/libs/glibmm2/glib/glibmm/private/unicode_p.h
new file mode 100644
index 0000000000..7f1cad22dc
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/private/unicode_p.h
@@ -0,0 +1,8 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_UNICODE_P_H
+#define _GLIBMM_UNICODE_P_H
+
+
+#endif /* _GLIBMM_UNICODE_P_H */
+
diff --git a/libs/glibmm2/glib/glibmm/property.cc b/libs/glibmm2/glib/glibmm/property.cc
new file mode 100644
index 0000000000..4504e88f03
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/property.cc
@@ -0,0 +1,203 @@
+// -*- c++ -*-
+/* $Id: property.cc,v 1.3 2006/05/12 08:08:43 murrayc Exp $ */
+
+/* Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/property.h>
+
+#ifdef GLIBMM_PROPERTIES_ENABLED
+
+#include <glibmm/object.h>
+#include <cstddef>
+
+// Temporary hack till GLib gets fixed.
+#undef G_STRLOC
+#define G_STRLOC __FILE__ ":" G_STRINGIFY(__LINE__)
+
+
+namespace
+{
+
+// OK guys, please don't kill me for that. Let me explain what happens here.
+//
+// The task:
+// ---------
+// a) Autogenerate a property ID number for each custom property. This is an
+// unsigned integer, which doesn't have to be assigned continuously. I.e.,
+// it can be everything but 0.
+// b) If more than one object of the same class is instantiated, then of course
+// the already installed properties must be used. That means, a property ID
+// must not be associated with a single Glib::Property<> instance. Rather,
+// the ID has to be associated with the class somehow.
+// c) With only a GObject pointer and a property ID (and perhaps GParamSpec*
+// if necessary), it must be possible to acquire a reference to the property
+// wrapper instance.
+//
+// The current solution:
+// ---------------------
+// a) Assign an ID to a Glib::PropertyBase by calculating its offset in bytes
+// relative to the beginning of the object's memory. dynamic_cast<void*>
+// is used to retrieve a pointer to the very beginning of an instance.
+// b) Recalculate a specific PropertyBase pointer by adding the property ID
+// (i.e. the byte offset) to the object start pointer. The result is then
+// just casted to PropertyBase*.
+//
+// Drawbacks:
+// ----------
+// a) It's a low-level hack. Should be portable, yes, but we can only do very
+// limited error checking.
+// b) All Glib::Property<> instances are absolutely required to be direct data
+// members of the class that implements the property. That seems a natural
+// thing to do, but it's questionable whether it should be a requirement.
+//
+// Advantages:
+// -----------
+// a) Although low-level, it's extremely easy to implement. The nasty code is
+// concentrated in only two non-exposed utility functions, and it works
+// just fine.
+// b) It's efficient, and the memory footprint is very small too.
+// c) I actually tried other ways, too, but ran into dead-ends everywhere.
+// It's probably possible to implement this without calculating offsets,
+// but it'll be very complicated, and involve a lot of qdata pointers to
+// property tables andwhatnot.
+//
+// We can reimplement this later if necessary.
+
+static unsigned int property_to_id(Glib::ObjectBase& object, Glib::PropertyBase& property)
+{
+ void *const base_ptr = dynamic_cast<void*>(&object);
+ void *const prop_ptr = &property;
+
+ const ptrdiff_t offset = static_cast<guint8*>(prop_ptr) - static_cast<guint8*>(base_ptr);
+
+ g_return_val_if_fail(offset > 0 && offset < G_MAXINT, 0);
+
+ return static_cast<unsigned int>(offset);
+}
+
+Glib::PropertyBase& property_from_id(Glib::ObjectBase& object, unsigned int property_id)
+{
+ void *const base_ptr = dynamic_cast<void*>(&object);
+ void *const prop_ptr = static_cast<guint8*>(base_ptr) + property_id;
+
+ return *static_cast<Glib::PropertyBase*>(prop_ptr);
+}
+
+} // anonymous namespace
+
+
+namespace Glib
+{
+
+void custom_get_property_callback(GObject* object, unsigned int property_id,
+ GValue* value, GParamSpec* param_spec)
+{
+ if(Glib::ObjectBase *const wrapper = Glib::ObjectBase::_get_current_wrapper(object))
+ {
+ PropertyBase& property = property_from_id(*wrapper, property_id);
+
+ if((property.object_ == wrapper) && (property.param_spec_ == param_spec))
+ g_value_copy(property.value_.gobj(), value);
+ else
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, param_spec);
+ }
+}
+
+void custom_set_property_callback(GObject* object, unsigned int property_id,
+ const GValue* value, GParamSpec* param_spec)
+{
+ if(Glib::ObjectBase *const wrapper = Glib::ObjectBase::_get_current_wrapper(object))
+ {
+ PropertyBase& property = property_from_id(*wrapper, property_id);
+
+ if((property.object_ == wrapper) && (property.param_spec_ == param_spec))
+ {
+ g_value_copy(value, property.value_.gobj());
+ g_object_notify(object, g_param_spec_get_name(param_spec));
+ }
+ else
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, param_spec);
+ }
+}
+
+
+/**** Glib::PropertyBase ***************************************************/
+
+PropertyBase::PropertyBase(Glib::Object& object, GType value_type)
+:
+ object_ (&object),
+ value_ (),
+ param_spec_ (0)
+{
+ value_.init(value_type);
+}
+
+PropertyBase::~PropertyBase()
+{
+ if(param_spec_)
+ g_param_spec_unref(param_spec_);
+}
+
+bool PropertyBase::lookup_property(const Glib::ustring& name)
+{
+ g_assert(param_spec_ == 0);
+
+ param_spec_ = g_object_class_find_property(G_OBJECT_GET_CLASS(object_->gobj()), name.c_str());
+
+ if(param_spec_)
+ {
+ g_assert(G_PARAM_SPEC_VALUE_TYPE(param_spec_) == G_VALUE_TYPE(value_.gobj()));
+ g_param_spec_ref(param_spec_);
+ }
+
+ return (param_spec_ != 0);
+}
+
+void PropertyBase::install_property(GParamSpec* param_spec)
+{
+ g_return_if_fail(param_spec != 0);
+
+ const unsigned int property_id = property_to_id(*object_, *this);
+
+ g_object_class_install_property(G_OBJECT_GET_CLASS(object_->gobj()), property_id, param_spec);
+
+ param_spec_ = param_spec;
+ g_param_spec_ref(param_spec_);
+}
+
+const char* PropertyBase::get_name_internal() const
+{
+ const char *const name = g_param_spec_get_name(param_spec_);
+ g_return_val_if_fail(name != 0, "");
+ return name;
+}
+
+Glib::ustring PropertyBase::get_name() const
+{
+ return Glib::ustring(get_name_internal());
+}
+
+void PropertyBase::notify()
+{
+ g_object_notify(object_->gobj(), g_param_spec_get_name(param_spec_));
+}
+
+} // namespace Glib
+
+#endif //GLIBMM_PROPERTIES_ENABLED
+
diff --git a/libs/glibmm2/glib/glibmm/property.h b/libs/glibmm2/glib/glibmm/property.h
new file mode 100644
index 0000000000..cb99454313
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/property.h
@@ -0,0 +1,174 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_PROPERTY_H
+#define _GLIBMM_PROPERTY_H
+/* $Id: property.h,v 1.6 2006/05/12 08:08:43 murrayc Exp $ */
+
+/* Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/propertyproxy.h>
+
+#ifdef GLIBMM_PROPERTIES_ENABLED
+
+#include <glibmm/value.h>
+
+namespace Glib
+{
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+#ifdef GLIBMM_CXX_CAN_USE_NAMESPACES_INSIDE_EXTERNC
+//For the AIX xlC compiler, I can not find a way to do this without putting the functions in the global namespace. murrayc
+extern "C"
+{
+#endif //GLIBMM_CXX_CAN_USE_NAMESPACES_INSIDE_EXTERNC
+
+void custom_get_property_callback(GObject* object, unsigned int property_id,
+ GValue* value, GParamSpec* param_spec);
+
+void custom_set_property_callback(GObject* object, unsigned int property_id,
+ const GValue* value, GParamSpec* param_spec);
+
+#ifdef GLIBMM_CXX_CAN_USE_NAMESPACES_INSIDE_EXTERNC
+} //extern "C"
+#endif //GLIBMM_CXX_CAN_USE_NAMESPACES_INSIDE_EXTERNC
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+
+class PropertyBase
+{
+public:
+ Glib::ustring get_name() const;
+ void notify();
+
+protected:
+ Glib::Object* object_;
+ Glib::ValueBase value_;
+ GParamSpec* param_spec_;
+
+ PropertyBase(Glib::Object& object, GType value_type);
+ ~PropertyBase();
+
+ bool lookup_property(const Glib::ustring& name);
+ void install_property(GParamSpec* param_spec);
+
+ const char* get_name_internal() const;
+
+private:
+ // noncopyable
+ PropertyBase(const PropertyBase&);
+ PropertyBase& operator=(const PropertyBase&);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+ friend void Glib::custom_get_property_callback(GObject* object, unsigned int property_id,
+ GValue* value, GParamSpec* param_spec);
+
+ friend void Glib::custom_set_property_callback(GObject* object, unsigned int property_id,
+ const GValue* value, GParamSpec* param_spec);
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+};
+
+
+template <class T>
+class Property : public PropertyBase
+{
+public:
+ typedef T PropertyType;
+ typedef Glib::Value<T> ValueType;
+
+ Property(Glib::Object& object, const Glib::ustring& name);
+ Property(Glib::Object& object, const Glib::ustring& name, const PropertyType& default_value);
+
+ inline void set_value(const PropertyType& data);
+ inline PropertyType get_value() const;
+
+ inline Property<T>& operator=(const PropertyType& data);
+ inline operator PropertyType() const;
+
+ inline Glib::PropertyProxy<T> get_proxy();
+};
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+/**** Glib::Property<T> ****************************************************/
+
+template <class T>
+Property<T>::Property(Glib::Object& object, const Glib::ustring& name)
+:
+ PropertyBase(object, ValueType::value_type())
+{
+ if(!lookup_property(name))
+ install_property(static_cast<ValueType&>(value_).create_param_spec(name));
+}
+
+template <class T>
+Property<T>::Property(Glib::Object& object, const Glib::ustring& name,
+ const typename Property<T>::PropertyType& default_value)
+:
+ PropertyBase(object, ValueType::value_type())
+{
+ static_cast<ValueType&>(value_).set(default_value);
+
+ if(!lookup_property(name))
+ install_property(static_cast<ValueType&>(value_).create_param_spec(name));
+}
+
+template <class T> inline
+void Property<T>::set_value(const typename Property<T>::PropertyType& data)
+{
+ static_cast<ValueType&>(value_).set(data);
+ this->notify();
+}
+
+template <class T> inline
+typename Property<T>::PropertyType Property<T>::get_value() const
+{
+ return static_cast<const ValueType&>(value_).get();
+}
+
+template <class T> inline
+Property<T>& Property<T>::operator=(const typename Property<T>::PropertyType& data)
+{
+ static_cast<ValueType&>(value_).set(data);
+ this->notify();
+ return *this;
+}
+
+template <class T> inline
+Property<T>::operator T() const
+{
+ return static_cast<const ValueType&>(value_).get();
+}
+
+template <class T> inline
+Glib::PropertyProxy<T> Property<T>::get_proxy()
+{
+ return Glib::PropertyProxy<T>(object_, get_name_internal());
+}
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+} // namespace Glib
+
+#endif //GLIBMM_PROPERTIES_ENABLED
+
+#endif /* _GLIBMM_PROPERTY_H */
+
diff --git a/libs/glibmm2/glib/glibmm/propertyproxy.cc b/libs/glibmm2/glib/glibmm/propertyproxy.cc
new file mode 100644
index 0000000000..9945780453
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/propertyproxy.cc
@@ -0,0 +1,24 @@
+// -*- c++ -*-
+/* $Id: propertyproxy.cc,v 1.1.1.1 2003/01/07 16:58:51 murrayc Exp $ */
+
+/* propertyproxy.cc
+ *
+ * Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/propertyproxy.h>
+
diff --git a/libs/glibmm2/glib/glibmm/propertyproxy.h b/libs/glibmm2/glib/glibmm/propertyproxy.h
new file mode 100644
index 0000000000..ed1538b575
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/propertyproxy.h
@@ -0,0 +1,181 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_PROPERTYPROXY_H
+#define _GLIBMM_PROPERTYPROXY_H
+/* $Id: propertyproxy.h,v 1.5 2006/05/12 08:08:43 murrayc Exp $ */
+
+/* propertyproxy.h
+ *
+ * Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/propertyproxy_base.h>
+
+#ifdef GLIBMM_PROPERTIES_ENABLED
+
+namespace Glib
+{
+
+/** A PropertyProxy can be used to get and set the value of an object's property.
+ * There are usually also get and set methods on the class itself, which you might find more convenient.
+ * With the PropertyProxy, you may use either get_value() and set_value(), or operator=() and
+ * operator PropertyType(), like so:
+ * @code
+ * int height = cellrenderer.property_height();
+ * cellrenderer.property_editable() = true;
+ * @endcode
+ *
+ * You may also receive notification when a property's value changes, by connecting to signal_changed().
+ */
+template <class T>
+class PropertyProxy : public PropertyProxy_Base
+{
+public:
+ typedef T PropertyType;
+
+ PropertyProxy(ObjectBase* obj, const char* name)
+ : PropertyProxy_Base(obj, name) {}
+
+ /** Set the value of this property.
+ * @param data The new value for the property.
+ */
+ void set_value(const PropertyType& data);
+
+ /** Get the value of this property.
+ * @result The current value of the property.
+ */
+ PropertyType get_value() const;
+
+ /** Set the value of this property back to its default value
+ */
+ void reset_value()
+ { reset_property_(); }
+
+ PropertyProxy<T>& operator=(const PropertyType& data)
+ { this->set_value(data); return *this; }
+
+ operator PropertyType() const
+ { return this->get_value(); }
+};
+
+
+/** See PropertyProxy().
+ * This property can be written, but not read, so there is no get_value() method.
+ */
+template <class T>
+class PropertyProxy_WriteOnly : public PropertyProxy_Base
+{
+public:
+ typedef T PropertyType;
+
+ PropertyProxy_WriteOnly(ObjectBase* obj, const char* name)
+ : PropertyProxy_Base(obj, name) {}
+
+ /** Set the value of this property.
+ * @param data The new value for the property.
+ */
+ void set_value(const PropertyType& data);
+
+ /** Set the value of this property back to its default value
+ */
+ void reset_value()
+ { reset_property_(); }
+
+ PropertyProxy_WriteOnly<T>& operator=(const PropertyType& data)
+ { this->set_value(data); return *this; }
+};
+
+/** See PropertyProxy().
+ * This property can be read, but not written, so there is no set_value() method.
+ */
+template <class T>
+class PropertyProxy_ReadOnly : public PropertyProxy_Base
+{
+public:
+ typedef T PropertyType;
+
+ //obj is const, because this should be returned by const accessors.
+ PropertyProxy_ReadOnly(const ObjectBase* obj, const char* name)
+ : PropertyProxy_Base(const_cast<ObjectBase*>(obj), name) {}
+
+ /** Get the value of this property.
+ * @result The current value of the property.
+ */
+ PropertyType get_value() const;
+
+ operator PropertyType() const
+ { return this->get_value(); }
+};
+
+
+/**** Template Implementation **********************************************/
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+template <class T>
+void PropertyProxy<T>::set_value(const T& data)
+{
+ Glib::Value<T> value;
+ value.init(Glib::Value<T>::value_type());
+
+ value.set(data);
+ set_property_(value);
+}
+
+template <class T>
+T PropertyProxy<T>::get_value() const
+{
+ Glib::Value<T> value;
+ value.init(Glib::Value<T>::value_type());
+
+ get_property_(value);
+ return value.get();
+}
+
+//We previously just static_cast<> PropertyProxy_WriteOnly<> to PropertyProxy<> to call its set_value(),
+//to avoid code duplication.
+//But the AIX compiler does not like that hack.
+template <class T>
+void PropertyProxy_WriteOnly<T>::set_value(const T& data)
+{
+ Glib::Value<T> value;
+ value.init(Glib::Value<T>::value_type());
+
+ value.set(data);
+ set_property_(value);
+}
+
+//We previously just static_cast<> PropertyProxy_WriteOnly<> to PropertyProxy<> to call its set_value(),
+//to avoid code duplication.
+//But the AIX compiler does not like that hack.
+template <class T>
+T PropertyProxy_ReadOnly<T>::get_value() const
+{
+ Glib::Value<T> value;
+ value.init(Glib::Value<T>::value_type());
+
+ get_property_(value);
+ return value.get();
+}
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+} // namespace Glib
+
+#endif //GLIBMM_PROPERTIES_ENABLED
+
+#endif /* _GLIBMM_PROPERTYPROXY_H */
+
diff --git a/libs/glibmm2/glib/glibmm/propertyproxy_base.cc b/libs/glibmm2/glib/glibmm/propertyproxy_base.cc
new file mode 100644
index 0000000000..39f30b2073
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/propertyproxy_base.cc
@@ -0,0 +1,131 @@
+// -*- c++ -*-
+/* $Id: propertyproxy_base.cc,v 1.7 2006/11/28 12:59:19 murrayc Exp $ */
+
+/* propertyproxy_base.h
+ *
+ * Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/propertyproxy_base.h>
+
+
+#include <glibmm/signalproxy_connectionnode.h>
+#include <glibmm/object.h>
+#include <glibmm/private/object_p.h>
+
+namespace Glib
+{
+
+PropertyProxyConnectionNode::PropertyProxyConnectionNode(const sigc::slot_base& slot, GObject* gobject)
+: SignalProxyConnectionNode(slot, gobject)
+{
+}
+
+void PropertyProxyConnectionNode::callback(GObject*, GParamSpec* pspec, gpointer data) //static
+{
+ if(pspec && data)
+ {
+ if(sigc::slot_base *const slot = SignalProxyBase::data_to_slot(data))
+ (*static_cast<sigc::slot<void>*>(slot))();
+ }
+}
+
+#ifdef GLIBMM_PROPERTIES_ENABLED
+
+//SignalProxyProperty implementation:
+
+SignalProxyProperty::SignalProxyProperty(Glib::ObjectBase* obj, const gchar* property_name)
+: SignalProxyBase(obj),
+ property_name_(property_name)
+{
+}
+
+SignalProxyProperty::~SignalProxyProperty()
+{
+}
+
+sigc::connection SignalProxyProperty::connect(const SlotType& sl)
+{
+ // Create a proxy to hold our connection info
+ // This will be deleted by destroy_notify_handler.
+ PropertyProxyConnectionNode* pConnectionNode = new PropertyProxyConnectionNode(sl, obj_->gobj());
+
+ // connect it to gtk+
+ // pConnectionNode will be passed as the data argument to the callback.
+ // The callback will then call the virtual Object::property_change_notify() method,
+ // which will contain a switch/case statement which will examine the property name.
+ const Glib::ustring notify_signal_name = "notify::" + Glib::ustring(property_name_);
+ pConnectionNode->connection_id_ = g_signal_connect_data(obj_->gobj(),
+ notify_signal_name.c_str(), (GCallback)(&PropertyProxyConnectionNode::callback), pConnectionNode,
+ &PropertyProxyConnectionNode::destroy_notify_handler,
+ G_CONNECT_AFTER);
+
+ return sigc::connection(pConnectionNode->slot_);
+}
+
+
+//PropertyProxy_Base implementation:
+
+PropertyProxy_Base::PropertyProxy_Base(ObjectBase* obj, const char* property_name)
+:
+ obj_ (obj),
+ property_name_ (property_name)
+{}
+
+PropertyProxy_Base::PropertyProxy_Base(const PropertyProxy_Base& other)
+:
+ obj_ (other.obj_),
+ property_name_ (other.property_name_)
+{}
+
+SignalProxyProperty PropertyProxy_Base::signal_changed()
+{
+ return SignalProxyProperty(obj_, property_name_);
+}
+
+void PropertyProxy_Base::set_property_(const Glib::ValueBase& value)
+{
+ g_object_set_property(obj_->gobj(), property_name_, value.gobj());
+}
+
+void PropertyProxy_Base::get_property_(Glib::ValueBase& value) const
+{
+ g_object_get_property(obj_->gobj(), property_name_, value.gobj());
+}
+
+void PropertyProxy_Base::reset_property_()
+{
+ // Get information about the parameter:
+ const GParamSpec *const pParamSpec =
+ g_object_class_find_property(G_OBJECT_GET_CLASS(obj_->gobj()), property_name_);
+
+ g_return_if_fail(pParamSpec != 0);
+
+ Glib::ValueBase value;
+ value.init(G_PARAM_SPEC_VALUE_TYPE(pParamSpec));
+
+ // An explicit reset is not needed, because ValueBase:init()
+ // has already initialized it to the default value for this type.
+ // value.reset();
+
+ g_object_set_property(obj_->gobj(), property_name_, value.gobj());
+}
+
+#endif //GLIBMM_PROPERTIES_ENABLED
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/propertyproxy_base.h b/libs/glibmm2/glib/glibmm/propertyproxy_base.h
new file mode 100644
index 0000000000..3f45d0b977
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/propertyproxy_base.h
@@ -0,0 +1,111 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_PROPERTYPROXY_BASE_H
+#define _GLIBMM_PROPERTYPROXY_BASE_H
+/* $Id: propertyproxy_base.h,v 1.7 2006/11/10 02:24:49 murrayc Exp $ */
+
+/* propertyproxy_base.h
+ *
+ * Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmmconfig.h>
+
+#include <glibmm/value.h>
+#include <glibmm/signalproxy.h>
+
+namespace Glib
+{
+
+#ifdef GLIBMM_PROPERTIES_ENABLED
+
+class ObjectBase;
+
+/// Use the connect() method, with sigc::ptr_fun() or sig::mem_fun() to connect signals to signal handlers.
+class SignalProxyProperty : public SignalProxyBase
+{
+public:
+ friend class PropertyProxy_Base;
+
+ SignalProxyProperty(Glib::ObjectBase* obj, const gchar* property_name);
+ ~SignalProxyProperty();
+
+ typedef sigc::slot<void> SlotType;
+ sigc::connection connect(const SlotType& sl);
+
+protected:
+
+ const char* property_name_; //Should be a static string literal.
+
+private:
+ SignalProxyProperty& operator=(const SignalProxyProperty&); // not implemented
+};
+
+
+class PropertyProxy_Base
+{
+public:
+ PropertyProxy_Base(ObjectBase* obj, const char* property_name);
+ PropertyProxy_Base(const PropertyProxy_Base& other);
+
+ ///This signal will be emitted when the property changes.
+ SignalProxyProperty signal_changed();
+
+ ObjectBase* get_object() const { return obj_; }
+ const char* get_name() const { return property_name_; }
+
+protected:
+ void set_property_(const Glib::ValueBase& value);
+ void get_property_(Glib::ValueBase& value) const;
+ void reset_property_();
+
+ ObjectBase* obj_; //The C++ wrapper instance of which this PropertyProxy is a member.
+
+ const char* property_name_; //Should be a static string literal.
+
+private:
+ //Declared as private, but not implemented to prevent any automatically generated implementation.
+ PropertyProxy_Base& operator=(const PropertyProxy_Base&);
+};
+
+#endif //GLIBMM_PROPERTIES_ENABLED
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+class SignalProxyProperty;
+
+/** PropertyProxyConnectionNode is a connection node for use with SignalProxyProperty.
+ * It's like ProxyConnectionNode, but it contains the property name too.
+ * This is not public API.
+ */
+class PropertyProxyConnectionNode : public SignalProxyConnectionNode
+{
+public:
+ friend class SignalProxyProperty;
+
+ PropertyProxyConnectionNode(const sigc::slot_base& slot, GObject* gobject);
+
+ static void callback(GObject* object, GParamSpec* pspec, gpointer data);
+};
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+} // namespace Glib
+
+
+
+#endif /* _GLIBMM_PROPERTYPROXY_BASE_H */
+
diff --git a/libs/glibmm2/glib/glibmm/quark.cc b/libs/glibmm2/glib/glibmm/quark.cc
new file mode 100644
index 0000000000..8e2a06cdfd
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/quark.cc
@@ -0,0 +1,66 @@
+/* $Id: quark.cc,v 1.1.1.1 2003/01/07 16:58:52 murrayc Exp $ */
+
+/* quark.cc
+ *
+ * Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gquark.h>
+#include <glibmm/quark.h>
+
+namespace Glib
+{
+
+QueryQuark::QueryQuark(const GQuark& q)
+ : quark_(q)
+{}
+
+QueryQuark::QueryQuark(const ustring& s)
+: quark_(g_quark_try_string(s.c_str()))
+{}
+
+QueryQuark::QueryQuark(const char* s)
+: quark_(g_quark_try_string(s))
+{}
+
+QueryQuark& QueryQuark::operator=(const QueryQuark& q)
+{ quark_=q.quark_;
+ return *this;
+}
+
+QueryQuark::operator ustring() const
+{
+ return ustring(g_quark_to_string(quark_));
+}
+
+
+Quark::Quark(const ustring& s)
+: QueryQuark(g_quark_from_string(s.c_str()))
+{}
+
+Quark::Quark(const char* s)
+: QueryQuark(g_quark_from_string(s))
+{}
+
+Quark::~Quark()
+{}
+
+
+GQuark quark_ = 0;
+GQuark quark_cpp_wrapper_deleted_ = 0;
+
+} /* namespace Glib */
diff --git a/libs/glibmm2/glib/glibmm/quark.h b/libs/glibmm2/glib/glibmm/quark.h
new file mode 100644
index 0000000000..53ac126bf0
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/quark.h
@@ -0,0 +1,88 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_QUARK_H
+#define _GLIBMM_QUARK_H
+/* $Id: quark.h,v 1.1.1.1 2003/01/07 16:58:52 murrayc Exp $ */
+
+/* quark.h
+ *
+ * Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gquark.h>
+#include <glibmm/ustring.h>
+
+
+namespace Glib
+{
+
+/** Quarks are unique IDs in Glib for strings for use in
+ * hash table lookups. Each Quark is unique but may change
+ * between runs.
+ *
+ * QueryQuark is a converter class for looking up but not
+ * allocating an ID. An id means the quark lookup failed.
+ *
+ * Quark is used for actions for which the id should live on
+ * While QueryQuark should be used for queries.
+ * ie.
+ * void set_data (const Quark&, void * data);
+ * void* get_data (const QueryQuark&);
+ */
+class QueryQuark
+{
+ public:
+ QueryQuark(const GQuark& q);
+ QueryQuark(const ustring& s);
+ QueryQuark(const char*s);
+ ~QueryQuark() {}
+ QueryQuark& operator=(const QueryQuark& q);
+ operator ustring() const;
+
+ operator GQuark() const {return quark_;}
+ GQuark id() const {return quark_;}
+
+ private:
+ GQuark quark_;
+};
+
+class Quark: public QueryQuark
+{
+ public:
+ Quark(const ustring& s);
+ Quark(const char* s);
+ ~Quark();
+};
+
+/** @relates Glib::QueryQuark */
+inline bool operator==(const QueryQuark& a, const QueryQuark& b)
+ { return a.id() == b.id(); }
+
+/** @relates Glib::QueryQuark */
+inline bool operator!=(const QueryQuark& a, const QueryQuark& b)
+ { return a.id() != b.id(); }
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+// TODO: Put this somewhere else.
+// (internal) The quark for C++ wrappers.
+extern GLIBMM_API GQuark quark_;
+extern GLIBMM_API GQuark quark_cpp_wrapper_deleted_;
+#endif
+
+} /* namespace Glib */
+
+#endif /* _GLIBMM_QUARK_H */
+
diff --git a/libs/glibmm2/glib/glibmm/random.cc b/libs/glibmm2/glib/glibmm/random.cc
new file mode 100644
index 0000000000..e159646bcd
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/random.cc
@@ -0,0 +1,76 @@
+// -*- c++ -*-
+/* $Id: random.cc,v 1.1.1.1 2003/01/07 16:58:52 murrayc Exp $ */
+
+/* random.cc
+ *
+ * Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/random.h>
+#include <glib/grand.h>
+
+
+namespace Glib
+{
+
+Rand::Rand()
+:
+ gobject_ (g_rand_new())
+{}
+
+Rand::Rand(guint32 seed)
+:
+ gobject_ (g_rand_new_with_seed(seed))
+{}
+
+Rand::~Rand()
+{
+ g_rand_free(gobject_);
+}
+
+void Rand::set_seed(guint32 seed)
+{
+ g_rand_set_seed(gobject_, seed);
+}
+
+bool Rand::get_bool()
+{
+ return g_rand_boolean(gobject_);
+}
+
+guint32 Rand::get_int()
+{
+ return g_rand_int(gobject_);
+}
+
+gint32 Rand::get_int_range(gint32 begin, gint32 end)
+{
+ return g_rand_int_range(gobject_, begin, end);
+}
+
+double Rand::get_double()
+{
+ return g_rand_double(gobject_);
+}
+
+double Rand::get_double_range(double begin, double end)
+{
+ return g_rand_double_range(gobject_, begin, end);
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/random.h b/libs/glibmm2/glib/glibmm/random.h
new file mode 100644
index 0000000000..f5187e131a
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/random.h
@@ -0,0 +1,73 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_RANDOM_H
+#define _GLIBMM_RANDOM_H
+
+/* $Id: random.h,v 1.1.1.1 2003/01/07 16:58:52 murrayc Exp $ */
+
+/* random.h
+ *
+ * Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gtypes.h>
+
+extern "C" { typedef struct _GRand GRand; }
+
+
+namespace Glib
+{
+
+/** @defgroup Random Random Numbers
+ * Pseudo random number generator.
+ * @{
+ */
+
+class Rand
+{
+public:
+ Rand();
+ explicit Rand(guint32 seed);
+ ~Rand();
+
+ void set_seed(guint32 seed);
+
+ bool get_bool();
+
+ guint32 get_int();
+ gint32 get_int_range(gint32 begin, gint32 end);
+
+ double get_double();
+ double get_double_range(double begin, double end);
+
+ GRand* gobj() { return gobject_; }
+ const GRand* gobj() const { return gobject_; }
+
+private:
+ GRand* gobject_;
+
+ // noncopyable
+ Rand(const Rand&);
+ Rand& operator=(const Rand&);
+};
+
+/** @} group Random */
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_RANDOM_H */
+
diff --git a/libs/glibmm2/glib/glibmm/refptr.h b/libs/glibmm2/glib/glibmm/refptr.h
new file mode 100644
index 0000000000..4b246213af
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/refptr.h
@@ -0,0 +1,341 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_REFPTR_H
+#define _GLIBMM_REFPTR_H
+
+/* $Id: refptr.h,v 1.4 2005/04/07 08:28:46 murrayc Exp $ */
+
+/* Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+namespace Glib
+{
+
+/** RefPtr<> is a reference-counting shared smartpointer.
+ *
+ * Some objects in gtkmm are obtained from a shared
+ * store. Consequently you cannot instantiate them yourself. Instead they
+ * return a RefPtr which behaves much like an ordinary pointer in that members
+ * can be reached with the usual <code>object_ptr->member</code> notation.
+ * Unlike most other smart pointers, RefPtr doesn't support dereferencing
+ * through <code>*object_ptr</code>.
+ *
+ * Reference counting means that a shared reference count is incremented each
+ * time a RefPtr is copied, and decremented each time a RefPtr is destroyed,
+ * for instance when it leaves its scope. When the reference count reaches
+ * zero, the contained object is deleted, meaning you don't need to remember
+ * to delete the object.
+ *
+ * RefPtr<> can store any class that has reference() and unreference() methods.
+ * In gtkmm, that is anything derived from Glib::ObjectBase, such as
+ * Gdk::Pixmap.
+ *
+ * See the "Memory Management" section in the "Programming with gtkmm"
+ * book for further information.
+ */
+template <class T_CppObject>
+class RefPtr
+{
+public:
+ /** Default constructor
+ *
+ * Afterwards it will be null and use of -> will cause a segmentation fault.
+ */
+ inline RefPtr();
+
+ /// Destructor - decrements reference count.
+ inline ~RefPtr();
+
+ /// For use only by the ::create() methods.
+ explicit inline RefPtr(T_CppObject* pCppObject);
+
+ /** Copy constructor
+ *
+ * This increments the shared reference count.
+ */
+ inline RefPtr(const RefPtr<T_CppObject>& src);
+
+ /** Copy constructor (from different, but castable type).
+ *
+ * Increments the reference count.
+ */
+ template <class T_CastFrom>
+ inline RefPtr(const RefPtr<T_CastFrom>& src);
+
+ /** Swap the contents of two RefPtr<>.
+ * This method swaps the internal pointers to T_CppObject. This can be
+ * done safely without involving a reference/unreference cycle and is
+ * therefore highly efficient.
+ */
+ inline void swap(RefPtr<T_CppObject>& other);
+
+ /// Copy from another RefPtr:
+ inline RefPtr<T_CppObject>& operator=(const RefPtr<T_CppObject>& src);
+
+ /** Copy from different, but castable type).
+ *
+ * Increments the reference count.
+ */
+ template <class T_CastFrom>
+ inline RefPtr<T_CppObject>& operator=(const RefPtr<T_CastFrom>& src);
+
+ /// Tests whether the RefPtr<> point to the same underlying instance.
+ inline bool operator==(const RefPtr<T_CppObject>& src) const;
+
+ /// See operator==().
+ inline bool operator!=(const RefPtr<T_CppObject>& src) const;
+
+ /** Dereferencing.
+ *
+ * Use the methods of the underlying instance like so:
+ * <code>refptr->memberfun()</code>.
+ */
+ inline T_CppObject* operator->() const;
+
+ /** Test whether the RefPtr<> points to any underlying instance.
+ *
+ * Mimics usage of ordinary pointers:
+ * @code
+ * if (ptr)
+ * do_something();
+ * @endcode
+ */
+ inline operator bool() const;
+
+ /// Set underlying instance to 0, decrementing reference count of existing instance appropriately.
+ inline void clear();
+
+
+ /** Dynamic cast to derived class.
+ *
+ * The RefPtr can't be cast with the usual notation so instead you can use
+ * @code
+ * ptr_derived = RefPtr<Derived>::cast_dynamic(ptr_base);
+ * @endcode
+ */
+ template <class T_CastFrom>
+ static inline RefPtr<T_CppObject> cast_dynamic(const RefPtr<T_CastFrom>& src);
+
+ /** Static cast to derived class.
+ *
+ * Like the dynamic cast; the notation is
+ * @code
+ * ptr_derived = RefPtr<Derived>::cast_static(ptr_base);
+ * @endcode
+ */
+ template <class T_CastFrom>
+ static inline RefPtr<T_CppObject> cast_static(const RefPtr<T_CastFrom>& src);
+
+ /** Cast to non-const.
+ *
+ * The RefPtr can't be cast with the usual notation so instead you can use
+ * @code
+ * ptr_unconst = RefPtr<UnConstType>::cast_const(ptr_const);
+ * @endcode
+ */
+ template <class T_CastFrom>
+ static inline RefPtr<T_CppObject> cast_const(const RefPtr<T_CastFrom>& src);
+
+private:
+ T_CppObject* pCppObject_;
+};
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+// RefPtr<>::operator->() comes first here since it's used by other methods.
+// If it would come after them it wouldn't be inlined.
+
+template <class T_CppObject> inline
+T_CppObject* RefPtr<T_CppObject>::operator->() const
+{
+ return pCppObject_;
+}
+
+template <class T_CppObject> inline
+RefPtr<T_CppObject>::RefPtr()
+:
+ pCppObject_ (0)
+{}
+
+template <class T_CppObject> inline
+RefPtr<T_CppObject>::~RefPtr()
+{
+ if(pCppObject_)
+ pCppObject_->unreference(); // This could cause pCppObject to be deleted.
+}
+
+template <class T_CppObject> inline
+RefPtr<T_CppObject>::RefPtr(T_CppObject* pCppObject)
+:
+ pCppObject_ (pCppObject)
+{}
+
+template <class T_CppObject> inline
+RefPtr<T_CppObject>::RefPtr(const RefPtr<T_CppObject>& src)
+:
+ pCppObject_ (src.pCppObject_)
+{
+ if(pCppObject_)
+ pCppObject_->reference();
+}
+
+// The templated ctor allows copy construction from any object that's
+// castable. Thus, it does downcasts:
+// base_ref = derived_ref
+template <class T_CppObject>
+ template <class T_CastFrom>
+inline
+RefPtr<T_CppObject>::RefPtr(const RefPtr<T_CastFrom>& src)
+:
+ // A different RefPtr<> will not allow us access to pCppObject_. We need
+ // to add a get_underlying() for this, but that would encourage incorrect
+ // use, so we use the less well-known operator->() accessor:
+ pCppObject_ (src.operator->())
+{
+ if(pCppObject_)
+ pCppObject_->reference();
+}
+
+template <class T_CppObject> inline
+void RefPtr<T_CppObject>::swap(RefPtr<T_CppObject>& other)
+{
+ T_CppObject *const temp = pCppObject_;
+ pCppObject_ = other.pCppObject_;
+ other.pCppObject_ = temp;
+}
+
+template <class T_CppObject> inline
+RefPtr<T_CppObject>& RefPtr<T_CppObject>::operator=(const RefPtr<T_CppObject>& src)
+{
+ // In case you haven't seen the swap() technique to implement copy
+ // assignment before, here's what it does:
+ //
+ // 1) Create a temporary RefPtr<> instance via the copy ctor, thereby
+ // increasing the reference count of the source object.
+ //
+ // 2) Swap the internal object pointers of *this and the temporary
+ // RefPtr<>. After this step, *this already contains the new pointer,
+ // and the old pointer is now managed by temp.
+ //
+ // 3) The destructor of temp is executed, thereby unreferencing the
+ // old object pointer.
+ //
+ // This technique is described in Herb Sutter's "Exceptional C++", and
+ // has a number of advantages over conventional approaches:
+ //
+ // - Code reuse by calling the copy ctor.
+ // - Strong exception safety for free.
+ // - Self assignment is handled implicitely.
+ // - Simplicity.
+ // - It just works and is hard to get wrong; i.e. you can use it without
+ // even thinking about it to implement copy assignment whereever the
+ // object data is managed indirectly via a pointer, which is very common.
+
+ RefPtr<T_CppObject> temp (src);
+ this->swap(temp);
+ return *this;
+}
+
+template <class T_CppObject>
+ template <class T_CastFrom>
+inline
+RefPtr<T_CppObject>& RefPtr<T_CppObject>::operator=(const RefPtr<T_CastFrom>& src)
+{
+ RefPtr<T_CppObject> temp (src);
+ this->swap(temp);
+ return *this;
+}
+
+template <class T_CppObject> inline
+bool RefPtr<T_CppObject>::operator==(const RefPtr<T_CppObject>& src) const
+{
+ return (pCppObject_ == src.pCppObject_);
+}
+
+template <class T_CppObject> inline
+bool RefPtr<T_CppObject>::operator!=(const RefPtr<T_CppObject>& src) const
+{
+ return (pCppObject_ != src.pCppObject_);
+}
+
+template <class T_CppObject> inline
+RefPtr<T_CppObject>::operator bool() const
+{
+ return (pCppObject_ != 0);
+}
+
+template <class T_CppObject> inline
+void RefPtr<T_CppObject>::clear()
+{
+ RefPtr<T_CppObject> temp; // swap with an empty RefPtr<> to clear *this
+ this->swap(temp);
+}
+
+template <class T_CppObject>
+ template <class T_CastFrom>
+inline
+RefPtr<T_CppObject> RefPtr<T_CppObject>::cast_dynamic(const RefPtr<T_CastFrom>& src)
+{
+ T_CppObject *const pCppObject = dynamic_cast<T_CppObject*>(src.operator->());
+
+ if(pCppObject)
+ pCppObject->reference();
+
+ return RefPtr<T_CppObject>(pCppObject);
+}
+
+template <class T_CppObject>
+ template <class T_CastFrom>
+inline
+RefPtr<T_CppObject> RefPtr<T_CppObject>::cast_static(const RefPtr<T_CastFrom>& src)
+{
+ T_CppObject *const pCppObject = static_cast<T_CppObject*>(src.operator->());
+
+ if(pCppObject)
+ pCppObject->reference();
+
+ return RefPtr<T_CppObject>(pCppObject);
+}
+
+template <class T_CppObject>
+ template <class T_CastFrom>
+inline
+RefPtr<T_CppObject> RefPtr<T_CppObject>::cast_const(const RefPtr<T_CastFrom>& src)
+{
+ T_CppObject *const pCppObject = const_cast<T_CppObject*>(src.operator->());
+
+ if(pCppObject)
+ pCppObject->reference();
+
+ return RefPtr<T_CppObject>(pCppObject);
+}
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+/** @relates Glib::RefPtr */
+template <class T_CppObject> inline
+void swap(RefPtr<T_CppObject>& lhs, RefPtr<T_CppObject>& rhs)
+{
+ lhs.swap(rhs);
+}
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_REFPTR_H */
+
diff --git a/libs/glibmm2/glib/glibmm/sarray.h b/libs/glibmm2/glib/glibmm/sarray.h
new file mode 100644
index 0000000000..b6f24d3a4f
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/sarray.h
@@ -0,0 +1,108 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_SARRAY_H
+#define _GLIBMM_SARRAY_H
+
+/* $Id: sarray.h,v 1.1.1.1 2003/01/07 16:58:53 murrayc Exp $ */
+
+/* array.h
+ *
+ * Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <glibmm/arrayhandle.h>
+#include <glibmm/ustring.h>
+
+namespace Glib { typedef Glib::ArrayHandle<Glib::ustring> SArray; }
+
+#if 0
+
+namespace Glib
+{
+
+template <>
+inline void cpp_type_to_c_type(const ustring& cpp_value, type_constpch& ref_c_value)
+{
+ ref_c_value = cpp_value.c_str();
+}
+
+template <>
+inline void cpp_type_to_c_type(const std::string& cpp_value, type_constpch& ref_c_value)
+{
+ ref_c_value = cpp_value.c_str();
+}
+
+typedef Array<Glib::ustring, const char*> SArray;
+
+/*
+class SArray: public Array<nstring, const char*>
+{
+public:
+ typedef const char* T_c;
+ typedef Array<nstring, const char*> type_base;
+
+ SArray(const SArray& src);
+
+ // copy other containers
+ template <typename T_container>
+ SArray(const T_container& t)
+ {
+ owned_ = Array_Helpers::Traits<T_container, pointer>::get_owned();
+ size_ = Array_Helpers::Traits<T_container, pointer>::get_size(t);
+ pData_ = Array_Helpers::Traits<T_container, pointer>::get_data(t);
+ }
+
+ SArray(const T_c* pValues, size_type size);
+
+ // copy a sequence
+ template <typename Iterator>
+ SArray(Iterator b, Iterator e);
+
+ operator std::vector<nstring>() const;
+ operator std::vector<ustring>() const;
+ operator std::vector<std::string>() const;
+
+ operator std::deque<nstring>() const;
+ operator std::deque<ustring>() const;
+ operator std::deque<std::string>() const;
+
+ operator std::list<nstring>() const;
+ operator std::list<ustring>() const;
+ operator std::list<std::string>() const;
+};
+
+
+//template <typename T_container>
+//SArray::SArray(const T_container& t)
+//: type_base(t)
+//{
+//}
+
+
+template <typename Iterator>
+SArray::SArray(Iterator b, Iterator e)
+: type_base(b, e)
+{
+}
+*/
+
+} // namespace Glib
+
+#endif /* #if 0 */
+
+#endif // _GLIBMM_SARRAY_H
+
diff --git a/libs/glibmm2/glib/glibmm/shell.cc b/libs/glibmm2/glib/glibmm/shell.cc
new file mode 100644
index 0000000000..52c6a47451
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/shell.cc
@@ -0,0 +1,102 @@
+// Generated by gtkmmproc -- DO NOT MODIFY!
+
+
+#include <glibmm/shell.h>
+#include <glibmm/private/shell_p.h>
+
+// -*- c++ -*-
+/* $Id: shell.ccg,v 1.1.1.1 2003/01/07 16:58:38 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/utility.h>
+
+
+namespace Glib
+{
+
+/**** shell utility functions **********************************************/
+
+Glib::ArrayHandle<std::string> shell_parse_argv(const std::string& command_line)
+{
+ char** argv = 0;
+ int argc = 0;
+ GError* error = 0;
+
+ g_shell_parse_argv(command_line.c_str(), &argc, &argv, &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+
+ return Glib::ArrayHandle<std::string>(argv, argc, Glib::OWNERSHIP_DEEP);
+}
+
+std::string shell_quote(const std::string& unquoted_string)
+{
+ const ScopedPtr<char> buf (g_shell_quote(unquoted_string.c_str()));
+ return std::string(buf.get());
+}
+
+std::string shell_unquote(const std::string& quoted_string)
+{
+ GError* error = 0;
+ char *const buf = g_shell_unquote(quoted_string.c_str(), &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+
+ return std::string(ScopedPtr<char>(buf).get());
+}
+
+} // namespace Glib
+
+
+namespace
+{
+} // anonymous namespace
+
+
+Glib::ShellError::ShellError(Glib::ShellError::Code error_code, const Glib::ustring& error_message)
+:
+ Glib::Error (G_SHELL_ERROR, error_code, error_message)
+{}
+
+Glib::ShellError::ShellError(GError* gobject)
+:
+ Glib::Error (gobject)
+{}
+
+Glib::ShellError::Code Glib::ShellError::code() const
+{
+ return static_cast<Code>(Glib::Error::code());
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+void Glib::ShellError::throw_func(GError* gobject)
+{
+ throw Glib::ShellError(gobject);
+}
+#else
+//When not using exceptions, we just pass the Exception object around without throwing it:
+std::auto_ptr<Glib::Error> Glib::ShellError::throw_func(GError* gobject)
+{
+ return std::auto_ptr<Glib::Error>(new Glib::ShellError(gobject));
+}
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
diff --git a/libs/glibmm2/glib/glibmm/shell.h b/libs/glibmm2/glib/glibmm/shell.h
new file mode 100644
index 0000000000..19b6a11b91
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/shell.h
@@ -0,0 +1,130 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_SHELL_H
+#define _GLIBMM_SHELL_H
+
+
+/* $Id: shell.hg,v 1.2 2003/01/22 21:38:35 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <glib/gshell.h>
+#include <string>
+
+#include <glibmm/arrayhandle.h>
+#include <glibmm/error.h>
+
+#include <glibmmconfig.h>
+GLIBMM_USING_STD(string)
+
+
+namespace Glib
+{
+
+/** @defgroup ShellUtils Shell-related Utilities
+ * Shell-like command line handling.
+ * @{
+ */
+
+/** Exception class for shell utility errors.
+ */
+class ShellError : public Glib::Error
+{
+public:
+ enum Code
+ {
+ BAD_QUOTING,
+ EMPTY_STRING,
+ FAILED
+ };
+
+ ShellError(Code error_code, const Glib::ustring& error_message);
+ explicit ShellError(GError* gobject);
+ Code code() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+private:
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ static void throw_func(GError* gobject);
+#else
+ //When not using exceptions, we just pass the Exception object around without throwing it:
+ static std::auto_ptr<Glib::Error> throw_func(GError* gobject);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ friend void wrap_init(); // uses throw_func()
+#endif
+};
+
+
+/** Parses a command line into an argument vector, in much the same way the
+ * shell would, but without many of the expansions the shell would perform
+ * (variable expansion, globs, operators, filename expansion, etc.\ are not
+ * supported). The results are defined to be the same as those you would
+ * get from a UNIX98 /bin/sh, as long as the input contains none of the
+ * unsupported shell expansions. If the input does contain such expansions,
+ * they are passed through literally.
+ * @param command_line Command line to parse.
+ * @return Array of args (The generic ArrayHandle will be implicitly
+ * converted to any STL compatible container type).
+ * @throw Glib::ShellError
+ */
+Glib::ArrayHandle<std::string> shell_parse_argv(const std::string& command_line);
+
+/** Quotes a string so that the shell (/bin/sh) will interpret the quoted
+ * string to mean @a unquoted_string. If you pass a filename to the shell,
+ * for example, you should first quote it with this function. The quoting
+ * style used is undefined (single or double quotes may be used).
+ * @param unquoted_string A literal string.
+ * @return A quoted string.
+ */
+std::string shell_quote(const std::string& unquoted_string);
+
+/** Unquotes a string as the shell (/bin/sh) would. Only handles quotes; if
+ * a string contains file globs, arithmetic operators, variables, backticks,
+ * redirections, or other special-to-the-shell features, the result will be
+ * different from the result a real shell would produce (the variables,
+ * backticks, etc. will be passed through literally instead of being expanded).
+ * This function is guaranteed to succeed if applied to the result of
+ * shell_quote(). If it fails, it throws a Glib::ShellError exception. The
+ * @a quoted_string need not actually contain quoted or escaped text;
+ * shell_unquote() simply goes through the string and unquotes/unescapes
+ * anything that the shell would. Both single and double quotes are handled,
+ * as are escapes including escaped newlines.
+ *
+ * Shell quoting rules are a bit strange. Single quotes preserve the literal
+ * string exactly. Escape sequences are not allowed; not even <tt>\\'</tt> --
+ * if you want a <tt>'</tt> in the quoted text, you have to do something like
+ * <tt>'foo'\\''bar'</tt>. Double quotes allow <tt>$</tt>, <tt>`</tt>,
+ * <tt>"</tt>, <tt>\\</tt>, and newline to be escaped with backslash.
+ * Otherwise double quotes preserve things literally.
+ *
+ * @param quoted_string Shell-quoted string.
+ * @return An unquoted string.
+ * @throw Glib::ShellError
+ */
+std::string shell_unquote(const std::string& quoted_string);
+
+/** @} group ShellUtils */
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_SHELL_H */
+
diff --git a/libs/glibmm2/glib/glibmm/signalproxy.cc b/libs/glibmm2/glib/glibmm/signalproxy.cc
new file mode 100644
index 0000000000..1f95436fb0
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/signalproxy.cc
@@ -0,0 +1,109 @@
+// -*- c++ -*-
+
+/* $Id: signalproxy.cc,v 1.3 2006/05/12 08:08:43 murrayc Exp $ */
+
+/* signalproxy.cc
+ *
+ * Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib-object.h>
+#include <glibmm/exceptionhandler.h>
+#include <glibmm/object.h>
+#include <glibmm/signalproxy.h>
+
+
+namespace Glib
+{
+
+// SignalProxyBase implementation:
+
+SignalProxyBase::SignalProxyBase(Glib::ObjectBase* obj)
+:
+ obj_ (obj)
+{}
+
+
+// SignalProxyNormal implementation:
+
+SignalProxyNormal::SignalProxyNormal(Glib::ObjectBase* obj, const SignalProxyInfo* info)
+:
+ SignalProxyBase (obj),
+ info_ (info)
+{}
+
+SignalProxyNormal::~SignalProxyNormal()
+{}
+
+sigc::slot_base&
+SignalProxyNormal::connect_(const sigc::slot_base& slot, bool after)
+{
+ return connect_impl_(info_->callback, slot, after);
+}
+
+sigc::slot_base&
+SignalProxyNormal::connect_notify_(const sigc::slot_base& slot, bool after)
+{
+ return connect_impl_(info_->notify_callback, slot, after);
+}
+
+sigc::slot_base&
+SignalProxyNormal::connect_impl_(GCallback callback, const sigc::slot_base& slot, bool after)
+{
+ // create a proxy to hold our connection info
+ SignalProxyConnectionNode *const pConnectionNode =
+ new SignalProxyConnectionNode(slot, obj_->gobj());
+
+ // connect it to glib
+ // pConnectionNode will be passed in the data argument to the callback.
+ pConnectionNode->connection_id_ = g_signal_connect_data(
+ obj_->gobj(), info_->signal_name, callback, pConnectionNode,
+ &SignalProxyConnectionNode::destroy_notify_handler,
+ static_cast<GConnectFlags>((after) ? G_CONNECT_AFTER : 0));
+
+ return pConnectionNode->slot_;
+}
+
+void SignalProxyNormal::emission_stop()
+{
+ g_signal_stop_emission_by_name(obj_->gobj(), info_->signal_name);
+}
+
+// static
+void SignalProxyNormal::slot0_void_callback(GObject* self, void* data)
+{
+ // Do not try to call a signal on a disassociated wrapper.
+ if(Glib::ObjectBase::_get_current_wrapper(self))
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ if(sigc::slot_base *const slot = data_to_slot(data))
+ (*static_cast<sigc::slot<void>*>(slot))();
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/signalproxy.h b/libs/glibmm2/glib/glibmm/signalproxy.h
new file mode 100644
index 0000000000..43c8fc3fb8
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/signalproxy.h
@@ -0,0 +1,394 @@
+// -*- c++ -*-
+/* This is a generated file, do not edit. Generated from signalproxy.h.m4 */
+
+#ifndef _GLIBMM_SIGNALPROXY_H
+#define _GLIBMM_SIGNALPROXY_H
+
+extern "C"
+{
+ typedef void (*GCallback) (void);
+ typedef struct _GObject GObject;
+}
+
+#include <sigc++/sigc++.h>
+#include <glibmm/signalproxy_connectionnode.h>
+
+
+namespace Glib
+{
+
+// Forward declarations
+class ObjectBase;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+struct SignalProxyInfo
+{
+ const char* signal_name;
+ GCallback callback;
+ GCallback notify_callback;
+};
+
+#endif //DOXYGEN_SHOULD_SKIP_THIS
+
+// This base class is used by SignalProxyNormal and SignalProxyProperty.
+class SignalProxyBase
+{
+public:
+ SignalProxyBase(Glib::ObjectBase* obj);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ static inline sigc::slot_base* data_to_slot(void* data)
+ {
+ SignalProxyConnectionNode *const pConnectionNode = static_cast<SignalProxyConnectionNode*>(data);
+
+ // Return 0 if the connection is blocked.
+ return (!pConnectionNode->slot_.blocked()) ? &pConnectionNode->slot_ : 0;
+ }
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+protected:
+ ObjectBase* obj_;
+
+private:
+ SignalProxyBase& operator=(const SignalProxyBase&); // not implemented
+};
+
+
+// shared portion of a Signal
+/** The SignalProxy provides an API similar to sigc::signal that can be used to
+ * connect sigc::slots to glib signals.
+ *
+ * This holds the name of the glib signal and the object
+ * which might emit it. Actually, proxies are controlled by
+ * the template derivatives, which serve as gatekeepers for the
+ * types allowed on a particular signal.
+ *
+ */
+class SignalProxyNormal : public SignalProxyBase
+{
+public:
+ ~SignalProxyNormal();
+
+ /// stops the current signal emmision (not in libsigc++)
+ void emission_stop();
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ // This callback for SignalProxy0<void>
+ // is defined here to avoid code duplication.
+ static void slot0_void_callback(GObject*, void* data);
+#endif
+
+protected:
+
+ /** Create a proxy for a signal that can be emitted by @a obj.
+ * @param obj The object that can emit the signal.
+ * @param info Information about the signal, including its name, and the C callbacks that should be called by glib.
+ */
+ SignalProxyNormal(Glib::ObjectBase* obj, const SignalProxyInfo* info);
+
+ /** Connects a signal to a generic signal handler. This is called by connect() in derived SignalProxy classes.
+ *
+ * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::slot_base& connect_(const sigc::slot_base& slot, bool after);
+
+ /** Connects a signal to a signal handler without a return value.
+ * This is called by connect() in derived SignalProxy classes.
+ *
+ * By default, the signal handler will be called before the default signal handler,
+ * in which case any return value would be replaced anyway by that of the later signal handler.
+ *
+ * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::slot_base& connect_notify_(const sigc::slot_base& slot, bool after);
+
+private:
+ const SignalProxyInfo* info_;
+
+ //TODO: We could maybe replace both connect_ and connect_notify_ with this in future, because they don't do anything extra.
+ /** This is called by connect_ and connect_impl_.
+ */
+ sigc::slot_base& connect_impl_(GCallback callback, const sigc::slot_base& slot, bool after);
+
+ // no copy assignment
+ SignalProxyNormal& operator=(const SignalProxyNormal&);
+};
+
+
+
+
+
+/**** Glib::SignalProxy0 ***************************************************/
+
+/** Proxy for signals with 0 arguments.
+ * Use the connect() method, with sigc::mem_fun() or sigc::ptr_fun() to connect signals to signal handlers.
+ */
+template <class R>
+class SignalProxy0 : public SignalProxyNormal
+{
+public:
+ typedef sigc::slot<R> SlotType;
+ typedef sigc::slot<void> VoidSlotType;
+
+ SignalProxy0(ObjectBase* obj, const SignalProxyInfo* info)
+ : SignalProxyNormal(obj, info) {}
+
+ /** Connects a signal to a signal handler.
+ * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) );
+ *
+ * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::connection connect(const SlotType& slot, bool after = true)
+ { return sigc::connection(connect_(slot, after)); }
+
+ /** Connects a signal to a signal handler without a return value.
+ * By default, the signal handler will be called before the default signal handler,
+ * in which case any return value would be replaced anyway by that of the later signal handler.
+ *
+ * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) );
+ *
+ * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::connection connect_notify(const VoidSlotType& slot, bool after = false)
+ { return sigc::connection(connect_notify_(slot, after)); }
+};
+
+
+/**** Glib::SignalProxy1 ***************************************************/
+
+/** Proxy for signals with 1 arguments.
+ * Use the connect() method, with sigc::mem_fun() or sigc::ptr_fun() to connect signals to signal handlers.
+ */
+template <class R,class P1>
+class SignalProxy1 : public SignalProxyNormal
+{
+public:
+ typedef sigc::slot<R,P1> SlotType;
+ typedef sigc::slot<void,P1> VoidSlotType;
+
+ SignalProxy1(ObjectBase* obj, const SignalProxyInfo* info)
+ : SignalProxyNormal(obj, info) {}
+
+ /** Connects a signal to a signal handler.
+ * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) );
+ *
+ * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::connection connect(const SlotType& slot, bool after = true)
+ { return sigc::connection(connect_(slot, after)); }
+
+ /** Connects a signal to a signal handler without a return value.
+ * By default, the signal handler will be called before the default signal handler,
+ * in which case any return value would be replaced anyway by that of the later signal handler.
+ *
+ * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) );
+ *
+ * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::connection connect_notify(const VoidSlotType& slot, bool after = false)
+ { return sigc::connection(connect_notify_(slot, after)); }
+};
+
+
+/**** Glib::SignalProxy2 ***************************************************/
+
+/** Proxy for signals with 2 arguments.
+ * Use the connect() method, with sigc::mem_fun() or sigc::ptr_fun() to connect signals to signal handlers.
+ */
+template <class R,class P1,class P2>
+class SignalProxy2 : public SignalProxyNormal
+{
+public:
+ typedef sigc::slot<R,P1,P2> SlotType;
+ typedef sigc::slot<void,P1,P2> VoidSlotType;
+
+ SignalProxy2(ObjectBase* obj, const SignalProxyInfo* info)
+ : SignalProxyNormal(obj, info) {}
+
+ /** Connects a signal to a signal handler.
+ * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) );
+ *
+ * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::connection connect(const SlotType& slot, bool after = true)
+ { return sigc::connection(connect_(slot, after)); }
+
+ /** Connects a signal to a signal handler without a return value.
+ * By default, the signal handler will be called before the default signal handler,
+ * in which case any return value would be replaced anyway by that of the later signal handler.
+ *
+ * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) );
+ *
+ * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::connection connect_notify(const VoidSlotType& slot, bool after = false)
+ { return sigc::connection(connect_notify_(slot, after)); }
+};
+
+
+/**** Glib::SignalProxy3 ***************************************************/
+
+/** Proxy for signals with 3 arguments.
+ * Use the connect() method, with sigc::mem_fun() or sigc::ptr_fun() to connect signals to signal handlers.
+ */
+template <class R,class P1,class P2,class P3>
+class SignalProxy3 : public SignalProxyNormal
+{
+public:
+ typedef sigc::slot<R,P1,P2,P3> SlotType;
+ typedef sigc::slot<void,P1,P2,P3> VoidSlotType;
+
+ SignalProxy3(ObjectBase* obj, const SignalProxyInfo* info)
+ : SignalProxyNormal(obj, info) {}
+
+ /** Connects a signal to a signal handler.
+ * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) );
+ *
+ * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::connection connect(const SlotType& slot, bool after = true)
+ { return sigc::connection(connect_(slot, after)); }
+
+ /** Connects a signal to a signal handler without a return value.
+ * By default, the signal handler will be called before the default signal handler,
+ * in which case any return value would be replaced anyway by that of the later signal handler.
+ *
+ * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) );
+ *
+ * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::connection connect_notify(const VoidSlotType& slot, bool after = false)
+ { return sigc::connection(connect_notify_(slot, after)); }
+};
+
+
+/**** Glib::SignalProxy4 ***************************************************/
+
+/** Proxy for signals with 4 arguments.
+ * Use the connect() method, with sigc::mem_fun() or sigc::ptr_fun() to connect signals to signal handlers.
+ */
+template <class R,class P1,class P2,class P3,class P4>
+class SignalProxy4 : public SignalProxyNormal
+{
+public:
+ typedef sigc::slot<R,P1,P2,P3,P4> SlotType;
+ typedef sigc::slot<void,P1,P2,P3,P4> VoidSlotType;
+
+ SignalProxy4(ObjectBase* obj, const SignalProxyInfo* info)
+ : SignalProxyNormal(obj, info) {}
+
+ /** Connects a signal to a signal handler.
+ * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) );
+ *
+ * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::connection connect(const SlotType& slot, bool after = true)
+ { return sigc::connection(connect_(slot, after)); }
+
+ /** Connects a signal to a signal handler without a return value.
+ * By default, the signal handler will be called before the default signal handler,
+ * in which case any return value would be replaced anyway by that of the later signal handler.
+ *
+ * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) );
+ *
+ * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::connection connect_notify(const VoidSlotType& slot, bool after = false)
+ { return sigc::connection(connect_notify_(slot, after)); }
+};
+
+
+/**** Glib::SignalProxy5 ***************************************************/
+
+/** Proxy for signals with 5 arguments.
+ * Use the connect() method, with sigc::mem_fun() or sigc::ptr_fun() to connect signals to signal handlers.
+ */
+template <class R,class P1,class P2,class P3,class P4,class P5>
+class SignalProxy5 : public SignalProxyNormal
+{
+public:
+ typedef sigc::slot<R,P1,P2,P3,P4,P5> SlotType;
+ typedef sigc::slot<void,P1,P2,P3,P4,P5> VoidSlotType;
+
+ SignalProxy5(ObjectBase* obj, const SignalProxyInfo* info)
+ : SignalProxyNormal(obj, info) {}
+
+ /** Connects a signal to a signal handler.
+ * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) );
+ *
+ * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::connection connect(const SlotType& slot, bool after = true)
+ { return sigc::connection(connect_(slot, after)); }
+
+ /** Connects a signal to a signal handler without a return value.
+ * By default, the signal handler will be called before the default signal handler,
+ * in which case any return value would be replaced anyway by that of the later signal handler.
+ *
+ * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) );
+ *
+ * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::connection connect_notify(const VoidSlotType& slot, bool after = false)
+ { return sigc::connection(connect_notify_(slot, after)); }
+};
+
+
+/**** Glib::SignalProxy6 ***************************************************/
+
+/** Proxy for signals with 6 arguments.
+ * Use the connect() method, with sigc::mem_fun() or sigc::ptr_fun() to connect signals to signal handlers.
+ */
+template <class R,class P1,class P2,class P3,class P4,class P5,class P6>
+class SignalProxy6 : public SignalProxyNormal
+{
+public:
+ typedef sigc::slot<R,P1,P2,P3,P4,P5,P6> SlotType;
+ typedef sigc::slot<void,P1,P2,P3,P4,P5,P6> VoidSlotType;
+
+ SignalProxy6(ObjectBase* obj, const SignalProxyInfo* info)
+ : SignalProxyNormal(obj, info) {}
+
+ /** Connects a signal to a signal handler.
+ * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) );
+ *
+ * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::connection connect(const SlotType& slot, bool after = true)
+ { return sigc::connection(connect_(slot, after)); }
+
+ /** Connects a signal to a signal handler without a return value.
+ * By default, the signal handler will be called before the default signal handler,
+ * in which case any return value would be replaced anyway by that of the later signal handler.
+ *
+ * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) );
+ *
+ * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::connection connect_notify(const VoidSlotType& slot, bool after = false)
+ { return sigc::connection(connect_notify_(slot, after)); }
+};
+
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_SIGNALPROXY_H */
+
diff --git a/libs/glibmm2/glib/glibmm/signalproxy_connectionnode.cc b/libs/glibmm2/glib/glibmm/signalproxy_connectionnode.cc
new file mode 100644
index 0000000000..19604d92c0
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/signalproxy_connectionnode.cc
@@ -0,0 +1,94 @@
+// -*- c++ -*-
+
+/* $Id: signalproxy_connectionnode.cc,v 1.6 2004/10/07 16:02:01 philipl Exp $ */
+
+/* signalproxy_connectionnode.cc
+ *
+ * Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/signalproxy_connectionnode.h>
+#include <glibmm/object.h>
+
+
+namespace Glib
+{
+
+SignalProxyConnectionNode::SignalProxyConnectionNode(const sigc::slot_base& slot, GObject* gobject)
+:
+ connection_id_ (0),
+ slot_ (slot),
+ object_ (gobject)
+{
+ //The cleanup callback will be called when the connection is disconnected.
+ slot_.set_parent(this, &SignalProxyConnectionNode::notify /* cleanup callback */);
+}
+
+// notify is a message coming up from the slot to be passed back to Gtk+
+// disconnect is a message coming up from the Gtk+ to be passed down to SigC++
+//static
+void* SignalProxyConnectionNode::notify(void* data)
+{
+ // notification from libsigc++.
+ SignalProxyConnectionNode* conn = static_cast<SignalProxyConnectionNode*>(data);
+
+ // If there is no object, this call was triggered from destroy_notify_handler(),
+ // because we set conn->object to 0 there:
+ if(conn && conn->object_)
+ {
+ GObject* o = conn->object_;
+ conn->object_ = 0;
+
+ if(g_signal_handler_is_connected(o, conn->connection_id_)) //We check first, because during destruction, GTK+ sometimes seems to disconnect them for us, before we expect it to. See bug #87912
+ {
+ // Disconnecting triggers execution of destroy_notify_handler(), eiter immediately or later:
+ // When the signal handler is currently running. (for instance, if the callback disconnects its own connection)
+ // In that case, destroy_notify_handler() will be called after this whole function has returned.
+ // Anyway. destroy_notify_handler() will always be called, so we leave that to do the deletion.
+
+
+ //Forget the connection:
+ gulong connection_id = conn->connection_id_;
+ conn->connection_id_ = 0;
+
+ g_signal_handler_disconnect(o, connection_id);
+ }
+ }
+
+ return 0; // apparently unused in libsigc++
+}
+
+//static
+void SignalProxyConnectionNode::destroy_notify_handler(gpointer data, GClosure*)
+{
+ //glib calls this when it has finished with a glib signal connection,
+ //either when the emitting object dies, or when the connection has been disconnected.
+
+ // notification from gtk+.
+ SignalProxyConnectionNode* conn = static_cast<SignalProxyConnectionNode*>(data);
+
+ if(conn)
+ {
+ // the object has already lost track of this object.
+ conn->object_ = 0;
+
+ delete conn; // if there are connection objects referring to slot_ they are notified during destruction of slot_
+ }
+}
+
+} /* namespace Glib */
+
diff --git a/libs/glibmm2/glib/glibmm/signalproxy_connectionnode.h b/libs/glibmm2/glib/glibmm/signalproxy_connectionnode.h
new file mode 100644
index 0000000000..ea55824e78
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/signalproxy_connectionnode.h
@@ -0,0 +1,70 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_SIGNALPROXY_CONNECTIONNODE_H
+#define _GLIBMM_SIGNALPROXY_CONNECTIONNODE_H
+
+/* $Id: signalproxy_connectionnode.h,v 1.6 2004/12/18 23:52:44 murrayc Exp $ */
+
+/* signalproxy_connectionnode.h
+ *
+ * Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <sigc++/sigc++.h>
+#include <glibmm/wrap.h>
+
+typedef struct _GObject GObject;
+
+namespace Glib
+{
+
+/** SignalProxyConnectionNode is a connection node for use with SignalProxy.
+ * It lives between the layer of Gtk+ and libsigc++.
+ * It is very much an internal class.
+ */
+class SignalProxyConnectionNode
+{
+public:
+
+ /** @param slot The signal handler for the glib signal.
+ * @param gobject The GObject that might emit this glib signal
+ */
+ SignalProxyConnectionNode(const sigc::slot_base& slot, GObject* gobject);
+
+ /** Callback that is executed when the slot becomes invalid.
+ * This callback is registered in the slot.
+ * @param data The SignalProxyConnectionNode object (@p this).
+ */
+ static void* notify(void* data);
+
+ /** Callback that is executed when the glib closure is destroyed.
+ * @param data The SignalProxyConnectionNode object (@p this).
+ * @param closure The glib closure object.
+ */
+ static void destroy_notify_handler(gpointer data, GClosure* closure);
+
+ gulong connection_id_;
+ sigc::slot_base slot_;
+
+protected:
+ GObject* object_;
+};
+
+} /* namespace Glib */
+
+
+#endif /* _GLIBMM_SIGNALPROXY_CONNECTIONNODE_H */
+
diff --git a/libs/glibmm2/glib/glibmm/slisthandle.h b/libs/glibmm2/glib/glibmm/slisthandle.h
new file mode 100644
index 0000000000..6e3f1671d1
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/slisthandle.h
@@ -0,0 +1,405 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_SLISTHANDLE_H
+#define _GLIBMM_SLISTHANDLE_H
+
+/* $Id: slisthandle.h,v 1.3 2003/04/21 17:39:41 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gslist.h>
+#include <glibmm/containerhandle_shared.h>
+
+
+namespace Glib
+{
+
+namespace Container_Helpers
+{
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+/* Create and fill a GSList as efficient as possible.
+ * This requires bidirectional iterators.
+ */
+template <class Bi, class Tr>
+GSList* create_slist(Bi pbegin, Bi pend, Tr)
+{
+ GSList* head = 0;
+
+ while(pend != pbegin)
+ {
+ // Use & to force a warning if the iterator returns a temporary object.
+ const void *const item = Tr::to_c_type(*&*--pend);
+ head = g_slist_prepend(head, const_cast<void*>(item));
+ }
+
+ return head;
+}
+
+/* Create a GSList from a 0-terminated input sequence.
+ * Build it in reverse order and reverse the whole list afterwards,
+ * because appending to the list would be horribly inefficient.
+ */
+template <class For, class Tr>
+GSList* create_slist(For pbegin, Tr)
+{
+ GSList* head = 0;
+
+ while(*pbegin)
+ {
+ // Use & to force a warning if the iterator returns a temporary object.
+ const void *const item = Tr::to_c_type(*&*pbegin);
+ head = g_slist_prepend(head, const_cast<void*>(item));
+ ++pbegin;
+ }
+
+ return g_slist_reverse(head);
+}
+
+
+/* Convert from any container that supports bidirectional iterators.
+ */
+template <class Tr, class Cont>
+struct SListSourceTraits
+{
+ static GSList* get_data(const Cont& cont)
+ { return Glib::Container_Helpers::create_slist(cont.begin(), cont.end(), Tr()); }
+
+ static const Glib::OwnershipType initial_ownership = Glib::OWNERSHIP_SHALLOW;
+};
+
+/* Convert from a 0-terminated array. The Cont
+ * argument must be a pointer to the first element.
+ */
+template <class Tr, class Cont>
+struct SListSourceTraits<Tr,Cont*>
+{
+ static GSList* get_data(const Cont* array)
+ { return (array) ? Glib::Container_Helpers::create_slist(array, Tr()) : 0; }
+
+ static const Glib::OwnershipType initial_ownership = Glib::OWNERSHIP_SHALLOW;
+};
+
+template <class Tr, class Cont>
+struct SListSourceTraits<Tr,const Cont*> : SListSourceTraits<Tr,Cont*>
+{};
+
+/* Convert from a 0-terminated array. The Cont argument must be a pointer
+ * to the first element. For consistency, the array must be 0-terminated,
+ * even though the array size is known at compile time.
+ */
+template <class Tr, class Cont, size_t N>
+struct SListSourceTraits<Tr,Cont[N]>
+{
+ static GSList* get_data(const Cont* array)
+ { return Glib::Container_Helpers::create_slist(array, array + (N - 1), Tr()); }
+
+ static const Glib::OwnershipType initial_ownership = Glib::OWNERSHIP_SHALLOW;
+};
+
+template <class Tr, class Cont, size_t N>
+struct SListSourceTraits<Tr,const Cont[N]> : SListSourceTraits<Tr,Cont[N]>
+{};
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+
+/**
+ * @ingroup ContHelpers
+ * If a method takes this as an argument, or has this as a return type, then you can use a standard
+ * container such as std::list or std::vector.
+ */
+template <class Tr>
+class SListHandleIterator
+{
+public:
+ typedef typename Tr::CppType CppType;
+ typedef typename Tr::CType CType;
+
+ typedef std::forward_iterator_tag iterator_category;
+ typedef CppType value_type;
+ typedef ptrdiff_t difference_type;
+ typedef value_type reference;
+ typedef void pointer;
+
+ explicit inline SListHandleIterator(const GSList* node);
+
+ inline value_type operator*() const;
+ inline SListHandleIterator<Tr> & operator++();
+ inline const SListHandleIterator<Tr> operator++(int);
+
+ inline bool operator==(const SListHandleIterator<Tr>& rhs) const;
+ inline bool operator!=(const SListHandleIterator<Tr>& rhs) const;
+
+private:
+ const GSList* node_;
+};
+
+} // namespace Container_Helpers
+
+
+/**
+ * @ingroup ContHandles
+ */
+template < class T, class Tr = Glib::Container_Helpers::TypeTraits<T> >
+class SListHandle
+{
+public:
+ typedef typename Tr::CppType CppType;
+ typedef typename Tr::CType CType;
+
+ typedef CppType value_type;
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+
+ typedef Glib::Container_Helpers::SListHandleIterator<Tr> const_iterator;
+ typedef Glib::Container_Helpers::SListHandleIterator<Tr> iterator;
+
+ template <class Cont> inline
+ SListHandle(const Cont& container);
+
+ // Take over ownership of a GSList created by GTK+ functions.
+ inline SListHandle(GSList* glist, Glib::OwnershipType ownership);
+
+ // Copying clears the ownership flag of the source handle.
+ inline SListHandle(const SListHandle<T,Tr>& other);
+
+ ~SListHandle();
+
+ inline const_iterator begin() const;
+ inline const_iterator end() const;
+
+ template <class U> inline operator std::vector<U>() const;
+ template <class U> inline operator std::deque<U>() const;
+ template <class U> inline operator std::list<U>() const;
+
+ template <class Cont> inline
+ void assign_to(Cont& container) const;
+ template <class Out> inline
+ void copy(Out pdest) const;
+
+ inline GSList* data() const;
+ inline size_t size() const;
+ inline bool empty() const;
+
+private:
+ GSList * pslist_;
+ mutable Glib::OwnershipType ownership_;
+
+ // No copy assignment.
+ SListHandle<T,Tr>& operator=(const SListHandle<T,Tr>&);
+};
+
+
+/***************************************************************************/
+/* Inline implementation */
+/***************************************************************************/
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+namespace Container_Helpers
+{
+
+/**** Glib::Container_Helpers::SListHandleIterator<> ***********************/
+
+template <class Tr> inline
+SListHandleIterator<Tr>::SListHandleIterator(const GSList* node)
+:
+ node_ (node)
+{}
+
+template <class Tr> inline
+typename SListHandleIterator<Tr>::value_type SListHandleIterator<Tr>::operator*() const
+{
+ return Tr::to_cpp_type(static_cast<typename Tr::CTypeNonConst>(node_->data));
+}
+
+template <class Tr> inline
+SListHandleIterator<Tr>& SListHandleIterator<Tr>::operator++()
+{
+ node_ = node_->next;
+ return *this;
+}
+
+template <class Tr> inline
+const SListHandleIterator<Tr> SListHandleIterator<Tr>::operator++(int)
+{
+ const SListHandleIterator<Tr> tmp (*this);
+ node_ = node_->next;
+ return tmp;
+}
+
+template <class Tr> inline
+bool SListHandleIterator<Tr>::operator==(const SListHandleIterator<Tr>& rhs) const
+{
+ return (node_ == rhs.node_);
+}
+
+template <class Tr> inline
+bool SListHandleIterator<Tr>::operator!=(const SListHandleIterator<Tr>& rhs) const
+{
+ return (node_ != rhs.node_);
+}
+
+} // namespace Container_Helpers
+
+
+/**** Glib::SListHandle<> **************************************************/
+
+template <class T, class Tr>
+ template <class Cont>
+inline
+SListHandle<T,Tr>::SListHandle(const Cont& container)
+:
+ pslist_ (Glib::Container_Helpers::SListSourceTraits<Tr,Cont>::get_data(container)),
+ ownership_ (Glib::Container_Helpers::SListSourceTraits<Tr,Cont>::initial_ownership)
+{}
+
+template <class T, class Tr> inline
+SListHandle<T,Tr>::SListHandle(GSList* gslist, Glib::OwnershipType ownership)
+:
+ pslist_ (gslist),
+ ownership_ (ownership)
+{}
+
+template <class T, class Tr> inline
+SListHandle<T,Tr>::SListHandle(const SListHandle<T,Tr>& other)
+:
+ pslist_ (other.pslist_),
+ ownership_ (other.ownership_)
+{
+ other.ownership_ = Glib::OWNERSHIP_NONE;
+}
+
+template <class T, class Tr>
+SListHandle<T,Tr>::~SListHandle()
+{
+ if(ownership_ != Glib::OWNERSHIP_NONE)
+ {
+ if(ownership_ != Glib::OWNERSHIP_SHALLOW)
+ {
+ // Deep ownership: release each container element.
+ for(GSList* node = pslist_; node != 0; node = node->next)
+ Tr::release_c_type(static_cast<typename Tr::CTypeNonConst>(node->data));
+ }
+ g_slist_free(pslist_);
+ }
+}
+
+template <class T, class Tr> inline
+typename SListHandle<T,Tr>::const_iterator SListHandle<T,Tr>::begin() const
+{
+ return Glib::Container_Helpers::SListHandleIterator<Tr>(pslist_);
+}
+
+template <class T, class Tr> inline
+typename SListHandle<T,Tr>::const_iterator SListHandle<T,Tr>::end() const
+{
+ return Glib::Container_Helpers::SListHandleIterator<Tr>(0);
+}
+
+template <class T, class Tr>
+ template <class U>
+inline
+SListHandle<T,Tr>::operator std::vector<U>() const
+{
+#ifdef GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS
+ return std::vector<U>(this->begin(), this->end());
+#else
+ std::vector<U> temp;
+ temp.reserve(this->size());
+ Glib::Container_Helpers::fill_container(temp, this->begin(), this->end());
+ return temp;
+#endif
+}
+
+template <class T, class Tr>
+ template <class U>
+inline
+SListHandle<T,Tr>::operator std::deque<U>() const
+{
+#ifdef GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS
+ return std::deque<U>(this->begin(), this->end());
+#else
+ std::deque<U> temp;
+ Glib::Container_Helpers::fill_container(temp, this->begin(), this->end());
+ return temp;
+#endif
+}
+
+template <class T, class Tr>
+ template <class U>
+inline
+SListHandle<T,Tr>::operator std::list<U>() const
+{
+#ifdef GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS
+ return std::list<U>(this->begin(), this->end());
+#else
+ std::list<U> temp;
+ Glib::Container_Helpers::fill_container(temp, this->begin(), this->end());
+ return temp;
+#endif
+}
+
+template <class T, class Tr>
+ template <class Cont>
+inline
+void SListHandle<T,Tr>::assign_to(Cont& container) const
+{
+#ifdef GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS
+ container.assign(this->begin(), this->end());
+#else
+ Cont temp;
+ Glib::Container_Helpers::fill_container(temp, this->begin(), this->end());
+ container.swap(temp);
+#endif
+}
+
+template <class T, class Tr>
+ template <class Out>
+inline
+void SListHandle<T,Tr>::copy(Out pdest) const
+{
+ std::copy(this->begin(), this->end(), pdest);
+}
+
+template <class T, class Tr> inline
+GSList* SListHandle<T,Tr>::data() const
+{
+ return pslist_;
+}
+
+template <class T, class Tr> inline
+size_t SListHandle<T,Tr>::size() const
+{
+ return g_slist_length(pslist_);
+}
+
+template <class T, class Tr> inline
+bool SListHandle<T,Tr>::empty() const
+{
+ return (pslist_ == 0);
+}
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_SLISTHANDLE_H */
+
diff --git a/libs/glibmm2/glib/glibmm/spawn.cc b/libs/glibmm2/glib/glibmm/spawn.cc
new file mode 100644
index 0000000000..592001885e
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/spawn.cc
@@ -0,0 +1,324 @@
+// Generated by gtkmmproc -- DO NOT MODIFY!
+
+
+#include <glibmm/spawn.h>
+#include <glibmm/private/spawn_p.h>
+
+// -*- c++ -*-
+/* $Id: spawn.ccg,v 1.8 2006/05/12 08:08:44 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gspawn.h>
+#include <glibmm/exceptionhandler.h>
+#include <glibmm/utility.h>
+
+
+namespace
+{
+
+extern "C"
+{
+
+/* Helper callback to invoke the actual sigc++ slot.
+ * We don't need to worry about (un)referencing, since the
+ * child process gets its own copy of the parent's memory anyway.
+ */
+static void child_setup_callback(void* user_data)
+{
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ (*reinterpret_cast<sigc::slot<void>*>(user_data))();
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+}
+
+static void copy_output_buf(std::string* dest, const char* buf)
+{
+ if(dest)
+ {
+ if(buf)
+ *dest = buf;
+ else
+ dest->erase();
+ }
+}
+
+} //extern "C"
+
+} //anonymous namespace
+
+
+namespace Glib
+{
+
+/**** process spawning functions *******************************************/
+
+void spawn_async_with_pipes(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ const Glib::ArrayHandle<std::string>& envp,
+ SpawnFlags flags,
+ const sigc::slot<void>& child_setup,
+ Pid* child_pid,
+ int* standard_input,
+ int* standard_output,
+ int* standard_error)
+{
+ const bool setup_slot = !child_setup.empty();
+ sigc::slot<void> child_setup_ = child_setup;
+ GError* error = 0;
+
+ g_spawn_async_with_pipes(
+ working_directory.c_str(),
+ const_cast<char**>(argv.data()),
+ const_cast<char**>(envp.data()),
+ static_cast<GSpawnFlags>(unsigned(flags)),
+ (setup_slot) ? &child_setup_callback : 0,
+ (setup_slot) ? &child_setup_ : 0,
+ child_pid,
+ standard_input, standard_output, standard_error,
+ &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+void spawn_async_with_pipes(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ SpawnFlags flags,
+ const sigc::slot<void>& child_setup,
+ Pid* child_pid,
+ int* standard_input,
+ int* standard_output,
+ int* standard_error)
+{
+ const bool setup_slot = !child_setup.empty();
+ sigc::slot<void> child_setup_ = child_setup;
+ GError* error = 0;
+
+ g_spawn_async_with_pipes(
+ working_directory.c_str(),
+ const_cast<char**>(argv.data()), 0,
+ static_cast<GSpawnFlags>(unsigned(flags)),
+ (setup_slot) ? &child_setup_callback : 0,
+ (setup_slot) ? &child_setup_ : 0,
+ child_pid,
+ standard_input, standard_output, standard_error,
+ &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+void spawn_async(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ const Glib::ArrayHandle<std::string>& envp,
+ SpawnFlags flags,
+ const sigc::slot<void>& child_setup,
+ Pid* child_pid)
+{
+ const bool setup_slot = !child_setup.empty();
+ sigc::slot<void> child_setup_ = child_setup;
+ GError* error = 0;
+
+ g_spawn_async(
+ working_directory.c_str(),
+ const_cast<char**>(argv.data()),
+ const_cast<char**>(envp.data()),
+ static_cast<GSpawnFlags>(unsigned(flags)),
+ (setup_slot) ? &child_setup_callback : 0,
+ (setup_slot) ? &child_setup_ : 0,
+ child_pid,
+ &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+void spawn_async(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ SpawnFlags flags,
+ const sigc::slot<void>& child_setup,
+ Pid* child_pid)
+{
+ const bool setup_slot = !child_setup.empty();
+ sigc::slot<void> child_setup_ = child_setup;
+ GError* error = 0;
+
+ g_spawn_async(
+ working_directory.c_str(),
+ const_cast<char**>(argv.data()), 0,
+ static_cast<GSpawnFlags>(unsigned(flags)),
+ (setup_slot) ? &child_setup_callback : 0,
+ (setup_slot) ? &child_setup_ : 0,
+ child_pid,
+ &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+void spawn_sync(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ const Glib::ArrayHandle<std::string>& envp,
+ SpawnFlags flags,
+ const sigc::slot<void>& child_setup,
+ std::string* standard_output,
+ std::string* standard_error,
+ int* exit_status)
+{
+ const bool setup_slot = !child_setup.empty();
+ sigc::slot<void> child_setup_ = child_setup;
+
+ Glib::ScopedPtr<char> buf_standard_output;
+ Glib::ScopedPtr<char> buf_standard_error;
+ GError* error = 0;
+
+ g_spawn_sync(
+ working_directory.c_str(),
+ const_cast<char**>(argv.data()),
+ const_cast<char**>(envp.data()),
+ static_cast<GSpawnFlags>(unsigned(flags)),
+ (setup_slot) ? &child_setup_callback : 0,
+ (setup_slot) ? &child_setup_ : 0,
+ (standard_output) ? buf_standard_output.addr() : 0,
+ (standard_error) ? buf_standard_error.addr() : 0,
+ exit_status,
+ &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+
+ copy_output_buf(standard_output, buf_standard_output.get());
+ copy_output_buf(standard_error, buf_standard_error.get());
+}
+
+void spawn_sync(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ SpawnFlags flags,
+ const sigc::slot<void>& child_setup,
+ std::string* standard_output,
+ std::string* standard_error,
+ int* exit_status)
+{
+ const bool setup_slot = !child_setup.empty();
+ sigc::slot<void> child_setup_ = child_setup;
+
+ Glib::ScopedPtr<char> buf_standard_output;
+ Glib::ScopedPtr<char> buf_standard_error;
+ GError* error = 0;
+
+ g_spawn_sync(
+ working_directory.c_str(),
+ const_cast<char**>(argv.data()), 0,
+ static_cast<GSpawnFlags>(unsigned(flags)),
+ (setup_slot) ? &child_setup_callback : 0,
+ (setup_slot) ? &child_setup_ : 0,
+ (standard_output) ? buf_standard_output.addr() : 0,
+ (standard_error) ? buf_standard_error.addr() : 0,
+ exit_status,
+ &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+
+ copy_output_buf(standard_output, buf_standard_output.get());
+ copy_output_buf(standard_error, buf_standard_error.get());
+}
+
+void spawn_command_line_async(const std::string& command_line)
+{
+ GError* error = 0;
+ g_spawn_command_line_async(command_line.c_str(), &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+void spawn_command_line_sync(const std::string& command_line,
+ std::string* standard_output,
+ std::string* standard_error,
+ int* exit_status)
+{
+ Glib::ScopedPtr<char> buf_standard_output;
+ Glib::ScopedPtr<char> buf_standard_error;
+ GError* error = 0;
+
+ g_spawn_command_line_sync(
+ command_line.c_str(),
+ (standard_output) ? buf_standard_output.addr() : 0,
+ (standard_error) ? buf_standard_error.addr() : 0,
+ exit_status,
+ &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+
+ copy_output_buf(standard_output, buf_standard_output.get());
+ copy_output_buf(standard_error, buf_standard_error.get());
+}
+
+void spawn_close_pid(Pid pid)
+{
+ g_spawn_close_pid(pid);
+}
+
+} // namespace Glib
+
+
+namespace
+{
+} // anonymous namespace
+
+
+Glib::SpawnError::SpawnError(Glib::SpawnError::Code error_code, const Glib::ustring& error_message)
+:
+ Glib::Error (G_SPAWN_ERROR, error_code, error_message)
+{}
+
+Glib::SpawnError::SpawnError(GError* gobject)
+:
+ Glib::Error (gobject)
+{}
+
+Glib::SpawnError::Code Glib::SpawnError::code() const
+{
+ return static_cast<Code>(Glib::Error::code());
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+void Glib::SpawnError::throw_func(GError* gobject)
+{
+ throw Glib::SpawnError(gobject);
+}
+#else
+//When not using exceptions, we just pass the Exception object around without throwing it:
+std::auto_ptr<Glib::Error> Glib::SpawnError::throw_func(GError* gobject)
+{
+ return std::auto_ptr<Glib::Error>(new Glib::SpawnError(gobject));
+}
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
diff --git a/libs/glibmm2/glib/glibmm/spawn.h b/libs/glibmm2/glib/glibmm/spawn.h
new file mode 100644
index 0000000000..ae6f651a33
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/spawn.h
@@ -0,0 +1,210 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_SPAWN_H
+#define _GLIBMM_SPAWN_H
+
+
+/* $Id: spawn.hg,v 1.4 2004/03/02 23:29:57 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <string>
+#include <sigc++/sigc++.h>
+#include <glibmm/arrayhandle.h>
+#include <glibmm/error.h>
+
+#include <glibmmconfig.h>
+GLIBMM_USING_STD(string)
+
+
+namespace Glib
+{
+
+typedef GPid Pid;
+
+/** @addtogroup glibmmEnums Enums and Flags */
+
+/**
+ * @ingroup glibmmEnums
+ * @par Bitwise operators:
+ * <tt>%SpawnFlags operator|(SpawnFlags, SpawnFlags)</tt><br>
+ * <tt>%SpawnFlags operator&(SpawnFlags, SpawnFlags)</tt><br>
+ * <tt>%SpawnFlags operator^(SpawnFlags, SpawnFlags)</tt><br>
+ * <tt>%SpawnFlags operator~(SpawnFlags)</tt><br>
+ * <tt>%SpawnFlags& operator|=(SpawnFlags&, SpawnFlags)</tt><br>
+ * <tt>%SpawnFlags& operator&=(SpawnFlags&, SpawnFlags)</tt><br>
+ * <tt>%SpawnFlags& operator^=(SpawnFlags&, SpawnFlags)</tt><br>
+ */
+enum SpawnFlags
+{
+ SPAWN_LEAVE_DESCRIPTORS_OPEN = 1 << 0,
+ SPAWN_DO_NOT_REAP_CHILD = 1 << 1,
+ SPAWN_SEARCH_PATH = 1 << 2,
+ SPAWN_STDOUT_TO_DEV_NULL = 1 << 3,
+ SPAWN_STDERR_TO_DEV_NULL = 1 << 4,
+ SPAWN_CHILD_INHERITS_STDIN = 1 << 5,
+ SPAWN_FILE_AND_ARGV_ZERO = 1 << 6
+};
+
+/** @ingroup glibmmEnums */
+inline SpawnFlags operator|(SpawnFlags lhs, SpawnFlags rhs)
+ { return static_cast<SpawnFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline SpawnFlags operator&(SpawnFlags lhs, SpawnFlags rhs)
+ { return static_cast<SpawnFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline SpawnFlags operator^(SpawnFlags lhs, SpawnFlags rhs)
+ { return static_cast<SpawnFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline SpawnFlags operator~(SpawnFlags flags)
+ { return static_cast<SpawnFlags>(~static_cast<unsigned>(flags)); }
+
+/** @ingroup glibmmEnums */
+inline SpawnFlags& operator|=(SpawnFlags& lhs, SpawnFlags rhs)
+ { return (lhs = static_cast<SpawnFlags>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); }
+
+/** @ingroup glibmmEnums */
+inline SpawnFlags& operator&=(SpawnFlags& lhs, SpawnFlags rhs)
+ { return (lhs = static_cast<SpawnFlags>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); }
+
+/** @ingroup glibmmEnums */
+inline SpawnFlags& operator^=(SpawnFlags& lhs, SpawnFlags rhs)
+ { return (lhs = static_cast<SpawnFlags>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs))); }
+
+
+/** @defgroup Spawn Spawning Processes
+ * Process launching with fork()/exec().
+ * @{
+ */
+
+/** Exception class for errors occuring when spawning processes.
+ */
+class SpawnError : public Glib::Error
+{
+public:
+ enum Code
+ {
+ FORK,
+ READ,
+ CHDIR,
+ ACCES,
+ PERM,
+ TOOBIG,
+ NOEXEC,
+ NAMETOOLONG,
+ NOENT,
+ NOMEM,
+ NOTDIR,
+ LOOP,
+ TXTBUSY,
+ IO,
+ NFILE,
+ MFILE,
+ INVAL,
+ ISDIR,
+ LIBBAD
+ };
+
+ SpawnError(Code error_code, const Glib::ustring& error_message);
+ explicit SpawnError(GError* gobject);
+ Code code() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+private:
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ static void throw_func(GError* gobject);
+#else
+ //When not using exceptions, we just pass the Exception object around without throwing it:
+ static std::auto_ptr<Glib::Error> throw_func(GError* gobject);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ friend void wrap_init(); // uses throw_func()
+#endif
+};
+
+
+void spawn_async_with_pipes(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ const Glib::ArrayHandle<std::string>& envp,
+ SpawnFlags flags = SpawnFlags(0),
+ const sigc::slot<void>& child_setup = sigc::slot<void>(),
+ Pid* child_pid = 0,
+ int* standard_input = 0,
+ int* standard_output = 0,
+ int* standard_error = 0);
+
+void spawn_async_with_pipes(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ SpawnFlags flags = SpawnFlags(0),
+ const sigc::slot<void>& child_setup = sigc::slot<void>(),
+ Pid* child_pid = 0,
+ int* standard_input = 0,
+ int* standard_output = 0,
+ int* standard_error = 0);
+
+void spawn_async(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ const Glib::ArrayHandle<std::string>& envp,
+ SpawnFlags flags = SpawnFlags(0),
+ const sigc::slot<void>& child_setup = sigc::slot<void>(),
+ Pid* child_pid = 0);
+
+void spawn_async(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ SpawnFlags flags = SpawnFlags(0),
+ const sigc::slot<void>& child_setup = sigc::slot<void>(),
+ Pid* child_pid = 0);
+
+void spawn_sync(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ const Glib::ArrayHandle<std::string>& envp,
+ SpawnFlags flags = SpawnFlags(0),
+ const sigc::slot<void>& child_setup = sigc::slot<void>(),
+ std::string* standard_output = 0,
+ std::string* standard_error = 0,
+ int* exit_status = 0);
+
+void spawn_sync(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ SpawnFlags flags = SpawnFlags(0),
+ const sigc::slot<void>& child_setup = sigc::slot<void>(),
+ std::string* standard_output = 0,
+ std::string* standard_error = 0,
+ int* exit_status = 0);
+
+void spawn_command_line_async(const std::string& command_line);
+
+void spawn_command_line_sync(const std::string& command_line,
+ std::string* standard_output = 0,
+ std::string* standard_error = 0,
+ int* exit_status = 0);
+
+void spawn_close_pid(Pid pid);
+
+/** @} group Spawn */
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_SPAWN_H */
+
diff --git a/libs/glibmm2/glib/glibmm/streamiochannel.cc b/libs/glibmm2/glib/glibmm/streamiochannel.cc
new file mode 100644
index 0000000000..f87b9ae83b
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/streamiochannel.cc
@@ -0,0 +1,216 @@
+/* $Id: streamiochannel.cc,v 1.3 2006/05/12 08:08:43 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/streamiochannel.h>
+#include <glib.h>
+#include <fstream>
+#include <iostream>
+
+GLIBMM_USING_STD(ios)
+
+
+namespace Glib
+{
+
+// static
+Glib::RefPtr<StreamIOChannel> StreamIOChannel::create(std::istream& stream)
+{
+ return Glib::RefPtr<StreamIOChannel>(new StreamIOChannel(&stream, 0));
+}
+
+// static
+Glib::RefPtr<StreamIOChannel> StreamIOChannel::create(std::ostream& stream)
+{
+ return Glib::RefPtr<StreamIOChannel>(new StreamIOChannel(0, &stream));
+}
+
+// static
+Glib::RefPtr<StreamIOChannel> StreamIOChannel::create(std::iostream& stream)
+{
+ return Glib::RefPtr<StreamIOChannel>(new StreamIOChannel(&stream, &stream));
+}
+
+StreamIOChannel::StreamIOChannel(std::istream* stream_in, std::ostream* stream_out)
+:
+ stream_in_ (stream_in),
+ stream_out_ (stream_out)
+{
+ get_flags_vfunc(); // initialize GIOChannel flag bits
+}
+
+StreamIOChannel::~StreamIOChannel()
+{}
+
+IOStatus StreamIOChannel::read_vfunc(char* buf, gsize count, gsize& bytes_read)
+{
+ g_return_val_if_fail(stream_in_ != 0, IO_STATUS_ERROR);
+
+ stream_in_->clear();
+ stream_in_->read(buf, count);
+ bytes_read = stream_in_->gcount();
+
+ if(stream_in_->eof())
+ return IO_STATUS_EOF;
+
+ if(stream_in_->fail())
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ throw Glib::Error(G_IO_CHANNEL_ERROR, G_IO_CHANNEL_ERROR_FAILED, "Reading from stream failed");
+ #else
+ return IO_STATUS_ERROR;
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+ return IO_STATUS_NORMAL;
+}
+
+IOStatus StreamIOChannel::write_vfunc(const char* buf, gsize count, gsize& bytes_written)
+{
+ g_return_val_if_fail(stream_out_ != 0, IO_STATUS_ERROR);
+
+ bytes_written = 0;
+
+ stream_out_->clear();
+ stream_out_->write(buf, count);
+
+ if(stream_out_->fail())
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ throw Glib::Error(G_IO_CHANNEL_ERROR, G_IO_CHANNEL_ERROR_FAILED, "Writing to stream failed");
+ #else
+ return IO_STATUS_ERROR;
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+ bytes_written = count; // all or nothing ;)
+
+ return IO_STATUS_NORMAL;
+}
+
+IOStatus StreamIOChannel::seek_vfunc(gint64 offset, SeekType type)
+{
+ std::ios::seekdir direction = std::ios::beg;
+
+ switch(type)
+ {
+ case SEEK_TYPE_SET: direction = std::ios::beg; break;
+ case SEEK_TYPE_CUR: direction = std::ios::cur; break;
+ case SEEK_TYPE_END: direction = std::ios::end; break;
+ }
+
+ bool failed = false;
+
+ if(stream_in_)
+ {
+ stream_in_->clear();
+ stream_in_->seekg(offset, direction);
+ failed = stream_in_->fail();
+ }
+ if(stream_out_)
+ {
+ stream_out_->clear();
+ stream_out_->seekp(offset, direction);
+ failed = (failed || stream_out_->fail());
+ }
+
+ if(failed)
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ throw Glib::Error(G_IO_CHANNEL_ERROR, G_IO_CHANNEL_ERROR_FAILED, "Seeking into stream failed");
+ #else
+ return IO_STATUS_ERROR;
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+ return Glib::IO_STATUS_NORMAL;
+}
+
+IOStatus StreamIOChannel::close_vfunc()
+{
+ bool failed = false;
+
+ if(std::fstream *const stream = dynamic_cast<std::fstream*>(stream_in_))
+ {
+ stream->clear();
+ stream->close();
+ failed = stream->fail();
+ }
+ else if(std::ifstream *const stream = dynamic_cast<std::ifstream*>(stream_in_))
+ {
+ stream->clear();
+ stream->close();
+ failed = stream->fail();
+ }
+ else if(std::ofstream *const stream = dynamic_cast<std::ofstream*>(stream_out_))
+ {
+ stream->clear();
+ stream->close();
+ failed = stream->fail();
+ }
+ else
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ throw Glib::Error(G_IO_CHANNEL_ERROR, G_IO_CHANNEL_ERROR_FAILED,
+ "Attempt to close non-file stream");
+ #else
+ return IO_STATUS_ERROR;
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+ if(failed)
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ throw Glib::Error(G_IO_CHANNEL_ERROR, G_IO_CHANNEL_ERROR_FAILED, "Failed to close stream");
+ #else
+ return IO_STATUS_ERROR;
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+ return IO_STATUS_NORMAL;
+}
+
+IOStatus StreamIOChannel::set_flags_vfunc(IOFlags)
+{
+ return IO_STATUS_NORMAL;
+}
+
+IOFlags StreamIOChannel::get_flags_vfunc()
+{
+ gobj()->is_seekable = 1;
+ gobj()->is_readable = (stream_in_ != 0);
+ gobj()->is_writeable = (stream_out_ != 0);
+
+ IOFlags flags = IO_FLAG_IS_SEEKABLE;
+
+ if(stream_in_)
+ flags |= IO_FLAG_IS_READABLE;
+ if(stream_out_)
+ flags |= IO_FLAG_IS_WRITEABLE;
+
+ return flags;
+}
+
+Glib::RefPtr<Glib::Source> StreamIOChannel::create_watch_vfunc(IOCondition)
+{
+ g_warning("Glib::StreamIOChannel::create_watch_vfunc() not implemented");
+ return Glib::RefPtr<Glib::Source>();
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/streamiochannel.h b/libs/glibmm2/glib/glibmm/streamiochannel.h
new file mode 100644
index 0000000000..f1c807eb6b
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/streamiochannel.h
@@ -0,0 +1,67 @@
+// -*- c++ -*-
+/* $Id: streamiochannel.h,v 1.2 2003/01/22 12:08:52 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef _GLIBMM_STREAMIOCHANNEL_H
+#define _GLIBMM_STREAMIOCHANNEL_H
+
+#include <glibmm/iochannel.h>
+#include <glibmmconfig.h>
+#include <iosfwd>
+
+GLIBMM_USING_STD(istream)
+GLIBMM_USING_STD(ostream)
+GLIBMM_USING_STD(iostream)
+
+
+namespace Glib
+{
+
+/** This whole class is deprecated in glibmm&nbsp;2.2.
+ * See the Glib::IOChannel documentation for an explanation.
+ */
+class StreamIOChannel : public Glib::IOChannel
+{
+public:
+ virtual ~StreamIOChannel();
+
+ static Glib::RefPtr<StreamIOChannel> create(std::istream& stream);
+ static Glib::RefPtr<StreamIOChannel> create(std::ostream& stream);
+ static Glib::RefPtr<StreamIOChannel> create(std::iostream& stream);
+
+protected:
+ std::istream* stream_in_;
+ std::ostream* stream_out_;
+
+ StreamIOChannel(std::istream* stream_in, std::ostream* stream_out);
+
+ virtual IOStatus read_vfunc(char* buf, gsize count, gsize& bytes_read);
+ virtual IOStatus write_vfunc(const char* buf, gsize count, gsize& bytes_written);
+ virtual IOStatus seek_vfunc(gint64 offset, SeekType type);
+ virtual IOStatus close_vfunc();
+ virtual IOStatus set_flags_vfunc(IOFlags flags);
+ virtual IOFlags get_flags_vfunc();
+ virtual Glib::RefPtr<Glib::Source> create_watch_vfunc(IOCondition cond);
+};
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_STREAMIOCHANNEL_H */
+
diff --git a/libs/glibmm2/glib/glibmm/stringutils.cc b/libs/glibmm2/glib/glibmm/stringutils.cc
new file mode 100644
index 0000000000..df47a993c8
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/stringutils.cc
@@ -0,0 +1,128 @@
+// -*- c++ -*-
+/* $Id: stringutils.cc,v 1.3 2006/05/12 08:08:43 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/stringutils.h>
+#include <glibmm/utility.h>
+#include <glib.h>
+#include <cerrno>
+#include <stdexcept>
+#include <glibmmconfig.h>
+
+GLIBMM_USING_STD(out_of_range)
+GLIBMM_USING_STD(overflow_error)
+GLIBMM_USING_STD(underflow_error)
+
+
+bool Glib::str_has_prefix(const std::string& str, const std::string& prefix)
+{
+ return g_str_has_prefix(str.c_str(), prefix.c_str());
+}
+
+bool Glib::str_has_suffix(const std::string& str, const std::string& suffix)
+{
+ return g_str_has_suffix(str.c_str(), suffix.c_str());
+}
+
+double Glib::Ascii::strtod(const std::string& str)
+{
+ std::string::size_type dummy;
+ return Glib::Ascii::strtod(str, dummy, 0);
+}
+
+double Glib::Ascii::strtod(const std::string& str,
+ std::string::size_type& end_index,
+ std::string::size_type start_index)
+{
+ if(start_index > str.size())
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ throw std::out_of_range("out of range (strtod): start_index > str.size()");
+ #else
+ return 0;
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+ const char *const bufptr = str.c_str();
+ char* endptr = 0;
+
+ const double result = g_ascii_strtod(bufptr + start_index, &endptr);
+ const int err_no = errno;
+
+ if(err_no != 0)
+ {
+ g_return_val_if_fail(err_no == ERANGE, result);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ //Interpret the result in the event of an error:
+ if(result > 0.0)
+ throw std::overflow_error("overflow (strtod): positive number too large");
+
+ if(result < 0.0)
+ throw std::overflow_error("overflow (strtod): negative number too large");
+
+ throw std::underflow_error("underflow (strtod): number too small");
+ #else
+ return result;
+ #endif // GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+ if(endptr)
+ end_index = endptr - bufptr;
+ else
+ end_index = str.size();
+
+ return result;
+}
+
+std::string Glib::Ascii::dtostr(double d)
+{
+ char buf[G_ASCII_DTOSTR_BUF_SIZE];
+
+ return g_ascii_dtostr(buf, sizeof(buf), d);
+}
+
+std::string Glib::strescape(const std::string& source)
+{
+ const Glib::ScopedPtr<char> buf (g_strescape(source.c_str(), 0));
+ return buf.get();
+}
+
+std::string Glib::strescape(const std::string& source, const std::string& exceptions)
+{
+ const Glib::ScopedPtr<char> buf (g_strescape(source.c_str(), exceptions.c_str()));
+ return buf.get();
+}
+
+std::string Glib::strcompress(const std::string& source)
+{
+ const Glib::ScopedPtr<char> buf (g_strcompress(source.c_str()));
+ return buf.get();
+}
+
+Glib::ustring Glib::strerror(int errnum)
+{
+ return g_strerror(errnum);
+}
+
+Glib::ustring Glib::strsignal(int signum)
+{
+ return g_strsignal(signum);
+}
+
diff --git a/libs/glibmm2/glib/glibmm/stringutils.h b/libs/glibmm2/glib/glibmm/stringutils.h
new file mode 100644
index 0000000000..2e1fd52832
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/stringutils.h
@@ -0,0 +1,184 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_STRINGUTILS_H
+#define _GLIBMM_STRINGUTILS_H
+
+/* $Id: stringutils.h,v 1.2 2004/06/07 17:26:39 daniel Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/ustring.h>
+
+
+namespace Glib
+{
+
+/** @defgroup StringUtils String Utility Functions
+ *
+ * This section describes a number of utility functions for creating
+ * and manipulating strings, as well as other string-related stuff.
+ */
+
+/** Looks whether the string @a str begins with @a prefix.
+ * @ingroup StringUtils
+ * @param str A string.
+ * @param prefix The prefix to look for.
+ * @return <tt>true</tt> if @a str begins with @a prefix, <tt>false</tt> otherwise.
+ */
+bool str_has_prefix(const std::string& str, const std::string& prefix);
+
+/** Looks whether the string @a str ends with @a suffix.
+ * @ingroup StringUtils
+ * @param str A string.
+ * @param suffix The suffix to look for.
+ * @return <tt>true</tt> if @a str ends with @a suffix, <tt>false</tt> otherwise.
+ */
+bool str_has_suffix(const std::string& str, const std::string& suffix);
+
+
+namespace Ascii
+{
+
+/** Converts a string to a <tt>double</tt> value.
+ * @ingroup StringUtils
+ * This function behaves like the standard <tt>%strtod()</tt> function does in
+ * the C&nbsp;locale. It does this without actually changing the current
+ * locale, since that would not be thread-safe.
+ *
+ * This function is typically used when reading configuration files or other
+ * non-user input that should be locale independent. To handle input from the
+ * user you should normally use locale-sensitive C++ streams.
+ *
+ * To convert from a string to <tt>double</tt> in a locale-insensitive way, use
+ * Glib::Ascii::dtostr().
+ *
+ * @param str The string to convert to a numeric value.
+ * @return The <tt>double</tt> value.
+ * @throw std::overflow_error Thrown if the correct value would cause overflow.
+ * @throw std::underflow_error Thrown if the correct value would cause underflow.
+ */
+double strtod(const std::string& str);
+
+/** Converts a string to a <tt>double</tt> value.
+ * @ingroup StringUtils
+ * This function behaves like the standard <tt>%strtod()</tt> function does in
+ * the C&nbsp;locale. It does this without actually changing the current
+ * locale, since that would not be thread-safe.
+ *
+ * This function is typically used when reading configuration files or other
+ * non-user input that should be locale independent. To handle input from the
+ * user you should normally use locale-sensitive C++ streams.
+ *
+ * To convert from a string to <tt>double</tt> in a locale-insensitive way, use
+ * Glib::Ascii::dtostr().
+ *
+ * @param str The string to convert to a numeric value.
+ * @param start_index The index of the first character that should be used in the conversion.
+ * @retval end_index The index of the character after the last character used in the conversion.
+ * @return The <tt>double</tt> value.
+ * @throw std::out_of_range Thrown if @a start_index is out of range.
+ * @throw std::overflow_error Thrown if the correct value would cause overflow.
+ * @throw std::underflow_error Thrown if the correct value would cause underflow.
+ */
+double strtod(const std::string& str,
+ std::string::size_type& end_index,
+ std::string::size_type start_index = 0);
+
+/** Converts a <tt>double</tt> to a string, using the <tt>'.'</tt> as decimal point.
+ * @ingroup StringUtils
+ * This functions generates enough precision that converting the string back
+ * using Glib::Ascii::strtod() gives the same machine-number (on machines with
+ * IEEE compatible 64bit doubles).
+ *
+ * @param d The <tt>double</tt> value to convert.
+ * @return The converted string.
+ */
+std::string dtostr(double d);
+
+} // namespace Ascii
+
+
+/** Escapes all special characters in the string.
+ * @ingroup StringUtils
+ * Escapes the special characters <tt>'\\b'</tt>, <tt>'\\f'</tt>, <tt>'\\n'</tt>,
+ * <tt>'\\r'</tt>, <tt>'\\t'</tt>, <tt>'\\'</tt> and <tt>'"'</tt> in the string
+ * @a source by inserting a <tt>'\\'</tt> before them. Additionally all characters
+ * in the range <tt>0x01</tt>&nbsp;-&nbsp;<tt>0x1F</tt> (everything below <tt>SPACE</tt>)
+ * and in the range <tt>0x80</tt>&nbsp;-&nbsp;<tt>0xFF</tt> (all non-ASCII chars)
+ * are replaced with a <tt>'\\'</tt> followed by their octal representation.
+ *
+ * Glib::strcompress() does the reverse conversion.
+ *
+ * @param source A string to escape.
+ * @return A copy of @a source with certain characters escaped. See above.
+ */
+std::string strescape(const std::string& source);
+
+/** Escapes all special characters in the string.
+ * @ingroup StringUtils
+ * Escapes the special characters <tt>'\\b'</tt>, <tt>'\\f'</tt>, <tt>'\\n'</tt>,
+ * <tt>'\\r'</tt>, <tt>'\\t'</tt>, <tt>'\\'</tt> and <tt>'"'</tt> in the string
+ * @a source by inserting a <tt>'\\'</tt> before them. Additionally all characters
+ * in the range <tt>0x01</tt>&nbsp;-&nbsp;<tt>0x1F</tt> (everything below <tt>SPACE</tt>)
+ * and in the range <tt>0x80</tt>&nbsp;-&nbsp;<tt>0xFF</tt> (all non-ASCII chars)
+ * are replaced with a <tt>'\\'</tt> followed by their octal representation.
+ * Characters supplied in @a exceptions are not escaped.
+ *
+ * Glib::strcompress() does the reverse conversion.
+ *
+ * @param source A string to escape.
+ * @param exceptions A string of characters not to escape in @a source.
+ * @return A copy of @a source with certain characters escaped. See above.
+ */
+std::string strescape(const std::string& source, const std::string& exceptions);
+
+/** Replaces all escaped characters with their one byte equivalent.
+ * @ingroup StringUtils
+ * This function does the reverse conversion of Glib::strescape().
+ *
+ * @param source A string to compress.
+ * @return A copy of @a source with all escaped characters compressed.
+ */
+std::string strcompress(const std::string& source);
+
+/** Returns a string corresponding to the given error code, e.g.\ <tt>"no such process"</tt>.
+ * @ingroup StringUtils
+ * This function is included since not all platforms support the
+ * <tt>%strerror()</tt> function.
+ *
+ * @param errnum The system error number. See the standard C <tt>errno</tt> documentation.
+ * @return A string describing the error code. If the error code is unknown,
+ * <tt>&quot;unknown error (<em>\<errnum\></em>)&quot;</tt> is returned.
+ */
+Glib::ustring strerror(int errnum);
+
+/** Returns a string describing the given signal, e.g.\ <tt>"Segmentation fault"</tt>.
+ * @ingroup StringUtils
+ * This function is included since not all platforms support the
+ * <tt>%strsignal()</tt> function.
+ *
+ * @param signum The signal number. See the <tt>signal()</tt> documentation.
+ * @return A string describing the signal. If the signal is unknown,
+ * <tt>&quot;unknown signal (<em>\<signum\></em>)&quot;</tt> is returned.
+ */
+Glib::ustring strsignal(int signum);
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_STRINGUTILS_H */
+
diff --git a/libs/glibmm2/glib/glibmm/thread.cc b/libs/glibmm2/glib/glibmm/thread.cc
new file mode 100644
index 0000000000..0bd41232b3
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/thread.cc
@@ -0,0 +1,412 @@
+// Generated by gtkmmproc -- DO NOT MODIFY!
+
+
+#include <glibmm/thread.h>
+#include <glibmm/private/thread_p.h>
+
+// -*- c++ -*-
+/* $Id: thread.ccg,v 1.9 2006/05/12 08:08:44 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/exceptionhandler.h>
+#include <glib/gmessages.h>
+
+
+namespace
+{
+
+extern "C"
+{
+
+static void* call_thread_entry_slot(void* data)
+{
+ sigc::slot_base *const slot = reinterpret_cast<sigc::slot_base*>(data);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ // Recreate the specific slot, and drop the reference obtained by create().
+ (*static_cast<sigc::slot<void>*>(slot))();
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(Glib::Thread::Exit&)
+ {
+ // Just exit from the thread. The Thread::Exit exception
+ // is our sane C++ replacement of g_thread_exit().
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ delete slot;
+ return 0;
+}
+
+} //extern "C"
+
+} // anonymous namespace
+
+
+namespace Glib
+{
+
+// internal
+void thread_init_impl()
+{
+ // Make sure the exception map is initialized before creating any thread.
+ Glib::Error::register_init();
+}
+
+
+/**** Glib::Thread *********************************************************/
+
+// static
+Thread* Thread::create(const sigc::slot<void>& slot, bool joinable)
+{
+ // Make a copy of slot on the heap
+ sigc::slot_base *const slot_copy = new sigc::slot<void>(slot);
+
+ GError* error = 0;
+
+ GThread *const thread = g_thread_create(
+ &call_thread_entry_slot, slot_copy, joinable, &error);
+
+ if(error)
+ {
+ delete slot_copy;
+ Glib::Error::throw_exception(error);
+ }
+
+ return reinterpret_cast<Thread*>(thread);
+}
+
+// static
+Thread* Thread::create(const sigc::slot<void>& slot, unsigned long stack_size,
+ bool joinable, bool bound, ThreadPriority priority)
+{
+ // Make a copy of slot on the heap
+ sigc::slot_base *const slot_copy = new sigc::slot<void>(slot);
+
+ GError* error = 0;
+
+ GThread *const thread = g_thread_create_full(
+ &call_thread_entry_slot, slot_copy, stack_size, joinable,
+ bound, (GThreadPriority) priority, &error);
+
+ if(error)
+ {
+ delete slot_copy;
+ Glib::Error::throw_exception(error);
+ }
+
+ return reinterpret_cast<Thread*>(thread);
+}
+
+// static
+Thread* Thread::self()
+{
+ return reinterpret_cast<Thread*>(g_thread_self());
+}
+
+bool Thread::joinable() const
+{
+ return gobject_.joinable;
+}
+
+void Thread::join()
+{
+ g_thread_join(&gobject_);
+}
+
+void Thread::set_priority(ThreadPriority priority)
+{
+ g_thread_set_priority(&gobject_, (GThreadPriority) priority);
+}
+
+ThreadPriority Thread::get_priority() const
+{
+ return (ThreadPriority) gobject_.priority;
+}
+
+// static
+void Thread::yield()
+{
+ g_thread_yield();
+}
+
+Thread* wrap(GThread* gobject)
+{
+ return reinterpret_cast<Thread*>(gobject);
+}
+
+
+/**** Glib::StaticMutex ****************************************************/
+
+void StaticMutex::lock()
+{
+ g_static_mutex_lock(&gobject_);
+}
+
+bool StaticMutex::trylock()
+{
+ return g_static_mutex_trylock(&gobject_);
+}
+
+void StaticMutex::unlock()
+{
+ g_static_mutex_unlock(&gobject_);
+}
+
+StaticMutex::operator Mutex&()
+{
+ // If GStaticMutex is implemented as struct (e.g. on Linux), its first struct
+ // member (runtime_mutex) is a GMutex pointer. If the gthread implementation
+ // is native (i.e. the vtable pointer passed to g_thread_init() was 0), then
+ // the runtime_mutex pointer is unused, and the rest of the GStaticMutex
+ // struct resembles the mutex data.
+ //
+ // On Win32, GStaticMutex is just a typedef to struct _GMutex*. Either way,
+ // the first sizeof(GMutex*) bytes of GStaticMutex always resemble a GMutex
+ // pointer. The gthread implementation relies on that, and we'll also do so.
+
+ GMutex*& runtime_mutex = reinterpret_cast<GMutex*&>(gobject_);
+
+ // Fortunately, it cannot hurt if we set this to the GMutex pointer returned
+ // by g_static_mutex_get_mutex(). Either we just overwrite it with the same
+ // value, or it was unused anyway. Doing that allows casting the pointer
+ // location to a Glib::Mutex reference (its only data member is a GMutex*).
+
+ runtime_mutex = g_static_mutex_get_mutex(&gobject_);
+
+ return reinterpret_cast<Mutex&>(runtime_mutex);
+}
+
+
+/**** Glib::Mutex **********************************************************/
+
+Mutex::Mutex()
+:
+ gobject_ (g_mutex_new())
+{}
+
+Mutex::~Mutex()
+{
+ g_mutex_free(gobject_);
+}
+
+void Mutex::lock()
+{
+ g_mutex_lock(gobject_);
+}
+
+bool Mutex::trylock()
+{
+ return g_mutex_trylock(gobject_);
+}
+
+void Mutex::unlock()
+{
+ g_mutex_unlock(gobject_);
+}
+
+
+/**** Glib::StaticRecMutex *************************************************/
+
+void StaticRecMutex::lock()
+{
+ g_static_rec_mutex_lock(&gobject_);
+}
+
+bool StaticRecMutex::trylock()
+{
+ return g_static_rec_mutex_trylock(&gobject_);
+}
+
+void StaticRecMutex::unlock()
+{
+ g_static_rec_mutex_unlock(&gobject_);
+}
+
+void StaticRecMutex::lock_full(unsigned int depth)
+{
+ g_static_rec_mutex_lock_full(&gobject_, depth);
+}
+
+unsigned int StaticRecMutex::unlock_full()
+{
+ return g_static_rec_mutex_unlock_full(&gobject_);
+}
+
+StaticRecMutex::operator RecMutex&()
+{
+ return static_cast<RecMutex&>(*this);
+}
+
+
+/**** Glib::RecMutex *******************************************************/
+
+RecMutex::RecMutex()
+{
+ g_static_rec_mutex_init(&gobject_);
+
+ // GLib doesn't have GRecMutex, only GStaticRecMutex. Force initialization
+ // of the mutex now, to mimic the behaviour of a (hypothetical) GRecMutex.
+ g_static_mutex_get_mutex(&gobject_.mutex);
+}
+
+RecMutex::~RecMutex()
+{
+ g_static_rec_mutex_free(&gobject_);
+}
+
+
+/**** Glib::StaticRWLock ***************************************************/
+
+void StaticRWLock::reader_lock()
+{
+ g_static_rw_lock_reader_lock(&gobject_);
+}
+
+bool StaticRWLock::reader_trylock()
+{
+ return g_static_rw_lock_reader_trylock(&gobject_);
+}
+
+void StaticRWLock::reader_unlock()
+{
+ g_static_rw_lock_reader_unlock(&gobject_);
+}
+
+void StaticRWLock::writer_lock()
+{
+ g_static_rw_lock_writer_lock(&gobject_);
+}
+
+bool StaticRWLock::writer_trylock()
+{
+ return g_static_rw_lock_writer_trylock(&gobject_);
+}
+
+void StaticRWLock::writer_unlock()
+{
+ g_static_rw_lock_writer_unlock(&gobject_);
+}
+
+StaticRWLock::operator RWLock&()
+{
+ return static_cast<RWLock&>(*this);
+}
+
+
+/**** Glib::RWLock *********************************************************/
+
+RWLock::RWLock()
+{
+ g_static_rw_lock_init(&gobject_);
+
+ // GLib doesn't have GRWLock, only GStaticRWLock. Force initialization
+ // of the mutex and the condition variables now, to mimic the behaviour
+ // of a (hypothetical) GRWLock.
+
+ if(g_static_mutex_get_mutex(&gobject_.mutex))
+ {
+ gobject_.read_cond = g_cond_new();
+ gobject_.write_cond = g_cond_new();
+ }
+}
+
+RWLock::~RWLock()
+{
+ g_static_rw_lock_free(&gobject_);
+}
+
+
+/**** Glib::Cond ***********************************************************/
+
+Cond::Cond()
+:
+ gobject_ (g_cond_new())
+{}
+
+Cond::~Cond()
+{
+ g_cond_free(gobject_);
+}
+
+void Cond::signal()
+{
+ g_cond_signal(gobject_);
+}
+
+void Cond::broadcast()
+{
+ g_cond_broadcast(gobject_);
+}
+
+void Cond::wait(Mutex& mutex)
+{
+ g_cond_wait(gobject_, mutex.gobj());
+}
+
+bool Cond::timed_wait(Mutex& mutex, const Glib::TimeVal& abs_time)
+{
+ return g_cond_timed_wait(gobject_, mutex.gobj(), const_cast<Glib::TimeVal*>(&abs_time));
+}
+
+
+} // namespace Glib
+
+
+namespace
+{
+} // anonymous namespace
+
+
+Glib::ThreadError::ThreadError(Glib::ThreadError::Code error_code, const Glib::ustring& error_message)
+:
+ Glib::Error (G_THREAD_ERROR, error_code, error_message)
+{}
+
+Glib::ThreadError::ThreadError(GError* gobject)
+:
+ Glib::Error (gobject)
+{}
+
+Glib::ThreadError::Code Glib::ThreadError::code() const
+{
+ return static_cast<Code>(Glib::Error::code());
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+void Glib::ThreadError::throw_func(GError* gobject)
+{
+ throw Glib::ThreadError(gobject);
+}
+#else
+//When not using exceptions, we just pass the Exception object around without throwing it:
+std::auto_ptr<Glib::Error> Glib::ThreadError::throw_func(GError* gobject)
+{
+ return std::auto_ptr<Glib::Error>(new Glib::ThreadError(gobject));
+}
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
diff --git a/libs/glibmm2/glib/glibmm/thread.h b/libs/glibmm2/glib/glibmm/thread.h
new file mode 100644
index 0000000000..fed779fc47
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/thread.h
@@ -0,0 +1,1089 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_THREAD_H
+#define _GLIBMM_THREAD_H
+
+
+/* $Id: thread.hg,v 1.13 2005/01/21 12:48:05 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <glib/gthread.h>
+#include <cstddef>
+
+#include <sigc++/sigc++.h>
+#include <glibmm/error.h>
+#include <glibmm/timeval.h>
+
+/* Shadow THREAD_PRIORITY_NORMAL macro (from winbase.h).
+ */
+#if defined(THREAD_PRIORITY_NORMAL) && !defined(GLIBMM_MACRO_SHADOW_THREAD_PRIORITY_NORMAL)
+enum { GLIBMM_MACRO_DEFINITION_THREAD_PRIORITY_NORMAL = THREAD_PRIORITY_NORMAL };
+#undef THREAD_PRIORITY_NORMAL
+enum { THREAD_PRIORITY_NORMAL = GLIBMM_MACRO_DEFINITION_THREAD_PRIORITY_NORMAL };
+#define THREAD_PRIORITY_NORMAL THREAD_PRIORITY_NORMAL
+#define GLIBMM_MACRO_SHADOW_THREAD_PRIORITY_NORMAL 1
+#endif
+
+
+/** Initializer macro for Glib::StaticMutex.
+ * @relates Glib::StaticMutex
+ * @hideinitializer
+ */
+#define GLIBMM_STATIC_MUTEX_INIT { G_STATIC_MUTEX_INIT }
+
+/** Initializer macro for Glib::StaticRecMutex.
+ * @relates Glib::StaticRecMutex
+ * @hideinitializer
+ */
+#define GLIBMM_STATIC_REC_MUTEX_INIT { G_STATIC_REC_MUTEX_INIT }
+
+/** Initializer macro for Glib::StaticRWLock.
+ * @relates Glib::StaticRWLock
+ * @hideinitializer
+ */
+#define GLIBMM_STATIC_RW_LOCK_INIT { G_STATIC_RW_LOCK_INIT }
+
+/** Initializer macro for Glib::StaticPrivate.
+ * @relates Glib::StaticPrivate
+ * @hideinitializer
+ */
+#define GLIBMM_STATIC_PRIVATE_INIT { G_STATIC_PRIVATE_INIT }
+
+
+namespace Glib
+{
+
+/** @addtogroup glibmmEnums Enums and Flags */
+
+/** Specifies the priority of a thread.
+ * @note It is not guaranteed, that threads with different priorities really
+ * behave accordingly. On some systems (e.g. Linux) only <tt>root</tt> can
+ * increase priorities. On other systems (e.g. Solaris) there doesn't seem to
+ * be different scheduling for different priorities. All in all try to avoid
+ * being dependent on priorities.
+ * @ingroup glibmmEnums
+ */
+enum ThreadPriority
+{
+ THREAD_PRIORITY_LOW,
+ THREAD_PRIORITY_NORMAL,
+ THREAD_PRIORITY_HIGH,
+ THREAD_PRIORITY_URGENT
+};
+
+
+/*! @var ThreadPriority THREAD_PRIORITY_LOW
+ * A priority lower than normal.
+ */
+/*! @var ThreadPriority THREAD_PRIORITY_NORMAL
+ * The default priority.
+ */
+/*! @var ThreadPriority THREAD_PRIORITY_HIGH
+ * A priority higher than normal.
+ */
+/*! @var ThreadPriority THREAD_PRIORITY_URGENT
+ * The highest priority.
+ */
+
+
+/** @defgroup Threads Threads
+ * Thread abstraction; including threads, different mutexes,
+ * conditions and thread private data.
+ * @{
+ */
+
+enum NotLock { NOT_LOCK };
+enum TryLock { TRY_LOCK };
+
+/** Initializes the GLib thread system.
+ * Before you use a thread related function in glibmm, you should initialize
+ * the thread system. This is done by calling Glib::thread_init().
+ *
+ * @note You should only call thread_init() with a non-<tt>0</tt> parameter
+ * if you really know what you are doing.
+ *
+ * @note thread_init() must not be called directly or indirectly as
+ * a callback from glibmm. Also no mutexes may be currently locked while
+ * calling thread_init().
+ *
+ * thread_init() might only be called once. On the second call it will
+ * abort with an error. If you want to make sure that the thread system
+ * is initialized, you can do that too:
+ * @code
+ * if(!Glib::thread_supported()) Glib::thread_init();
+ * @endcode
+ * After that line either the thread system is initialized, or the program
+ * will abort if no thread system is available in GLib, i.e. either
+ * @c G_THREADS_ENABLED is not defined or @c G_THREADS_IMPL_NONE is defined.
+ *
+ * If no thread system is available and @a vtable is <tt>0</tt> or if not all
+ * elements of @a vtable are non-<tt>0</tt>, then thread_init() will abort.
+ *
+ * @note To use thread_init() in your program, you have to link with the
+ * libraries that the command <tt>pkg-config&nbsp;--libs&nbsp;gthread-2.0</tt>
+ * outputs. This is not the case for all the other thread related functions
+ * of glibmm. Those can be used without having to link with the thread
+ * libraries. (You @em have to link with <tt>gthread-2.0</tt> if you actually
+ * want to use threads in your application, though.)
+ *
+ * @param vtable A function table of type @c GThreadFunctions, that provides
+ * the entry points to the thread system to be used.
+ */
+inline void thread_init(GThreadFunctions* vtable = 0);
+
+/** Returns whether the thread system is initialized.
+ * @return @c true, if the thread system is initialized.
+ */
+inline bool thread_supported();
+
+
+class Mutex;
+class RecMutex;
+class RWLock;
+struct StaticMutex;
+struct StaticRecMutex;
+struct StaticRWLock;
+
+
+/** Exception class for thread-related errors.
+ */
+class ThreadError : public Glib::Error
+{
+public:
+ enum Code
+ {
+ AGAIN
+ };
+
+ ThreadError(Code error_code, const Glib::ustring& error_message);
+ explicit ThreadError(GError* gobject);
+ Code code() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+private:
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ static void throw_func(GError* gobject);
+#else
+ //When not using exceptions, we just pass the Exception object around without throwing it:
+ static std::auto_ptr<Glib::Error> throw_func(GError* gobject);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ friend void wrap_init(); // uses throw_func()
+#endif
+};
+
+
+/** Represents a running thread.
+ * An instance of this class can only be obtained with create(), self(),
+ * or wrap(GThread*). It's not possible to delete a Thread object. If the
+ * thread is @em not joinable, its resources will be freed automatically
+ * when it exits. Otherwise, if the thread @em is joinable, you must call
+ * join() to avoid a memory leak.
+ *
+ * @note g_thread_exit() is not wrapped, because that function exits a thread
+ * without any cleanup. That's especially dangerous in C++ code, since the
+ * destructors of automatic objects won't be invoked. Instead, you can throw
+ * a Thread::Exit exception, which will be caught by the internal thread
+ * entry function.
+ *
+ * @note You might have noticed that the thread entry slot doesn't have the
+ * usual void* return value. If you want to return any data from your thread
+ * you can pass an additional output argument to the thread's entry slot.
+ */
+class Thread
+{
+public:
+ class Exit;
+
+ /** Creates a new thread with the priority <tt>THREAD_PRIORITY_NORMAL</tt>.
+ * If @a joinable is @c true, you can wait for this thread's termination by
+ * calling join(). Otherwise the thread will just disappear, when ready.
+ *
+ * The new thread executes the function or method @a slot points to. You can
+ * pass additional arguments using sigc::bind(). If the thread was created
+ * successfully, it is returned, otherwise a ThreadError exception is thrown.
+ *
+ * @param slot A slot to execute in the new thread.
+ * @param joinable Should this thread be joinable?
+ * @return The new Thread* on success.
+ * @throw Glib::ThreadError
+ */
+ static Thread* create(const sigc::slot<void>& slot, bool joinable);
+
+ /** Creates a new thread with the priority @a priority. The stack gets the
+ * size @a stack_size or the default value for the current platform, if
+ * @a stack_size is <tt>0</tt>.
+ *
+ * If @a joinable is @c true, you can wait for this thread's termination by
+ * calling join(). Otherwise the thread will just disappear, when ready.
+ * If @a bound is @c true, this thread will be scheduled in the system scope,
+ * otherwise the implementation is free to do scheduling in the process
+ * scope. The first variant is more expensive resource-wise, but generally
+ * faster. On some systems (e.g. Linux) all threads are bound.
+ *
+ * The new thread executes the function or method @a slot points to. You can
+ * pass additional arguments using sigc::bind(). If the thread was created
+ * successfully, it is returned.
+ *
+ * @note It is not guaranteed, that threads with different priorities really
+ * behave accordingly. On some systems (e.g. Linux) only root can increase
+ * priorities. On other systems (e.g. Solaris) there doesn't seem to be
+ * different scheduling for different priorities. All in all try to avoid
+ * being dependent on priorities. Use <tt>Glib::THREAD_PRIORITY_NORMAL</tt>
+ * here as a default.
+ *
+ * @note Only use the extended
+ * create(const sigc::slot<void>&, unsigned long, bool, bool, ThreadPriority)
+ * function, when you really can't use the simple
+ * create(const sigc::slot<void>&, bool)
+ * instead. The latter overload does not take @a stack_size, @a bound and
+ * @a priority as arguments, as they should only be used for cases, where
+ * it is inevitable.
+ *
+ * @param slot A slot to execute in the new thread.
+ * @param stack_size A stack size for the new thread, or <tt>0</tt>.
+ * @param joinable Should this thread be joinable?
+ * @param bound Should this thread be bound to a system thread?
+ * @param priority A priority for the thread.
+ * @return The new Thread* on success.
+ * @throw Glib::ThreadError
+ */
+ static Thread* create(const sigc::slot<void>& slot, unsigned long stack_size,
+ bool joinable, bool bound, ThreadPriority priority);
+
+ /** Returns the Thread* corresponding to the calling thread.
+ * @return The current thread.
+ */
+ static Thread* self();
+
+ /** Returns whether the thread is joinable.
+ * @return Whether the thread is joinable.
+ */
+ bool joinable() const;
+
+ /** Waits until the thread finishes.
+ * Waits until the thread finishes, i.e. the slot, as given to create(),
+ * returns or g_thread_exit() is called by the thread. (Calling
+ * g_thread_exit() in a C++ program should be avoided.) All resources of
+ * the thread including the Glib::Thread object are released. The thread
+ * must have been created with <tt>joinable&nbsp;=&nbsp;true</tt>.
+ */
+ void join();
+
+ /** Changes the priority of the thread to @a priority.
+ * @note It is not guaranteed, that threads with different priorities really
+ * behave accordingly. On some systems (e.g. Linux) only @c root can
+ * increase priorities. On other systems (e.g. Solaris) there doesn't seem
+ * to be different scheduling for different priorities. All in all try to
+ * avoid being dependent on priorities.
+ * @param priority A new priority for the thread.
+ */
+ void set_priority(ThreadPriority priority);
+
+ /** Returns the priority of the thread.
+ * @return The thread's priority.
+ */
+ ThreadPriority get_priority() const;
+
+ /** Gives way to other threads waiting to be scheduled.
+ * This function is often used as a method to make busy wait less evil. But
+ * in most cases, you will encounter, there are better methods to do that.
+ * So in general you shouldn't use this function.
+ */
+ static void yield();
+
+ GThread* gobj() { return &gobject_; }
+ const GThread* gobj() const { return &gobject_; }
+
+private:
+ GThread gobject_;
+
+ // Glib::Thread can neither be constructed nor deleted.
+ Thread();
+ void operator delete(void*, size_t);
+
+ // noncopyable
+ Thread(const Thread&);
+ Thread& operator=(const Thread&);
+};
+
+/** %Exception class used to exit from a thread.
+ * @code
+ * throw Glib::Thread::Exit();
+ * @endcode
+ * Write this if you want to exit from a thread created by Thread::create().
+ * Of course you must make sure not to catch Thread::Exit by accident, i.e.
+ * when using <tt>catch(...)</tt> somewhere in your code.
+ */
+class Thread::Exit
+{};
+
+/** @relates Glib::Thread */
+Thread* wrap(GThread* gobject);
+
+
+/** Like Glib::Mutex, but can be defined at compile time.
+ * Use @c GLIBMM_STATIC_MUTEX_INIT to initialize a StaticMutex:
+ * @code
+ * Glib::StaticMutex mutex = GLIBMM_STATIC_MUTEX_INIT;
+ * @endcode
+ * A StaticMutex can be used without calling Glib::thread_init(), it will
+ * silently do nothing then. That will also work when using the implicit
+ * conversion to Mutex&, thus you can safely use Mutex::Lock with a
+ * StaticMutex.
+ */
+struct StaticMutex
+{
+ void lock();
+ bool trylock();
+ void unlock();
+
+ operator Mutex&();
+
+ GStaticMutex* gobj() { return &gobject_; }
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ // Must be public to allow initialization at compile time.
+ GStaticMutex gobject_;
+#endif
+};
+
+/** Represents a mutex (mutual exclusion).
+ * It can be used to protect data against shared access. Try to use
+ * Mutex::Lock instead of calling lock() and unlock() directly&nbsp;--
+ * it will make your life much easier.
+ *
+ * @note Before creating a Glib::Mutex, Glib::thread_init() has to be called.
+ *
+ * @note Glib::Mutex is not recursive, i.e. a thread will deadlock, if it
+ * already has locked the mutex while calling lock(). Use Glib::RecMutex
+ * instead, if you need recursive mutexes.
+ */
+class Mutex
+{
+public:
+ class Lock;
+
+ Mutex();
+ ~Mutex();
+
+ /** Locks the mutex.
+ * If mutex is already locked by another thread, the current thread will
+ * block until mutex is unlocked by the other thread.
+ * @see Mutex::Lock
+ */
+ void lock();
+
+ /** Tries to lock the mutex.
+ * If the mutex is already locked by another thread, it immediately returns
+ * @c false. Otherwise it locks the mutex and returns @c true.
+ * @return Whether the mutex could be locked.
+ * @see Mutex::Lock
+ */
+ bool trylock();
+
+ /** Unlocks the mutex.
+ * If another thread is blocked in a lock() call for this mutex, it will be
+ * woken and can lock the mutex itself.
+ * @see Mutex::Lock
+ */
+ void unlock();
+
+ GMutex* gobj() { return gobject_; }
+
+private:
+ GMutex* gobject_;
+
+ // noncopyable
+ Mutex(const Mutex&);
+ Mutex& operator=(const Mutex&);
+};
+
+/** Utility class for exception-safe mutex locking.
+ * @par Usage example:
+ * @code
+ * {
+ * Glib::Mutex::Lock lock (mutex); // calls mutex.lock()
+ * do_something();
+ * } // the destructor calls mutex.unlock()
+ * @endcode
+ * As you can see, the compiler takes care of the unlocking. This is not
+ * only exception safe but also much less error-prone. You could even
+ * <tt>return</tt> while still holding the lock and it will be released
+ * properly.
+ */
+class Mutex::Lock
+{
+public:
+ explicit inline Lock(Mutex& mutex);
+ inline Lock(Mutex& mutex, NotLock);
+ inline Lock(Mutex& mutex, TryLock);
+ inline ~Lock();
+
+ inline void acquire();
+ inline bool try_acquire();
+ inline void release();
+ inline bool locked() const;
+
+private:
+ Mutex& mutex_;
+ bool locked_;
+
+ // noncopyable
+ Lock(const Mutex::Lock&);
+ Mutex::Lock& operator=(const Mutex::Lock&);
+};
+
+
+/** Like Glib::RecMutex, but can be defined at compile time.
+ * Use @c GLIBMM_STATIC_REC_MUTEX_INIT to initialize a StaticRecMutex:
+ * @code
+ * Glib::StaticRecMutex mutex = GLIBMM_STATIC_REC_MUTEX_INIT;
+ * @endcode
+ * A StaticRecMutex can be used without calling Glib::thread_init(), it will
+ * silently do nothing then. That will also work when using the implicit
+ * conversion to RecMutex&, thus you can safely use RecMutex::Lock with a
+ * StaticRecMutex.
+ */
+struct StaticRecMutex
+{
+ void lock();
+ bool trylock();
+ void unlock();
+
+ void lock_full(unsigned int depth);
+ unsigned int unlock_full();
+
+ operator RecMutex&();
+
+ GStaticRecMutex* gobj() { return &gobject_; }
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ // Must be public to allow initialization at compile time.
+ GStaticRecMutex gobject_;
+#endif
+};
+
+class RecMutex : public StaticRecMutex
+{
+public:
+ class Lock;
+
+ RecMutex();
+ ~RecMutex();
+
+private:
+ // noncopyable
+ RecMutex(const RecMutex&);
+ RecMutex& operator=(const RecMutex&);
+};
+
+/** Utility class for exception-safe locking of recursive mutexes.
+ */
+class RecMutex::Lock
+{
+public:
+ explicit inline Lock(RecMutex& mutex);
+ inline Lock(RecMutex& mutex, NotLock);
+ inline Lock(RecMutex& mutex, TryLock);
+ inline ~Lock();
+
+ inline void acquire();
+ inline bool try_acquire();
+ inline void release();
+ inline bool locked() const;
+
+private:
+ RecMutex& mutex_;
+ bool locked_;
+
+ // noncopyable
+ Lock(const RecMutex::Lock&);
+ RecMutex::Lock& operator=(const RecMutex::Lock&);
+};
+
+
+/** Like Glib::RWLock, but can be defined at compile time.
+ * Use @c GLIBMM_STATIC_RW_LOCK_INIT to initialize a StaticRWLock:
+ * @code
+ * Glib::StaticRWLock rw_lock = GLIBMM_STATIC_RW_LOCK_INIT;
+ * @endcode
+ * A StaticRWLock can be used without calling Glib::thread_init(), it will
+ * silently do nothing then. That will also work when using the implicit
+ * conversion to RWLock&, thus you can safely use RWLock::ReaderLock and
+ * RWLock::WriterLock with a StaticRWLock.
+ */
+struct StaticRWLock
+{
+ void reader_lock();
+ bool reader_trylock();
+ void reader_unlock();
+
+ void writer_lock();
+ bool writer_trylock();
+ void writer_unlock();
+
+ operator RWLock&();
+
+ GStaticRWLock* gobj() { return &gobject_; }
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ // Must be public to allow initialization at compile time.
+ GStaticRWLock gobject_;
+#endif
+};
+
+class RWLock : public StaticRWLock
+{
+public:
+ class ReaderLock;
+ class WriterLock;
+
+ RWLock();
+ ~RWLock();
+
+private:
+ // noncopyable
+ RWLock(const RWLock&);
+ RWLock& operator=(const RWLock&);
+};
+
+/** Utility class for exception-safe locking of read/write locks.
+ */
+class RWLock::ReaderLock
+{
+public:
+ explicit inline ReaderLock(RWLock& rwlock);
+ inline ReaderLock(RWLock& rwlock, NotLock);
+ inline ReaderLock(RWLock& rwlock, TryLock);
+ inline ~ReaderLock();
+
+ inline void acquire();
+ inline bool try_acquire();
+ inline void release();
+ inline bool locked() const;
+
+private:
+ RWLock& rwlock_;
+ bool locked_;
+
+ // noncopyable
+ ReaderLock(const RWLock::ReaderLock&);
+ RWLock::ReaderLock& operator=(const RWLock::ReaderLock&);
+};
+
+/** Utility class for exception-safe locking of read/write locks.
+ */
+class RWLock::WriterLock
+{
+public:
+ explicit inline WriterLock(RWLock& rwlock);
+ inline WriterLock(RWLock& rwlock, NotLock);
+ inline WriterLock(RWLock& rwlock, TryLock);
+ inline ~WriterLock();
+
+ inline void acquire();
+ inline bool try_acquire();
+ inline void release();
+ inline bool locked() const;
+
+private:
+ RWLock& rwlock_;
+ bool locked_;
+
+ // noncopyable
+ WriterLock(const RWLock::WriterLock&);
+ RWLock::WriterLock& operator=(const RWLock::WriterLock&);
+};
+
+/** An opaque data structure to represent a condition.
+ * A @a Cond is an object that threads can block on, if they find a certain
+ * condition to be false. If other threads change the state of this condition
+ * they can signal the @a Cond, such that the waiting thread is woken up.
+ * @par Usage example:
+ * @code
+ * Glib::Cond data_cond;
+ * Glib::Mutex data_mutex;
+ * void* current_data = NULL;
+ *
+ * void push_data (void* data)
+ * {
+ * data_mutex.lock();
+ * current_data = data;
+ * data_cond.signal();
+ * data_mutex.unlock();
+ * }
+ *
+ * void* pop_data ()
+ * {
+ * void* data;
+ *
+ * data_mutex.lock();
+ * while (!current_data)
+ * data_cond.wait(data_mutex);
+ * data = current_data;
+ * current_data = NULL;
+ * data_mutex.unlock();
+ * return data;
+ * }
+ * @endcode
+*/
+class Cond
+{
+public:
+ Cond();
+ ~Cond();
+
+ /** If threads are waiting for this @a Cond, exactly one of them is woken up.
+ * It is good practice to hold the same lock as the waiting thread, while calling
+ * this method, though not required.
+ *
+ * @note This method can also be used if @a Glib::thread_init() has not yet been
+ * called and will do nothing then.
+ */
+ void signal();
+
+ /** If threads are waiting for this @a Cond, all of them are woken up.
+ * It is good practice to hold the same lock as the waiting thread, while calling
+ * this method, though not required.
+ *
+ * @note This method can also be used if @a Glib::thread_init() has not yet been
+ * called and will do nothing then.
+ */
+ void broadcast();
+
+ /** Waits until this thread is woken up on this @a Cond.
+ * The mutex is unlocked before falling asleep and locked again before resuming.
+ *
+ * This method can also be used if @a Glib::thread_init() has not yet been
+ * called and will immediately return then.
+ *
+ * @param mutex a @a Mutex that is currently locked.
+ *
+ * @note It is important to use the @a wait() and @a timed_wait() methods
+ * only inside a loop, which checks for the condition to be true as it is not
+ * guaranteed that the waiting thread will find it fulfilled, even if the signaling
+ * thread left the condition in that state. This is because another thread can have
+ * altered the condition, before the waiting thread got the chance to be woken up,
+ * even if the condition itself is protected by a @a Mutex.
+ */
+ void wait(Mutex& mutex);
+
+ /** Waits until this thread is woken up on this @a Cond, but not longer than until the time, that is specified by @a abs_time.
+ * The mutex is unlocked before falling asleep and locked again before resuming.
+ *
+ * This function can also be used, if @a Glib::thread_init() has not yet been
+ * called and will immediately return @c true then.
+ *
+ * @param mutex a @a Mutex that is currently locked.
+ * @param abs_time a max time to wait.
+ *
+ * @note It is important to use the @a wait() and @a timed_wait() methods
+ * only inside a loop, which checks for the condition to be true as it is not
+ * guaranteed that the waiting thread will find it fulfilled, even if the signaling
+ * thread left the condition in that state. This is because another thread can have
+ * altered the condition, before the waiting thread got the chance to be woken up,
+ * even if the condition itself is protected by a @a Mutex.
+ */
+ bool timed_wait(Mutex& mutex, const Glib::TimeVal& abs_time);
+
+ GCond* gobj() { return gobject_; }
+
+private:
+ GCond* gobject_;
+
+ // noncopyable
+ Cond(const Cond&);
+ Cond& operator=(const Cond&);
+};
+
+
+template <class T>
+struct StaticPrivate
+{
+ typedef void (*DestroyNotifyFunc) (void*);
+
+ static void delete_ptr(void* data);
+
+ inline T* get();
+ inline void set(T* data, DestroyNotifyFunc notify_func = &StaticPrivate<T>::delete_ptr);
+
+ GStaticPrivate* gobj() { return &gobject_; }
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ // Must be public to allow initialization at compile time.
+ GStaticPrivate gobject_;
+#endif
+};
+
+template <class T>
+class Private
+{
+public:
+ typedef void (*DestructorFunc) (void*);
+
+ static void delete_ptr(void* data);
+
+ explicit inline Private(DestructorFunc destructor_func = &Private<T>::delete_ptr);
+ inline T* get();
+ inline void set(T* data);
+
+ GPrivate* gobj() { return gobject_; }
+
+private:
+ GPrivate* gobject_;
+
+ // noncopyable
+ Private(const Private<T>&);
+ Private<T>& operator=(const Private<T>&);
+};
+
+/** @} group Threads */
+
+/*! A glibmm thread example.
+ * @example thread/thread.cc
+ */
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+/***************************************************************************/
+/* inline implementation */
+/***************************************************************************/
+
+// internal
+void thread_init_impl();
+
+/* This function must be inline, to avoid an unnecessary dependency on
+ * libgthread even if the thread system is not used. libgthread might
+ * not even be available if GLib was compiled without thread support.
+ */
+inline
+void thread_init(GThreadFunctions* vtable)
+{
+ g_thread_init(vtable);
+ Glib::thread_init_impl();
+}
+
+inline
+bool thread_supported()
+{
+ //MSVC++ needs the != 0 to avoid an int -> bool cast warning.
+ return (g_thread_supported() != 0);
+}
+
+
+/**** Glib::Mutex::Lock ****************************************************/
+
+inline
+Mutex::Lock::Lock(Mutex& mutex)
+:
+ mutex_ (mutex),
+ locked_ (true)
+{
+ mutex_.lock();
+}
+
+inline
+Mutex::Lock::Lock(Mutex& mutex, NotLock)
+:
+ mutex_ (mutex),
+ locked_ (false)
+{}
+
+inline
+Mutex::Lock::Lock(Mutex& mutex, TryLock)
+:
+ mutex_ (mutex),
+ locked_ (mutex.trylock())
+{}
+
+inline
+Mutex::Lock::~Lock()
+{
+ if(locked_)
+ mutex_.unlock();
+}
+
+inline
+void Mutex::Lock::acquire()
+{
+ mutex_.lock();
+ locked_ = true;
+}
+
+inline
+bool Mutex::Lock::try_acquire()
+{
+ locked_ = mutex_.trylock();
+ return locked_;
+}
+
+inline
+void Mutex::Lock::release()
+{
+ mutex_.unlock();
+ locked_ = false;
+}
+
+inline
+bool Mutex::Lock::locked() const
+{
+ return locked_;
+}
+
+
+/**** Glib::RecMutex::Lock *************************************************/
+
+inline
+RecMutex::Lock::Lock(RecMutex& mutex)
+:
+ mutex_ (mutex),
+ locked_ (true)
+{
+ mutex_.lock();
+}
+
+inline
+RecMutex::Lock::Lock(RecMutex& mutex, NotLock)
+:
+ mutex_ (mutex),
+ locked_ (false)
+{}
+
+inline
+RecMutex::Lock::Lock(RecMutex& mutex, TryLock)
+:
+ mutex_ (mutex),
+ locked_ (mutex.trylock())
+{}
+
+inline
+RecMutex::Lock::~Lock()
+{
+ if(locked_)
+ mutex_.unlock();
+}
+
+inline
+void RecMutex::Lock::acquire()
+{
+ mutex_.lock();
+ locked_ = true;
+}
+
+inline
+bool RecMutex::Lock::try_acquire()
+{
+ locked_ = mutex_.trylock();
+ return locked_;
+}
+
+inline
+void RecMutex::Lock::release()
+{
+ mutex_.unlock();
+ locked_ = false;
+}
+
+inline
+bool RecMutex::Lock::locked() const
+{
+ return locked_;
+}
+
+
+/**** Glib::RWLock::ReaderLock *********************************************/
+
+inline
+RWLock::ReaderLock::ReaderLock(RWLock& rwlock)
+:
+ rwlock_ (rwlock),
+ locked_ (true)
+{
+ rwlock_.reader_lock();
+}
+
+inline
+RWLock::ReaderLock::ReaderLock(RWLock& rwlock, NotLock)
+:
+ rwlock_ (rwlock),
+ locked_ (false)
+{}
+
+inline
+RWLock::ReaderLock::ReaderLock(RWLock& rwlock, TryLock)
+:
+ rwlock_ (rwlock),
+ locked_ (rwlock.reader_trylock())
+{}
+
+inline
+RWLock::ReaderLock::~ReaderLock()
+{
+ if(locked_)
+ rwlock_.reader_unlock();
+}
+
+inline
+void RWLock::ReaderLock::acquire()
+{
+ rwlock_.reader_lock();
+ locked_ = true;
+}
+
+inline
+bool RWLock::ReaderLock::try_acquire()
+{
+ locked_ = rwlock_.reader_trylock();
+ return locked_;
+}
+
+inline
+void RWLock::ReaderLock::release()
+{
+ rwlock_.reader_unlock();
+ locked_ = false;
+}
+
+inline
+bool RWLock::ReaderLock::locked() const
+{
+ return locked_;
+}
+
+
+/**** Glib::RWLock::WriterLock *********************************************/
+
+inline
+RWLock::WriterLock::WriterLock(RWLock& rwlock)
+:
+ rwlock_ (rwlock),
+ locked_ (true)
+{
+ rwlock_.writer_lock();
+}
+
+inline
+RWLock::WriterLock::WriterLock(RWLock& rwlock, NotLock)
+:
+ rwlock_ (rwlock),
+ locked_ (false)
+{}
+
+inline
+RWLock::WriterLock::WriterLock(RWLock& rwlock, TryLock)
+:
+ rwlock_ (rwlock),
+ locked_ (rwlock.writer_trylock())
+{}
+
+inline
+RWLock::WriterLock::~WriterLock()
+{
+ if(locked_)
+ rwlock_.writer_unlock();
+}
+
+inline
+void RWLock::WriterLock::acquire()
+{
+ rwlock_.writer_lock();
+ locked_ = true;
+}
+
+inline
+bool RWLock::WriterLock::try_acquire()
+{
+ locked_ = rwlock_.writer_trylock();
+ return locked_;
+}
+
+inline
+void RWLock::WriterLock::release()
+{
+ rwlock_.writer_unlock();
+ locked_ = false;
+}
+
+inline
+bool RWLock::WriterLock::locked() const
+{
+ return locked_;
+}
+
+
+/**** Glib::StaticPrivate **************************************************/
+
+// static
+template <class T>
+void StaticPrivate<T>::delete_ptr(void* data)
+{
+ delete static_cast<T*>(data);
+}
+
+template <class T> inline
+T* StaticPrivate<T>::get()
+{
+ return static_cast<T*>(g_static_private_get(&gobject_));
+}
+
+template <class T> inline
+void StaticPrivate<T>::set(T* data, typename StaticPrivate<T>::DestroyNotifyFunc notify_func)
+{
+ g_static_private_set(&gobject_, data, notify_func);
+}
+
+
+/**** Glib::Private ********************************************************/
+
+// static
+template <class T>
+void Private<T>::delete_ptr(void* data)
+{
+ delete static_cast<T*>(data);
+}
+
+template <class T> inline
+Private<T>::Private(typename Private<T>::DestructorFunc destructor_func)
+:
+ gobject_ (g_private_new(destructor_func))
+{}
+
+template <class T> inline
+T* Private<T>::get()
+{
+ return static_cast<T*>(g_private_get(gobject_));
+}
+
+template <class T> inline
+void Private<T>::set(T* data)
+{
+ g_private_set(gobject_, data);
+}
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_THREAD_H */
+
diff --git a/libs/glibmm2/glib/glibmm/threadpool.cc b/libs/glibmm2/glib/glibmm/threadpool.cc
new file mode 100644
index 0000000000..459d975cbb
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/threadpool.cc
@@ -0,0 +1,249 @@
+// -*- c++ -*-
+/* $Id: threadpool.cc,v 1.6 2006/05/12 08:08:43 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/threadpool.h>
+#include <glibmm/exceptionhandler.h>
+#include <glib.h>
+#include <list>
+#include <glibmmconfig.h>
+
+GLIBMM_USING_STD(list)
+
+
+namespace Glib
+{
+
+// internal
+class ThreadPool::SlotList
+{
+public:
+ SlotList();
+ ~SlotList();
+
+ sigc::slot<void>* push(const sigc::slot<void>& slot);
+ sigc::slot<void> pop(sigc::slot<void>* slot_ptr);
+
+ void lock_and_unlock();
+
+private:
+ Glib::Mutex mutex_;
+ std::list< sigc::slot<void> > list_;
+
+ // noncopyable
+ SlotList(const ThreadPool::SlotList&);
+ ThreadPool::SlotList& operator=(const ThreadPool::SlotList&);
+};
+
+ThreadPool::SlotList::SlotList()
+{}
+
+ThreadPool::SlotList::~SlotList()
+{}
+
+sigc::slot<void>* ThreadPool::SlotList::push(const sigc::slot<void>& slot)
+{
+ Mutex::Lock lock (mutex_);
+
+ list_.push_back(slot);
+ return &list_.back();
+}
+
+sigc::slot<void> ThreadPool::SlotList::pop(sigc::slot<void>* slot_ptr)
+{
+ sigc::slot<void> slot;
+
+ {
+ Mutex::Lock lock (mutex_);
+
+ std::list< sigc::slot<void> >::iterator pslot = list_.begin();
+ while(pslot != list_.end() && slot_ptr != &*pslot)
+ ++pslot;
+
+ if(pslot != list_.end())
+ {
+ slot = *pslot;
+ list_.erase(pslot);
+ }
+ }
+
+ return slot;
+}
+
+void ThreadPool::SlotList::lock_and_unlock()
+{
+ mutex_.lock();
+ mutex_.unlock();
+}
+
+} // namespace Glib
+
+
+namespace
+{
+
+static void call_thread_entry_slot(void* data, void* user_data)
+{
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ Glib::ThreadPool::SlotList *const slot_list =
+ static_cast<Glib::ThreadPool::SlotList*>(user_data);
+
+ sigc::slot<void> slot (slot_list->pop(static_cast<sigc::slot<void>*>(data)));
+
+ slot();
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(Glib::Thread::Exit&)
+ {
+ // Just exit from the thread. The Thread::Exit exception
+ // is our sane C++ replacement of g_thread_exit().
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+}
+
+} // anonymous namespace
+
+
+namespace Glib
+{
+
+ThreadPool::ThreadPool(int max_threads, bool exclusive)
+:
+ gobject_ (0),
+ slot_list_ (new SlotList())
+{
+ GError* error = 0;
+
+ gobject_ = g_thread_pool_new(
+ &call_thread_entry_slot, slot_list_, max_threads, exclusive, &error);
+
+ if(error)
+ {
+ delete slot_list_;
+ slot_list_ = 0;
+ Glib::Error::throw_exception(error);
+ }
+}
+
+ThreadPool::~ThreadPool()
+{
+ if(gobject_)
+ g_thread_pool_free(gobject_, 1, 1);
+
+ if(slot_list_)
+ {
+ slot_list_->lock_and_unlock();
+ delete slot_list_;
+ }
+}
+
+void ThreadPool::push(const sigc::slot<void>& slot)
+{
+ sigc::slot<void> *const slot_ptr = slot_list_->push(slot);
+
+ GError* error = 0;
+ g_thread_pool_push(gobject_, slot_ptr, &error);
+
+ if(error)
+ {
+ slot_list_->pop(slot_ptr);
+ Glib::Error::throw_exception(error);
+ }
+}
+
+void ThreadPool::set_max_threads(int max_threads)
+{
+ GError* error = 0;
+ g_thread_pool_set_max_threads(gobject_, max_threads, &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+int ThreadPool::get_max_threads() const
+{
+ return g_thread_pool_get_max_threads(gobject_);
+}
+
+unsigned int ThreadPool::get_num_threads() const
+{
+ return g_thread_pool_get_num_threads(gobject_);
+}
+
+unsigned int ThreadPool::unprocessed() const
+{
+ return g_thread_pool_unprocessed(gobject_);
+}
+
+bool ThreadPool::get_exclusive() const
+{
+ g_return_val_if_fail(gobject_ != 0, false);
+
+ return gobject_->exclusive;
+}
+
+void ThreadPool::shutdown(bool immediately)
+{
+ if(gobject_)
+ {
+ g_thread_pool_free(gobject_, immediately, 1);
+ gobject_ = 0;
+ }
+
+ if(slot_list_)
+ {
+ slot_list_->lock_and_unlock();
+ delete slot_list_;
+ slot_list_ = 0;
+ }
+}
+
+// static
+void ThreadPool::set_max_unused_threads(int max_threads)
+{
+ g_thread_pool_set_max_unused_threads(max_threads);
+}
+
+// static
+int ThreadPool::get_max_unused_threads()
+{
+ return g_thread_pool_get_max_unused_threads();
+}
+
+// static
+unsigned int ThreadPool::get_num_unused_threads()
+{
+ return g_thread_pool_get_num_unused_threads();
+}
+
+// static
+void ThreadPool::stop_unused_threads()
+{
+ g_thread_pool_stop_unused_threads();
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/threadpool.h b/libs/glibmm2/glib/glibmm/threadpool.h
new file mode 100644
index 0000000000..e332fa2b81
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/threadpool.h
@@ -0,0 +1,183 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_THREADPOOL_H
+#define _GLIBMM_THREADPOOL_H
+
+/* $Id: threadpool.h,v 1.2 2004/02/10 14:26:04 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/thread.h>
+
+extern "C" { typedef struct _GThreadPool GThreadPool; }
+
+
+namespace Glib
+{
+
+/** @defgroup ThreadPools Thread Pools
+ * Pools of threads to execute work concurrently.
+ * @{
+ */
+
+/** A pool of threads to execute work concurrently.
+ */
+class ThreadPool
+{
+public:
+ /** Constructs a new thread pool.
+ * Whenever you call ThreadPool::push(), either a new thread is created or an
+ * unused one is reused. At most @a max_threads threads are running
+ * concurrently for this thread pool. @a max_threads&nbsp;=&nbsp;-1 allows
+ * unlimited threads to be created for this thread pool.
+ *
+ * The parameter @a exclusive determines, whether the thread pool owns all
+ * threads exclusive or whether the threads are shared globally. If @a
+ * exclusive is <tt>true</tt>, @a max_threads threads are started immediately
+ * and they will run exclusively for this thread pool until it is destroyed
+ * by ~ThreadPool(). If @a exclusive is <tt>false</tt>, threads are created
+ * when needed and shared between all non-exclusive thread pools. This
+ * implies that @a max_threads may not be -1 for exclusive thread pools.
+ *
+ * @param max_threads The maximal number of threads to execute concurrently
+ * in the new thread pool, -1 means no limit.
+ * @param exclusive Should this thread pool be exclusive?
+ * @throw Glib::ThreadError An error can only occur when @a exclusive is
+ * set to <tt>true</tt> and not all @a max_threads threads could be created.
+ */
+ explicit ThreadPool(int max_threads = -1, bool exclusive = false);
+ virtual ~ThreadPool();
+
+ /** Inserts @a slot into the list of tasks to be executed by the pool.
+ * When the number of currently running threads is lower than the maximal
+ * allowed number of threads, a new thread is started (or reused). Otherwise
+ * @a slot stays in the queue until a thread in this pool finishes its
+ * previous task and processes @a slot.
+ * @param slot A new task for the thread pool.
+ * @throw Glib::ThreadError An error can only occur when a new thread
+ * couldn't be created. In that case @a slot is simply appended to the
+ * queue of work to do.
+ */
+ void push(const sigc::slot<void>& slot);
+
+ /** Sets the maximal allowed number of threads for the pool.
+ * A value of -1 means that the maximal number of threads is unlimited.
+ * Setting @a max_threads to 0 means stopping all work for pool. It is
+ * effectively frozen until @a max_threads is set to a non-zero value again.
+ *
+ * A thread is never terminated while it is still running. Instead the
+ * maximal number of threads only has effect for the allocation of new
+ * threads in ThreadPool::push(). A new thread is allocated whenever the
+ * number of currently running threads in the pool is smaller than the
+ * maximal number.
+ *
+ * @param max_threads A new maximal number of threads for the pool.
+ * @throw Glib::ThreadError An error can only occur when a new thread
+ * couldn't be created.
+ */
+ void set_max_threads(int max_threads);
+
+ /** Returns the maximal number of threads for the pool.
+ * @return The maximal number of threads.
+ */
+ int get_max_threads() const;
+
+ /** Returns the number of threads currently running in the pool.
+ * @return The number of threads currently running.
+ */
+ unsigned int get_num_threads() const;
+
+ /** Returns the number of tasks still unprocessed in the pool.
+ * @return The number of unprocessed tasks.
+ */
+ unsigned int unprocessed() const;
+
+ /** Returns whether all threads are exclusive to this pool.
+ * @return Whether all threads are exclusive to this pool.
+ */
+ bool get_exclusive() const;
+
+ /** Frees all resources allocated for the pool.
+ * If @a immediately is <tt>true</tt>, no new task is processed. Otherwise the
+ * pool is not freed before the last task is processed. Note however, that no
+ * thread of this pool is interrupted while processing a task. Instead at least
+ * all still running threads can finish their tasks before the pool is freed.
+ *
+ * This method does not return before all tasks to be processed (dependent on
+ * @a immediately, whether all or only the currently running) are ready.
+ * After calling shutdown() the pool must not be used anymore.
+ *
+ * @param immediately Should the pool shut down immediately?
+ */
+ void shutdown(bool immediately = false);
+
+ /** Sets the maximal number of unused threads to @a max_threads.
+ * If @a max_threads is -1, no limit is imposed on the number of unused threads.
+ * @param max_threads Maximal number of unused threads.
+ */
+ static void set_max_unused_threads(int max_threads);
+
+ /** Returns the maximal allowed number of unused threads.
+ * @return The maximal number of unused threads.
+ */
+ static int get_max_unused_threads();
+
+ /** Returns the number of currently unused threads.
+ * @return The number of currently unused threads.
+ */
+ static unsigned int get_num_unused_threads();
+
+ /** Stops all currently unused threads.
+ * This does not change the maximal number of unused threads. This function can
+ * be used to regularly stop all unused threads e.g. from Glib::signal_timeout().
+ */
+ static void stop_unused_threads();
+
+ GThreadPool* gobj() { return gobject_; }
+ const GThreadPool* gobj() const { return gobject_; }
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ class SlotList;
+#endif
+
+private:
+ GThreadPool* gobject_;
+ SlotList* slot_list_;
+
+ ThreadPool(const ThreadPool&);
+ ThreadPool& operator=(const ThreadPool&);
+};
+
+/** @} group ThreadPools */
+
+
+/***************************************************************************/
+/* inline implementation */
+/***************************************************************************/
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+/**** Glib::Private ********************************************************/
+
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_THREADPOOL_H */
+
diff --git a/libs/glibmm2/glib/glibmm/timer.cc b/libs/glibmm2/glib/glibmm/timer.cc
new file mode 100644
index 0000000000..df7985d97e
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/timer.cc
@@ -0,0 +1,72 @@
+// -*- c++ -*-
+/* $Id: timer.cc,v 1.1.1.1 2003/01/07 16:58:56 murrayc Exp $ */
+
+/* timer.cc
+ *
+ * Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gtimer.h>
+#include <glibmm/timer.h>
+
+
+namespace Glib
+{
+
+Timer::Timer()
+:
+ gobject_ (g_timer_new())
+{}
+
+Timer::~Timer()
+{
+ g_timer_destroy(gobject_);
+}
+
+void Timer::start()
+{
+ g_timer_start(gobject_);
+}
+
+void Timer::stop()
+{
+ g_timer_stop(gobject_);
+}
+
+void Timer::reset()
+{
+ g_timer_reset(gobject_);
+}
+
+double Timer::elapsed() const
+{
+ return g_timer_elapsed(gobject_, 0);
+}
+
+double Timer::elapsed(unsigned long& microseconds) const
+{
+ return g_timer_elapsed(gobject_, &microseconds);
+}
+
+
+void usleep(unsigned long microseconds)
+{
+ g_usleep(microseconds);
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/timer.h b/libs/glibmm2/glib/glibmm/timer.h
new file mode 100644
index 0000000000..54bd8bd8f2
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/timer.h
@@ -0,0 +1,79 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_TIMER_H
+#define _GLIBMM_TIMER_H
+
+/* $Id: timer.h,v 1.1.1.1 2003/01/07 16:58:56 murrayc Exp $ */
+
+/* timer.h
+ *
+ * Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+extern "C" { typedef struct _GTimer GTimer; }
+
+
+namespace Glib
+{
+
+/** Portable stop watch interface.
+ * This resembles a convient and portable timer with microseconds resolution.
+ */
+class Timer
+{
+public:
+ /** Create a new timer.
+ * Also starts timing by calling start() implicitly.
+ */
+ Timer();
+ ~Timer();
+
+ void start();
+ void stop();
+ void reset();
+
+ /** Get the elapsed time.
+ * @return The value in seconds.
+ */
+ double elapsed() const;
+
+ /** Get the elapsed time.
+ * @return The value in seconds. Also fills @p microseconds
+ * with the corresponding @htmlonly&micro;s@endhtmlonly value.
+ */
+ double elapsed(unsigned long& microseconds) const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GTimer* gobj() { return gobject_; }
+ const GTimer* gobj() const { return gobject_; }
+#endif
+
+private:
+ GTimer* gobject_;
+
+ // not copyable
+ Timer(const Timer&);
+ Timer& operator=(const Timer&);
+};
+
+
+void usleep(unsigned long microseconds);
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_TIMER_H */
+
diff --git a/libs/glibmm2/glib/glibmm/timeval.cc b/libs/glibmm2/glib/glibmm/timeval.cc
new file mode 100644
index 0000000000..835af84fa5
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/timeval.cc
@@ -0,0 +1,120 @@
+// -*- c++ -*-
+/* $Id: timeval.cc,v 1.1.1.1 2003/01/07 16:58:56 murrayc Exp $ */
+
+/* timeval.cc
+ *
+ * Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gmain.h>
+#include <glib/gmessages.h>
+#include <glib/gtimer.h>
+
+#include <glibmm/timeval.h>
+
+
+namespace Glib
+{
+
+void TimeVal::assign_current_time()
+{
+ g_get_current_time(this);
+}
+
+void TimeVal::add(const TimeVal& rhs)
+{
+ g_return_if_fail(tv_usec >= 0 && tv_usec < G_USEC_PER_SEC);
+ g_return_if_fail(rhs.tv_usec >= 0 && rhs.tv_usec < G_USEC_PER_SEC);
+
+ tv_usec += rhs.tv_usec;
+
+ if(tv_usec >= G_USEC_PER_SEC)
+ {
+ tv_usec -= G_USEC_PER_SEC;
+ ++tv_sec;
+ }
+
+ tv_sec += rhs.tv_sec;
+}
+
+void TimeVal::subtract(const TimeVal& rhs)
+{
+ g_return_if_fail(tv_usec >= 0 && tv_usec < G_USEC_PER_SEC);
+ g_return_if_fail(rhs.tv_usec >= 0 && rhs.tv_usec < G_USEC_PER_SEC);
+
+ tv_usec -= rhs.tv_usec;
+
+ if(tv_usec < 0)
+ {
+ tv_usec += G_USEC_PER_SEC;
+ --tv_sec;
+ }
+
+ tv_sec -= rhs.tv_sec;
+}
+
+void TimeVal::add_seconds(long seconds)
+{
+ g_return_if_fail(tv_usec >= 0 && tv_usec < G_USEC_PER_SEC);
+
+ tv_sec += seconds;
+}
+
+void TimeVal::subtract_seconds(long seconds)
+{
+ g_return_if_fail(tv_usec >= 0 && tv_usec < G_USEC_PER_SEC);
+
+ tv_sec -= seconds;
+}
+
+void TimeVal::add_milliseconds(long milliseconds)
+{
+ g_return_if_fail(tv_usec >= 0 && tv_usec < G_USEC_PER_SEC);
+
+ tv_usec += (milliseconds % 1000) * 1000;
+
+ if(tv_usec < 0)
+ {
+ tv_usec += G_USEC_PER_SEC;
+ --tv_sec;
+ }
+ else if(tv_usec >= G_USEC_PER_SEC)
+ {
+ tv_usec -= G_USEC_PER_SEC;
+ ++tv_sec;
+ }
+
+ tv_sec += milliseconds / 1000;
+}
+
+void TimeVal::subtract_milliseconds(long milliseconds)
+{
+ add_milliseconds(-1 * milliseconds);
+}
+
+void TimeVal::add_microseconds(long microseconds)
+{
+ g_time_val_add(this, microseconds);
+}
+
+void TimeVal::subtract_microseconds(long microseconds)
+{
+ g_time_val_add(this, -1 * microseconds);
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/timeval.h b/libs/glibmm2/glib/glibmm/timeval.h
new file mode 100644
index 0000000000..256202ecbc
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/timeval.h
@@ -0,0 +1,233 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_TIMEVAL_H
+#define _GLIBMM_TIMEVAL_H
+
+/* $Id: timeval.h,v 1.1.1.1 2003/01/07 16:58:56 murrayc Exp $ */
+
+/* timeval.h
+ *
+ * Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gtypes.h>
+#include <glib/gtimer.h>
+
+namespace Glib
+{
+
+/** Glib::TimeVal is a wrapper around the glib structure GTimeVal.
+ * The glib structure GTimeVal itself is equivalent to struct timeval,
+ * which is returned by the gettimeofday() UNIX call. Additionally
+ * this wrapper provides an assortment of time manipulation functions.
+ */
+struct TimeVal : public GTimeVal
+{
+ inline TimeVal();
+ inline TimeVal(long seconds, long microseconds);
+
+ inline TimeVal(const GTimeVal& gtimeval);
+ inline TimeVal& operator=(const GTimeVal& gtimeval);
+
+ /** Assigns the current time to the TimeVal instance.
+ * Equivalent to the UNIX gettimeofday() function, but is portable and
+ * works also on Win32.
+ */
+ void assign_current_time();
+
+ void add(const TimeVal& rhs);
+ void subtract(const TimeVal& rhs);
+ void add_seconds(long seconds);
+ void subtract_seconds(long seconds);
+ void add_milliseconds(long milliseconds);
+ void subtract_milliseconds(long milliseconds);
+ void add_microseconds(long microseconds);
+ void subtract_microseconds(long microseconds);
+
+ inline TimeVal& operator+=(const TimeVal& gtimeval);
+ inline TimeVal& operator-=(const TimeVal& gtimeval);
+ inline TimeVal& operator+=(long seconds);
+ inline TimeVal& operator-=(long seconds);
+
+ /** Returns a double representation of the time interval.
+ * This member function converts the time interval, that is
+ * internally stored as two long values for seconds and microseconds,
+ * to a double representation, whose unit is seconds.
+ */
+ inline double as_double() const;
+
+ inline bool negative() const;
+
+ /** Checks whether the stored time interval is positive.
+ * Returns true if the stored time / time interval is positive.
+ */
+ inline bool valid() const;
+};
+
+inline
+TimeVal::TimeVal()
+{
+ tv_sec = 0;
+ tv_usec = 0;
+}
+
+inline
+TimeVal::TimeVal(long seconds, long microseconds)
+{
+ tv_sec = seconds;
+ tv_usec = microseconds;
+}
+
+inline
+TimeVal::TimeVal(const GTimeVal& gtimeval)
+{
+ tv_sec = gtimeval.tv_sec;
+ tv_usec = gtimeval.tv_usec;
+}
+
+inline
+TimeVal& TimeVal::operator=(const GTimeVal& gtimeval)
+{
+ tv_sec = gtimeval.tv_sec;
+ tv_usec = gtimeval.tv_usec;
+ return *this;
+}
+
+inline
+TimeVal& TimeVal::operator+=(const TimeVal& gtimeval)
+{
+ add(gtimeval);
+
+ return *this;
+}
+
+inline
+TimeVal& TimeVal::operator-=(const TimeVal& gtimeval)
+{
+ subtract(gtimeval);
+
+ return *this;
+}
+
+inline
+TimeVal& TimeVal::operator+=(long seconds)
+{
+ add_seconds(seconds);
+
+ return *this;
+}
+
+inline
+TimeVal& TimeVal::operator-=(long seconds)
+{
+ subtract_seconds(seconds);
+
+ return *this;
+}
+
+inline
+double TimeVal::as_double() const
+{
+ return tv_sec + ((double) tv_usec / (double) G_USEC_PER_SEC);
+}
+
+inline
+bool TimeVal::negative() const
+{
+ return (tv_sec < 0);
+}
+
+inline
+bool TimeVal::valid() const
+{
+ return (tv_usec >= 0 && tv_usec < G_USEC_PER_SEC);
+}
+
+/** @relates Glib::TimeVal */
+inline
+TimeVal operator+(const TimeVal& lhs, const TimeVal& rhs)
+{ return TimeVal(lhs) += rhs; }
+
+/** @relates Glib::TimeVal */
+inline
+TimeVal operator+(const TimeVal& lhs, long seconds)
+{ return TimeVal(lhs) += seconds; }
+
+/** @relates Glib::TimeVal */
+inline
+TimeVal operator-(const TimeVal& lhs, const TimeVal& rhs)
+{ return TimeVal(lhs) -= rhs; }
+
+/** @relates Glib::TimeVal */
+inline
+TimeVal operator-(const TimeVal& lhs, long seconds)
+{ return TimeVal(lhs) -= seconds; }
+
+
+/** @relates Glib::TimeVal */
+inline
+bool operator==(const TimeVal& lhs, const TimeVal& rhs)
+{
+ return (lhs.tv_sec == rhs.tv_sec && lhs.tv_usec == rhs.tv_usec);
+}
+
+/** @relates Glib::TimeVal */
+inline
+bool operator!=(const TimeVal& lhs, const TimeVal& rhs)
+{
+ return (lhs.tv_sec != rhs.tv_sec || lhs.tv_usec != rhs.tv_usec);
+}
+
+/** @relates Glib::TimeVal */
+inline
+bool operator<(const TimeVal& lhs, const TimeVal& rhs)
+{
+ return ((lhs.tv_sec < rhs.tv_sec) ||
+ (lhs.tv_sec == rhs.tv_sec && lhs.tv_usec < rhs.tv_usec));
+}
+
+/** @relates Glib::TimeVal */
+inline
+bool operator>(const TimeVal& lhs, const TimeVal& rhs)
+{
+ return ((lhs.tv_sec > rhs.tv_sec) ||
+ (lhs.tv_sec == rhs.tv_sec && lhs.tv_usec > rhs.tv_usec));
+}
+
+/** @relates Glib::TimeVal */
+inline
+bool operator<=(const TimeVal& lhs, const TimeVal& rhs)
+{
+ return ((lhs.tv_sec < rhs.tv_sec) ||
+ (lhs.tv_sec == rhs.tv_sec && lhs.tv_usec <= rhs.tv_usec));
+}
+
+/** @relates Glib::TimeVal */
+inline
+bool operator>=(const TimeVal& lhs, const TimeVal& rhs)
+{
+ return ((lhs.tv_sec > rhs.tv_sec) ||
+ (lhs.tv_sec == rhs.tv_sec && lhs.tv_usec >= rhs.tv_usec));
+}
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_TIMEVAL_H */
+
+
+
+
diff --git a/libs/glibmm2/glib/glibmm/unicode.cc b/libs/glibmm2/glib/glibmm/unicode.cc
new file mode 100644
index 0000000000..63ba67b1d2
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/unicode.cc
@@ -0,0 +1,34 @@
+// Generated by gtkmmproc -- DO NOT MODIFY!
+
+
+#include <glibmm/unicode.h>
+#include <glibmm/private/unicode_p.h>
+
+// -*- c++ -*-
+/* $Id: unicode.ccg,v 1.1.1.1 2003/01/07 16:58:42 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/unicode.h>
+
+
+namespace
+{
+} // anonymous namespace
+
+
diff --git a/libs/glibmm2/glib/glibmm/unicode.h b/libs/glibmm2/glib/glibmm/unicode.h
new file mode 100644
index 0000000000..07f3c75891
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/unicode.h
@@ -0,0 +1,311 @@
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef _GLIBMM_UNICODE_H
+#define _GLIBMM_UNICODE_H
+
+
+/* $Id: unicode.hg,v 1.2 2003/08/20 10:31:23 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <glib/gmacros.h>
+#include <glib/gstrfuncs.h>
+#include <glib/gunicode.h>
+
+// Not used, but we want to get rid of possible <ctype.h> macros.
+#include <cctype>
+
+#undef isalnum
+#undef isalpha
+#undef iscntrl
+#undef isdigit
+#undef isgraph
+#undef islower
+#undef isprint
+#undef ispunct
+#undef isspace
+#undef isupper
+#undef isxdigit
+#undef istitle
+#undef isdefined
+#undef iswide
+#undef toupper
+#undef tolower
+#undef totitle
+
+
+namespace Glib
+{
+
+/** @addtogroup glibmmEnums Enums and Flags */
+
+/**
+ * @ingroup glibmmEnums
+ */
+enum UnicodeType
+{
+ UNICODE_CONTROL,
+ UNICODE_FORMAT,
+ UNICODE_UNASSIGNED,
+ UNICODE_PRIVATE_USE,
+ UNICODE_SURROGATE,
+ UNICODE_LOWERCASE_LETTER,
+ UNICODE_MODIFIER_LETTER,
+ UNICODE_OTHER_LETTER,
+ UNICODE_TITLECASE_LETTER,
+ UNICODE_UPPERCASE_LETTER,
+ UNICODE_COMBINING_MARK,
+ UNICODE_ENCLOSING_MARK,
+ UNICODE_NON_SPACING_MARK,
+ UNICODE_DECIMAL_NUMBER,
+ UNICODE_LETTER_NUMBER,
+ UNICODE_OTHER_NUMBER,
+ UNICODE_CONNECT_PUNCTUATION,
+ UNICODE_DASH_PUNCTUATION,
+ UNICODE_CLOSE_PUNCTUATION,
+ UNICODE_FINAL_PUNCTUATION,
+ UNICODE_INITIAL_PUNCTUATION,
+ UNICODE_OTHER_PUNCTUATION,
+ UNICODE_OPEN_PUNCTUATION,
+ UNICODE_CURRENCY_SYMBOL,
+ UNICODE_MODIFIER_SYMBOL,
+ UNICODE_MATH_SYMBOL,
+ UNICODE_OTHER_SYMBOL,
+ UNICODE_LINE_SEPARATOR,
+ UNICODE_PARAGRAPH_SEPARATOR,
+ UNICODE_SPACE_SEPARATOR
+};
+
+
+/**
+ * @ingroup glibmmEnums
+ */
+enum UnicodeBreakType
+{
+ UNICODE_BREAK_MANDATORY,
+ UNICODE_BREAK_CARRIAGE_RETURN,
+ UNICODE_BREAK_LINE_FEED,
+ UNICODE_BREAK_COMBINING_MARK,
+ UNICODE_BREAK_SURROGATE,
+ UNICODE_BREAK_ZERO_WIDTH_SPACE,
+ UNICODE_BREAK_INSEPARABLE,
+ UNICODE_BREAK_NON_BREAKING_GLUE,
+ UNICODE_BREAK_CONTINGENT,
+ UNICODE_BREAK_SPACE,
+ UNICODE_BREAK_AFTER,
+ UNICODE_BREAK_BEFORE,
+ UNICODE_BREAK_BEFORE_AND_AFTER,
+ UNICODE_BREAK_HYPHEN,
+ UNICODE_BREAK_NON_STARTER,
+ UNICODE_BREAK_OPEN_PUNCTUATION,
+ UNICODE_BREAK_CLOSE_PUNCTUATION,
+ UNICODE_BREAK_QUOTATION,
+ UNICODE_BREAK_EXCLAMATION,
+ UNICODE_BREAK_IDEOGRAPHIC,
+ UNICODE_BREAK_NUMERIC,
+ UNICODE_BREAK_INFIX_SEPARATOR,
+ UNICODE_BREAK_SYMBOL,
+ UNICODE_BREAK_ALPHABETIC,
+ UNICODE_BREAK_PREFIX,
+ UNICODE_BREAK_POSTFIX,
+ UNICODE_BREAK_COMPLEX_CONTEXT,
+ UNICODE_BREAK_AMBIGUOUS,
+ UNICODE_BREAK_UNKNOWN,
+ UNICODE_BREAK_NEXT_LINE,
+ UNICODE_BREAK_WORD_JOINER
+};
+
+
+/**
+ * @ingroup glibmmEnums
+ * @par Bitwise operators:
+ * <tt>%AsciiType operator|(AsciiType, AsciiType)</tt><br>
+ * <tt>%AsciiType operator&(AsciiType, AsciiType)</tt><br>
+ * <tt>%AsciiType operator^(AsciiType, AsciiType)</tt><br>
+ * <tt>%AsciiType operator~(AsciiType)</tt><br>
+ * <tt>%AsciiType& operator|=(AsciiType&, AsciiType)</tt><br>
+ * <tt>%AsciiType& operator&=(AsciiType&, AsciiType)</tt><br>
+ * <tt>%AsciiType& operator^=(AsciiType&, AsciiType)</tt><br>
+ */
+enum AsciiType
+{
+ ASCII_ALNUM = 1 << 0,
+ ASCII_ALPHA = 1 << 1,
+ ASCII_CNTRL = 1 << 2,
+ ASCII_DIGIT = 1 << 3,
+ ASCII_GRAPH = 1 << 4,
+ ASCII_LOWER = 1 << 5,
+ ASCII_PRINT = 1 << 6,
+ ASCII_PUNCT = 1 << 7,
+ ASCII_SPACE = 1 << 8,
+ ASCII_UPPER = 1 << 9,
+ ASCII_XDIGIT = 1 << 10
+};
+
+/** @ingroup glibmmEnums */
+inline AsciiType operator|(AsciiType lhs, AsciiType rhs)
+ { return static_cast<AsciiType>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline AsciiType operator&(AsciiType lhs, AsciiType rhs)
+ { return static_cast<AsciiType>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline AsciiType operator^(AsciiType lhs, AsciiType rhs)
+ { return static_cast<AsciiType>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); }
+
+/** @ingroup glibmmEnums */
+inline AsciiType operator~(AsciiType flags)
+ { return static_cast<AsciiType>(~static_cast<unsigned>(flags)); }
+
+/** @ingroup glibmmEnums */
+inline AsciiType& operator|=(AsciiType& lhs, AsciiType rhs)
+ { return (lhs = static_cast<AsciiType>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); }
+
+/** @ingroup glibmmEnums */
+inline AsciiType& operator&=(AsciiType& lhs, AsciiType rhs)
+ { return (lhs = static_cast<AsciiType>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); }
+
+/** @ingroup glibmmEnums */
+inline AsciiType& operator^=(AsciiType& lhs, AsciiType rhs)
+ { return (lhs = static_cast<AsciiType>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs))); }
+
+
+/**
+ * @ingroup glibmmEnums
+ */
+enum NormalizeMode
+{
+ NORMALIZE_DEFAULT,
+ NORMALIZE_NFD = NORMALIZE_DEFAULT,
+ NORMALIZE_DEFAULT_COMPOSE,
+ NORMALIZE_NFC = NORMALIZE_DEFAULT_COMPOSE,
+ NORMALIZE_ALL,
+ NORMALIZE_NFKD = NORMALIZE_ALL,
+ NORMALIZE_ALL_COMPOSE,
+ NORMALIZE_NFKC = NORMALIZE_ALL_COMPOSE
+};
+
+
+/** @defgroup Unicode Unicode Manipulation
+ * Functions operating on Unicode characters and UTF-8 strings.
+ * @{
+ */
+
+namespace Unicode
+{
+
+inline bool validate(gunichar uc)
+ { return (g_unichar_validate(uc) != 0); }
+inline bool isalnum(gunichar uc)
+ { return (g_unichar_isalnum(uc) != 0); }
+inline bool isalpha(gunichar uc)
+ { return (g_unichar_isalpha(uc) != 0); }
+inline bool iscntrl(gunichar uc)
+ { return (g_unichar_iscntrl(uc) != 0); }
+inline bool isdigit(gunichar uc)
+ { return (g_unichar_isdigit(uc) != 0); }
+inline bool isgraph(gunichar uc)
+ { return (g_unichar_isgraph(uc) != 0); }
+inline bool islower(gunichar uc)
+ { return (g_unichar_islower(uc) != 0); }
+inline bool isprint(gunichar uc)
+ { return (g_unichar_isprint(uc) != 0); }
+inline bool ispunct(gunichar uc)
+ { return (g_unichar_ispunct(uc) != 0); }
+inline bool isspace(gunichar uc)
+ { return (g_unichar_isspace(uc) != 0); }
+inline bool isupper(gunichar uc)
+ { return (g_unichar_isupper(uc) != 0); }
+inline bool isxdigit(gunichar uc)
+ { return (g_unichar_isxdigit(uc) != 0); }
+inline bool istitle(gunichar uc)
+ { return (g_unichar_istitle(uc) != 0); }
+inline bool isdefined(gunichar uc)
+ { return (g_unichar_isdefined(uc) != 0); }
+inline bool iswide(gunichar uc)
+ { return (g_unichar_iswide(uc) != 0); }
+
+inline gunichar toupper(gunichar uc)
+ { return g_unichar_toupper(uc); }
+inline gunichar tolower(gunichar uc)
+ { return g_unichar_tolower(uc); }
+inline gunichar totitle(gunichar uc)
+ { return g_unichar_totitle(uc); }
+
+inline int digit_value(gunichar uc)
+ { return g_unichar_digit_value(uc); }
+inline int xdigit_value(gunichar uc)
+ { return g_unichar_xdigit_value(uc); }
+
+inline Glib::UnicodeType type(gunichar uc)
+ { return static_cast<Glib::UnicodeType>(static_cast<int>(g_unichar_type(uc))); }
+
+inline Glib::UnicodeBreakType break_type(gunichar uc)
+ { return static_cast<Glib::UnicodeBreakType>(static_cast<int>(g_unichar_break_type(uc))); }
+
+} // namespace Unicode
+
+
+namespace Ascii
+{
+
+inline bool isalnum(char c)
+ { return g_ascii_isalnum(c); }
+inline bool isalpha(char c)
+ { return g_ascii_isalpha(c); }
+inline bool iscntrl(char c)
+ { return g_ascii_iscntrl(c); }
+inline bool isdigit(char c)
+ { return g_ascii_isdigit(c); }
+inline bool isgraph(char c)
+ { return g_ascii_isgraph(c); }
+inline bool islower(char c)
+ { return g_ascii_islower(c); }
+inline bool isprint(char c)
+ { return g_ascii_isprint(c); }
+inline bool ispunct(char c)
+ { return g_ascii_ispunct(c); }
+inline bool isspace(char c)
+ { return g_ascii_isspace(c); }
+inline bool isupper(char c)
+ { return g_ascii_isupper(c); }
+inline bool isxdigit(char c)
+ { return g_ascii_isxdigit(c); }
+
+inline char tolower(char c)
+ { return g_ascii_tolower(c); }
+inline char toupper(char c)
+ { return g_ascii_toupper(c); }
+
+inline int digit_value(char c)
+ { return g_ascii_digit_value(c); }
+inline int xdigit_value(char c)
+ { return g_ascii_xdigit_value(c); }
+
+} // namespace Ascii
+
+
+/** @} group Unicode */
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_UNICODE_H */
+
diff --git a/libs/glibmm2/glib/glibmm/ustring.cc b/libs/glibmm2/glib/glibmm/ustring.cc
new file mode 100644
index 0000000000..9fabc0c1f6
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/ustring.cc
@@ -0,0 +1,1219 @@
+// -*- c++ -*-
+/* $Id: ustring.cc,v 1.7 2006/05/12 08:08:43 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/ustring.h>
+#include <glibmm/convert.h>
+#include <glibmm/error.h>
+#include <glibmm/utility.h>
+
+#include <algorithm>
+#include <iostream>
+
+#include <glibmmconfig.h>
+GLIBMM_USING_STD(find)
+
+
+namespace
+{
+
+using Glib::ustring;
+
+// Little helper to make the conversion from gunichar to UTF-8 a one-liner.
+//
+struct UnicharToUtf8
+{
+ char buf[6];
+ ustring::size_type len;
+
+ explicit UnicharToUtf8(gunichar uc)
+ : len (g_unichar_to_utf8(uc, buf)) {}
+};
+
+
+// All utf8_*_offset() functions return npos if offset is out of range.
+// The caller should decide if npos is a valid argument and just marks
+// the whole string, or if it is not allowed (e.g. for start positions).
+// In the latter case std::out_of_range should be thrown, but usually
+// std::string will do that for us.
+
+// First overload: stop on '\0' character.
+//
+static ustring::size_type utf8_byte_offset(const char* str, ustring::size_type offset)
+{
+ if(offset == ustring::npos)
+ return ustring::npos;
+
+ const char *const utf8_skip = g_utf8_skip;
+ const char* p = str;
+
+ for(; offset != 0; --offset)
+ {
+ const unsigned int c = static_cast<unsigned char>(*p);
+
+ if(c == 0)
+ return ustring::npos;
+
+ p += utf8_skip[c];
+ }
+
+ return (p - str);
+}
+
+// Second overload: stop when reaching maxlen.
+//
+static ustring::size_type utf8_byte_offset(const char* str, ustring::size_type offset,
+ ustring::size_type maxlen)
+{
+ if(offset == ustring::npos)
+ return ustring::npos;
+
+ const char *const utf8_skip = g_utf8_skip;
+ const char *const pend = str + maxlen;
+ const char* p = str;
+
+ for(; offset != 0; --offset)
+ {
+ if(p >= pend)
+ return ustring::npos;
+
+ p += utf8_skip[static_cast<unsigned char>(*p)];
+ }
+
+ return (p - str);
+}
+
+// Third overload: stop when reaching str.size().
+//
+inline
+ustring::size_type utf8_byte_offset(const std::string& str, ustring::size_type offset)
+{
+ return utf8_byte_offset(str.data(), offset, str.size());
+}
+
+// Takes UTF-8 character offset and count in ci and cn.
+// Returns the byte offset and count in i and n.
+//
+struct Utf8SubstrBounds
+{
+ ustring::size_type i;
+ ustring::size_type n;
+
+ Utf8SubstrBounds(const std::string& str, ustring::size_type ci, ustring::size_type cn)
+ :
+ i (utf8_byte_offset(str, ci)),
+ n (ustring::npos)
+ {
+ if(i != ustring::npos)
+ n = utf8_byte_offset(str.data() + i, cn, str.size() - i);
+ }
+};
+
+// Converts byte offset to UTF-8 character offset.
+inline
+ustring::size_type utf8_char_offset(const std::string& str, ustring::size_type offset)
+{
+ if(offset == ustring::npos)
+ return ustring::npos;
+
+ const char *const pdata = str.data();
+ return g_utf8_pointer_to_offset(pdata, pdata + offset);
+}
+
+
+// Helper to implement ustring::find_first_of() and find_first_not_of().
+// Returns the UTF-8 character offset, or ustring::npos if not found.
+//
+static ustring::size_type utf8_find_first_of(const std::string& str, ustring::size_type offset,
+ const char* utf8_match, long utf8_match_size,
+ bool find_not_of)
+{
+ const ustring::size_type byte_offset = utf8_byte_offset(str, offset);
+ if(byte_offset == ustring::npos)
+ return ustring::npos;
+
+ long ucs4_match_size = 0;
+ const Glib::ScopedPtr<gunichar> ucs4_match
+ (g_utf8_to_ucs4_fast(utf8_match, utf8_match_size, &ucs4_match_size));
+
+ const gunichar *const match_begin = ucs4_match.get();
+ const gunichar *const match_end = match_begin + ucs4_match_size;
+
+ const char *const str_begin = str.data();
+ const char *const str_end = str_begin + str.size();
+
+ for(const char* pstr = str_begin + byte_offset;
+ pstr < str_end;
+ pstr = g_utf8_next_char(pstr))
+ {
+ const gunichar *const pfound = std::find(match_begin, match_end, g_utf8_get_char(pstr));
+
+ if((pfound != match_end) != find_not_of)
+ return offset;
+
+ ++offset;
+ }
+
+ return ustring::npos;
+}
+
+// Helper to implement ustring::find_last_of() and find_last_not_of().
+// Returns the UTF-8 character offset, or ustring::npos if not found.
+//
+static ustring::size_type utf8_find_last_of(const std::string& str, ustring::size_type offset,
+ const char* utf8_match, long utf8_match_size,
+ bool find_not_of)
+{
+ long ucs4_match_size = 0;
+ const Glib::ScopedPtr<gunichar> ucs4_match
+ (g_utf8_to_ucs4_fast(utf8_match, utf8_match_size, &ucs4_match_size));
+
+ const gunichar *const match_begin = ucs4_match.get();
+ const gunichar *const match_end = match_begin + ucs4_match_size;
+
+ const char *const str_begin = str.data();
+ const char* pstr = str_begin;
+
+ // Set pstr one byte beyond the actual start position.
+ const ustring::size_type byte_offset = utf8_byte_offset(str, offset);
+ pstr += (byte_offset < str.size()) ? byte_offset + 1 : str.size();
+
+ while(pstr > str_begin)
+ {
+ // Move to previous character.
+ do --pstr; while((*pstr & '\xC0') == '\x80');
+
+ const gunichar *const pfound = std::find(match_begin, match_end, g_utf8_get_char(pstr));
+
+ if((pfound != match_end) != find_not_of)
+ return g_utf8_pointer_to_offset(str_begin, pstr);
+ }
+
+ return ustring::npos;
+}
+
+} // anonymous namespace
+
+
+namespace Glib
+{
+
+#ifndef GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS
+// Initialize static member here,
+// because the compiler did not allow us do it inline.
+const ustring::size_type ustring::npos = std::string::npos;
+#endif
+
+// We need our own version of g_utf8_get_char(), because the std::string
+// iterator is not necessarily a plain pointer (it's in fact not in GCC's
+// libstdc++-v3). Copying the UTF-8 data into a temporary buffer isn't an
+// option since this operation is quite time critical. The implementation
+// is quite different from g_utf8_get_char() -- both more generic and faster.
+//
+// By looking at the first byte of a UTF-8 character one can determine the
+// number of bytes used. GLib offers the g_utf8_skip[] array for this purpose,
+// but accessing this global variable would introduce a function call to fetch
+// the Global Offset Table, plus two levels of indirection in order to read the
+// value. Even worse, fetching the GOT is always done right at the start of
+// the function instead of the branch that actually uses the variable.
+//
+// Fortunately, there's a better way to get the byte count. As this table
+// shows, there's a nice regular pattern in the UTF-8 encoding scheme:
+//
+// 0x00000000 - 0x0000007F: 0xxxxxxx
+// 0x00000080 - 0x000007FF: 110xxxxx 10xxxxxx
+// 0x00000800 - 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
+// 0x00010000 - 0x001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+// 0x00200000 - 0x03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+// 0x04000000 - 0x7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+//
+// Except for the single byte case, the number of leading 1-bits equals the
+// byte count. All that is needed is to shift the first byte to the left
+// until bit 7 becomes 0. Naturally, doing so requires a loop -- but since
+// we already have one, no additional cost is introduced. This shifting can
+// further be combined with the computation of the bitmask needed to eliminate
+// the leading length bits, thus saving yet another register.
+//
+gunichar get_unichar_from_std_iterator(std::string::const_iterator pos)
+{
+ unsigned int result = static_cast<unsigned char>(*pos);
+
+ if((result & 0x80) != 0)
+ {
+ unsigned int mask = 0x40;
+
+ // This loop may look somewhat strange, but this happens to be the
+ // one variant g++ 3.3 generates optimum code for. (In particular,
+ // the unconditional break avoids counterproductive loop alignment.)
+ for(++pos;; ++pos)
+ {
+ mask <<= 5;
+ const unsigned int c = static_cast<unsigned char>(*pos);
+ result = (result << 6) + c - 0x80;
+
+ if((result & mask) != 0)
+ continue;
+ break;
+ }
+
+ result &= --mask;
+ }
+
+ return result;
+}
+
+
+/**** Glib::ustring ********************************************************/
+
+ustring::ustring()
+:
+ string_ ()
+{}
+
+ustring::ustring(const ustring& other)
+:
+ string_ (other.string_)
+{}
+
+ustring::ustring(const ustring& src, ustring::size_type i, ustring::size_type n)
+:
+ string_ ()
+{
+ const Utf8SubstrBounds bounds (src.string_, i, n);
+ string_.assign(src.string_, bounds.i, bounds.n);
+}
+
+ustring::ustring(const char* src, ustring::size_type n)
+:
+ string_ (src, utf8_byte_offset(src, n))
+{}
+
+ustring::ustring(const char* src)
+:
+ string_ (src)
+{}
+
+ustring::ustring(ustring::size_type n, gunichar uc)
+:
+ string_ ()
+{
+ if(uc < 0x80)
+ {
+ // Optimize the probably most common case.
+ string_.assign(n, static_cast<char>(uc));
+ }
+ else
+ {
+ const UnicharToUtf8 conv (uc);
+ string_.reserve(n * conv.len);
+
+ for(; n > 0; --n)
+ string_.append(conv.buf, conv.len);
+ }
+}
+
+ustring::ustring(ustring::size_type n, char c)
+:
+ string_ (n, c)
+{}
+
+ustring::ustring(const std::string& src)
+:
+ string_ (src)
+{}
+
+ustring::~ustring()
+{}
+
+void ustring::swap(ustring& other)
+{
+ string_.swap(other.string_);
+}
+
+
+/**** Glib::ustring::operator=() *******************************************/
+
+ustring& ustring::operator=(const ustring& other)
+{
+ string_ = other.string_;
+ return *this;
+}
+
+ustring& ustring::operator=(const std::string& src)
+{
+ string_ = src;
+ return *this;
+}
+
+ustring& ustring::operator=(const char* src)
+{
+ string_ = src;
+ return *this;
+}
+
+ustring& ustring::operator=(gunichar uc)
+{
+ const UnicharToUtf8 conv (uc);
+ string_.assign(conv.buf, conv.len);
+ return *this;
+}
+
+ustring& ustring::operator=(char c)
+{
+ string_ = c;
+ return *this;
+}
+
+
+/**** Glib::ustring::assign() **********************************************/
+
+ustring& ustring::assign(const ustring& src)
+{
+ string_ = src.string_;
+ return *this;
+}
+
+ustring& ustring::assign(const ustring& src, ustring::size_type i, ustring::size_type n)
+{
+ const Utf8SubstrBounds bounds (src.string_, i, n);
+ string_.assign(src.string_, bounds.i, bounds.n);
+ return *this;
+}
+
+ustring& ustring::assign(const char* src, ustring::size_type n)
+{
+ string_.assign(src, utf8_byte_offset(src, n));
+ return *this;
+}
+
+ustring& ustring::assign(const char* src)
+{
+ string_ = src;
+ return *this;
+}
+
+ustring& ustring::assign(ustring::size_type n, gunichar uc)
+{
+ ustring temp (n, uc);
+ string_.swap(temp.string_);
+ return *this;
+}
+
+ustring& ustring::assign(ustring::size_type n, char c)
+{
+ string_.assign(n, c);
+ return *this;
+}
+
+
+/**** Glib::ustring::operator+=() ******************************************/
+
+ustring& ustring::operator+=(const ustring& src)
+{
+ string_ += src.string_;
+ return *this;
+}
+
+ustring& ustring::operator+=(const char* src)
+{
+ string_ += src;
+ return *this;
+}
+
+ustring& ustring::operator+=(gunichar uc)
+{
+ const UnicharToUtf8 conv (uc);
+ string_.append(conv.buf, conv.len);
+ return *this;
+}
+
+ustring& ustring::operator+=(char c)
+{
+ string_ += c;
+ return *this;
+}
+
+
+/**** Glib::ustring::push_back() *******************************************/
+
+void ustring::push_back(gunichar uc)
+{
+ const UnicharToUtf8 conv (uc);
+ string_.append(conv.buf, conv.len);
+}
+
+void ustring::push_back(char c)
+{
+ string_ += c;
+}
+
+
+/**** Glib::ustring::append() **********************************************/
+
+ustring& ustring::append(const ustring& src)
+{
+ string_ += src.string_;
+ return *this;
+}
+
+ustring& ustring::append(const ustring& src, ustring::size_type i, ustring::size_type n)
+{
+ const Utf8SubstrBounds bounds (src.string_, i, n);
+ string_.append(src.string_, bounds.i, bounds.n);
+ return *this;
+}
+
+ustring& ustring::append(const char* src, ustring::size_type n)
+{
+ string_.append(src, utf8_byte_offset(src, n));
+ return *this;
+}
+
+ustring& ustring::append(const char* src)
+{
+ string_ += src;
+ return *this;
+}
+
+ustring& ustring::append(ustring::size_type n, gunichar uc)
+{
+ string_.append(ustring(n, uc).string_);
+ return *this;
+}
+
+ustring& ustring::append(ustring::size_type n, char c)
+{
+ string_.append(n, c);
+ return *this;
+}
+
+
+/**** Glib::ustring::insert() **********************************************/
+
+ustring& ustring::insert(ustring::size_type i, const ustring& src)
+{
+ string_.insert(utf8_byte_offset(string_, i), src.string_);
+ return *this;
+}
+
+ustring& ustring::insert(ustring::size_type i, const ustring& src,
+ ustring::size_type i2, ustring::size_type n)
+{
+ const Utf8SubstrBounds bounds2 (src.string_, i2, n);
+ string_.insert(utf8_byte_offset(string_, i), src.string_, bounds2.i, bounds2.n);
+ return *this;
+}
+
+ustring& ustring::insert(ustring::size_type i, const char* src, ustring::size_type n)
+{
+ string_.insert(utf8_byte_offset(string_, i), src, utf8_byte_offset(src, n));
+ return *this;
+}
+
+ustring& ustring::insert(ustring::size_type i, const char* src)
+{
+ string_.insert(utf8_byte_offset(string_, i), src);
+ return *this;
+}
+
+ustring& ustring::insert(ustring::size_type i, ustring::size_type n, gunichar uc)
+{
+ string_.insert(utf8_byte_offset(string_, i), ustring(n, uc).string_);
+ return *this;
+}
+
+ustring& ustring::insert(ustring::size_type i, ustring::size_type n, char c)
+{
+ string_.insert(utf8_byte_offset(string_, i), n, c);
+ return *this;
+}
+
+ustring::iterator ustring::insert(ustring::iterator p, gunichar uc)
+{
+ const size_type offset = p.base() - string_.begin();
+ const UnicharToUtf8 conv (uc);
+ string_.insert(offset, conv.buf, conv.len);
+ return iterator(string_.begin() + offset);
+}
+
+ustring::iterator ustring::insert(ustring::iterator p, char c)
+{
+ return iterator(string_.insert(p.base(), c));
+}
+
+void ustring::insert(ustring::iterator p, ustring::size_type n, gunichar uc)
+{
+ string_.insert(p.base() - string_.begin(), ustring(n, uc).string_);
+}
+
+void ustring::insert(ustring::iterator p, ustring::size_type n, char c)
+{
+ string_.insert(p.base(), n, c);
+}
+
+
+/**** Glib::ustring::replace() *********************************************/
+
+ustring& ustring::replace(ustring::size_type i, ustring::size_type n, const ustring& src)
+{
+ const Utf8SubstrBounds bounds (string_, i, n);
+ string_.replace(bounds.i, bounds.n, src.string_);
+ return *this;
+}
+
+ustring& ustring::replace(ustring::size_type i, ustring::size_type n,
+ const ustring& src, ustring::size_type i2, ustring::size_type n2)
+{
+ const Utf8SubstrBounds bounds (string_, i, n);
+ const Utf8SubstrBounds bounds2 (src.string_, i2, n2);
+ string_.replace(bounds.i, bounds.n, src.string_, bounds2.i, bounds2.n);
+ return *this;
+}
+
+ustring& ustring::replace(ustring::size_type i, ustring::size_type n,
+ const char* src, ustring::size_type n2)
+{
+ const Utf8SubstrBounds bounds (string_, i, n);
+ string_.replace(bounds.i, bounds.n, src, utf8_byte_offset(src, n2));
+ return *this;
+}
+
+ustring& ustring::replace(ustring::size_type i, ustring::size_type n, const char* src)
+{
+ const Utf8SubstrBounds bounds (string_, i, n);
+ string_.replace(bounds.i, bounds.n, src);
+ return *this;
+}
+
+ustring& ustring::replace(ustring::size_type i, ustring::size_type n,
+ ustring::size_type n2, gunichar uc)
+{
+ const Utf8SubstrBounds bounds (string_, i, n);
+ string_.replace(bounds.i, bounds.n, ustring(n2, uc).string_);
+ return *this;
+}
+
+ustring& ustring::replace(ustring::size_type i, ustring::size_type n,
+ ustring::size_type n2, char c)
+{
+ const Utf8SubstrBounds bounds (string_, i, n);
+ string_.replace(bounds.i, bounds.n, n2, c);
+ return *this;
+}
+
+ustring& ustring::replace(ustring::iterator pbegin, ustring::iterator pend, const ustring& src)
+{
+ string_.replace(pbegin.base(), pend.base(), src.string_);
+ return *this;
+}
+
+ustring& ustring::replace(ustring::iterator pbegin, ustring::iterator pend,
+ const char* src, ustring::size_type n)
+{
+ string_.replace(pbegin.base(), pend.base(), src, utf8_byte_offset(src, n));
+ return *this;
+}
+
+ustring& ustring::replace(ustring::iterator pbegin, ustring::iterator pend, const char* src)
+{
+ string_.replace(pbegin.base(), pend.base(), src);
+ return *this;
+}
+
+ustring& ustring::replace(ustring::iterator pbegin, ustring::iterator pend,
+ ustring::size_type n, gunichar uc)
+{
+ string_.replace(pbegin.base(), pend.base(), ustring(n, uc).string_);
+ return *this;
+}
+
+ustring& ustring::replace(ustring::iterator pbegin, ustring::iterator pend,
+ ustring::size_type n, char c)
+{
+ string_.replace(pbegin.base(), pend.base(), n, c);
+ return *this;
+}
+
+
+/**** Glib::ustring::erase() ***********************************************/
+
+void ustring::clear()
+{
+ string_.erase();
+}
+
+ustring& ustring::erase(ustring::size_type i, ustring::size_type n)
+{
+ const Utf8SubstrBounds bounds (string_, i, n);
+ string_.erase(bounds.i, bounds.n);
+ return *this;
+}
+
+ustring& ustring::erase()
+{
+ string_.erase();
+ return *this;
+}
+
+ustring::iterator ustring::erase(ustring::iterator p)
+{
+ return iterator(string_.erase(p.base()));
+}
+
+ustring::iterator ustring::erase(ustring::iterator pbegin, ustring::iterator pend)
+{
+ return iterator(string_.erase(pbegin.base(), pend.base()));
+}
+
+
+/**** Glib::ustring::compare() *********************************************/
+
+int ustring::compare(const ustring& rhs) const
+{
+ return g_utf8_collate(string_.c_str(), rhs.string_.c_str());
+}
+
+int ustring::compare(const char* rhs) const
+{
+ return g_utf8_collate(string_.c_str(), rhs);
+}
+
+int ustring::compare(ustring::size_type i, ustring::size_type n, const ustring& rhs) const
+{
+ return ustring(*this, i, n).compare(rhs);
+}
+
+int ustring::compare(ustring::size_type i, ustring::size_type n,
+ const ustring& rhs, ustring::size_type i2, ustring::size_type n2) const
+{
+ return ustring(*this, i, n).compare(ustring(rhs, i2, n2));
+}
+
+int ustring::compare(ustring::size_type i, ustring::size_type n,
+ const char* rhs, ustring::size_type n2) const
+{
+ return ustring(*this, i, n).compare(ustring(rhs, n2));
+}
+
+int ustring::compare(ustring::size_type i, ustring::size_type n, const char* rhs) const
+{
+ return ustring(*this, i, n).compare(rhs);
+}
+
+
+/**** Glib::ustring -- index access ****************************************/
+
+ustring::value_type ustring::operator[](ustring::size_type i) const
+{
+ return g_utf8_get_char(g_utf8_offset_to_pointer(string_.data(), i));
+}
+
+ustring::value_type ustring::at(ustring::size_type i) const
+{
+ const size_type byte_offset = utf8_byte_offset(string_, i);
+
+ // Throws std::out_of_range if the index is invalid.
+ return g_utf8_get_char(&string_.at(byte_offset));
+}
+
+
+/**** Glib::ustring -- iterator access *************************************/
+
+ustring::iterator ustring::begin()
+{
+ return iterator(string_.begin());
+}
+
+ustring::iterator ustring::end()
+{
+ return iterator(string_.end());
+}
+
+ustring::const_iterator ustring::begin() const
+{
+ return const_iterator(string_.begin());
+}
+
+ustring::const_iterator ustring::end() const
+{
+ return const_iterator(string_.end());
+}
+
+ustring::reverse_iterator ustring::rbegin()
+{
+ return reverse_iterator(iterator(string_.end()));
+}
+
+ustring::reverse_iterator ustring::rend()
+{
+ return reverse_iterator(iterator(string_.begin()));
+}
+
+ustring::const_reverse_iterator ustring::rbegin() const
+{
+ return const_reverse_iterator(const_iterator(string_.end()));
+}
+
+ustring::const_reverse_iterator ustring::rend() const
+{
+ return const_reverse_iterator(const_iterator(string_.begin()));
+}
+
+
+/**** Glib::ustring::find() ************************************************/
+
+ustring::size_type ustring::find(const ustring& str, ustring::size_type i) const
+{
+ return utf8_char_offset(string_, string_.find(str.string_, utf8_byte_offset(string_, i)));
+}
+
+ustring::size_type ustring::find(const char* str, ustring::size_type i, ustring::size_type n) const
+{
+ return utf8_char_offset(string_, string_.find(str, utf8_byte_offset(string_, i),
+ utf8_byte_offset(str, n)));
+}
+
+ustring::size_type ustring::find(const char* str, ustring::size_type i) const
+{
+ return utf8_char_offset(string_, string_.find(str, utf8_byte_offset(string_, i)));
+}
+
+ustring::size_type ustring::find(gunichar uc, ustring::size_type i) const
+{
+ const UnicharToUtf8 conv (uc);
+ return utf8_char_offset(string_, string_.find(conv.buf, utf8_byte_offset(string_, i), conv.len));
+}
+
+ustring::size_type ustring::find(char c, ustring::size_type i) const
+{
+ return utf8_char_offset(string_, string_.find(c, utf8_byte_offset(string_, i)));
+}
+
+
+/**** Glib::ustring::rfind() ***********************************************/
+
+ustring::size_type ustring::rfind(const ustring& str, ustring::size_type i) const
+{
+ return utf8_char_offset(string_, string_.rfind(str.string_, utf8_byte_offset(string_, i)));
+}
+
+ustring::size_type ustring::rfind(const char* str, ustring::size_type i,
+ ustring::size_type n) const
+{
+ return utf8_char_offset(string_, string_.rfind(str, utf8_byte_offset(string_, i),
+ utf8_byte_offset(str, n)));
+}
+
+ustring::size_type ustring::rfind(const char* str, ustring::size_type i) const
+{
+ return utf8_char_offset(string_, string_.rfind(str, utf8_byte_offset(string_, i)));
+}
+
+ustring::size_type ustring::rfind(gunichar uc, ustring::size_type i) const
+{
+ const UnicharToUtf8 conv (uc);
+ return utf8_char_offset(string_, string_.rfind(conv.buf, utf8_byte_offset(string_, i), conv.len));
+}
+
+ustring::size_type ustring::rfind(char c, ustring::size_type i) const
+{
+ return utf8_char_offset(string_, string_.rfind(c, utf8_byte_offset(string_, i)));
+}
+
+
+/**** Glib::ustring::find_first_of() ***************************************/
+
+ustring::size_type ustring::find_first_of(const ustring& match, ustring::size_type i) const
+{
+ return utf8_find_first_of(string_, i, match.string_.data(), match.string_.size(), false);
+}
+
+ustring::size_type ustring::find_first_of(const char* match,
+ ustring::size_type i, ustring::size_type n) const
+{
+ return utf8_find_first_of(string_, i, match, n, false);
+}
+
+ustring::size_type ustring::find_first_of(const char* match, ustring::size_type i) const
+{
+ return utf8_find_first_of(string_, i, match, -1, false);
+}
+
+ustring::size_type ustring::find_first_of(gunichar uc, ustring::size_type i) const
+{
+ return find(uc, i);
+}
+
+ustring::size_type ustring::find_first_of(char c, ustring::size_type i) const
+{
+ return find(c, i);
+}
+
+
+/**** Glib::ustring::find_last_of() ****************************************/
+
+ustring::size_type ustring::find_last_of(const ustring& match, ustring::size_type i) const
+{
+ return utf8_find_last_of(string_, i, match.string_.data(), match.string_.size(), false);
+}
+
+ustring::size_type ustring::find_last_of(const char* match,
+ ustring::size_type i, ustring::size_type n) const
+{
+ return utf8_find_last_of(string_, i, match, n, false);
+}
+
+ustring::size_type ustring::find_last_of(const char* match, ustring::size_type i) const
+{
+ return utf8_find_last_of(string_, i, match, -1, false);
+}
+
+ustring::size_type ustring::find_last_of(gunichar uc, ustring::size_type i) const
+{
+ return rfind(uc, i);
+}
+
+ustring::size_type ustring::find_last_of(char c, ustring::size_type i) const
+{
+ return rfind(c, i);
+}
+
+
+/**** Glib::ustring::find_first_not_of() ***********************************/
+
+ustring::size_type ustring::find_first_not_of(const ustring& match, ustring::size_type i) const
+{
+ return utf8_find_first_of(string_, i, match.string_.data(), match.string_.size(), true);
+}
+
+ustring::size_type ustring::find_first_not_of(const char* match,
+ ustring::size_type i, ustring::size_type n) const
+{
+ return utf8_find_first_of(string_, i, match, n, true);
+}
+
+ustring::size_type ustring::find_first_not_of(const char* match, ustring::size_type i) const
+{
+ return utf8_find_first_of(string_, i, match, -1, true);
+}
+
+// Unfortunately, all of the find_*_not_of() methods for single
+// characters need their own special implementation.
+//
+ustring::size_type ustring::find_first_not_of(gunichar uc, ustring::size_type i) const
+{
+ const size_type bi = utf8_byte_offset(string_, i);
+ if(bi != npos)
+ {
+ const char *const pbegin = string_.data();
+ const char *const pend = pbegin + string_.size();
+
+ for(const char* p = pbegin + bi;
+ p < pend;
+ p = g_utf8_next_char(p), ++i)
+ {
+ if(g_utf8_get_char(p) != uc)
+ return i;
+ }
+ }
+ return npos;
+}
+
+ustring::size_type ustring::find_first_not_of(char c, ustring::size_type i) const
+{
+ const size_type bi = utf8_byte_offset(string_, i);
+ if(bi != npos)
+ {
+ const char *const pbegin = string_.data();
+ const char *const pend = pbegin + string_.size();
+
+ for(const char* p = pbegin + bi;
+ p < pend;
+ p = g_utf8_next_char(p), ++i)
+ {
+ if(*p != c)
+ return i;
+ }
+ }
+ return npos;
+}
+
+
+/**** Glib::ustring::find_last_not_of() ************************************/
+
+ustring::size_type ustring::find_last_not_of(const ustring& match, ustring::size_type i) const
+{
+ return utf8_find_last_of(string_, i, match.string_.data(), match.string_.size(), true);
+}
+
+ustring::size_type ustring::find_last_not_of(const char* match,
+ ustring::size_type i, ustring::size_type n) const
+{
+ return utf8_find_last_of(string_, i, match, n, true);
+}
+
+ustring::size_type ustring::find_last_not_of(const char* match, ustring::size_type i) const
+{
+ return utf8_find_last_of(string_, i, match, -1, true);
+}
+
+// Unfortunately, all of the find_*_not_of() methods for single
+// characters need their own special implementation.
+//
+ustring::size_type ustring::find_last_not_of(gunichar uc, ustring::size_type i) const
+{
+ const char *const pbegin = string_.data();
+ const char *const pend = pbegin + string_.size();
+ size_type i_cur = 0;
+ size_type i_found = npos;
+
+ for(const char* p = pbegin;
+ p < pend && i_cur <= i;
+ p = g_utf8_next_char(p), ++i_cur)
+ {
+ if(g_utf8_get_char(p) != uc)
+ i_found = i_cur;
+ }
+ return i_found;
+}
+
+ustring::size_type ustring::find_last_not_of(char c, ustring::size_type i) const
+{
+ const char *const pbegin = string_.data();
+ const char *const pend = pbegin + string_.size();
+ size_type i_cur = 0;
+ size_type i_found = npos;
+
+ for(const char* p = pbegin;
+ p < pend && i_cur <= i;
+ p = g_utf8_next_char(p), ++i_cur)
+ {
+ if(*p != c)
+ i_found = i_cur;
+ }
+ return i_found;
+}
+
+
+/**** Glib::ustring -- get size and resize *********************************/
+
+bool ustring::empty() const
+{
+ return string_.empty();
+}
+
+ustring::size_type ustring::size() const
+{
+ const char *const pdata = string_.data();
+ return g_utf8_pointer_to_offset(pdata, pdata + string_.size());
+}
+
+ustring::size_type ustring::length() const
+{
+ const char *const pdata = string_.data();
+ return g_utf8_pointer_to_offset(pdata, pdata + string_.size());
+}
+
+ustring::size_type ustring::bytes() const
+{
+ return string_.size();
+}
+
+ustring::size_type ustring::capacity() const
+{
+ return string_.capacity();
+}
+
+ustring::size_type ustring::max_size() const
+{
+ return string_.max_size();
+}
+
+void ustring::resize(ustring::size_type n, gunichar uc)
+{
+ const size_type size_now = size();
+ if(n < size_now)
+ erase(n, npos);
+ else if(n > size_now)
+ append(n - size_now, uc);
+}
+
+void ustring::resize(ustring::size_type n, char c)
+{
+ const size_type size_now = size();
+ if(n < size_now)
+ erase(n, npos);
+ else if(n > size_now)
+ string_.append(n - size_now, c);
+}
+
+void ustring::reserve(ustring::size_type n)
+{
+ string_.reserve(n);
+}
+
+
+/**** Glib::ustring -- C string access *************************************/
+
+const char* ustring::data() const
+{
+ return string_.data();
+}
+
+const char* ustring::c_str() const
+{
+ return string_.c_str();
+}
+
+// Note that copy() requests UTF-8 character offsets as
+// parameters, but returns the number of copied bytes.
+//
+ustring::size_type ustring::copy(char* dest, ustring::size_type n, ustring::size_type i) const
+{
+ const Utf8SubstrBounds bounds (string_, i, n);
+ return string_.copy(dest, bounds.n, bounds.i);
+}
+
+
+/**** Glib::ustring -- UTF-8 utilities *************************************/
+
+bool ustring::validate() const
+{
+ return (g_utf8_validate(string_.data(), string_.size(), 0) != 0);
+}
+
+bool ustring::validate(ustring::iterator& first_invalid)
+{
+ const char *const pdata = string_.data();
+ const char* valid_end = pdata;
+ const int is_valid = g_utf8_validate(pdata, string_.size(), &valid_end);
+
+ first_invalid = iterator(string_.begin() + (valid_end - pdata));
+ return (is_valid != 0);
+}
+
+bool ustring::validate(ustring::const_iterator& first_invalid) const
+{
+ const char *const pdata = string_.data();
+ const char* valid_end = pdata;
+ const int is_valid = g_utf8_validate(pdata, string_.size(), &valid_end);
+
+ first_invalid = const_iterator(string_.begin() + (valid_end - pdata));
+ return (is_valid != 0);
+}
+
+bool ustring::is_ascii() const
+{
+ const char* p = string_.data();
+ const char *const pend = p + string_.size();
+
+ for(; p != pend; ++p)
+ {
+ if((*p & '\x80') != 0)
+ return false;
+ }
+
+ return true;
+}
+
+ustring ustring::normalize(NormalizeMode mode) const
+{
+ const ScopedPtr<char> buf (g_utf8_normalize(string_.data(), string_.size(),
+ static_cast<GNormalizeMode>(int(mode))));
+ return ustring(buf.get());
+}
+
+ustring ustring::uppercase() const
+{
+ const ScopedPtr<char> buf (g_utf8_strup(string_.data(), string_.size()));
+ return ustring(buf.get());
+}
+
+ustring ustring::lowercase() const
+{
+ const ScopedPtr<char> buf (g_utf8_strdown(string_.data(), string_.size()));
+ return ustring(buf.get());
+}
+
+ustring ustring::casefold() const
+{
+ const ScopedPtr<char> buf (g_utf8_casefold(string_.data(), string_.size()));
+ return ustring(buf.get());
+}
+
+std::string ustring::collate_key() const
+{
+ const ScopedPtr<char> buf (g_utf8_collate_key(string_.data(), string_.size()));
+ return std::string(buf.get());
+}
+
+std::string ustring::casefold_collate_key() const
+{
+ char *const casefold_buf = g_utf8_casefold(string_.data(), string_.size());
+ char *const key_buf = g_utf8_collate_key(casefold_buf, -1);
+ g_free(casefold_buf);
+ return std::string(ScopedPtr<char>(key_buf).get());
+}
+
+
+/**** Glib::ustring::SequenceToString **************************************/
+
+ustring::SequenceToString<Glib::ustring::iterator,gunichar>
+ ::SequenceToString(Glib::ustring::iterator pbegin, Glib::ustring::iterator pend)
+:
+ std::string(pbegin.base(), pend.base())
+{}
+
+ustring::SequenceToString<Glib::ustring::const_iterator,gunichar>
+ ::SequenceToString(Glib::ustring::const_iterator pbegin, Glib::ustring::const_iterator pend)
+:
+ std::string(pbegin.base(), pend.base())
+{}
+
+
+/**** Glib::ustring -- stream I/O operators ********************************/
+
+std::istream& operator>>(std::istream& is, Glib::ustring& utf8_string)
+{
+ std::string locale_string;
+ is >> locale_string;
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ utf8_string = Glib::locale_to_utf8(locale_string);
+ #else
+ std::auto_ptr<Glib::Error> error; //TODO: Check this?
+ utf8_string = Glib::locale_to_utf8(locale_string, error);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ return is;
+}
+
+std::ostream& operator<<(std::ostream& os, const Glib::ustring& utf8_string)
+{
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ os << Glib::locale_from_utf8(utf8_string);
+ #else
+ std::auto_ptr<Glib::Error> error; //TODO: Check this?
+ os << Glib::locale_from_utf8(utf8_string, error);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return os;
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/ustring.h b/libs/glibmm2/glib/glibmm/ustring.h
new file mode 100644
index 0000000000..86ff170552
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/ustring.h
@@ -0,0 +1,997 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_USTRING_H
+#define _GLIBMM_USTRING_H
+
+/* $Id: ustring.h,v 1.15 2006/09/19 20:48:15 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gmacros.h>
+#include <glib/gunicode.h>
+#include <glibmm/unicode.h>
+
+#include <iosfwd>
+#include <iterator>
+#include <string>
+
+#include <glibmmconfig.h>
+GLIBMM_USING_STD(bidirectional_iterator_tag)
+GLIBMM_USING_STD(reverse_iterator)
+GLIBMM_USING_STD(string)
+GLIBMM_USING_STD(istream)
+GLIBMM_USING_STD(ostream)
+
+#ifdef GLIBMM_HAVE_STD_ITERATOR_TRAITS
+GLIBMM_USING_STD(iterator_traits)
+#else
+#include <cstddef> /* for ptrdiff_t */
+GLIBMM_USING_STD(random_access_iterator_tag)
+#endif
+
+
+namespace Glib
+{
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+#ifndef GLIBMM_HAVE_STD_ITERATOR_TRAITS
+
+template <class T>
+struct IteratorTraits
+{
+ typedef typename T::iterator_category iterator_category;
+ typedef typename T::value_type value_type;
+ typedef typename T::difference_type difference_type;
+ typedef typename T::pointer pointer;
+ typedef typename T::reference reference;
+};
+
+template <class T>
+struct IteratorTraits<T*>
+{
+ typedef std::random_access_iterator_tag iterator_category;
+ typedef T value_type;
+ typedef ptrdiff_t difference_type;
+ typedef T* pointer;
+ typedef T& reference;
+};
+
+template <class T>
+struct IteratorTraits<const T*>
+{
+ typedef std::random_access_iterator_tag iterator_category;
+ typedef T value_type;
+ typedef ptrdiff_t difference_type;
+ typedef const T* pointer;
+ typedef const T& reference;
+};
+
+#endif /* GLIBMM_HAVE_STD_ITERATOR_TRAITS */
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+
+/** The iterator type of Glib::ustring.
+ * Note this is not a random access iterator but a bidirectional one,
+ * since all index operations need to iterate over the UTF-8 data. Use
+ * std::advance() to move to a certain position. However, all of the
+ * relational operators are available:
+ * <tt>==&nbsp;!=&nbsp;<&nbsp;>&nbsp;<=&nbsp;>=</tt>
+ *
+ * A writeable iterator isn't provided because: The number of bytes of
+ * the old UTF-8 character and the new one to write could be different.
+ * Therefore, any write operation would invalidate all other iterators
+ * pointing into the same string.
+ */
+template <class T>
+class ustring_Iterator
+{
+public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef gunichar value_type;
+ typedef std::string::difference_type difference_type;
+ typedef value_type reference;
+ typedef void pointer;
+
+ inline ustring_Iterator();
+ inline ustring_Iterator(const ustring_Iterator<std::string::iterator>& other);
+
+ inline value_type operator*() const;
+
+ inline ustring_Iterator<T> & operator++();
+ inline const ustring_Iterator<T> operator++(int);
+ inline ustring_Iterator<T> & operator--();
+ inline const ustring_Iterator<T> operator--(int);
+
+ explicit inline ustring_Iterator(T pos);
+ inline T base() const;
+
+private:
+ T pos_;
+};
+
+
+/** Extract a UCS-4 character from UTF-8 data.
+ * Convert a single UTF-8 (multibyte) character starting at @p pos to
+ * a UCS-4 wide character. This may read up to 6 bytes after the start
+ * position, depending on the UTF-8 character width. You have to make
+ * sure the source contains at least one valid UTF-8 character.
+ *
+ * This is mainly used by the implementation of Glib::ustring::iterator,
+ * but it might be useful as utility function if you prefer using
+ * std::string even for UTF-8 encoding.
+ */
+gunichar get_unichar_from_std_iterator(std::string::const_iterator pos) G_GNUC_PURE;
+
+
+/** Glib::ustring has much the same interface as std::string, but contains
+ * %Unicode characters encoded as UTF-8.
+ *
+ * @par About UTF-8 and ASCII
+ * @par
+ * The standard character set ANSI_X3.4-1968&nbsp;-- more commonly known as
+ * ASCII&nbsp;-- is a subset of UTF-8. So, if you want to, you can use
+ * Glib::ustring without even thinking about UTF-8.
+ * @par
+ * Whenever ASCII is mentioned in this manual, we mean the @em real ASCII
+ * (i.e. as defined in ANSI_X3.4-1968), which contains only 7-bit characters.
+ * Glib::ustring can @em not be used with ASCII-compatible extended 8-bit
+ * charsets like ISO-8859-1. It's a good idea to avoid string literals
+ * containing non-ASCII characters (e.g. German umlauts) in source code,
+ * or at least you should use UTF-8 literals.
+ * @par
+ * You can find a detailed UTF-8 and %Unicode FAQ here:
+ * http://www.cl.cam.ac.uk/~mgk25/unicode.html
+ *
+ * @par Glib::ustring vs. std::string
+ * @par
+ * Glib::ustring has implicit type conversions to and from std::string.
+ * These conversions do @em not convert to/from the current locale (see
+ * Glib::locale_from_utf8() and Glib::locale_to_utf8() if you need that). You
+ * can always use std::string instead of Glib::ustring&nbsp;-- however, using
+ * std::string with multi-byte characters is quite hard. For instance,
+ * <tt>std::string::operator[]</tt> might return a byte in the middle of a
+ * character, and <tt>std::string::length()</tt> returns the number of bytes
+ * rather than characters. So don't do that without a good reason.
+ * @par
+ * In a perfect world the C++ Standard Library would contain a UTF-8 string
+ * class. Unfortunately, the C++ standard doesn't mention UTF-8 at all. Note
+ * that std::wstring is not a UTF-8 string class because it contains only
+ * fixed-width characters (where width could be 32, 16, or even 8 bits).
+ *
+ * @par Glib::ustring and stream input/output
+ * @par
+ * The stream I/O operators, that is operator<<() and operator>>(), perform
+ * implicit charset conversion to/from the current locale. If that's not
+ * what you intented (e.g. when writing to a configuration file that should
+ * always be UTF-8 encoded) use ustring::raw() to override this behaviour.
+ * @par
+ * If you're using std::ostringstream to build strings for display in the
+ * user interface, you must convert the result back to UTF-8 as shown below:
+ * @code
+ * std::ostringstream output;
+ * output.imbue(std::locale("")); // use the user's locale for this stream
+ * output << percentage << " % done";
+ * label->set_text(Glib::locale_to_utf8(output.str()));
+ * @endcode
+ *
+ * @par Implementation notes
+ * @par
+ * Glib::ustring does not inherit from std::string, because std::string was
+ * intended to be a final class. For instance, it does not have a virtual
+ * destructor. Also, a HAS-A relationship is more appropriate because
+ * ustring can't just enhance the std::string interface. Rather, it has to
+ * reimplement the interface so that all operations are based on characters
+ * instead of bytes.
+ */
+class ustring
+{
+public:
+ typedef std::string::size_type size_type;
+ typedef std::string::difference_type difference_type;
+
+ typedef gunichar value_type;
+ typedef gunichar & reference;
+ typedef const gunichar & const_reference;
+
+ typedef ustring_Iterator<std::string::iterator> iterator;
+ typedef ustring_Iterator<std::string::const_iterator> const_iterator;
+
+#ifndef GLIBMM_HAVE_SUN_REVERSE_ITERATOR
+
+ typedef std::reverse_iterator<iterator> reverse_iterator;
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+
+#else
+
+ typedef std::reverse_iterator<iterator,
+ iterator::iterator_category,
+ iterator::value_type,
+ iterator::reference,
+ iterator::pointer,
+ iterator::difference_type> reverse_iterator;
+ typedef std::reverse_iterator<const_iterator,
+ const_iterator::iterator_category,
+ const_iterator::value_type,
+ const_iterator::reference,
+ const_iterator::pointer,
+ const_iterator::difference_type> const_reverse_iterator;
+
+#endif /* GLIBMM_HAVE_SUN_REVERSE_ITERATOR */
+
+#ifdef GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS
+ static GLIBMM_API const size_type npos = std::string::npos;
+#else
+ //The IRIX MipsPro compiler says "The indicated constant value is not known",
+ //so we need to initalize the static member data elsewhere.
+ static GLIBMM_API const size_type npos;
+#endif
+
+ /*! Default constructor, which creates an empty string.
+ */
+ ustring();
+
+ ~ustring();
+
+ /*! Construct a ustring as a copy of another ustring.
+ * @param other A source string.
+ */
+ ustring(const ustring& other);
+
+ /*! Assign the value of another string to this string.
+ * @param other A source string.
+ */
+ ustring& operator=(const ustring& other);
+
+ /*! Swap contents with another string.
+ * @param other String to swap with.
+ */
+ void swap(ustring& other);
+
+ /*! Construct a ustring as a copy of another std::string.
+ * @param src A source <tt>std::string</tt> containing text encoded as UTF-8.
+ */
+ ustring(const std::string& src);
+
+ /*! Construct a ustring as a copy of a substring.
+ * @param src %Source ustring.
+ * @param i Index of first character to copy from.
+ * @param n Number of UTF-8 characters to copy (defaults to copying the remainder).
+ */
+ ustring(const ustring& src, size_type i, size_type n=npos);
+
+ /*! Construct a ustring as a partial copy of a C string.
+ * @param src %Source C string encoded as UTF-8.
+ * @param n Number of UTF-8 characters to copy.
+ */
+ ustring(const char* src, size_type n);
+
+ /*! Construct a ustring as a copy of a C string.
+ * @param src %Source C string encoded as UTF-8.
+ */
+ ustring(const char* src);
+
+ /*! Construct a ustring as multiple characters.
+ * @param n Number of characters.
+ * @param uc UCS-4 code point to use.
+ */
+ ustring(size_type n, gunichar uc);
+
+ /*! Construct a ustring as multiple characters.
+ * @param n Number of characters.
+ * @param c ASCII character to use.
+ */
+ ustring(size_type n, char c);
+
+ /*! Construct a ustring as a copy of a range.
+ * @param pbegin Start of range.
+ * @param pend End of range.
+ */
+ template <class In> ustring(In pbegin, In pend);
+
+
+//! @name Assign new contents.
+//! @{
+
+ ustring& operator=(const std::string& src);
+ ustring& operator=(const char* src);
+ ustring& operator=(gunichar uc);
+ ustring& operator=(char c);
+
+ ustring& assign(const ustring& src);
+ ustring& assign(const ustring& src, size_type i, size_type n);
+ ustring& assign(const char* src, size_type n);
+ ustring& assign(const char* src);
+ ustring& assign(size_type n, gunichar uc);
+ ustring& assign(size_type n, char c);
+ template <class In> ustring& assign(In pbegin, In pend);
+
+//! @}
+//! @name Append to the string.
+//! @{
+
+ ustring& operator+=(const ustring& src);
+ ustring& operator+=(const char* src);
+ ustring& operator+=(gunichar uc);
+ ustring& operator+=(char c);
+ void push_back(gunichar uc);
+ void push_back(char c);
+
+ ustring& append(const ustring& src);
+ ustring& append(const ustring& src, size_type i, size_type n);
+ ustring& append(const char* src, size_type n);
+ ustring& append(const char* src);
+ ustring& append(size_type n, gunichar uc);
+ ustring& append(size_type n, char c);
+ template <class In> ustring& append(In pbegin, In pend);
+
+//! @}
+//! @name Insert into the string.
+//! @{
+
+ ustring& insert(size_type i, const ustring& src);
+ ustring& insert(size_type i, const ustring& src, size_type i2, size_type n);
+ ustring& insert(size_type i, const char* src, size_type n);
+ ustring& insert(size_type i, const char* src);
+ ustring& insert(size_type i, size_type n, gunichar uc);
+ ustring& insert(size_type i, size_type n, char c);
+
+ iterator insert(iterator p, gunichar uc);
+ iterator insert(iterator p, char c);
+ void insert(iterator p, size_type n, gunichar uc);
+ void insert(iterator p, size_type n, char c);
+ template <class In> void insert(iterator p, In pbegin, In pend);
+
+//! @}
+//! @name Replace sub-strings.
+//! @{
+
+ ustring& replace(size_type i, size_type n, const ustring& src);
+ ustring& replace(size_type i, size_type n, const ustring& src, size_type i2, size_type n2);
+ ustring& replace(size_type i, size_type n, const char* src, size_type n2);
+ ustring& replace(size_type i, size_type n, const char* src);
+ ustring& replace(size_type i, size_type n, size_type n2, gunichar uc);
+ ustring& replace(size_type i, size_type n, size_type n2, char c);
+
+ ustring& replace(iterator pbegin, iterator pend, const ustring& src);
+ ustring& replace(iterator pbegin, iterator pend, const char* src, size_type n);
+ ustring& replace(iterator pbegin, iterator pend, const char* src);
+ ustring& replace(iterator pbegin, iterator pend, size_type n, gunichar uc);
+ ustring& replace(iterator pbegin, iterator pend, size_type n, char c);
+ template <class In> ustring& replace(iterator pbegin, iterator pend, In pbegin2, In pend2);
+
+//! @}
+//! @name Erase sub-strings.
+//! @{
+
+ void clear();
+ ustring& erase(size_type i, size_type n=npos);
+ ustring& erase();
+ iterator erase(iterator p);
+ iterator erase(iterator pbegin, iterator pend);
+
+//! @}
+//! @name Compare and collate.
+//! @{
+
+ int compare(const ustring& rhs) const;
+ int compare(const char* rhs) const;
+ int compare(size_type i, size_type n, const ustring& rhs) const;
+ int compare(size_type i, size_type n, const ustring& rhs, size_type i2, size_type n2) const;
+ int compare(size_type i, size_type n, const char* rhs, size_type n2) const;
+ int compare(size_type i, size_type n, const char* rhs) const;
+
+ /*! Create a unique sorting key for the UTF-8 string. If you need to
+ * compare UTF-8 strings regularly, e.g. for sorted containers such as
+ * <tt>std::set<></tt>, you should consider creating a collate key first
+ * and compare this key instead of the actual string.
+ *
+ * The ustring::compare() methods as well as the relational operators
+ * <tt>==&nbsp;!=&nbsp;<&nbsp;>&nbsp;<=&nbsp;>=</tt> are quite costly
+ * because they have to deal with %Unicode and the collation rules defined by
+ * the current locale. Converting both operands to UCS-4 is just the first
+ * of several costly steps involved when comparing ustrings. So be careful.
+ */
+ std::string collate_key() const;
+
+ /*! Create a unique key for the UTF-8 string that can be used for caseless
+ * sorting. <tt>ustr.casefold_collate_key()</tt> results in the same string
+ * as <tt>ustr.casefold().collate_key()</tt>, but the former is likely more
+ * efficient.
+ */
+ std::string casefold_collate_key() const;
+
+//! @}
+//! @name Extract characters and sub-strings.
+//! @{
+
+ /*! No reference return; use replace() to write characters. */
+ value_type operator[](size_type i) const;
+
+ /*! No reference return; use replace() to write characters. @throw std::out_of_range */
+ value_type at(size_type i) const;
+
+ inline ustring substr(size_type i=0, size_type n=npos) const;
+
+//! @}
+//! @name Access a sequence of characters.
+//! @{
+
+ iterator begin();
+ iterator end();
+ const_iterator begin() const;
+ const_iterator end() const;
+ reverse_iterator rbegin();
+ reverse_iterator rend();
+ const_reverse_iterator rbegin() const;
+ const_reverse_iterator rend() const;
+
+//! @}
+//! @name Find sub-strings.
+//! @{
+
+ size_type find(const ustring& str, size_type i=0) const;
+ size_type find(const char* str, size_type i, size_type n) const;
+ size_type find(const char* str, size_type i=0) const;
+ size_type find(gunichar uc, size_type i=0) const;
+ size_type find(char c, size_type i=0) const;
+
+ size_type rfind(const ustring& str, size_type i=npos) const;
+ size_type rfind(const char* str, size_type i, size_type n) const;
+ size_type rfind(const char* str, size_type i=npos) const;
+ size_type rfind(gunichar uc, size_type i=npos) const;
+ size_type rfind(char c, size_type i=npos) const;
+
+//! @}
+//! @name Match against a set of characters.
+//! @{
+
+ size_type find_first_of(const ustring& match, size_type i=0) const;
+ size_type find_first_of(const char* match, size_type i, size_type n) const;
+ size_type find_first_of(const char* match, size_type i=0) const;
+ size_type find_first_of(gunichar uc, size_type i=0) const;
+ size_type find_first_of(char c, size_type i=0) const;
+
+ size_type find_last_of(const ustring& match, size_type i=npos) const;
+ size_type find_last_of(const char* match, size_type i, size_type n) const;
+ size_type find_last_of(const char* match, size_type i=npos) const;
+ size_type find_last_of(gunichar uc, size_type i=npos) const;
+ size_type find_last_of(char c, size_type i=npos) const;
+
+ size_type find_first_not_of(const ustring& match, size_type i=0) const;
+ size_type find_first_not_of(const char* match, size_type i, size_type n) const;
+ size_type find_first_not_of(const char* match, size_type i=0) const;
+ size_type find_first_not_of(gunichar uc, size_type i=0) const;
+ size_type find_first_not_of(char c, size_type i=0) const;
+
+ size_type find_last_not_of(const ustring& match, size_type i=npos) const;
+ size_type find_last_not_of(const char* match, size_type i, size_type n) const;
+ size_type find_last_not_of(const char* match, size_type i=npos) const;
+ size_type find_last_not_of(gunichar uc, size_type i=npos) const;
+ size_type find_last_not_of(char c, size_type i=npos) const;
+
+//! @}
+//! @name Retrieve the string's size.
+//! @{
+
+ /** Returns true if the string is empty. Equivalent to *this == "".
+ * @result Whether the string is empty.
+ */
+ bool empty() const;
+
+ /** Returns the number of characters in the string, not including any null-termination.
+ * @result The number of UTF-8 characters.
+ *
+ * @see bytes(), empty()
+ */
+ size_type size() const;
+
+ //We have length() as well as size(), because std::string has both.
+
+ /** This is the same as size().
+ */
+ size_type length() const;
+
+ /** Returns the number of bytes in the string, not including any null-termination.
+ * @result The number of bytes.
+ *
+ * @see size(), empty()
+ */
+ size_type bytes() const;
+
+//! @}
+//! @name Change the string's size.
+//! @{
+
+ void resize(size_type n, gunichar uc);
+ void resize(size_type n, char c='\0');
+
+//! @}
+//! @name Control the allocated memory.
+//! @{
+
+ size_type capacity() const;
+ size_type max_size() const;
+ void reserve(size_type n=0);
+
+//! @}
+//! @name Get a per-byte representation of the string.
+//! @{
+
+ inline operator std::string() const; // e.g. std::string str = ustring();
+ inline const std::string& raw() const;
+
+ // Not necessarily an ASCII char*. Use g_utf8_*() where necessary.
+ const char* data() const;
+ const char* c_str() const;
+
+ /*! @return Number of copied @em bytes, not characters. */
+ size_type copy(char* dest, size_type n, size_type i=0) const;
+
+//! @}
+//! @name UTF-8 utilities.
+//! @{
+
+ /*! Check whether the string is valid UTF-8. */
+ bool validate() const;
+
+ /*! Check whether the string is valid UTF-8. */
+ bool validate(iterator& first_invalid);
+
+ /*! Check whether the string is valid UTF-8. */
+ bool validate(const_iterator& first_invalid) const;
+
+ /*! Check whether the string is plain 7-bit ASCII. @par
+ * Unlike any other ustring method, is_ascii() is safe to use on invalid
+ * UTF-8 strings. If the string isn't valid UTF-8, it cannot be valid
+ * ASCII either, therefore is_ascii() will just return @c false then.
+ * @return Whether the string contains only ASCII characters.
+ */
+ bool is_ascii() const;
+
+ /*! "Normalize" the %Unicode character representation of the string. */
+ ustring normalize(NormalizeMode mode = NORMALIZE_DEFAULT_COMPOSE) const;
+
+//! @}
+//! @name Character case conversion.
+//! @{
+
+ /*! Returns a new UTF-8 string with all characters characters converted to
+ * their uppercase equivalent, while honoring the current locale. The
+ * resulting string may change in the number of bytes as well as in the
+ * number of characters. For instance, the German sharp&nbsp;s
+ * <tt>&quot;&szlig;&quot;</tt> will be replaced by two characters
+ * <tt>"SS"</tt> because there is no capital <tt>&quot;&szlig;&quot;</tt>.
+ */
+ ustring uppercase() const;
+
+ /*! Returns a new UTF-8 string with all characters characters converted to
+ * their lowercase equivalent, while honoring the current locale. The
+ * resulting string may change in the number of bytes as well as in the
+ * number of characters.
+ */
+ ustring lowercase() const;
+
+ /*! Returns a caseless representation of the UTF-8 string. The resulting
+ * string doesn't correspond to any particular case, therefore the result
+ * is only useful to compare strings and should never be displayed to the
+ * user.
+ */
+ ustring casefold() const;
+
+//! @}
+
+private:
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+#ifdef GLIBMM_HAVE_STD_ITERATOR_TRAITS
+ template <class In, class ValueType = typename std::iterator_traits<In>::value_type>
+#else
+ template <class In, class ValueType = typename Glib::IteratorTraits<In>::value_type>
+#endif
+ struct SequenceToString;
+
+ //The Tru64 compiler needs these partial specializations to be declared here,
+ //as well as defined later. That's probably correct. murrayc.
+ template <class In>
+ struct SequenceToString<In, char>;
+
+ template <class In>
+ struct SequenceToString<In, gunichar>;
+
+ /*
+ template <>
+ struct ustring::SequenceToString<Glib::ustring::iterator, gunichar>;
+
+ template <>
+ struct ustring::SequenceToString<Glib::ustring::const_iterator, gunichar>;
+ */
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+ std::string string_;
+};
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+template <class In, class ValueType>
+struct ustring::SequenceToString
+{};
+
+template <class In>
+struct ustring::SequenceToString<In, char> : public std::string
+{
+ SequenceToString(In pbegin, In pend);
+};
+
+template <class In>
+struct ustring::SequenceToString<In, gunichar> : public std::string
+{
+ SequenceToString(In pbegin, In pend);
+};
+
+template <>
+struct ustring::SequenceToString<Glib::ustring::iterator, gunichar> : public std::string
+{
+ SequenceToString(Glib::ustring::iterator pbegin, Glib::ustring::iterator pend);
+};
+
+template <>
+struct ustring::SequenceToString<Glib::ustring::const_iterator, gunichar> : public std::string
+{
+ SequenceToString(Glib::ustring::const_iterator pbegin, Glib::ustring::const_iterator pend);
+};
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+
+/** Stream input operator.
+ * @relates Glib::ustring
+ * @throw Glib::ConvertError
+ */
+std::istream& operator>>(std::istream& is, Glib::ustring& utf8_string);
+
+/** Stream output operator.
+ * @relates Glib::ustring
+ * @throw Glib::ConvertError
+ */
+std::ostream& operator<<(std::ostream& os, const Glib::ustring& utf8_string);
+
+
+/***************************************************************************/
+/* Inline implementation */
+/***************************************************************************/
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+/**** Glib::ustring_Iterator<> *********************************************/
+
+template <class T> inline
+ustring_Iterator<T>::ustring_Iterator(T pos)
+:
+ pos_ (pos)
+{}
+
+template <class T> inline
+T ustring_Iterator<T>::base() const
+{
+ return pos_;
+}
+
+template <class T> inline
+ustring_Iterator<T>::ustring_Iterator()
+:
+ pos_ ()
+{}
+
+template <class T> inline
+ustring_Iterator<T>::ustring_Iterator(const ustring_Iterator<std::string::iterator>& other)
+:
+ pos_ (other.base())
+{}
+
+template <class T> inline
+typename ustring_Iterator<T>::value_type ustring_Iterator<T>::operator*() const
+{
+ return Glib::get_unichar_from_std_iterator(pos_);
+}
+
+template <class T> inline
+ustring_Iterator<T>& ustring_Iterator<T>::operator++()
+{
+ pos_ += g_utf8_skip[static_cast<unsigned char>(*pos_)];
+ return *this;
+}
+
+template <class T> inline
+const ustring_Iterator<T> ustring_Iterator<T>::operator++(int)
+{
+ const ustring_Iterator<T> temp (*this);
+ this->operator++();
+ return temp;
+}
+
+template <class T> inline
+ustring_Iterator<T>& ustring_Iterator<T>::operator--()
+{
+ do --pos_; while((*pos_ & '\xC0') == '\x80');
+ return *this;
+}
+
+template <class T> inline
+const ustring_Iterator<T> ustring_Iterator<T>::operator--(int)
+{
+ const ustring_Iterator<T> temp (*this);
+ this->operator--();
+ return temp;
+}
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+
+/** @relates Glib::ustring_Iterator */
+template <class T> inline
+bool operator==(const ustring_Iterator<T>& lhs, const ustring_Iterator<T>& rhs)
+{
+ return (lhs.base() == rhs.base());
+}
+
+/** @relates Glib::ustring_Iterator */
+template <class T> inline
+bool operator!=(const ustring_Iterator<T>& lhs, const ustring_Iterator<T>& rhs)
+{
+ return (lhs.base() != rhs.base());
+}
+
+/** @relates Glib::ustring_Iterator */
+template <class T> inline
+bool operator<(const ustring_Iterator<T>& lhs, const ustring_Iterator<T>& rhs)
+{
+ return (lhs.base() < rhs.base());
+}
+
+/** @relates Glib::ustring_Iterator */
+template <class T> inline
+bool operator>(const ustring_Iterator<T>& lhs, const ustring_Iterator<T>& rhs)
+{
+ return (lhs.base() > rhs.base());
+}
+
+/** @relates Glib::ustring_Iterator */
+template <class T> inline
+bool operator<=(const ustring_Iterator<T>& lhs, const ustring_Iterator<T>& rhs)
+{
+ return (lhs.base() <= rhs.base());
+}
+
+/** @relates Glib::ustring_Iterator */
+template <class T> inline
+bool operator>=(const ustring_Iterator<T>& lhs, const ustring_Iterator<T>& rhs)
+{
+ return (lhs.base() >= rhs.base());
+}
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+/**** Glib::ustring::SequenceToString **************************************/
+
+template <class In>
+ustring::SequenceToString<In,char>::SequenceToString(In pbegin, In pend)
+:
+ std::string(pbegin, pend)
+{}
+
+template <class In>
+ustring::SequenceToString<In,gunichar>::SequenceToString(In pbegin, In pend)
+{
+ char utf8_buf[6]; // stores a single UTF-8 character
+
+ for(; pbegin != pend; ++pbegin)
+ {
+ const std::string::size_type utf8_len = g_unichar_to_utf8(*pbegin, utf8_buf);
+ this->append(utf8_buf, utf8_len);
+ }
+}
+
+
+/**** Glib::ustring ********************************************************/
+
+template <class In>
+ustring::ustring(In pbegin, In pend)
+:
+ string_ (Glib::ustring::SequenceToString<In>(pbegin, pend))
+{}
+
+template <class In>
+ustring& ustring::assign(In pbegin, In pend)
+{
+ Glib::ustring::SequenceToString<In> temp_string (pbegin, pend);
+ string_.swap(temp_string); // constant-time operation
+ return *this;
+}
+
+template <class In>
+ustring& ustring::append(In pbegin, In pend)
+{
+ string_.append(Glib::ustring::SequenceToString<In>(pbegin, pend));
+ return *this;
+}
+
+template <class In>
+void ustring::insert(ustring::iterator p, In pbegin, In pend)
+{
+ string_.insert(p.base(), Glib::ustring::SequenceToString<In>(pbegin, pend));
+}
+
+template <class In>
+ustring& ustring::replace(ustring::iterator pbegin, ustring::iterator pend, In pbegin2, In pend2)
+{
+ string_.replace(
+ pbegin.base(), pend.base(),
+ Glib::ustring::SequenceToString<In>(pbegin2, pend2));
+ return *this;
+}
+
+// The ustring methods substr() and operator std::string() are inline,
+// so that the compiler has a fair chance to optimize the copy ctor away.
+
+inline
+ustring ustring::substr(ustring::size_type i, ustring::size_type n) const
+{
+ return ustring(*this, i, n);
+}
+
+inline
+ustring::operator std::string() const
+{
+ return string_;
+}
+
+inline
+const std::string& ustring::raw() const
+{
+ return string_;
+}
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+
+/** @relates Glib::ustring */
+inline
+void swap(ustring& lhs, ustring& rhs)
+{
+ lhs.swap(rhs);
+}
+
+
+/**** Glib::ustring -- comparison operators ********************************/
+
+/** @relates Glib::ustring */
+inline bool operator==(const ustring& lhs, const ustring& rhs)
+ { return (lhs.compare(rhs) == 0); }
+
+/** @relates Glib::ustring */
+inline bool operator==(const ustring& lhs, const char* rhs)
+ { return (lhs.compare(rhs) == 0); }
+
+/** @relates Glib::ustring */
+inline bool operator==(const char* lhs, const ustring& rhs)
+ { return (rhs.compare(lhs) == 0); }
+
+
+/** @relates Glib::ustring */
+inline bool operator!=(const ustring& lhs, const ustring& rhs)
+ { return (lhs.compare(rhs) != 0); }
+
+/** @relates Glib::ustring */
+inline bool operator!=(const ustring& lhs, const char* rhs)
+ { return (lhs.compare(rhs) != 0); }
+
+/** @relates Glib::ustring */
+inline bool operator!=(const char* lhs, const ustring& rhs)
+ { return (rhs.compare(lhs) != 0); }
+
+
+/** @relates Glib::ustring */
+inline bool operator<(const ustring& lhs, const ustring& rhs)
+ { return (lhs.compare(rhs) < 0); }
+
+/** @relates Glib::ustring */
+inline bool operator<(const ustring& lhs, const char* rhs)
+ { return (lhs.compare(rhs) < 0); }
+
+/** @relates Glib::ustring */
+inline bool operator<(const char* lhs, const ustring& rhs)
+ { return (rhs.compare(lhs) > 0); }
+
+
+/** @relates Glib::ustring */
+inline bool operator>(const ustring& lhs, const ustring& rhs)
+ { return (lhs.compare(rhs) > 0); }
+
+/** @relates Glib::ustring */
+inline bool operator>(const ustring& lhs, const char* rhs)
+ { return (lhs.compare(rhs) > 0); }
+
+/** @relates Glib::ustring */
+inline bool operator>(const char* lhs, const ustring& rhs)
+ { return (rhs.compare(lhs) < 0); }
+
+
+/** @relates Glib::ustring */
+inline bool operator<=(const ustring& lhs, const ustring& rhs)
+ { return (lhs.compare(rhs) <= 0); }
+
+/** @relates Glib::ustring */
+inline bool operator<=(const ustring& lhs, const char* rhs)
+ { return (lhs.compare(rhs) <= 0); }
+
+/** @relates Glib::ustring */
+inline bool operator<=(const char* lhs, const ustring& rhs)
+ { return (rhs.compare(lhs) >= 0); }
+
+
+/** @relates Glib::ustring */
+inline bool operator>=(const ustring& lhs, const ustring& rhs)
+ { return (lhs.compare(rhs) >= 0); }
+
+/** @relates Glib::ustring */
+inline bool operator>=(const ustring& lhs, const char* rhs)
+ { return (lhs.compare(rhs) >= 0); }
+
+/** @relates Glib::ustring */
+inline bool operator>=(const char* lhs, const ustring& rhs)
+ { return (rhs.compare(lhs) <= 0); }
+
+
+/**** Glib::ustring -- concatenation operators *****************************/
+
+/** @relates Glib::ustring */
+inline ustring operator+(const ustring& lhs, const ustring& rhs)
+ { ustring temp (lhs); temp += rhs; return temp; }
+
+/** @relates Glib::ustring */
+inline ustring operator+(const ustring& lhs, const char* rhs)
+ { ustring temp (lhs); temp += rhs; return temp; }
+
+/** @relates Glib::ustring */
+inline ustring operator+(const char* lhs, const ustring& rhs)
+ { ustring temp (lhs); temp += rhs; return temp; }
+
+/** @relates Glib::ustring */
+inline ustring operator+(const ustring& lhs, gunichar rhs)
+ { ustring temp (lhs); temp += rhs; return temp; }
+
+/** @relates Glib::ustring */
+inline ustring operator+(gunichar lhs, const ustring& rhs)
+ { ustring temp (1, lhs); temp += rhs; return temp; }
+
+/** @relates Glib::ustring */
+inline ustring operator+(const ustring& lhs, char rhs)
+ { ustring temp (lhs); temp += rhs; return temp; }
+
+/** @relates Glib::ustring */
+inline ustring operator+(char lhs, const ustring& rhs)
+ { ustring temp (1, lhs); temp += rhs; return temp; }
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_USTRING_H */
+
diff --git a/libs/glibmm2/glib/glibmm/utility.cc b/libs/glibmm2/glib/glibmm/utility.cc
new file mode 100644
index 0000000000..c523b2880a
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/utility.cc
@@ -0,0 +1,40 @@
+// -*- c++ -*-
+
+/* $Id: utility.cc,v 1.1.1.1 2003/01/07 16:58:59 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/utility.h>
+#include <glib/gstrfuncs.h>
+
+
+void Glib::append_canonical_typename(std::string& dest, const char* type_name)
+{
+ const std::string::size_type offset = dest.size();
+ dest += type_name;
+
+ std::string::iterator p = dest.begin() + offset;
+ const std::string::iterator pend = dest.end();
+
+ for(; p != pend; ++p)
+ {
+ if(!(g_ascii_isalnum(*p) || *p == '_' || *p == '-'))
+ *p = '+';
+ }
+}
+
diff --git a/libs/glibmm2/glib/glibmm/utility.h b/libs/glibmm2/glib/glibmm/utility.h
new file mode 100644
index 0000000000..ce541a8d11
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/utility.h
@@ -0,0 +1,119 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_UTILITY_H
+#define _GLIBMM_UTILITY_H
+/* $Id: utility.h,v 1.2 2003/01/21 12:43:26 murrayc Exp $ */
+
+/* Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gmacros.h>
+#include <glibmm/ustring.h>
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+extern "C" void g_free(void*);
+
+
+/* Occasionally, a struct variable has to be initialized after its definition,
+ * i.e. when using structs as class member data. For convenience, the macro
+ * GLIBMM_INITIALIZE_STRUCT(Var, Type) is provided. It even avoids creating
+ * a temporary if the compiler is GCC.
+ */
+#if ((__GNUC__ >= 3) || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) && !defined(__STRICT_ANSI__)
+
+#define GLIBMM_INITIALIZE_STRUCT(Var, Type) __builtin_memset(&(Var), 0, sizeof(Type))
+
+#else
+
+#define GLIBMM_INITIALIZE_STRUCT(Var, Type) \
+ G_STMT_START{ \
+ Type const temp_initializer__ = { 0, }; \
+ (Var) = temp_initializer__; \
+ }G_STMT_END
+
+#endif /* ((__GNUC__ >= 3) || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) && !defined(__STRICT_ANSI__) */
+
+
+namespace Glib
+{
+
+// These are used by gtkmmproc-generated type conversions:
+
+// Helper to deal with memory allocated
+// by GLib functions in an exception-safe manner.
+template <typename T>
+class ScopedPtr
+{
+private:
+ T* ptr_;
+ ScopedPtr(const ScopedPtr<T>&);
+ ScopedPtr<T>& operator=(const ScopedPtr<T>&);
+
+public:
+ ScopedPtr() : ptr_ (0) {}
+ explicit ScopedPtr(T* ptr) : ptr_ (ptr) {}
+ ~ScopedPtr() { g_free(ptr_); }
+ T* get() const { return ptr_; }
+ T** addr() { return &ptr_; }
+};
+
+// Removes the const nature of a ptr
+template <class T>
+inline T* unconst(const T* t)
+ { return const_cast<T*>(t); }
+
+// Convert const gchar* to ustring, while treating NULL as empty string.
+inline
+Glib::ustring convert_const_gchar_ptr_to_ustring(const char* str)
+{
+ return (str) ? Glib::ustring(str) : Glib::ustring();
+}
+
+// Convert const gchar* to std::string, while treating NULL as empty string.
+inline
+std::string convert_const_gchar_ptr_to_stdstring(const char* str)
+{
+ return (str) ? std::string(str) : std::string();
+}
+
+// Convert a non-const gchar* return value to ustring, freeing it too.
+inline
+Glib::ustring convert_return_gchar_ptr_to_ustring(char* str)
+{
+ return (str) ? Glib::ustring(Glib::ScopedPtr<char>(str).get())
+ : Glib::ustring();
+}
+
+// Convert a non-const gchar* return value to std::string, freeing it too.
+inline
+std::string convert_return_gchar_ptr_to_stdstring(char* str)
+{
+ return (str) ? std::string(Glib::ScopedPtr<char>(str).get())
+ : std::string();
+}
+
+// Append type_name to dest, while replacing special characters with '+'.
+void append_canonical_typename(std::string& dest, const char* type_name);
+
+} // namespace Glib
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+
+#endif /* _GLIBMM_UTILITY_H */
+
diff --git a/libs/glibmm2/glib/glibmm/value.cc b/libs/glibmm2/glib/glibmm/value.cc
new file mode 100644
index 0000000000..620498c4aa
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/value.cc
@@ -0,0 +1,250 @@
+// -*- c++ -*-
+/* $Id: value.cc,v 1.4 2006/05/14 12:12:41 murrayc Exp $ */
+
+/* Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/value.h>
+#include <glibmm/objectbase.h>
+#include <glibmm/utility.h>
+#include <glibmm/wrap.h>
+
+
+namespace Glib
+{
+
+/**** Glib::ValueBase ******************************************************/
+
+ValueBase::ValueBase()
+{
+ GLIBMM_INITIALIZE_STRUCT(gobject_, GValue);
+}
+
+void ValueBase::init(GType type)
+{
+ g_value_init(&gobject_, type);
+}
+
+void ValueBase::init(const GValue* value)
+{
+ g_value_init(&gobject_, G_VALUE_TYPE(value));
+
+ if(value)
+ g_value_copy(value, &gobject_);
+}
+
+ValueBase::ValueBase(const ValueBase& other)
+{
+ GLIBMM_INITIALIZE_STRUCT(gobject_, GValue);
+
+ g_value_init(&gobject_, G_VALUE_TYPE(&other.gobject_));
+ g_value_copy(&other.gobject_, &gobject_);
+}
+
+ValueBase& ValueBase::operator=(const ValueBase& other)
+{
+ // g_value_copy() prevents self-assignment and deletes the destination.
+ g_value_copy(&other.gobject_, &gobject_);
+ return *this;
+}
+
+ValueBase::~ValueBase()
+{
+ g_value_unset(&gobject_);
+}
+
+void ValueBase::reset()
+{
+ g_value_reset(&gobject_);
+}
+
+
+/**** Glib::ValueBase_Boxed ************************************************/
+
+// static
+GType ValueBase_Boxed::value_type()
+{
+ return G_TYPE_BOXED;
+}
+
+void ValueBase_Boxed::set_boxed(const void* data)
+{
+ g_value_set_boxed(&gobject_, data);
+}
+
+void* ValueBase_Boxed::get_boxed() const
+{
+ return g_value_get_boxed(&gobject_);
+}
+
+GParamSpec* ValueBase_Boxed::create_param_spec(const Glib::ustring& name) const
+{
+ return g_param_spec_boxed(
+ name.c_str(), 0, 0, G_VALUE_TYPE(&gobject_),
+ GParamFlags(G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
+
+
+/**** Glib::ValueBase_Object ***********************************************/
+
+// static
+GType ValueBase_Object::value_type()
+{
+ return G_TYPE_OBJECT;
+}
+
+void ValueBase_Object::set_object(Glib::ObjectBase* data)
+{
+ g_value_set_object(&gobject_, (data) ? data->gobj() : 0);
+}
+
+Glib::ObjectBase* ValueBase_Object::get_object() const
+{
+ GObject *const data = static_cast<GObject*>(g_value_get_object(&gobject_));
+ return Glib::wrap_auto(data, false);
+}
+
+Glib::RefPtr<Glib::ObjectBase> ValueBase_Object::get_object_copy() const
+{
+ GObject *const data = static_cast<GObject*>(g_value_get_object(&gobject_));
+ return Glib::RefPtr<Glib::ObjectBase>(Glib::wrap_auto(data, true));
+}
+
+GParamSpec* ValueBase_Object::create_param_spec(const Glib::ustring& name) const
+{
+ // Glib::Value_Pointer<> derives from Glib::ValueBase_Object, because
+ // we don't know beforehand whether a certain type is derived from
+ // Glib::Object or not. To keep create_param_spec() out of the template
+ // struggle, we dispatch here at runtime.
+
+ if(G_VALUE_HOLDS_OBJECT(&gobject_))
+ {
+ return g_param_spec_object(
+ name.c_str(), 0, 0, G_VALUE_TYPE(&gobject_),
+ GParamFlags(G_PARAM_READABLE | G_PARAM_WRITABLE));
+ }
+ else
+ {
+ g_return_val_if_fail(G_VALUE_HOLDS_POINTER(&gobject_), 0);
+
+ return g_param_spec_pointer(
+ name.c_str(), 0, 0,
+ GParamFlags(G_PARAM_READABLE | G_PARAM_WRITABLE));
+ }
+}
+
+
+/**** Glib::ValueBase_Enum *************************************************/
+
+// static
+GType ValueBase_Enum::value_type()
+{
+ return G_TYPE_ENUM;
+}
+
+void ValueBase_Enum::set_enum(int data)
+{
+ g_value_set_enum(&gobject_, data);
+}
+
+int ValueBase_Enum::get_enum() const
+{
+ return g_value_get_enum(&gobject_);
+}
+
+GParamSpec* ValueBase_Enum::create_param_spec(const Glib::ustring& name) const
+{
+ return g_param_spec_enum(
+ name.c_str(), 0, 0,
+ G_VALUE_TYPE(&gobject_), g_value_get_enum(&gobject_),
+ GParamFlags(G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
+
+
+/**** Glib::ValueBase_Flags ************************************************/
+
+// static
+GType ValueBase_Flags::value_type()
+{
+ return G_TYPE_FLAGS;
+}
+
+void ValueBase_Flags::set_flags(unsigned int data)
+{
+ g_value_set_flags(&gobject_, data);
+}
+
+unsigned int ValueBase_Flags::get_flags() const
+{
+ return g_value_get_flags(&gobject_);
+}
+
+GParamSpec* ValueBase_Flags::create_param_spec(const Glib::ustring& name) const
+{
+ return g_param_spec_flags(
+ name.c_str(), 0, 0,
+ G_VALUE_TYPE(&gobject_), g_value_get_flags(&gobject_),
+ GParamFlags(G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
+
+
+/**** Glib::ValueBase_String ***********************************************/
+
+// static
+GType ValueBase_String::value_type()
+{
+ return G_TYPE_STRING;
+}
+
+void ValueBase_String::set_cstring(const char* data)
+{
+ g_value_set_string(&gobject_, data);
+}
+
+const char* ValueBase_String::get_cstring() const
+{
+ if(const char *const data = g_value_get_string(&gobject_))
+ return data;
+ else
+ return "";
+}
+
+GParamSpec* ValueBase_String::create_param_spec(const Glib::ustring& name) const
+{
+ return g_param_spec_string(
+ name.c_str(), 0, 0, get_cstring(),
+ GParamFlags(G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
+
+
+/**** Glib::Value<std::string> *********************************************/
+
+void Value<std::string>::set(const std::string& data)
+{
+ g_value_set_string(&gobject_, data.c_str());
+}
+
+
+/**** Glib::Value<Glib::ustring> *******************************************/
+
+void Value<Glib::ustring>::set(const Glib::ustring& data)
+{
+ g_value_set_string(&gobject_, data.c_str());
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/value.h b/libs/glibmm2/glib/glibmm/value.h
new file mode 100644
index 0000000000..c729d32b1b
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/value.h
@@ -0,0 +1,331 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_VALUE_H
+#define _GLIBMM_VALUE_H
+/* $Id: value.h,v 1.11 2006/05/14 12:12:41 murrayc Exp $ */
+
+/* Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib-object.h>
+#include <glibmm/refptr.h>
+#include <glibmm/ustring.h>
+
+
+namespace Glib
+{
+
+class ObjectBase;
+class Object;
+
+/** @defgroup glibmmValue Generic Values
+ *
+ * Glib::Value<> is specialized for almost any type used within
+ * the glibmm and gtkmm libraries.
+ *
+ * - Basic types like <tt>int</tt>, <tt>char</tt>, <tt>bool</tt>, etc., also <tt>void*</tt>.
+ * - Glib::ustring and std::string.
+ * - Pointers to classes derived from Glib::Object.
+ * - Glib::RefPtr<> pointer types, which are assumed to be Glib::Object pointers.
+ * - All flags and enum types used within the gtkmm libraries.
+ *
+ * If a type doesn't fit into any of these categories, then a generic
+ * implementation for custom types will be used. The requirements imposed
+ * on custom types are described in the Glib::Value class documentation.
+ */
+
+/**
+ * @ingroup glibmmValue
+ */
+class ValueBase
+{
+public:
+ /** Initializes the GValue, but without a type. You have to
+ * call init() before using the set(), get(), or reset() methods.
+ */
+ ValueBase();
+
+ ValueBase(const ValueBase& other);
+ ValueBase& operator=(const ValueBase& other);
+
+ ~ValueBase();
+
+ /** Setup the GValue for storing the specified @a type.
+ * The contents will be initialized to the default value for this type.
+ * Note that init() should never be called twice.
+ *
+ * init() is not implemented as constructor, to avoid the necessity
+ * to implement a forward constructor in each derived class.
+ *
+ * @param type The type that the Value should hold.
+ */
+ void init(GType type);
+
+ /** Setup the GValue storing the type and value of the specified @a value.
+ * Note that init() should never be called twice.
+ *
+ * init() is not implemented as constructor, to avoid the necessity
+ * to implement a forward constructor in each derived class.
+ *
+ * @param value The existing GValue.
+ */
+ void init(const GValue* value);
+
+ /** Reset contents to the default value of its type.
+ */
+ void reset();
+
+ GValue* gobj() { return &gobject_; }
+ const GValue* gobj() const { return &gobject_; }
+
+protected:
+ GValue gobject_;
+};
+
+/**
+ * @ingroup glibmmValue
+ */
+class ValueBase_Boxed : public ValueBase
+{
+public:
+ static GType value_type() G_GNUC_CONST;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GParamSpec* create_param_spec(const Glib::ustring& name) const;
+#endif
+
+protected:
+ void set_boxed(const void* data);
+ void* get_boxed() const; // doesn't copy
+};
+
+
+/**
+ * @ingroup glibmmValue
+ */
+class ValueBase_Object : public ValueBase
+{
+public:
+ static GType value_type() G_GNUC_CONST;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GParamSpec* create_param_spec(const Glib::ustring& name) const;
+#endif
+
+protected:
+ void set_object(Glib::ObjectBase* data);
+ Glib::ObjectBase* get_object() const;
+ Glib::RefPtr<Glib::ObjectBase> get_object_copy() const;
+};
+
+
+/**
+ * @ingroup glibmmValue
+ */
+class ValueBase_Enum : public ValueBase
+{
+public:
+ typedef gint CType;
+ static GType value_type() G_GNUC_CONST;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GParamSpec* create_param_spec(const Glib::ustring& name) const;
+#endif
+
+protected:
+ void set_enum(int data);
+ int get_enum() const;
+};
+
+
+/**
+ * @ingroup glibmmValue
+ */
+class ValueBase_Flags : public ValueBase
+{
+public:
+ typedef guint CType;
+ static GType value_type() G_GNUC_CONST;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GParamSpec* create_param_spec(const Glib::ustring& name) const;
+#endif
+
+protected:
+ void set_flags(unsigned int data);
+ unsigned int get_flags() const;
+};
+
+
+/**
+ * @ingroup glibmmValue
+ */
+class ValueBase_String : public ValueBase
+{
+public:
+ typedef const gchar* CType;
+ static GType value_type() G_GNUC_CONST;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GParamSpec* create_param_spec(const Glib::ustring& name) const;
+#endif
+
+protected:
+ void set_cstring(const char* data);
+ const char* get_cstring() const; // never returns 0
+};
+
+} // namespace Glib
+
+
+/* Include generic Glib::Value<> template, before any specializations:
+ */
+#define _GLIBMM_VALUE_H_INCLUDE_VALUE_CUSTOM_H
+#include <glibmm/value_custom.h>
+#undef _GLIBMM_VALUE_H_INCLUDE_VALUE_CUSTOM_H
+
+
+namespace Glib
+{
+
+/**
+ * @ingroup glibmmValue
+ */
+template <class T>
+class Value_Boxed : public ValueBase_Boxed
+{
+public:
+ typedef T CppType;
+ typedef typename T::BaseObjectType* CType;
+
+ static GType value_type() { return T::get_type(); }
+
+ void set(const CppType& data) { set_boxed(data.gobj()); }
+ CppType get() const { return CppType(static_cast<CType>(get_boxed())); }
+};
+
+//More spec-compliant compilers (such as Tru64) need this to be near Glib::Object instead.
+#ifdef GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION
+
+/** Partial specialization for RefPtr<> to Glib::Object.
+ * @ingroup glibmmValue
+ */
+template <class T>
+class Value< Glib::RefPtr<T> > : public ValueBase_Object
+{
+public:
+ typedef Glib::RefPtr<T> CppType;
+ typedef typename T::BaseObjectType* CType;
+
+ static GType value_type() { return T::get_base_type(); }
+
+ void set(const CppType& data) { set_object(data.operator->()); }
+ CppType get() const { return Glib::RefPtr<T>::cast_dynamic(get_object_copy()); }
+};
+
+//The SUN Forte Compiler has a problem with this:
+#ifdef GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS
+
+/** Partial specialization for RefPtr<> to const Glib::Object.
+ * @ingroup glibmmValue
+ */
+template <class T>
+class Value< Glib::RefPtr<const T> > : public ValueBase_Object
+{
+public:
+ typedef Glib::RefPtr<const T> CppType;
+ typedef typename T::BaseObjectType* CType;
+
+ static GType value_type() { return T::get_base_type(); }
+
+ void set(const CppType& data) { set_object(const_cast<T*>(data.operator->())); }
+ CppType get() const { return Glib::RefPtr<T>::cast_dynamic(get_object_copy()); }
+};
+#endif //GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS
+
+#endif //GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION
+
+} // namespace Glib
+
+
+/* Include generated specializations of Glib::Value<> for fundamental types:
+ */
+#define _GLIBMM_VALUE_H_INCLUDE_VALUE_BASICTYPES_H
+#include <glibmm/value_basictypes.h>
+#undef _GLIBMM_VALUE_H_INCLUDE_VALUE_BASICTYPES_H
+
+
+namespace Glib
+{
+
+/** Specialization for strings.
+ * @ingroup glibmmValue
+ */
+template <>
+class Value<std::string> : public ValueBase_String
+{
+public:
+ typedef std::string CppType;
+
+ void set(const std::string& data);
+ std::string get() const { return get_cstring(); }
+};
+
+/** Specialization for UTF-8 strings.
+ * @ingroup glibmmValue
+ */
+template <>
+class Value<Glib::ustring> : public ValueBase_String
+{
+public:
+ typedef Glib::ustring CppType;
+
+ void set(const Glib::ustring& data);
+ Glib::ustring get() const { return get_cstring(); }
+};
+
+
+/** Base class of Glib::Value<T> specializations for enum types.
+ * @ingroup glibmmValue
+ */
+template <class T>
+class Value_Enum : public ValueBase_Enum
+{
+public:
+ typedef T CppType;
+
+ void set(CppType data) { set_enum(data); }
+ CppType get() const { return CppType(get_enum()); }
+};
+
+/** Base class of Glib::Value<T> specializations for flags types.
+ * @ingroup glibmmValue
+ */
+template <class T>
+class Value_Flags : public ValueBase_Flags
+{
+public:
+ typedef T CppType;
+
+ void set(CppType data) { set_flags(data); }
+ CppType get() const { return CppType(get_flags()); }
+};
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_VALUE_H */
+
diff --git a/libs/glibmm2/glib/glibmm/value_basictypes.cc b/libs/glibmm2/glib/glibmm/value_basictypes.cc
new file mode 100644
index 0000000000..9a3275075d
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/value_basictypes.cc
@@ -0,0 +1,336 @@
+// -*- c++ -*-
+// This is a generated file, do not edit. Generated from value_basictypes.cc.m4
+
+#include <glibmm/value.h>
+
+namespace Glib
+{
+
+G_GNUC_EXTENSION typedef long long long_long;
+G_GNUC_EXTENSION typedef unsigned long long unsigned_long_long;
+
+
+/**** Glib::Value<bool> ****************************************************/
+
+// static
+GType Value<bool>::value_type()
+{
+ return G_TYPE_BOOLEAN;
+}
+
+void Value<bool>::set(bool data)
+{
+ g_value_set_boolean(&gobject_, data);
+}
+
+bool Value<bool>::get() const
+{
+ return g_value_get_boolean(&gobject_);
+}
+
+GParamSpec* Value<bool>::create_param_spec(const Glib::ustring& name) const
+{
+ return g_param_spec_boolean(
+ name.c_str(), 0, 0,
+ g_value_get_boolean(&gobject_),
+ GParamFlags(G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
+
+
+/**** Glib::Value<char> ****************************************************/
+
+// static
+GType Value<char>::value_type()
+{
+ return G_TYPE_CHAR;
+}
+
+void Value<char>::set(char data)
+{
+ g_value_set_char(&gobject_, data);
+}
+
+char Value<char>::get() const
+{
+ return g_value_get_char(&gobject_);
+}
+
+GParamSpec* Value<char>::create_param_spec(const Glib::ustring& name) const
+{
+ return g_param_spec_char(
+ name.c_str(), 0, 0,
+ -128, 127, g_value_get_char(&gobject_),
+ GParamFlags(G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
+
+
+/**** Glib::Value<unsigned char> *******************************************/
+
+// static
+GType Value<unsigned char>::value_type()
+{
+ return G_TYPE_UCHAR;
+}
+
+void Value<unsigned char>::set(unsigned char data)
+{
+ g_value_set_uchar(&gobject_, data);
+}
+
+unsigned char Value<unsigned char>::get() const
+{
+ return g_value_get_uchar(&gobject_);
+}
+
+GParamSpec* Value<unsigned char>::create_param_spec(const Glib::ustring& name) const
+{
+ return g_param_spec_uchar(
+ name.c_str(), 0, 0,
+ 0, 255, g_value_get_uchar(&gobject_),
+ GParamFlags(G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
+
+
+/**** Glib::Value<int> *****************************************************/
+
+// static
+GType Value<int>::value_type()
+{
+ return G_TYPE_INT;
+}
+
+void Value<int>::set(int data)
+{
+ g_value_set_int(&gobject_, data);
+}
+
+int Value<int>::get() const
+{
+ return g_value_get_int(&gobject_);
+}
+
+GParamSpec* Value<int>::create_param_spec(const Glib::ustring& name) const
+{
+ return g_param_spec_int(
+ name.c_str(), 0, 0,
+ G_MININT, G_MAXINT, g_value_get_int(&gobject_),
+ GParamFlags(G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
+
+
+/**** Glib::Value<unsigned int> ********************************************/
+
+// static
+GType Value<unsigned int>::value_type()
+{
+ return G_TYPE_UINT;
+}
+
+void Value<unsigned int>::set(unsigned int data)
+{
+ g_value_set_uint(&gobject_, data);
+}
+
+unsigned int Value<unsigned int>::get() const
+{
+ return g_value_get_uint(&gobject_);
+}
+
+GParamSpec* Value<unsigned int>::create_param_spec(const Glib::ustring& name) const
+{
+ return g_param_spec_uint(
+ name.c_str(), 0, 0,
+ 0, G_MAXUINT, g_value_get_uint(&gobject_),
+ GParamFlags(G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
+
+
+/**** Glib::Value<long> ****************************************************/
+
+// static
+GType Value<long>::value_type()
+{
+ return G_TYPE_LONG;
+}
+
+void Value<long>::set(long data)
+{
+ g_value_set_long(&gobject_, data);
+}
+
+long Value<long>::get() const
+{
+ return g_value_get_long(&gobject_);
+}
+
+GParamSpec* Value<long>::create_param_spec(const Glib::ustring& name) const
+{
+ return g_param_spec_long(
+ name.c_str(), 0, 0,
+ G_MINLONG, G_MAXLONG, g_value_get_long(&gobject_),
+ GParamFlags(G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
+
+
+/**** Glib::Value<unsigned long> *******************************************/
+
+// static
+GType Value<unsigned long>::value_type()
+{
+ return G_TYPE_ULONG;
+}
+
+void Value<unsigned long>::set(unsigned long data)
+{
+ g_value_set_ulong(&gobject_, data);
+}
+
+unsigned long Value<unsigned long>::get() const
+{
+ return g_value_get_ulong(&gobject_);
+}
+
+GParamSpec* Value<unsigned long>::create_param_spec(const Glib::ustring& name) const
+{
+ return g_param_spec_ulong(
+ name.c_str(), 0, 0,
+ 0, G_MAXULONG, g_value_get_ulong(&gobject_),
+ GParamFlags(G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
+
+
+/**** Glib::Value<long_long> ***********************************************/
+
+// static
+GType Value<long_long>::value_type()
+{
+ return G_TYPE_INT64;
+}
+
+void Value<long_long>::set(long_long data)
+{
+ g_value_set_int64(&gobject_, data);
+}
+
+long_long Value<long_long>::get() const
+{
+ return g_value_get_int64(&gobject_);
+}
+
+GParamSpec* Value<long_long>::create_param_spec(const Glib::ustring& name) const
+{
+ return g_param_spec_int64(
+ name.c_str(), 0, 0,
+ G_GINT64_CONSTANT(0x8000000000000000), G_GINT64_CONSTANT(0x7fffffffffffffff), g_value_get_int64(&gobject_),
+ GParamFlags(G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
+
+
+/**** Glib::Value<unsigned_long_long> **************************************/
+
+// static
+GType Value<unsigned_long_long>::value_type()
+{
+ return G_TYPE_UINT64;
+}
+
+void Value<unsigned_long_long>::set(unsigned_long_long data)
+{
+ g_value_set_uint64(&gobject_, data);
+}
+
+unsigned_long_long Value<unsigned_long_long>::get() const
+{
+ return g_value_get_uint64(&gobject_);
+}
+
+GParamSpec* Value<unsigned_long_long>::create_param_spec(const Glib::ustring& name) const
+{
+ return g_param_spec_uint64(
+ name.c_str(), 0, 0,
+ G_GINT64_CONSTANT(0U), G_GINT64_CONSTANT(0xffffffffffffffffU), g_value_get_uint64(&gobject_),
+ GParamFlags(G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
+
+
+/**** Glib::Value<float> ***************************************************/
+
+// static
+GType Value<float>::value_type()
+{
+ return G_TYPE_FLOAT;
+}
+
+void Value<float>::set(float data)
+{
+ g_value_set_float(&gobject_, data);
+}
+
+float Value<float>::get() const
+{
+ return g_value_get_float(&gobject_);
+}
+
+GParamSpec* Value<float>::create_param_spec(const Glib::ustring& name) const
+{
+ return g_param_spec_float(
+ name.c_str(), 0, 0,
+ -G_MAXFLOAT, G_MAXFLOAT, g_value_get_float(&gobject_),
+ GParamFlags(G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
+
+
+/**** Glib::Value<double> **************************************************/
+
+// static
+GType Value<double>::value_type()
+{
+ return G_TYPE_DOUBLE;
+}
+
+void Value<double>::set(double data)
+{
+ g_value_set_double(&gobject_, data);
+}
+
+double Value<double>::get() const
+{
+ return g_value_get_double(&gobject_);
+}
+
+GParamSpec* Value<double>::create_param_spec(const Glib::ustring& name) const
+{
+ return g_param_spec_double(
+ name.c_str(), 0, 0,
+ -G_MAXDOUBLE, G_MAXDOUBLE, g_value_get_double(&gobject_),
+ GParamFlags(G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
+
+
+/**** Glib::Value<void*> ***************************************************/
+
+// static
+GType Value<void*>::value_type()
+{
+ return G_TYPE_POINTER;
+}
+
+void Value<void*>::set(void* data)
+{
+ g_value_set_pointer(&gobject_, data);
+}
+
+void* Value<void*>::get() const
+{
+ return g_value_get_pointer(&gobject_);
+}
+
+GParamSpec* Value<void*>::create_param_spec(const Glib::ustring& name) const
+{
+ return g_param_spec_pointer(
+ name.c_str(), 0, 0,
+ GParamFlags(G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/value_basictypes.h b/libs/glibmm2/glib/glibmm/value_basictypes.h
new file mode 100644
index 0000000000..3d81e3ece8
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/value_basictypes.h
@@ -0,0 +1,271 @@
+// -*- c++ -*-
+// This is a generated file, do not edit. Generated from value_basictypes.h.m4
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+#ifndef _GLIBMM_VALUE_H_INCLUDE_VALUE_BASICTYPES_H
+#error "glibmm/value_basictypes.h cannot be included directly"
+#endif
+#endif
+
+/* Suppress warnings about `long long' when GCC is in -pedantic mode.
+ */
+#if (__GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))
+#pragma GCC system_header
+#endif
+
+namespace Glib
+{
+
+/**
+ * @ingroup glibmmValue
+ */
+template <>
+class Value<bool> : public ValueBase
+{
+public:
+ typedef bool CppType;
+ typedef gboolean CType;
+
+ static GType value_type() G_GNUC_CONST;
+
+ void set(bool data);
+ bool get() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GParamSpec* create_param_spec(const Glib::ustring& name) const;
+#endif
+};
+
+
+/**
+ * @ingroup glibmmValue
+ */
+template <>
+class Value<char> : public ValueBase
+{
+public:
+ typedef char CppType;
+ typedef gchar CType;
+
+ static GType value_type() G_GNUC_CONST;
+
+ void set(char data);
+ char get() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GParamSpec* create_param_spec(const Glib::ustring& name) const;
+#endif
+};
+
+
+/**
+ * @ingroup glibmmValue
+ */
+template <>
+class Value<unsigned char> : public ValueBase
+{
+public:
+ typedef unsigned char CppType;
+ typedef guchar CType;
+
+ static GType value_type() G_GNUC_CONST;
+
+ void set(unsigned char data);
+ unsigned char get() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GParamSpec* create_param_spec(const Glib::ustring& name) const;
+#endif
+};
+
+
+/**
+ * @ingroup glibmmValue
+ */
+template <>
+class Value<int> : public ValueBase
+{
+public:
+ typedef int CppType;
+ typedef gint CType;
+
+ static GType value_type() G_GNUC_CONST;
+
+ void set(int data);
+ int get() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GParamSpec* create_param_spec(const Glib::ustring& name) const;
+#endif
+};
+
+
+/**
+ * @ingroup glibmmValue
+ */
+template <>
+class Value<unsigned int> : public ValueBase
+{
+public:
+ typedef unsigned int CppType;
+ typedef guint CType;
+
+ static GType value_type() G_GNUC_CONST;
+
+ void set(unsigned int data);
+ unsigned int get() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GParamSpec* create_param_spec(const Glib::ustring& name) const;
+#endif
+};
+
+
+/**
+ * @ingroup glibmmValue
+ */
+template <>
+class Value<long> : public ValueBase
+{
+public:
+ typedef long CppType;
+ typedef glong CType;
+
+ static GType value_type() G_GNUC_CONST;
+
+ void set(long data);
+ long get() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GParamSpec* create_param_spec(const Glib::ustring& name) const;
+#endif
+};
+
+
+/**
+ * @ingroup glibmmValue
+ */
+template <>
+class Value<unsigned long> : public ValueBase
+{
+public:
+ typedef unsigned long CppType;
+ typedef gulong CType;
+
+ static GType value_type() G_GNUC_CONST;
+
+ void set(unsigned long data);
+ unsigned long get() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GParamSpec* create_param_spec(const Glib::ustring& name) const;
+#endif
+};
+
+
+/**
+ * @ingroup glibmmValue
+ */
+template <>
+class Value<long long> : public ValueBase
+{
+public:
+ typedef long long CppType;
+ typedef gint64 CType;
+
+ static GType value_type() G_GNUC_CONST;
+
+ void set(long long data);
+ long long get() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GParamSpec* create_param_spec(const Glib::ustring& name) const;
+#endif
+};
+
+
+/**
+ * @ingroup glibmmValue
+ */
+template <>
+class Value<unsigned long long> : public ValueBase
+{
+public:
+ typedef unsigned long long CppType;
+ typedef guint64 CType;
+
+ static GType value_type() G_GNUC_CONST;
+
+ void set(unsigned long long data);
+ unsigned long long get() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GParamSpec* create_param_spec(const Glib::ustring& name) const;
+#endif
+};
+
+
+/**
+ * @ingroup glibmmValue
+ */
+template <>
+class Value<float> : public ValueBase
+{
+public:
+ typedef float CppType;
+ typedef gfloat CType;
+
+ static GType value_type() G_GNUC_CONST;
+
+ void set(float data);
+ float get() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GParamSpec* create_param_spec(const Glib::ustring& name) const;
+#endif
+};
+
+
+/**
+ * @ingroup glibmmValue
+ */
+template <>
+class Value<double> : public ValueBase
+{
+public:
+ typedef double CppType;
+ typedef gdouble CType;
+
+ static GType value_type() G_GNUC_CONST;
+
+ void set(double data);
+ double get() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GParamSpec* create_param_spec(const Glib::ustring& name) const;
+#endif
+};
+
+
+/**
+ * @ingroup glibmmValue
+ */
+template <>
+class Value<void*> : public ValueBase
+{
+public:
+ typedef void* CppType;
+ typedef gpointer CType;
+
+ static GType value_type() G_GNUC_CONST;
+
+ void set(void* data);
+ void* get() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GParamSpec* create_param_spec(const Glib::ustring& name) const;
+#endif
+};
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/value_custom.cc b/libs/glibmm2/glib/glibmm/value_custom.cc
new file mode 100644
index 0000000000..0cf99da781
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/value_custom.cc
@@ -0,0 +1,145 @@
+// -*- c++ -*-
+/* $Id: value_custom.cc,v 1.7 2006/04/12 08:12:11 murrayc Exp $ */
+
+/* Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/value.h>
+#include <glibmm/utility.h>
+#include <glib.h>
+
+
+namespace
+{
+
+static void warn_already_registered(const char* location, const std::string& full_name)
+{
+ g_warning("file %s: (%s): The type name `%s' has been registered already.\n"
+ "This is not supposed to happen -- please send a mail with detailed "
+ "information about your platform to gtkmm-list@gnome.org. Thanks.\n",
+ __FILE__, location, full_name.c_str());
+}
+
+} // anonymous namespace
+
+
+namespace Glib
+{
+
+GType custom_boxed_type_register(const char* type_name,
+ ValueInitFunc init_func,
+ ValueFreeFunc free_func,
+ ValueCopyFunc copy_func)
+{
+ std::string full_name ("glibmm__CustomBoxed_");
+ Glib::append_canonical_typename(full_name, type_name);
+
+ // Templates of the same type _might_ be duplicated when instantiated in
+ // multiple translation units -- I'm not sure whether this is true. If the
+ // static custom_type_ variable in Value<> is duplicated, then the type
+ // would be registered more than once.
+ //
+ // Lookup the type name to see whether this scenario actually happens.
+ // If this turns out to be common behaviour on some platform the warning
+ // should be removed.
+
+ if(const GType existing_type = g_type_from_name(full_name.c_str()))
+ {
+ warn_already_registered("Glib::custom_boxed_type_register", full_name);
+ return existing_type;
+ }
+
+ // Via GTypeValueTable, we can teach GValue how to instantiate,
+ // destroy, and copy arbitrary objects of the C++ type.
+
+ const GTypeValueTable value_table =
+ {
+ init_func,
+ free_func,
+ copy_func,
+ 0, // value_peek_pointer
+ 0, // collect_format
+ 0, // collect_value
+ 0, // lcopy_format
+ 0, // lcopy_value
+ };
+
+ const GTypeInfo type_info =
+ {
+ 0, // class_size
+ 0, // base_init
+ 0, // base_finalize
+ 0, // class_init_func
+ 0, // class_finalize
+ 0, // class_data
+ 0, // instance_size
+ 0, // n_preallocs
+ 0, // instance_init
+ &value_table,
+ };
+
+ // Don't use g_boxed_type_register_static(), because that wouldn't allow
+ // for a non-NULL default value. The implementation of g_boxed_copy() will
+ // use our custom GTypeValueTable automatically.
+
+ return g_type_register_static(G_TYPE_BOXED, full_name.c_str(), &type_info, GTypeFlags(0));
+}
+
+GType custom_pointer_type_register(const char* type_name)
+{
+ std::string full_name ("glibmm__CustomPointer_");
+ Glib::append_canonical_typename(full_name, type_name);
+
+ // Templates of the same type _might_ be duplicated when instantiated in
+ // multiple translation units -- I'm not sure whether this is true. If the
+ // static custom_type variable in Value<>::value_type_() is duplicated, then
+ // the type would be registered more than once.
+ //
+ // Lookup the type name to see whether this scenario actually happens.
+ // If this turns out to be common behaviour on some platform the warning
+ // should be removed.
+
+ if(const GType existing_type = g_type_from_name(full_name.c_str()))
+ {
+ warn_already_registered("Glib::custom_pointer_type_register", full_name);
+ return existing_type;
+ }
+
+ const GTypeInfo type_info =
+ {
+ 0, // class_size
+ 0, // base_init
+ 0, // base_finalize
+ 0, // class_init_func
+ 0, // class_finalize
+ 0, // class_data
+ 0, // instance_size
+ 0, // n_preallocs
+ 0, // instance_init
+ 0, // value_table
+ };
+
+ // We could probably use g_pointer_type_register_static(), but I want
+ // to keep this function symmetric to custom_boxed_type_register(). Also,
+ // g_pointer_type_register_static() would lookup the type name once again.
+
+ return g_type_register_static(G_TYPE_POINTER, full_name.c_str(), &type_info, GTypeFlags(0));
+}
+
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/value_custom.h b/libs/glibmm2/glib/glibmm/value_custom.h
new file mode 100644
index 0000000000..70f4c3f021
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/value_custom.h
@@ -0,0 +1,289 @@
+// -*- c++ -*-
+/* $Id: value_custom.h,v 1.8 2005/01/21 19:26:04 murrayc Exp $ */
+
+/* Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+#ifndef _GLIBMM_VALUE_H_INCLUDE_VALUE_CUSTOM_H
+#error "glibmm/value_custom.h cannot be included directly"
+#endif
+#endif
+
+#include <new>
+#include <typeinfo>
+#include <glibmmconfig.h>
+
+GLIBMM_USING_STD(nothrow)
+
+
+namespace Glib
+{
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+extern "C"
+{
+ typedef void (* ValueInitFunc) (GValue*);
+ typedef void (* ValueFreeFunc) (GValue*);
+ typedef void (* ValueCopyFunc) (const GValue*, GValue*);
+}
+
+/* When using Glib::Value<T> with custom types, each T will be registered
+ * as subtype of G_TYPE_BOXED, via this function. The type_name argument
+ * should be the C++ RTTI name.
+ */
+GType custom_boxed_type_register(const char* type_name,
+ ValueInitFunc init_func,
+ ValueFreeFunc free_func,
+ ValueCopyFunc copy_func);
+
+/* When using Glib::Value<T*> or Glib::Value<const T*> with custom types,
+ * each T* or const T* will be registered as a subtype of G_TYPE_POINTER,
+ * via this function. The type_name argument should be the C++ RTTI name.
+ */
+GType custom_pointer_type_register(const char* type_name);
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+
+/**
+ * @ingroup glibmmValue
+ */
+template <class T, class PtrT>
+class Value_Pointer : public ValueBase_Object
+{
+public:
+ typedef PtrT CppType;
+ typedef void* CType;
+
+ static inline GType value_type() G_GNUC_CONST;
+
+ inline void set(CppType data);
+ inline CppType get() const;
+
+private:
+ inline
+ static GType value_type_(Glib::Object*);
+ static GType value_type_(void*);
+
+ inline void set_(CppType data, Glib::Object*);
+ inline void set_(CppType data, void*);
+
+ inline CppType get_(Glib::Object*) const;
+ inline CppType get_(void*) const;
+};
+
+
+/** Generic value implementation for custom types.
+ * @ingroup glibmmValue
+ * Any type to be used with this template must implement:
+ * - default constructor
+ * - copy constructor
+ * - assignment operator
+ * - destructor
+ *
+ * Compiler-generated implementations are OK, provided they do the
+ * right thing for the type. In other words, any type that works with
+ * <tt>std::vector</tt> will work with Glib::Value<>.
+ *
+ * @note None of the operations listed above are allowed to throw. If you
+ * cannot ensure that no exceptions will be thrown, consider using either
+ * a normal pointer or a smart pointer to hold your objects indirectly.
+ */
+template <class T>
+class Value : public ValueBase_Boxed
+{
+public:
+ typedef T CppType;
+ typedef T* CType;
+
+ static GType value_type() G_GNUC_CONST;
+
+ inline void set(const CppType& data);
+ inline CppType get() const;
+
+private:
+ static GType custom_type_;
+
+ static void value_init_func(GValue* value);
+ static void value_free_func(GValue* value);
+ static void value_copy_func(const GValue* src_value, GValue* dest_value);
+};
+
+
+/** Specialization for pointers to instances of any type.
+ * @ingroup glibmmValue
+ * No attempt is made to manage the memory associated with the
+ * pointer, you must take care of that yourself.
+ */
+template <class T>
+class Value<T*> : public Value_Pointer<T,T*>
+{};
+
+/** Specialization for pointers to const instances of any type.
+ * @ingroup glibmmValue
+ * No attempt is made to manage the memory associated with the
+ * pointer, you must take care of that yourself.
+ */
+template <class T>
+class Value<const T*> : public Value_Pointer<T,const T*>
+{};
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+/**** Glib::Value_Pointer<T, PtrT> *****************************************/
+
+/** Implementation for Glib::Object pointers **/
+
+// static
+template <class T, class PtrT> inline
+GType Value_Pointer<T,PtrT>::value_type_(Glib::Object*)
+{
+ return T::get_base_type();
+}
+
+template <class T, class PtrT> inline
+void Value_Pointer<T,PtrT>::set_(PtrT data, Glib::Object*)
+{
+ set_object(const_cast<T*>(data));
+}
+
+//More spec-compliant compilers (such as Tru64) need this to be near Glib::Object instead.
+#ifdef GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION
+template <class T, class PtrT> inline
+PtrT Value_Pointer<T,PtrT>::get_(Glib::Object*) const
+{
+ return dynamic_cast<T*>(get_object());
+}
+#endif //GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION
+
+/** Implementation for custom pointers **/
+
+// static
+template <class T, class PtrT>
+GType Value_Pointer<T,PtrT>::value_type_(void*)
+{
+ static GType custom_type = 0;
+
+ if(!custom_type)
+ custom_type = Glib::custom_pointer_type_register(typeid(PtrT).name());
+
+ return custom_type;
+}
+
+template <class T, class PtrT> inline
+void Value_Pointer<T,PtrT>::set_(PtrT data, void*)
+{
+ gobject_.data[0].v_pointer = const_cast<T*>(data);
+}
+
+template <class T, class PtrT> inline
+PtrT Value_Pointer<T,PtrT>::get_(void*) const
+{
+ return static_cast<T*>(gobject_.data[0].v_pointer);
+}
+
+/** Public forwarding interface **/
+
+// static
+template <class T, class PtrT> inline
+GType Value_Pointer<T,PtrT>::value_type()
+{
+ // Dispatch to the specific value_type_() overload.
+ return Value_Pointer<T,PtrT>::value_type_(static_cast<T*>(0));
+}
+
+template <class T, class PtrT> inline
+void Value_Pointer<T,PtrT>::set(PtrT data)
+{
+ // Dispatch to the specific set_() overload.
+ this->set_(data, static_cast<T*>(0));
+}
+
+template <class T, class PtrT> inline
+PtrT Value_Pointer<T,PtrT>::get() const
+{
+ // Dispatch to the specific get_() overload.
+ return this->get_(static_cast<T*>(0));
+}
+
+
+/**** Glib::Value<T> *******************************************************/
+
+// Static data, specific to each template instantiation.
+template <class T>
+GType Value<T>::custom_type_ = 0;
+
+template <class T> inline
+void Value<T>::set(const typename Value<T>::CppType& data)
+{
+ // Assume the value is already default-initialized. See value_init_func().
+ *static_cast<T*>(gobject_.data[0].v_pointer) = data;
+}
+
+template <class T> inline
+typename Value<T>::CppType Value<T>::get() const
+{
+ // Assume the pointer is not NULL. See value_init_func().
+ return *static_cast<T*>(gobject_.data[0].v_pointer);
+}
+
+// static
+template <class T>
+GType Value<T>::value_type()
+{
+ if(!custom_type_)
+ {
+ custom_type_ = Glib::custom_boxed_type_register(
+ typeid(CppType).name(),
+ &Value<T>::value_init_func,
+ &Value<T>::value_free_func,
+ &Value<T>::value_copy_func);
+ }
+ return custom_type_;
+}
+
+// static
+template <class T>
+void Value<T>::value_init_func(GValue* value)
+{
+ // Never store a NULL pointer (unless we're out of memory).
+ value->data[0].v_pointer = new(std::nothrow) T();
+}
+
+// static
+template <class T>
+void Value<T>::value_free_func(GValue* value)
+{
+ delete static_cast<T*>(value->data[0].v_pointer);
+}
+
+// static
+template <class T>
+void Value<T>::value_copy_func(const GValue* src_value, GValue* dest_value)
+{
+ // Assume the source is not NULL. See value_init_func().
+ const T& source = *static_cast<T*>(src_value->data[0].v_pointer);
+ dest_value->data[0].v_pointer = new(std::nothrow) T(source);
+}
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/glibmm/wrap.cc b/libs/glibmm2/glib/glibmm/wrap.cc
new file mode 100644
index 0000000000..54e1507ceb
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/wrap.cc
@@ -0,0 +1,161 @@
+// -*- c++ -*-
+/* $Id: wrap.cc,v 1.3 2005/01/06 17:42:56 murrayc Exp $ */
+
+/* wrap.cc
+ *
+ * Copyright (C) 1998-2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib-object.h>
+#include <glib/gtypes.h>
+#include <glib/gmacros.h>
+
+#include <vector>
+#include <glibmm/object.h>
+#include <glibmm/quark.h>
+#include <glibmm/wrap.h>
+
+#include <glibmmconfig.h>
+GLIBMM_USING_STD(vector)
+
+
+namespace
+{
+
+// Although the new g_type_set_qdata() interface is used now, we still need
+// a table because we cannot assume that a function pointer fits into void*
+// on any platform. Nevertheless, indexing a vector costs almost nothing
+// compared to a map lookup.
+
+typedef std::vector<Glib::WrapNewFunction> WrapFuncTable;
+
+static WrapFuncTable* wrap_func_table = 0;
+
+
+static Glib::ObjectBase* create_new_wrapper(GObject* object)
+{
+ g_return_val_if_fail(wrap_func_table != 0, 0);
+
+ bool gtkmm_wrapper_already_deleted = (bool)g_object_get_qdata((GObject*)object, Glib::quark_cpp_wrapper_deleted_);
+ if(gtkmm_wrapper_already_deleted)
+ {
+ g_warning("Glib::create_new_wrapper: Attempted to create a 2nd C++ wrapper for a C instance whose C++ wrapper has been deleted.");
+ return 0;
+ }
+
+ // Traverse upwards through the inheritance hierarchy
+ // to find the most-specialized wrap_new() for this GType.
+ //
+ for(GType type = G_OBJECT_TYPE(object); type != 0; type = g_type_parent(type))
+ {
+ // Look up the wrap table index stored in the type's static data.
+ // If a wrap_new() has been registered for the type then call it.
+ //
+ if(const gpointer idx = g_type_get_qdata(type, Glib::quark_))
+ {
+ const Glib::WrapNewFunction func = (*wrap_func_table)[GPOINTER_TO_UINT(idx)];
+ return (*func)(object);
+ }
+ }
+
+ return 0;
+}
+
+} // anonymous namespace
+
+
+namespace Glib
+{
+
+void wrap_register_init()
+{
+ g_type_init();
+
+ if(!Glib::quark_)
+ {
+ Glib::quark_ = g_quark_from_static_string("glibmm__Glib::quark_");
+ Glib::quark_cpp_wrapper_deleted_ = g_quark_from_static_string("glibmm__Glib::quark_cpp_wrapper_deleted_");
+ }
+
+ if(!wrap_func_table)
+ {
+ // Make the first element a dummy so we can detect unregistered types.
+ // g_type_get_qdata() returns NULL if no data has been set up.
+ wrap_func_table = new WrapFuncTable(1);
+ }
+}
+
+void wrap_register_cleanup()
+{
+ if(wrap_func_table)
+ {
+ delete wrap_func_table;
+ wrap_func_table = 0;
+ }
+}
+
+// Register the unique wrap_new() function of a new C++ wrapper type.
+// The GType argument specifies the parent C type to wrap from.
+//
+void wrap_register(GType type, WrapNewFunction func)
+{
+ const guint idx = wrap_func_table->size();
+ wrap_func_table->push_back(func);
+
+ // Store the table index in the type's static data.
+ g_type_set_qdata(type, Glib::quark_, GUINT_TO_POINTER(idx));
+}
+
+// This is a factory function that converts any type to
+// its C++ wrapper instance by looking up a wrap_new() function in a map.
+//
+ObjectBase* wrap_auto(GObject* object, bool take_copy)
+{
+ if(!object)
+ return 0;
+
+ // Look up current C++ wrapper instance:
+ ObjectBase* pCppObject =
+ static_cast<ObjectBase*>(g_object_get_qdata(object, Glib::quark_));
+
+ if(!pCppObject)
+ {
+ // There's not already a wrapper: generate a new C++ instance.
+ pCppObject = create_new_wrapper(object);
+
+ if(!pCppObject)
+ {
+ g_warning("failed to wrap type of '%s'", G_OBJECT_TYPE_NAME(object));
+ return 0;
+ }
+ }
+
+ // take_copy=true is used where the GTK+ function doesn't do
+ // an extra ref for us, and always for plain struct members.
+ if(take_copy)
+ pCppObject->reference();
+
+ return pCppObject;
+}
+
+Glib::RefPtr<Object> wrap(GObject* object, bool take_copy /* = false */)
+{
+ return Glib::RefPtr<Object>(dynamic_cast<Object*>(wrap_auto(object, take_copy)));
+}
+
+} /* namespace Glib */
+
diff --git a/libs/glibmm2/glib/glibmm/wrap.h b/libs/glibmm2/glib/glibmm/wrap.h
new file mode 100644
index 0000000000..7bbd705fc2
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/wrap.h
@@ -0,0 +1,118 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_WRAP_H
+#define _GLIBMM_WRAP_H
+
+/* $Id: wrap.h,v 1.2 2003/01/27 16:14:36 murrayc Exp $ */
+
+/* Copyright (C) 1998-2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib-object.h>
+#include <glibmm/refptr.h>
+
+
+namespace Glib
+{
+
+class ObjectBase;
+class Object;
+
+// Type of the per-class wrap_new() functions.
+typedef Glib::ObjectBase* (*WrapNewFunction) (GObject*);
+
+// Setup and free the structures used by wrap_register().
+// Both functions might be called more than once.
+void wrap_register_init();
+void wrap_register_cleanup();
+
+// Register a new type for auto allocation.
+void wrap_register(GType type, WrapNewFunction func);
+
+// Return the current C++ wrapper instance of the GObject,
+// or automatically generate a new wrapper if there's none.
+Glib::ObjectBase* wrap_auto(GObject* object, bool take_copy = false);
+
+// Get a C++ instance that wraps the C instance.
+// This always returns the same C++ instance for the same C instance.
+// Each wrapper has it's own override of Glib::wrap().
+// use take_copy = true when wrapping a struct member.
+// TODO: move to object.h ?
+/** @relates Glib::Object */
+Glib::RefPtr<Glib::Object> wrap(GObject* object, bool take_copy = false);
+
+
+/** Get the underlying C instance from the C++ instance. This is just
+ * like calling gobj(), but it does its own check for a NULL pointer.
+ */
+template <class T> inline
+typename T::BaseObjectType* unwrap(T* ptr)
+{
+ return (ptr) ? ptr->gobj() : 0;
+}
+
+/** Get the underlying C instance from the C++ instance. This is just
+ * like calling gobj(), but it does its own check for a NULL pointer.
+ */
+template <class T> inline
+const typename T::BaseObjectType* unwrap(const T* ptr)
+{
+ return (ptr) ? ptr->gobj() : 0;
+}
+
+/** Get the underlying C instance from the C++ instance. This is just
+ * like calling gobj(), but it does its own check for a NULL pointer.
+ */
+template <class T> inline
+typename T::BaseObjectType* unwrap(const Glib::RefPtr<T>& ptr)
+{
+ return (ptr) ? ptr->gobj() : 0;
+}
+
+/** Get the underlying C instance from the C++ instance. This is just
+ * like calling gobj(), but it does its own check for a NULL pointer.
+ */
+template <class T> inline
+const typename T::BaseObjectType* unwrap(const Glib::RefPtr<const T>& ptr)
+{
+ return (ptr) ? ptr->gobj() : 0;
+}
+
+/** Get the underlying C instance from the C++ instance and acquire a
+ * reference. This is just like calling gobj_copy(), but it does its own
+ * check for a NULL pointer.
+ */
+template <class T> inline
+typename T::BaseObjectType* unwrap_copy(const Glib::RefPtr<T>& ptr)
+{
+ return (ptr) ? ptr->gobj_copy() : 0;
+}
+
+/** Get the underlying C instance from the C++ instance and acquire a
+ * reference. This is just like calling gobj_copy(), but it does its own
+ * check for a NULL pointer.
+ */
+template <class T> inline
+const typename T::BaseObjectType* unwrap_copy(const Glib::RefPtr<const T>& ptr)
+{
+ return (ptr) ? ptr->gobj_copy() : 0;
+}
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_WRAP_H */
+
diff --git a/libs/glibmm2/glib/glibmm/wrap_init.cc b/libs/glibmm2/glib/glibmm/wrap_init.cc
new file mode 100644
index 0000000000..b6799993f1
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/wrap_init.cc
@@ -0,0 +1,76 @@
+
+#include <glib.h>
+
+// Disable the 'const' function attribute of the get_type() functions.
+// GCC would optimize them out because we don't use the return value.
+#undef G_GNUC_CONST
+#define G_GNUC_CONST /* empty */
+
+#include <glibmm/wrap_init.h>
+#include <glibmm/error.h>
+#include <glibmm/object.h>
+
+// #include the widget headers so that we can call the get_type() static methods:
+
+#include "convert.h"
+#include "date.h"
+#include "fileutils.h"
+#include "iochannel.h"
+#include "keyfile.h"
+#include "markup.h"
+#include "module.h"
+#include "optioncontext.h"
+#include "optionentry.h"
+#include "optiongroup.h"
+#include "shell.h"
+#include "spawn.h"
+#include "thread.h"
+#include "unicode.h"
+
+extern "C"
+{
+
+//Declarations of the *_get_type() functions:
+
+
+//Declarations of the *_error_quark() functions:
+
+GQuark g_convert_error_quark(void);
+GQuark g_file_error_quark(void);
+GQuark g_io_channel_error_quark(void);
+GQuark g_key_file_error_quark(void);
+GQuark g_markup_error_quark(void);
+GQuark g_option_error_quark(void);
+GQuark g_shell_error_quark(void);
+GQuark g_spawn_error_quark(void);
+GQuark g_thread_error_quark(void);
+} // extern "C"
+
+
+//Declarations of the *_Class::wrap_new() methods, instead of including all the private headers:
+
+
+namespace Glib {
+
+void wrap_init()
+{
+ // Register Error domains:
+ Glib::Error::register_domain(g_convert_error_quark(), &Glib::ConvertError::throw_func);
+ Glib::Error::register_domain(g_file_error_quark(), &Glib::FileError::throw_func);
+ Glib::Error::register_domain(g_io_channel_error_quark(), &Glib::IOChannelError::throw_func);
+ Glib::Error::register_domain(g_key_file_error_quark(), &Glib::KeyFileError::throw_func);
+ Glib::Error::register_domain(g_markup_error_quark(), &Glib::MarkupError::throw_func);
+ Glib::Error::register_domain(g_option_error_quark(), &Glib::OptionError::throw_func);
+ Glib::Error::register_domain(g_shell_error_quark(), &Glib::ShellError::throw_func);
+ Glib::Error::register_domain(g_spawn_error_quark(), &Glib::SpawnError::throw_func);
+ Glib::Error::register_domain(g_thread_error_quark(), &Glib::ThreadError::throw_func);
+
+// Map gtypes to gtkmm wrapper-creation functions:
+
+ // Register the gtkmm gtypes:
+
+} // wrap_init()
+
+} //Glib
+
+
diff --git a/libs/glibmm2/glib/glibmm/wrap_init.h b/libs/glibmm2/glib/glibmm/wrap_init.h
new file mode 100644
index 0000000000..fbdc4e0853
--- /dev/null
+++ b/libs/glibmm2/glib/glibmm/wrap_init.h
@@ -0,0 +1,38 @@
+// -*- c++ -*-
+#ifndef _GLIBMM_WRAP_INIT_H
+#define _GLIBMM_WRAP_INIT_H
+
+/* $Id: wrap_init.h,v 1.1.1.1 2003/01/07 16:59:01 murrayc Exp $ */
+
+/* wrap_init.h
+ *
+ * Copyright 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/error.h>
+
+
+namespace Glib
+{
+
+void wrap_init();
+
+} // namespace Glib
+
+
+#endif /* _GLIBMM_WRAP_INIT_H */
+
diff --git a/libs/glibmm2/glib/glibmmconfig.h b/libs/glibmm2/glib/glibmmconfig.h
new file mode 100644
index 0000000000..7cf16ed623
--- /dev/null
+++ b/libs/glibmm2/glib/glibmmconfig.h
@@ -0,0 +1,91 @@
+/* glib/glibmmconfig.h. Generated by configure. */
+#ifndef _GLIBMM_CONFIG_H
+#define _GLIBMM_CONFIG_H 1
+
+/* version numbers */
+#define GLIBMM_MAJOR_VERSION 2
+#define GLIBMM_MINOR_VERSION 13
+#define GLIBMM_MICRO_VERSION 3
+
+// detect common platforms
+#if defined(_WIN32)
+// Win32 compilers have a lot of varation
+#if defined(_MSC_VER)
+#define GLIBMM_MSC
+#define GLIBMM_WIN32
+#define GLIBMM_DLL
+#elif defined(__CYGWIN__)
+#define GLIBMM_CONFIGURE
+#elif defined(__MINGW32__)
+#define GLIBMM_WIN32
+#define GLIBMM_DLL
+#define GLIBMM_CONFIGURE
+#else
+//AIX clR compiler complains about this even though it doesn't get this far:
+//#warning "Unknown architecture (send me gcc --dumpspecs or equiv)"
+#endif
+#else
+#define GLIBMM_CONFIGURE
+#endif /* _WIN32 */
+
+#ifdef GLIBMM_CONFIGURE
+/* #undef GLIBMM_CXX_HAVE_MUTABLE */
+/* #undef GLIBMM_CXX_HAVE_NAMESPACES */
+//#undef GLIBMM_CXX_GAUB
+//#undef GLIBMM_CXX_AMBIGUOUS_TEMPLATES
+#define GLIBMM_HAVE_NAMESPACE_STD 1
+#define GLIBMM_HAVE_STD_ITERATOR_TRAITS 1
+/* #undef GLIBMM_HAVE_SUN_REVERSE_ITERATOR */
+#define GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS 1
+#define GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS 1
+/* #undef GLIBMM_COMPILER_SUN_FORTE */
+/* #undef GLIBMM_DEBUG_REFCOUNTING */
+#define GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION 1
+#define GLIBMM_CAN_ASSIGN_NON_EXTERN_C_FUNCTIONS_TO_EXTERN_C_CALLBACKS 1
+#define GLIBMM_CAN_USE_NAMESPACES_INSIDE_EXTERNC 1
+#define GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS 1
+#define GLIBMM_PROPERTIES_ENABLED 1
+#define GLIBMM_VFUNCS_ENABLED 1
+#define GLIBMM_EXCEPTIONS_ENABLED 1
+#define GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED 1
+#endif
+
+#ifdef GLIBMM_MSC
+ #define GLIBMM_CXX_HAVE_MUTABLE 1
+ #define GLIBMM_CXX_HAVE_NAMESPACES 1
+ #define GLIBMM_HAVE_NAMESPACE_STD 1
+ #define GLIBMM_HAVE_STD_ITERATOR_TRAITS 1
+ #define GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS 1
+ #define GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS 1
+ #define GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION 1
+ #define GLIBMM_CAN_ASSIGN_NON_EXTERN_C_FUNCTIONS_TO_EXTERN_C_CALLBACKS 1
+ #define GLIBMM_CAN_USE_NAMESPACES_INSIDE_EXTERNC 1
+ #define GLIBMM_PROPERTIES_ENABLED 1
+ #define GLIBMM_VFUNCS_ENABLED 1
+ #define GLIBMM_EXCEPTIONS_ENABLED 1
+ #define GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED 1
+ #pragma warning (disable: 4786 4355 4800 4181)
+#endif
+
+#ifndef GLIBMM_HAVE_NAMESPACE_STD
+# define GLIBMM_USING_STD(Symbol) namespace std { using ::Symbol; }
+#else
+# define GLIBMM_USING_STD(Symbol) /* empty */
+#endif
+
+#ifdef GLIBMM_DLL
+ #if defined(GLIBMM_BUILD) && defined(_WINDLL)
+ /* Do not dllexport as it is handled by gendef on MSVC */
+ #define GLIBMM_API
+ #elif !defined(GLIBMM_BUILD)
+ #define GLIBMM_API __declspec(dllimport)
+ #else
+ /* Build a static library */
+ #define GLIBMM_API
+ #endif /* GLIBMM_BUILD - _WINDLL */
+#else
+ #define GLIBMM_API
+#endif /* GLIBMM_DLL */
+
+#endif /* _GLIBMM_CONFIG_H */
+
diff --git a/libs/glibmm2/glib/glibmmconfig.h.in b/libs/glibmm2/glib/glibmmconfig.h.in
new file mode 100644
index 0000000000..da7a98da7f
--- /dev/null
+++ b/libs/glibmm2/glib/glibmmconfig.h.in
@@ -0,0 +1,90 @@
+#ifndef _GLIBMM_CONFIG_H
+#define _GLIBMM_CONFIG_H 1
+
+/* version numbers */
+#undef GLIBMM_MAJOR_VERSION
+#undef GLIBMM_MINOR_VERSION
+#undef GLIBMM_MICRO_VERSION
+
+// detect common platforms
+#if defined(_WIN32)
+// Win32 compilers have a lot of varation
+#if defined(_MSC_VER)
+#define GLIBMM_MSC
+#define GLIBMM_WIN32
+#define GLIBMM_DLL
+#elif defined(__CYGWIN__)
+#define GLIBMM_CONFIGURE
+#elif defined(__MINGW32__)
+#define GLIBMM_WIN32
+#define GLIBMM_DLL
+#define GLIBMM_CONFIGURE
+#else
+//AIX clR compiler complains about this even though it doesn't get this far:
+//#warning "Unknown architecture (send me gcc --dumpspecs or equiv)"
+#endif
+#else
+#define GLIBMM_CONFIGURE
+#endif /* _WIN32 */
+
+#ifdef GLIBMM_CONFIGURE
+#undef GLIBMM_CXX_HAVE_MUTABLE
+#undef GLIBMM_CXX_HAVE_NAMESPACES
+//#undef GLIBMM_CXX_GAUB
+//#undef GLIBMM_CXX_AMBIGUOUS_TEMPLATES
+#undef GLIBMM_HAVE_NAMESPACE_STD
+#undef GLIBMM_HAVE_STD_ITERATOR_TRAITS
+#undef GLIBMM_HAVE_SUN_REVERSE_ITERATOR
+#undef GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS
+#undef GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS
+#undef GLIBMM_COMPILER_SUN_FORTE
+#undef GLIBMM_DEBUG_REFCOUNTING
+#undef GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION
+#undef GLIBMM_CAN_ASSIGN_NON_EXTERN_C_FUNCTIONS_TO_EXTERN_C_CALLBACKS
+#undef GLIBMM_CAN_USE_NAMESPACES_INSIDE_EXTERNC
+#undef GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS
+#undef GLIBMM_PROPERTIES_ENABLED
+#undef GLIBMM_VFUNCS_ENABLED
+#undef GLIBMM_EXCEPTIONS_ENABLED
+#undef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
+#endif
+
+#ifdef GLIBMM_MSC
+ #define GLIBMM_CXX_HAVE_MUTABLE 1
+ #define GLIBMM_CXX_HAVE_NAMESPACES 1
+ #define GLIBMM_HAVE_NAMESPACE_STD 1
+ #define GLIBMM_HAVE_STD_ITERATOR_TRAITS 1
+ #define GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS 2
+ #define GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS 1
+ #define GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION 1
+ #define GLIBMM_CAN_ASSIGN_NON_EXTERN_C_FUNCTIONS_TO_EXTERN_C_CALLBACKS 1
+ #define GLIBMM_CAN_USE_NAMESPACES_INSIDE_EXTERNC 1
+ #define GLIBMM_PROPERTIES_ENABLED 1
+ #define GLIBMM_VFUNCS_ENABLED 1
+ #define GLIBMM_EXCEPTIONS_ENABLED 1
+ #define GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED 1
+ #pragma warning (disable: 4786 4355 4800 4181)
+#endif
+
+#ifndef GLIBMM_HAVE_NAMESPACE_STD
+# define GLIBMM_USING_STD(Symbol) namespace std { using ::Symbol; }
+#else
+# define GLIBMM_USING_STD(Symbol) /* empty */
+#endif
+
+#ifdef GLIBMM_DLL
+ #if defined(GLIBMM_BUILD) && defined(_WINDLL)
+ /* Do not dllexport as it is handled by gendef on MSVC */
+ #define GLIBMM_API
+ #elif !defined(GLIBMM_BUILD)
+ #define GLIBMM_API __declspec(dllimport)
+ #else
+ /* Build a static library */
+ #define GLIBMM_API
+ #endif /* GLIBMM_BUILD - _WINDLL */
+#else
+ #define GLIBMM_API
+#endif /* GLIBMM_DLL */
+
+#endif /* _GLIBMM_CONFIG_H */
+
diff --git a/libs/glibmm2/glib/src/Makefile b/libs/glibmm2/glib/src/Makefile
new file mode 100644
index 0000000000..a12e24aba8
--- /dev/null
+++ b/libs/glibmm2/glib/src/Makefile
@@ -0,0 +1,424 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# glib/src/Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+srcdir = .
+top_srcdir = ../..
+
+pkgdatadir = $(datadir)/glibmm
+pkglibdir = $(libdir)/glibmm
+pkgincludedir = $(includedir)/glibmm
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = i686-pc-linux-gnu
+host_triplet = i686-pc-linux-gnu
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile_list_of_hg.am_fragment \
+ $(top_srcdir)/build_shared/Makefile_gensrc.am_fragment \
+ $(top_srcdir)/build_shared/Makefile_gensrc_platform.am_fragment \
+ $(top_srcdir)/tools/Makefile_list_of_sources.am_fragment \
+ $(top_srcdir)/tools/m4/Makefile_list_of_sources.am_fragment \
+ $(top_srcdir)/tools/pm/Makefile_list_of_sources.am_fragment
+subdir = glib/src
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/scripts/cxx.m4 \
+ $(top_srcdir)/scripts/cxx_std.m4 \
+ $(top_srcdir)/scripts/docgen.m4 \
+ $(top_srcdir)/scripts/glibmm_check_perl.m4 \
+ $(top_srcdir)/scripts/macros.m4 \
+ $(top_srcdir)/scripts/reduced.m4 $(top_srcdir)/scripts/sun.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h \
+ $(top_builddir)/glib/glibmmconfig.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run aclocal-1.9 -I ./scripts
+AMDEP_FALSE = #
+AMDEP_TRUE =
+AMTAR = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run tar
+AR = ar
+AS = as
+AUTOCONF = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run autoconf
+AUTOHEADER = :
+AUTOMAKE = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS =
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2 -Wall -Wno-long-long
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DISABLE_DEPRECATED_API_CFLAGS =
+DISABLE_DEPRECATED_CFLAGS =
+DLLTOOL = dlltool
+ECHO = echo
+ECHO_C =
+ECHO_N = -n
+ECHO_T =
+EGREP = grep -E
+EXEEXT =
+F77 =
+FFLAGS =
+GLIBMM_CFLAGS = -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+GLIBMM_LIBS = -Wl,--export-dynamic -lsigc-2.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
+GLIBMM_MAJOR_VERSION = 2
+GLIBMM_MICRO_VERSION = 3
+GLIBMM_MINOR_VERSION = 13
+GLIBMM_RELEASE = 2.13
+GLIBMM_VERSION = 2.13.3
+GTHREAD_CFLAGS = -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+GTHREAD_LIBS = -pthread -lgthread-2.0 -lrt -lglib-2.0
+GTKMMPROC_MERGECDOCS =
+GTKMM_DOXYGEN_INPUT = /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/glib/glibmm/
+GTKMM_FALSE_FALSE =
+GTKMM_FALSE_TRUE = #
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =
+LIBGLIBMM_SO_VERSION = 1:24:0
+LIBOBJS =
+LIBS =
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS =
+M4 = m4
+MAINT = #
+MAINTAINER_MODE_FALSE =
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run makeinfo
+OBJDUMP = objdump
+OBJEXT = o
+OS_WIN32_FALSE =
+OS_WIN32_TRUE = #
+PACKAGE = glibmm
+PACKAGE_BUGREPORT =
+PACKAGE_NAME =
+PACKAGE_STRING =
+PACKAGE_TARNAME =
+PACKAGE_VERSION =
+PATH_SEPARATOR = :
+PERL_PATH = /usr/bin/perl
+PKG_CONFIG = /usr/bin/pkg-config
+PLATFORM_WIN32_FALSE =
+PLATFORM_WIN32_TRUE = #
+RANLIB = ranlib
+SET_MAKE =
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 2.13.3
+ac_ct_AR = ar
+ac_ct_AS =
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DLLTOOL =
+ac_ct_F77 =
+ac_ct_OBJDUMP =
+ac_ct_RANLIB = ranlib
+ac_ct_STRIP = strip
+ac_pt_PKG_CONFIG = /usr/bin/pkg-config
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE =
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE =
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = i686-pc-linux-gnu
+build_alias =
+build_cpu = i686
+build_os = linux-gnu
+build_vendor = pc
+datadir = ${prefix}/share
+exec_prefix = ${prefix}
+host = i686-pc-linux-gnu
+host_alias =
+host_cpu = i686
+host_os = linux-gnu
+host_vendor = pc
+includedir = ${prefix}/include
+infodir = ${prefix}/info
+install_sh = /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localstatedir = ${prefix}/var
+mandir = ${prefix}/man
+mkdir_p = mkdir -p --
+oldincludedir = /usr/include
+prefix = /usr/local
+program_transform_name = s,x,x,
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias =
+sublib_name = glibmm
+sublib_namespace = Glib
+files_defs = glib.defs glib_enums.defs glib_functions.defs gobject.defs gobject_enums.defs gobject_functions.defs gmodule_enums.defs gmodule_functions.defs glib_docs.xml glib_docs_override.xml
+tools_dir_m4 = $(top_srcdir)/tools/m4
+tools_dir_pm = $(top_srcdir)/tools/pm
+gensrc_destdir = $(srcdir)/../$(sublib_name)
+stamp_dir = $(srcdir)/.stamps
+files_tools_m4 = base.m4 class_shared.m4 class_boxedtype.m4 class_boxedtype_static.m4 \
+ class_generic.m4 class_gobject.m4 class_gtkobject.m4 \
+ class_interface.m4 class_opaque_refcounted.m4 class_opaque_copyable.m4 \
+ gerror.m4 \
+ compare.m4 convert.m4 convert_base.m4 convert_gtkmm.m4 convert_atk.m4 convert_gdk.m4 \
+ convert_glib.m4 convert_gtk.m4 convert_pango.m4 ctor.m4 doc.m4 enum.m4 list.m4 member.m4 \
+ method.m4 property.m4 signal.m4 vfunc.m4
+
+files_tools_pm = DocsParser.pm GtkDefs.pm Enum.pm Function.pm FunctionBase.pm Object.pm Output.pm Property.pm Util.pm WrapParser.pm
+files_tools_genwrap = generate_wrap_init.pl
+files_tools_perl = $(files_tools_genwrap) gmmproc.in
+tools_m4 = $(files_tools_m4:%.m4=$(tools_dir_m4)/%.m4)
+tools_pm = $(files_tools_pm:%.pm=$(tools_dir_pm)/%.pm)
+files_posix_hg =
+files_win32_hg =
+files_general_hg = convert.hg date.hg fileutils.hg iochannel.hg keyfile.hg markup.hg module.hg optioncontext.hg optionentry.hg optiongroup.hg shell.hg spawn.hg thread.hg unicode.hg
+files_all_hg = $(files_general_hg) $(files_posix_hg) $(files_win32_hg)
+files_hg = $(files_general_hg) $(files_posix_hg)
+#files_hg = $(files_general_hg) $(files_win32_hg)
+files_all_ccg = $(files_all_hg:%.hg=%.ccg)
+files_h = $(files_all_hg:%.hg=$(gensrc_destdir)/%.h)
+files_cc = $(files_all_hg:%.hg=$(gensrc_destdir)/%.cc)
+files_stamp = $(files_all_hg:%.hg=$(stamp_dir)/stamp-%) \
+ $(glibmm_files_m4:%.m4=$(gensrc_destdir)/%)
+gmmproc_in = $(top_srcdir)/tools/gmmproc.in
+gmmproc_path = $(top_builddir)/tools/gmmproc
+gmmproc_args = -I $(tools_dir_m4) --defs $(srcdir)
+run_gmmproc = $(PERL_PATH) -I$(tools_dir_pm) $(gmmproc_path) $(gmmproc_args)
+gen_wrap_init_in = $(top_srcdir)/tools/generate_wrap_init.pl.in
+gen_wrap_init_path = $(top_builddir)/tools/generate_wrap_init.pl
+gen_wrap_init_args = --namespace=$(sublib_namespace)
+run_gen_wrap_init = $(PERL_PATH) $(gen_wrap_init_path) $(gen_wrap_init_args)
+EXTRA_DIST = Makefile_list_of_hg.am_fragment $(files_defs) \
+ $(files_all_hg) $(files_all_ccg) $(glibmm_files_m4) \
+ template.macros.m4
+glibmm_files_m4 = signalproxy.h.m4 value_basictypes.cc.m4 value_basictypes.h.m4
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(top_srcdir)/build_shared/Makefile_gensrc.am_fragment $(top_srcdir)/tools/Makefile_list_of_sources.am_fragment $(top_srcdir)/tools/m4/Makefile_list_of_sources.am_fragment $(top_srcdir)/tools/pm/Makefile_list_of_sources.am_fragment $(srcdir)/Makefile_list_of_hg.am_fragment $(top_srcdir)/build_shared/Makefile_gensrc_platform.am_fragment $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu glib/src/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu glib/src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/../../build_shared $(distdir)/../../tools $(distdir)/../../tools/m4 $(distdir)/../../tools/pm
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-local:
+all-am: Makefile all-local
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+ maintainer-clean-local
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+ clean-libtool distclean distclean-generic distclean-libtool \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic \
+ maintainer-clean-local mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+ uninstall-info-am
+
+
+$(stamp_dir)/stamp-%: %.hg %.ccg $(gmmproc_in) $(tools_m4) $(tools_pm) $(files_defs)
+ $(run_gmmproc) $(notdir $*) $(srcdir) $(gensrc_destdir)
+ @echo 'timestamp' >$@
+
+$(gensrc_destdir)/wrap_init.cc: $(gen_wrap_init_in) $(files_all_hg)
+ $(run_gen_wrap_init) $(files_all_hg:%.hg=$(srcdir)/%.hg) >$@
+
+create-stamp-dir:
+ @(test -d $(stamp_dir) || mkdir $(stamp_dir))
+
+#all-local: create-stamp-dir $(files_stamp) $(gensrc_destdir)/wrap_init.cc
+
+maintainer-clean-local:
+ rm -rf $(stamp_dir)
+
+.PHONY: create-stamp-dir
+
+$(gensrc_destdir)/%.cc: %.cc.m4 template.macros.m4
+ $(M4) -I$(srcdir) $< >$@
+
+$(gensrc_destdir)/%.h: %.h.m4 template.macros.m4
+ $(M4) -I$(srcdir) $< >$@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libs/glibmm2/glib/src/Makefile.am b/libs/glibmm2/glib/src/Makefile.am
new file mode 100644
index 0000000000..ae1b6ea209
--- /dev/null
+++ b/libs/glibmm2/glib/src/Makefile.am
@@ -0,0 +1,21 @@
+## Copyright (c) 2002
+## The gtkmm development team.
+
+sublib_name = glibmm
+sublib_namespace = Glib
+files_defs = glib.defs glib_enums.defs glib_functions.defs gobject.defs gobject_enums.defs gobject_functions.defs gmodule_enums.defs gmodule_functions.defs glib_docs.xml glib_docs_override.xml
+
+include $(top_srcdir)/build_shared/Makefile_gensrc.am_fragment
+
+glibmm_files_m4 = signalproxy.h.m4 value_basictypes.cc.m4 value_basictypes.h.m4
+
+files_stamp += $(glibmm_files_m4:%.m4=$(gensrc_destdir)/%)
+EXTRA_DIST += $(glibmm_files_m4) template.macros.m4
+
+
+$(gensrc_destdir)/%.cc: %.cc.m4 template.macros.m4
+ $(M4) -I$(srcdir) $< >$@
+
+$(gensrc_destdir)/%.h: %.h.m4 template.macros.m4
+ $(M4) -I$(srcdir) $< >$@
+
diff --git a/libs/glibmm2/glib/src/Makefile.in b/libs/glibmm2/glib/src/Makefile.in
new file mode 100644
index 0000000000..04b587c100
--- /dev/null
+++ b/libs/glibmm2/glib/src/Makefile.in
@@ -0,0 +1,424 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile_list_of_hg.am_fragment \
+ $(top_srcdir)/build_shared/Makefile_gensrc.am_fragment \
+ $(top_srcdir)/build_shared/Makefile_gensrc_platform.am_fragment \
+ $(top_srcdir)/tools/Makefile_list_of_sources.am_fragment \
+ $(top_srcdir)/tools/m4/Makefile_list_of_sources.am_fragment \
+ $(top_srcdir)/tools/pm/Makefile_list_of_sources.am_fragment
+subdir = glib/src
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/scripts/cxx.m4 \
+ $(top_srcdir)/scripts/cxx_std.m4 \
+ $(top_srcdir)/scripts/docgen.m4 \
+ $(top_srcdir)/scripts/glibmm_check_perl.m4 \
+ $(top_srcdir)/scripts/macros.m4 \
+ $(top_srcdir)/scripts/reduced.m4 $(top_srcdir)/scripts/sun.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h \
+ $(top_builddir)/glib/glibmmconfig.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISABLE_DEPRECATED_API_CFLAGS = @DISABLE_DEPRECATED_API_CFLAGS@
+DISABLE_DEPRECATED_CFLAGS = @DISABLE_DEPRECATED_CFLAGS@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GLIBMM_CFLAGS = @GLIBMM_CFLAGS@
+GLIBMM_LIBS = @GLIBMM_LIBS@
+GLIBMM_MAJOR_VERSION = @GLIBMM_MAJOR_VERSION@
+GLIBMM_MICRO_VERSION = @GLIBMM_MICRO_VERSION@
+GLIBMM_MINOR_VERSION = @GLIBMM_MINOR_VERSION@
+GLIBMM_RELEASE = @GLIBMM_RELEASE@
+GLIBMM_VERSION = @GLIBMM_VERSION@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKMMPROC_MERGECDOCS = @GTKMMPROC_MERGECDOCS@
+GTKMM_DOXYGEN_INPUT = @GTKMM_DOXYGEN_INPUT@
+GTKMM_FALSE_FALSE = @GTKMM_FALSE_FALSE@
+GTKMM_FALSE_TRUE = @GTKMM_FALSE_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBGLIBMM_SO_VERSION = @LIBGLIBMM_SO_VERSION@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+M4 = @M4@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS_WIN32_FALSE = @OS_WIN32_FALSE@
+OS_WIN32_TRUE = @OS_WIN32_TRUE@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL_PATH = @PERL_PATH@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_WIN32_FALSE = @PLATFORM_WIN32_FALSE@
+PLATFORM_WIN32_TRUE = @PLATFORM_WIN32_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_AS = @ac_ct_AS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+sublib_name = glibmm
+sublib_namespace = Glib
+files_defs = glib.defs glib_enums.defs glib_functions.defs gobject.defs gobject_enums.defs gobject_functions.defs gmodule_enums.defs gmodule_functions.defs glib_docs.xml glib_docs_override.xml
+tools_dir_m4 = $(top_srcdir)/tools/m4
+tools_dir_pm = $(top_srcdir)/tools/pm
+gensrc_destdir = $(srcdir)/../$(sublib_name)
+stamp_dir = $(srcdir)/.stamps
+files_tools_m4 = base.m4 class_shared.m4 class_boxedtype.m4 class_boxedtype_static.m4 \
+ class_generic.m4 class_gobject.m4 class_gtkobject.m4 \
+ class_interface.m4 class_opaque_refcounted.m4 class_opaque_copyable.m4 \
+ gerror.m4 \
+ compare.m4 convert.m4 convert_base.m4 convert_gtkmm.m4 convert_atk.m4 convert_gdk.m4 \
+ convert_glib.m4 convert_gtk.m4 convert_pango.m4 ctor.m4 doc.m4 enum.m4 list.m4 member.m4 \
+ method.m4 property.m4 signal.m4 vfunc.m4
+
+files_tools_pm = DocsParser.pm GtkDefs.pm Enum.pm Function.pm FunctionBase.pm Object.pm Output.pm Property.pm Util.pm WrapParser.pm
+files_tools_genwrap = generate_wrap_init.pl
+files_tools_perl = $(files_tools_genwrap) gmmproc.in
+tools_m4 = $(files_tools_m4:%.m4=$(tools_dir_m4)/%.m4)
+tools_pm = $(files_tools_pm:%.pm=$(tools_dir_pm)/%.pm)
+files_posix_hg =
+files_win32_hg =
+files_general_hg = convert.hg date.hg fileutils.hg iochannel.hg keyfile.hg markup.hg module.hg optioncontext.hg optionentry.hg optiongroup.hg shell.hg spawn.hg thread.hg unicode.hg
+files_all_hg = $(files_general_hg) $(files_posix_hg) $(files_win32_hg)
+@OS_WIN32_FALSE@files_hg = $(files_general_hg) $(files_posix_hg)
+@OS_WIN32_TRUE@files_hg = $(files_general_hg) $(files_win32_hg)
+files_all_ccg = $(files_all_hg:%.hg=%.ccg)
+files_h = $(files_all_hg:%.hg=$(gensrc_destdir)/%.h)
+files_cc = $(files_all_hg:%.hg=$(gensrc_destdir)/%.cc)
+files_stamp = $(files_all_hg:%.hg=$(stamp_dir)/stamp-%) \
+ $(glibmm_files_m4:%.m4=$(gensrc_destdir)/%)
+gmmproc_in = $(top_srcdir)/tools/gmmproc.in
+gmmproc_path = $(top_builddir)/tools/gmmproc
+gmmproc_args = -I $(tools_dir_m4) --defs $(srcdir)
+run_gmmproc = $(PERL_PATH) -I$(tools_dir_pm) $(gmmproc_path) $(gmmproc_args)
+gen_wrap_init_in = $(top_srcdir)/tools/generate_wrap_init.pl.in
+gen_wrap_init_path = $(top_builddir)/tools/generate_wrap_init.pl
+gen_wrap_init_args = --namespace=$(sublib_namespace)
+run_gen_wrap_init = $(PERL_PATH) $(gen_wrap_init_path) $(gen_wrap_init_args)
+EXTRA_DIST = Makefile_list_of_hg.am_fragment $(files_defs) \
+ $(files_all_hg) $(files_all_ccg) $(glibmm_files_m4) \
+ template.macros.m4
+glibmm_files_m4 = signalproxy.h.m4 value_basictypes.cc.m4 value_basictypes.h.m4
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/build_shared/Makefile_gensrc.am_fragment $(top_srcdir)/tools/Makefile_list_of_sources.am_fragment $(top_srcdir)/tools/m4/Makefile_list_of_sources.am_fragment $(top_srcdir)/tools/pm/Makefile_list_of_sources.am_fragment $(srcdir)/Makefile_list_of_hg.am_fragment $(top_srcdir)/build_shared/Makefile_gensrc_platform.am_fragment $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu glib/src/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu glib/src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/../../build_shared $(distdir)/../../tools $(distdir)/../../tools/m4 $(distdir)/../../tools/pm
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+@MAINTAINER_MODE_FALSE@all-local:
+all-am: Makefile all-local
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+ maintainer-clean-local
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: all all-am all-local check check-am clean clean-generic \
+ clean-libtool distclean distclean-generic distclean-libtool \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic \
+ maintainer-clean-local mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+ uninstall-info-am
+
+
+$(stamp_dir)/stamp-%: %.hg %.ccg $(gmmproc_in) $(tools_m4) $(tools_pm) $(files_defs)
+ $(run_gmmproc) $(notdir $*) $(srcdir) $(gensrc_destdir)
+ @echo 'timestamp' >$@
+
+$(gensrc_destdir)/wrap_init.cc: $(gen_wrap_init_in) $(files_all_hg)
+ $(run_gen_wrap_init) $(files_all_hg:%.hg=$(srcdir)/%.hg) >$@
+
+create-stamp-dir:
+ @(test -d $(stamp_dir) || mkdir $(stamp_dir))
+
+@MAINTAINER_MODE_TRUE@all-local: create-stamp-dir $(files_stamp) $(gensrc_destdir)/wrap_init.cc
+
+maintainer-clean-local:
+ rm -rf $(stamp_dir)
+
+.PHONY: create-stamp-dir
+
+$(gensrc_destdir)/%.cc: %.cc.m4 template.macros.m4
+ $(M4) -I$(srcdir) $< >$@
+
+$(gensrc_destdir)/%.h: %.h.m4 template.macros.m4
+ $(M4) -I$(srcdir) $< >$@
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libs/glibmm2/glib/src/Makefile_list_of_hg.am_fragment b/libs/glibmm2/glib/src/Makefile_list_of_hg.am_fragment
new file mode 100644
index 0000000000..469614d82c
--- /dev/null
+++ b/libs/glibmm2/glib/src/Makefile_list_of_hg.am_fragment
@@ -0,0 +1,8 @@
+## This file is include by other Makefile.am files, using the automake
+## include feature. The include happens in Makefile.am, not Makefile.in
+## or Makefile, so it's like copy-and-pasting this into each of those
+## Makefile.am files.
+
+files_posix_hg =
+files_win32_hg =
+files_general_hg = convert.hg date.hg fileutils.hg iochannel.hg keyfile.hg markup.hg module.hg optioncontext.hg optionentry.hg optiongroup.hg shell.hg spawn.hg thread.hg unicode.hg
diff --git a/libs/glibmm2/glib/src/convert.ccg b/libs/glibmm2/glib/src/convert.ccg
new file mode 100644
index 0000000000..dc19705611
--- /dev/null
+++ b/libs/glibmm2/glib/src/convert.ccg
@@ -0,0 +1,395 @@
+// -*- c++ -*-
+/* $Id: convert.ccg,v 1.4 2006/06/05 17:32:14 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gconvert.h>
+#include <glib/gmessages.h>
+#include <glib/gunicode.h>
+#include <glibmm/utility.h>
+
+
+namespace Glib
+{
+
+/**** Glib::IConv **********************************************************/
+
+IConv::IConv(const std::string& to_codeset, const std::string& from_codeset)
+:
+ gobject_ (g_iconv_open(to_codeset.c_str(), from_codeset.c_str()))
+{
+ if(gobject_ == reinterpret_cast<GIConv>(-1))
+ {
+ GError* gerror = 0;
+
+ // Abuse g_convert() to create a GError object. This may seem a weird
+ // thing to do, but it gives us consistently translated error messages
+ // at no further cost.
+ g_convert("", 0, to_codeset.c_str(), from_codeset.c_str(), 0, 0, &gerror);
+
+ // If this should ever fail we're fucked.
+ g_assert(gerror != 0);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+}
+
+IConv::IConv(GIConv gobject)
+:
+ gobject_ (gobject)
+{}
+
+IConv::~IConv()
+{
+ g_iconv_close(gobject_);
+}
+
+size_t IConv::iconv(char** inbuf, gsize* inbytes_left, char** outbuf, gsize* outbytes_left)
+{
+ return g_iconv(gobject_, inbuf, inbytes_left, outbuf, outbytes_left);
+}
+
+void IConv::reset()
+{
+ // Apparently iconv() on Solaris <= 7 segfaults if you pass in
+ // NULL for anything but inbuf; work around that. (NULL outbuf
+ // or NULL *outbuf is allowed by Unix98.)
+
+ char* outbuf = 0;
+ gsize inbytes_left = 0;
+ gsize outbytes_left = 0;
+
+ g_iconv(gobject_, 0, &inbytes_left, &outbuf, &outbytes_left);
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string IConv::convert(const std::string& str)
+#else
+std::string IConv::convert(const std::string& str, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ gsize bytes_written = 0;
+ GError* gerror = 0;
+
+ char *const buf = g_convert_with_iconv(
+ str.data(), str.size(), gobject_, 0, &bytes_written, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return std::string(ScopedPtr<char>(buf).get(), bytes_written);
+}
+
+
+/**** charset conversion functions *****************************************/
+
+bool get_charset()
+{
+ return g_get_charset(0);
+}
+
+bool get_charset(std::string& charset)
+{
+ const char* charset_cstr = 0;
+ const bool is_utf8 = g_get_charset(&charset_cstr);
+
+ charset = charset_cstr;
+ return is_utf8;
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string convert(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset)
+#else
+std::string convert(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ gsize bytes_written = 0;
+ GError* gerror = 0;
+
+ char *const buf = g_convert(
+ str.data(), str.size(), to_codeset.c_str(), from_codeset.c_str(),
+ 0, &bytes_written, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return std::string(ScopedPtr<char>(buf).get(), bytes_written);
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string convert_with_fallback(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset)
+#else
+std::string convert_with_fallback(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ gsize bytes_written = 0;
+ GError* gerror = 0;
+
+ char *const buf = g_convert_with_fallback(
+ str.data(), str.size(), to_codeset.c_str(), from_codeset.c_str(), 0,
+ 0, &bytes_written, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return std::string(ScopedPtr<char>(buf).get(), bytes_written);
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string convert_with_fallback(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset,
+ const Glib::ustring& fallback)
+#else
+std::string convert_with_fallback(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset,
+ const Glib::ustring& fallback, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ gsize bytes_written = 0;
+ GError* gerror = 0;
+
+ char *const buf = g_convert_with_fallback(
+ str.data(), str.size(), to_codeset.c_str(), from_codeset.c_str(),
+ const_cast<char*>(fallback.c_str()), 0, &bytes_written, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return std::string(ScopedPtr<char>(buf).get(), bytes_written);
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring locale_to_utf8(const std::string& opsys_string)
+#else
+Glib::ustring locale_to_utf8(const std::string& opsys_string, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ gsize bytes_written = 0;
+ GError* gerror = 0;
+
+ char *const buf = g_locale_to_utf8(
+ opsys_string.data(), opsys_string.size(), 0, &bytes_written, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ const ScopedPtr<char> scoped_buf (buf);
+ return Glib::ustring(scoped_buf.get(), scoped_buf.get() + bytes_written);
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string locale_from_utf8(const Glib::ustring& utf8_string)
+#else
+std::string locale_from_utf8(const Glib::ustring& utf8_string, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ gsize bytes_written = 0;
+ GError* gerror = 0;
+
+ char *const buf = g_locale_from_utf8(
+ utf8_string.data(), utf8_string.bytes(), 0, &bytes_written, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return std::string(ScopedPtr<char>(buf).get(), bytes_written);
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring filename_to_utf8(const std::string& opsys_string)
+#else
+Glib::ustring filename_to_utf8(const std::string& opsys_string, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ gsize bytes_written = 0;
+ GError* gerror = 0;
+
+ char *const buf = g_filename_to_utf8(
+ opsys_string.data(), opsys_string.size(), 0, &bytes_written, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ const ScopedPtr<char> scoped_buf (buf);
+ return Glib::ustring(scoped_buf.get(), scoped_buf.get() + bytes_written);
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string filename_from_utf8(const Glib::ustring& utf8_string)
+#else
+std::string filename_from_utf8(const Glib::ustring& utf8_string, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ gsize bytes_written = 0;
+ GError* gerror = 0;
+
+ char *const buf = g_filename_from_utf8(
+ utf8_string.data(), utf8_string.bytes(), 0, &bytes_written, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return std::string(ScopedPtr<char>(buf).get(), bytes_written);
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string filename_from_uri(const Glib::ustring& uri, Glib::ustring& hostname)
+#else
+std::string filename_from_uri(const Glib::ustring& uri, Glib::ustring& hostname, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ char* hostname_buf = 0;
+ GError* gerror = 0;
+
+ char *const buf = g_filename_from_uri(uri.c_str(), &hostname_buf, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ // Let's take ownership at this point.
+ const ScopedPtr<char> scoped_buf (buf);
+
+ if(hostname_buf)
+ hostname = ScopedPtr<char>(hostname_buf).get();
+ else
+ hostname.erase();
+
+ return std::string(scoped_buf.get());
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string filename_from_uri(const Glib::ustring& uri)
+#else
+std::string filename_from_uri(const Glib::ustring& uri, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ char *const buf = g_filename_from_uri(uri.c_str(), 0, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return std::string(ScopedPtr<char>(buf).get());
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring filename_to_uri(const std::string& filename, const Glib::ustring& hostname)
+#else
+Glib::ustring filename_to_uri(const std::string& filename, const Glib::ustring& hostname, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ char *const buf = g_filename_to_uri(filename.c_str(), hostname.c_str(), &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return Glib::ustring(ScopedPtr<char>(buf).get());
+}
+
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring filename_to_uri(const std::string& filename)
+#else
+Glib::ustring filename_to_uri(const std::string& filename, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ char *const buf = g_filename_to_uri(filename.c_str(), 0, &gerror);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror) ::Glib::Error::throw_exception(gerror);
+ #else
+ if(gerror) error = ::Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return Glib::ustring(ScopedPtr<char>(buf).get());
+}
+
+Glib::ustring filename_display_basename(const std::string& filename)
+{
+ char *const buf = g_filename_display_basename(filename.c_str());
+
+ return Glib::ustring(ScopedPtr<char>(buf).get());
+}
+
+
+Glib::ustring filename_display_name(const std::string& filename)
+{
+ char *const buf = g_filename_display_name(filename.c_str());
+
+ return Glib::ustring(ScopedPtr<char>(buf).get());
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/convert.hg b/libs/glibmm2/glib/src/convert.hg
new file mode 100644
index 0000000000..9f89a599e7
--- /dev/null
+++ b/libs/glibmm2/glib/src/convert.hg
@@ -0,0 +1,324 @@
+/* $Id: convert.hg,v 1.5 2006/05/12 08:08:44 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+_DEFS(glibmm,glib)
+
+#include <glib/gtypes.h> /* for gsize */
+
+#include <glibmm/error.h>
+#include <glibmm/ustring.h>
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GIConv* GIConv; }
+#endif
+
+
+namespace Glib
+{
+
+/** @defgroup CharsetConv Character Set Conversion
+ * Utility functions for converting strings between different character sets.
+ * @{
+ */
+
+/** Exception class for charset conversion errors.
+ * Glib::convert() and friends throw a ConvertError exception if the charset
+ * conversion failed for some reason. When writing non-trivial applications
+ * you should always catch those errors, and then try to recover, or tell the
+ * user the input was invalid.
+ */
+_WRAP_GERROR(ConvertError, GConvertError, G_CONVERT_ERROR, NO_GTYPE)
+
+
+/** Thin %iconv() wrapper.
+ * glibmm provides Glib::convert() and Glib::locale_to_utf8() which
+ * are likely more convenient than the raw iconv wrappers. However,
+ * creating an IConv object once and using the convert() method could
+ * be useful when converting multiple times between the same charsets.
+ */
+class IConv
+{
+public:
+ /** Open new conversion descriptor.
+ * @param to_codeset Destination codeset.
+ * @param from_codeset %Source codeset.
+ * @throw Glib::ConvertError
+ */
+ IConv(const std::string& to_codeset, const std::string& from_codeset);
+
+ explicit IConv(GIConv gobject);
+
+ /** Close conversion descriptor.
+ */
+ ~IConv();
+
+ /** Same as the standard UNIX routine %iconv(), but may be implemented
+ * via libiconv on UNIX flavors that lack a native implementation. glibmm
+ * provides Glib::convert() and Glib::locale_to_utf8() which are likely
+ * more convenient than the raw iconv wrappers.
+ * @param inbuf Bytes to convert.
+ * @param inbytes_left In/out parameter, bytes remaining to convert in @a inbuf.
+ * @param outbuf Converted output bytes.
+ * @param outbytes_left In/out parameter, bytes available to fill in @a outbuf.
+ * @return Count of non-reversible conversions, or <tt>static_cast<size_t>(-1)</tt> on error.
+ */
+ size_t iconv(char** inbuf, gsize* inbytes_left, char** outbuf, gsize* outbytes_left);
+
+ /** Reset conversion descriptor to initial state.
+ * Same as <tt>iconv(0, 0, 0, 0)</tt>, but implemented slightly differently
+ * in order to work on Sun Solaris <= 7. It's also more obvious so you're
+ * encouraged to use it.
+ */
+ void reset();
+
+ /** Convert from one encoding to another.
+ * @param str The string to convert.
+ * @return The converted string.
+ * @throw Glib::ConvertError
+ */
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ std::string convert(const std::string& str);
+ #else
+ std::string convert(const std::string& str, std::auto_ptr<Glib::Error>& error);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ GIConv gobj() { return gobject_; }
+
+private:
+ GIConv gobject_;
+
+ // noncopyable
+ IConv(const IConv&);
+ IConv& operator=(const IConv&);
+};
+
+
+/** Get the charset used by the current locale.
+ * @return Whether the current locale uses the UTF-8 charset.
+ */
+bool get_charset();
+
+/** Get the charset used by the current locale.
+ * @param charset Will be filled with the charset's name.
+ * @return Whether the current locale uses the UTF-8 charset.
+ */
+bool get_charset(std::string& charset);
+
+/** Convert from one encoding to another.
+ * @param str The string to convert.
+ * @param to_codeset Name of the target charset.
+ * @param from_codeset Name of the source charset.
+ * @return The converted string.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string convert(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset);
+#else
+std::string convert(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Converts a string from one character set to another, possibly including
+ * fallback sequences for characters not representable in the output.
+ * Characters not in the target encoding will be represented as Unicode
+ * escapes <tt>\\x{XXXX}</tt> or <tt>\\x{XXXXXX}</tt>.
+ * @param str The string to convert.
+ * @param to_codeset Name of the target charset.
+ * @param from_codeset Name of the source charset.
+ * @return The converted string.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string convert_with_fallback(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset);
+#else
+std::string convert_with_fallback(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Converts a string from one character set to another, possibly including
+ * fallback sequences for characters not representable in the output.
+ * @note It is not guaranteed that the specification for the fallback sequences
+ * in @a fallback will be honored. Some systems may do a approximate conversion
+ * from @a from_codeset to @a to_codeset in their iconv() functions, in which
+ * case Glib will simply return that approximate conversion.
+ *
+ * @param str The string to convert.
+ * @param to_codeset Name of the target charset.
+ * @param from_codeset Name of the source charset.
+ * @param fallback UTF-8 string to be used in place of characters which aren't
+ * available in the target encoding. All characters in the fallback string
+ * @em must be available in the target encoding.
+ * @return The converted string.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string convert_with_fallback(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset,
+ const Glib::ustring& fallback);
+#else
+std::string convert_with_fallback(const std::string& str,
+ const std::string& to_codeset,
+ const std::string& from_codeset,
+ const Glib::ustring& fallback, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Convert from the current locale's encoding to UTF-8.
+ * Convenience wrapper around Glib::convert().
+ * @param opsys_string The string to convert. Must be encoded in the charset
+ * used by the operating system's current locale.
+ * @return The input string converted to UTF-8 encoding.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring locale_to_utf8(const std::string& opsys_string);
+#else
+Glib::ustring locale_to_utf8(const std::string& opsys_string, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Convert from UTF-8 to the current locale's encoding.
+ * Convenience wrapper around Glib::convert().
+ * @param utf8_string The UTF-8 string to convert.
+ * @return The input string converted to the charset used by the operating
+ * system's current locale.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string locale_from_utf8(const Glib::ustring& utf8_string);
+#else
+std::string locale_from_utf8(const Glib::ustring& utf8_string, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Converts a string which is in the encoding used for filenames into
+ * a UTF-8 string.
+ * @param opsys_string A string in the encoding for filenames.
+ * @return The converted string.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring filename_to_utf8(const std::string& opsys_string);
+#else
+Glib::ustring filename_to_utf8(const std::string& opsys_string, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Converts a string from UTF-8 to the encoding used for filenames.
+ * @param utf8_string A UTF-8 encoded string.
+ * @return The converted string.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string filename_from_utf8(const Glib::ustring& utf8_string);
+#else
+std::string filename_from_utf8(const Glib::ustring& utf8_string, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Converts an escaped UTF-8 encoded URI to a local filename
+ * in the encoding used for filenames.
+ * @param uri A string in the encoding for filenames.
+ * @param hostname Location to store hostname for the URI. If there is no
+ * hostname in the URI, <tt>""</tt> will be stored in this location.
+ * @return The resulting filename.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string filename_from_uri(const Glib::ustring& uri, Glib::ustring& hostname);
+#else
+std::string filename_from_uri(const Glib::ustring& uri, Glib::ustring& hostname, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Converts an escaped UTF-8 encoded URI to a local filename in the encoding
+ * used for filenames.
+ * @param uri A string in the encoding for filenames.
+ * @return The resulting filename.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+std::string filename_from_uri(const Glib::ustring& uri);
+#else
+std::string filename_from_uri(const Glib::ustring& uri, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Converts an absolute filename to an escaped UTF-8 encoded URI.
+ * @param filename An absolute filename specified in the encoding used
+ * for filenames by the operating system.
+ * @param hostname A UTF-8 encoded hostname.
+ * @return The resulting URI.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring filename_to_uri(const std::string& filename, const Glib::ustring& hostname);
+#else
+Glib::ustring filename_to_uri(const std::string& filename, const Glib::ustring& hostname, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Converts an absolute filename to an escaped UTF-8 encoded URI.
+ * @param filename An absolute filename specified in the encoding used
+ * for filenames by the operating system.
+ * @return The resulting URI.
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::ustring filename_to_uri(const std::string& filename);
+#else
+Glib::ustring filename_to_uri(const std::string& filename, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+/** Returns the display basename for the particular filename, guaranteed
+ * to be valid UTF-8. The display name might not be identical to the filename,
+ * for instance there might be problems converting it to UTF-8, and some files
+ * can be translated in the display
+ *
+ * You must pass the whole absolute pathname to this function so that
+ * translation of well known locations can be done.
+ *
+ * This function is preferred over filename_display_name() if you know the
+ * whole path, as it allows translation.
+ *
+ * @param filename An absolute pathname in the GLib file name encoding.
+ * @result A string containing a rendition of the basename of the filename in valid UTF-8
+ */
+Glib::ustring filename_display_basename(const std::string& filename);
+
+/** Converts a filename into a valid UTF-8 string. The
+ * conversion is not necessarily reversible, so you
+ * should keep the original around and use the return
+ * value of this function only for display purposes.
+ * Unlike g_filename_to_utf8(), the result is guaranteed
+ * to be non-empty even if the filename actually isn't in the GLib
+ * file name encoding.
+ *
+ * If you know the whole pathname of the file you should use
+ * g_filename_display_basename(), since that allows location-based
+ * translation of filenames.
+ *
+ * @param filename: a pathname hopefully in the GLib file name encoding
+ * @result A string containing a rendition of the filename in valid UTF-8.
+ */
+Glib::ustring filename_display_name(const std::string& filename);
+
+/** @} group CharsetConv */
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/date.ccg b/libs/glibmm2/glib/src/date.ccg
new file mode 100644
index 0000000000..ca7bc50d9c
--- /dev/null
+++ b/libs/glibmm2/glib/src/date.ccg
@@ -0,0 +1,367 @@
+// -*- c++ -*-
+/* $Id: date.ccg,v 1.7 2006/07/16 13:54:02 jjongsma Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gmem.h>
+#include <glib/gmessages.h>
+
+#include <ctime>
+#include <algorithm>
+
+#include <glibmm/convert.h>
+#include <glibmm/utility.h>
+
+#include <glibmmconfig.h>
+GLIBMM_USING_STD(max)
+
+namespace Glib
+{
+
+Date::Date()
+{
+ g_date_clear(&gobject_, 1);
+}
+
+Date::Date(Date::Day day, Date::Month month, Date::Year year)
+{
+ g_date_clear(&gobject_, 1);
+ g_date_set_dmy(&gobject_, day, (GDateMonth) month, year);
+}
+
+Date::Date(guint32 julian_day)
+{
+ g_date_clear(&gobject_, 1);
+ g_date_set_julian(&gobject_, julian_day);
+}
+
+Date::Date(const GDate& castitem)
+:
+ gobject_ (castitem)
+{}
+
+void Date::clear()
+{
+ g_date_clear(&gobject_, 1);
+}
+
+void Date::set_parse(const Glib::ustring& str)
+{
+ g_date_set_parse(&gobject_, str.c_str());
+}
+
+_DEPRECATE_IFDEF_START
+void Date::set_time(GTime time)
+{
+ //This method, and the C function that it wraps, are deprecated.
+ g_date_set_time(&gobject_, time);
+}
+_DEPRECATE_IFDEF_END
+
+void Date::set_time(time_t timet)
+{
+ g_date_set_time_t(&gobject_, timet);
+}
+
+void Date::set_time_current()
+{
+ //As suggested in the C documentation:
+ g_date_set_time_t(&gobject_, time(NULL));
+}
+
+void Date::set_time(const GTimeVal& timeval)
+{
+ g_date_set_time_val(&gobject_, const_cast<GTimeVal*>(&timeval));
+}
+
+void Date::set_month(Date::Month month)
+{
+ g_date_set_month(&gobject_, (GDateMonth) month);
+}
+
+void Date::set_day(Date::Day day)
+{
+ g_date_set_day(&gobject_, day);
+}
+
+void Date::set_year(Date::Year year)
+{
+ g_date_set_year(&gobject_, year);
+}
+
+void Date::set_dmy(Date::Day day, Date::Month month, Date::Year year)
+{
+ g_date_set_dmy(&gobject_, day, (GDateMonth) month, year);
+}
+
+void Date::set_julian(guint32 julian_day)
+{
+ g_date_set_julian(&gobject_, julian_day);
+}
+
+Date& Date::add_days(int n_days)
+{
+ if(n_days >= 0)
+ g_date_add_days(&gobject_, n_days);
+ else
+ g_date_subtract_days(&gobject_, -n_days);
+ return *this;
+}
+
+Date& Date::subtract_days(int n_days)
+{
+ if(n_days >= 0)
+ g_date_subtract_days(&gobject_, n_days);
+ else
+ g_date_add_days(&gobject_, -n_days);
+ return *this;
+}
+
+Date& Date::add_months(int n_months)
+{
+ if(n_months >= 0)
+ g_date_add_months(&gobject_, n_months);
+ else
+ g_date_subtract_months(&gobject_, -n_months);
+ return *this;
+}
+
+Date& Date::subtract_months(int n_months)
+{
+ if(n_months >= 0)
+ g_date_subtract_months(&gobject_, n_months);
+ else
+ g_date_add_months(&gobject_, -n_months);
+ return *this;
+}
+
+Date& Date::add_years(int n_years)
+{
+ if(n_years >= 0)
+ g_date_add_years(&gobject_, n_years);
+ else
+ g_date_subtract_years(&gobject_, -n_years);
+ return *this;
+}
+
+Date& Date::subtract_years(int n_years)
+{
+ if(n_years >= 0)
+ g_date_subtract_years(&gobject_, n_years);
+ else
+ g_date_add_years(&gobject_, -n_years);
+ return *this;
+}
+
+int Date::days_between(const Date& rhs) const
+{
+ return g_date_days_between(&gobject_, &rhs.gobject_);
+}
+
+int Date::compare(const Date& rhs) const
+{
+ return g_date_compare(&gobject_, &rhs.gobject_);
+}
+
+Date& Date::clamp(const Date& min_date, const Date& max_date)
+{
+ g_date_clamp(&gobject_, &min_date.gobject_, &max_date.gobject_);
+ return *this;
+}
+
+Date& Date::clamp_min(const Date& min_date)
+{
+ g_date_clamp(&gobject_, &min_date.gobject_, 0 /* see the C docs */);
+ return *this;
+}
+
+Date& Date::clamp_max(const Date& max_date)
+{
+ g_date_clamp(&gobject_, 0 /* see the C docs */, &max_date.gobject_);
+ return *this;
+}
+
+void Date::order(Date& other)
+{
+ g_date_order(&gobject_, &other.gobject_);
+}
+
+Date::Weekday Date::get_weekday() const
+{
+ return (Date::Weekday) g_date_get_weekday(&gobject_);
+}
+
+Date::Month Date::get_month() const
+{
+ return (Date::Month) g_date_get_month(&gobject_);
+}
+
+Date::Year Date::get_year() const
+{
+ return g_date_get_year(&gobject_);
+}
+
+Date::Day Date::get_day() const
+{
+ return g_date_get_day(&gobject_);
+}
+
+guint32 Date::get_julian() const
+{
+ return g_date_get_julian(&gobject_);
+}
+
+unsigned int Date::get_day_of_year() const
+{
+ return g_date_get_day_of_year(&gobject_);
+}
+
+unsigned int Date::get_monday_week_of_year() const
+{
+ return g_date_get_monday_week_of_year(&gobject_);
+}
+
+unsigned int Date::get_sunday_week_of_year() const
+{
+ return g_date_get_sunday_week_of_year(&gobject_);
+}
+
+bool Date::is_first_of_month() const
+{
+ return g_date_is_first_of_month(&gobject_);
+}
+
+bool Date::is_last_of_month() const
+{
+ return g_date_is_last_of_month(&gobject_);
+}
+
+//static
+guint8 Date::get_days_in_month(Date::Month month, Date::Year year)
+{
+ return g_date_get_days_in_month((GDateMonth) month, year);
+}
+
+//static
+guint8 Date::get_monday_weeks_in_year(Date::Year year)
+{
+ return g_date_get_monday_weeks_in_year(year);
+}
+
+//static
+guint8 Date::get_sunday_weeks_in_year(Date::Year year)
+{
+ return g_date_get_sunday_weeks_in_year(year);
+}
+
+//static
+bool Date::is_leap_year(Date::Year year)
+{
+ return g_date_is_leap_year(year);
+}
+
+Glib::ustring Date::format_string(const Glib::ustring& format) const
+{
+ struct tm tm_data;
+ g_date_to_struct_tm(&gobject_, &tm_data);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ const std::string locale_format = locale_from_utf8(format);
+ #else
+ std::auto_ptr<Glib::Error> error; //TODO: Check it?
+ const std::string locale_format = locale_from_utf8(format, error);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ gsize bufsize = std::max<gsize>(2 * locale_format.size(), 128);
+
+ do
+ {
+ const ScopedPtr<char> buf (static_cast<char*>(g_malloc(bufsize)));
+
+ // Set the first byte to something other than '\0', to be able to
+ // recognize whether strftime actually failed or just returned "".
+ buf.get()[0] = '\1';
+ const gsize len = strftime(buf.get(), bufsize, locale_format.c_str(), &tm_data);
+
+ if(len != 0 || buf.get()[0] == '\0')
+ {
+ g_assert(len < bufsize);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ return locale_to_utf8(std::string(buf.get(), len));
+ #else
+ std::auto_ptr<Glib::Error> error; //TODO: Check it?
+ return locale_to_utf8(std::string(buf.get(), len), error);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+ }
+ while((bufsize *= 2) <= 65536);
+
+ // This error is quite unlikely (unless strftime is buggy).
+ g_warning("Glib::Date::format_string(): maximum size of strftime buffer exceeded, giving up");
+
+ return Glib::ustring();
+}
+
+void Date::to_struct_tm(struct tm& dest) const
+{
+ g_date_to_struct_tm(&gobject_, &dest);
+}
+
+bool Date::valid() const
+{
+ return g_date_valid(&gobject_);
+}
+
+//static
+bool Date::valid_day(Date::Day day)
+{
+ return g_date_valid_day(day);
+}
+
+//static
+bool Date::valid_month(Date::Month month)
+{
+ return g_date_valid_month((GDateMonth) month);
+}
+
+//static
+bool Date::valid_year(Date::Year year)
+{
+ return g_date_valid_year(year);
+}
+
+//static
+bool Date::valid_weekday(Date::Weekday weekday)
+{
+ return g_date_valid_weekday((GDateWeekday) weekday);
+}
+
+//static
+bool Date::valid_julian(guint32 julian_day)
+{
+ return g_date_valid_julian(julian_day);
+}
+
+//static
+bool Date::valid_dmy(Date::Day day, Date::Month month, Date::Year year)
+{
+ return g_date_valid_dmy(day, (GDateMonth) month, year);
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/date.hg b/libs/glibmm2/glib/src/date.hg
new file mode 100644
index 0000000000..1f6b4eef28
--- /dev/null
+++ b/libs/glibmm2/glib/src/date.hg
@@ -0,0 +1,400 @@
+/* $Id: date.hg,v 1.6 2005/11/29 15:53:27 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+_DEFS(glibmm,glib)
+
+#m4 _PUSH(SECTION_HEADER1)
+#m4 #undef G_DISABLE_DEPRECATED //So we can use deprecated functions in our deprecated methods.
+#m4 _POP()
+
+#include <glibmm/ustring.h>
+
+#include <glib/gdate.h>
+#include <glib/gtypes.h>
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { struct tm; }
+#endif
+
+namespace Glib
+{
+
+/** Julian calendar date.
+ */
+class Date
+{
+public:
+ typedef guint8 Day;
+ typedef guint16 Year;
+
+ _WRAP_ENUM(Month, GDateMonth, s#^DATE_##, NO_GTYPE, get_type_func=)
+ _WRAP_ENUM(Weekday, GDateWeekday, s#^DATE_##, NO_GTYPE)
+ _WRAP_ENUM(DMY, GDateDMY, s#^DATE_##, NO_GTYPE)
+
+ static const Day BAD_DAY = 0;
+ static const Year BAD_YEAR = 0;
+ static const guint32 BAD_JULIAN = 0;
+
+ Date();
+ Date(Day day, Month month, Year year);
+ explicit Date(guint32 julian_day);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ explicit Date(const GDate& castitem);
+#endif
+
+ void clear();
+ /** Clear the date. The cleared dates will not represent an existing date, but will not contain garbage.
+ * @param month Month to set.
+ */
+
+ /** Parses a user-inputted string str, and try to figure out what date it represents, taking the current locale into account. If the string is successfully parsed, the date will be valid after the call. Otherwise, it will be invalid.
+ * This function is not appropriate for file formats and the like; it isn't very precise, and its exact behavior varies with the locale. It's intended to be a heuristic routine that guesses what the user means by a given string (and it does work pretty well in that capacity).
+ * @param str String to parse.
+ */
+ void set_parse (const Glib::ustring& str);
+
+ _DEPRECATE_IFDEF_START
+ /** Sets the value of a date from a GTime (time_t) value.
+ *
+ * @param time GTime value to set.
+ *
+ * @deprecated Please use set_time(time_t) or set_time(const GTimeVal&).
+ */
+ void set_time(GTime time);
+ _DEPRECATE_IFDEF_END
+
+ /** Sets the value of a date from a <type>time_t</type> value.
+ *
+ * @param timet time_t value to set
+ *
+ * @see set_time_current()
+ *
+ * Since: 2.10
+ */
+ void set_time(time_t timet);
+
+ /** Sets the value of a date from a GTimeVal value. Note that the
+ * tv_usec member is ignored, because Glib::Date can't make use of the
+ * additional precision.
+ *
+ * @see set_time_current()
+ *
+ * @param timeval GTimeVal value to set
+ *
+ * Since: 2.10
+ */
+ void set_time(const GTimeVal& timeval);
+
+ void set_time_current();
+
+ /** Sets the month of the year. If the resulting day-month-year triplet is invalid, the date will be invalid.
+ * @param month Month to set.
+ */
+ void set_month(Month month);
+
+ /** Sets the day of the month. If the resulting day-month-year triplet is invalid, the date will be invalid.
+ * @param day Day to set.
+ */
+ void set_day(Day day);
+
+ /** Sets the year. If the resulting day-month-year triplet is invalid, the date will be invalid.
+ * @param year Year to set.
+ */
+ void set_year(Year year);
+
+ /** Sets the value of a day, month, and year.. If the resulting day-month-year triplet is invalid, the date will be invalid.
+ * @param day Day to set.
+ * @param month Month to set.
+ * @param year Year to set.
+ */
+ void set_dmy(Day day, Month month, Year year);
+
+ /** Sets the value of a GDate from a Julian day number.
+ * @param julian_day Julian day to set.
+ */
+ void set_julian(guint32 julian_day);
+
+ //TODO: Why return Date& (which is always *this) from these methods?
+ //Isn't it enough to also change the current instance?
+ //Maybe we need a copy constructor too.
+ //murrayc
+
+ /** Add a number of days to a Date.
+ * @param n_days Days to add.
+ * @return Resulting Date
+ */
+ Date& add_days(int n_days);
+
+ /** Subtract n_days to a Date.
+ * @param n_days Days to subtract.
+ * @return Resulting Date
+ */
+ Date& subtract_days(int n_days);
+
+ /** Add n_months to a Date.
+ * @param n_months Months to add.
+ * @return Resulting Date
+ */
+ Date& add_months(int n_months);
+
+ /** Subtract n_months to a Date.
+ * @param n_months Months to subtract.
+ * @return Resulting Date
+ */
+ Date& subtract_months(int n_months);
+
+ /** Add n_days to a Date.
+ * @param n_years Years to add.
+ * @return Resulting Date
+ */
+ Date& add_years(int n_years);
+
+ /** Subtract n_years to a Date.
+ * @param n_years Years to subtract.
+ * @return Resulting Date
+ */
+ Date& subtract_years(int n_years);
+
+ /** Calculate days between two dates.
+ * @param rhs Date.
+ * @return Numbers of days.
+ */
+ int days_between(const Date& rhs) const;
+
+ /** Compare two dates.
+ * @param rhs Date to compare.
+ * @return Result of comparition.
+ */
+ int compare(const Date& rhs) const;
+
+ /** If date is prior to min_date, sets date equal to min_date.
+ * If date falls after max_date, sets date equal to max_date. All dates must be valid.
+ * See also clamp_min() and clamp_max().
+ * @param min_date Date minimum value.
+ * @param max_date Date maximum value.
+ * @return Date in interval.
+ */
+ Date& clamp(const Date& min_date, const Date& max_date);
+
+ /** If date is prior to min_date, sets date equal to min_date.
+ * See also clamp(), and clamp_max().
+ * @param min_date Date minimum value.
+ * @return Date in interval.
+ */
+ Date& clamp_min(const Date& min_date);
+
+ /** If date falls after max_date, sets date equal to max_date.
+ * See also clamp(), and clamp_min().
+ * @param max_date Date maximum value.
+ * @return Date in interval.
+ */
+ Date& clamp_max(const Date& max_date);
+
+ /** Checks if date is less than or equal to other date, and swap the values if this is not the case.
+ * @param other Date ro compare.
+ * @return Date.
+ */
+ void order(Date& other);
+
+ /** Returns the day of the week for a Date. The date must be valid.
+ * @return Day of the week as a Date::Weekday.
+ */
+ Weekday get_weekday() const;
+
+ /** Returns the month of the year. The date must be valid.
+ * @return Month of the year as a Date::Month.
+ */
+ Month get_month() const;
+
+ /** Returns the year of a Date. The date must be valid.
+ * @return Year in which the date falls.
+ */
+ Year get_year() const;
+
+ /** Returns the day of the month. The date must be valid.
+ * @return Day of the month..
+ */
+ Day get_day() const;
+
+ /** Returns the Julian day or "serial number" of the Date.
+ * The Julian day is simply the number of days since January 1, Year 1;
+ * i.e., January 1, Year 1 is Julian day 1; January 2, Year 1 is Julian day 2, etc.
+ * The date must be valid.
+ * @return Julian day.
+ */
+ guint32 get_julian() const;
+
+ /** Returns the day of the year, where Jan 1 is the first day of the year.
+ * The date must be valid.
+ * @return Julian day.
+ */
+ unsigned int get_day_of_year() const;
+
+ /** Returns the week of the year, where weeks are understood to start on Monday.
+ * If the date is before the first Monday of the year, return 0.
+ * The date must be valid.
+ * @return Week of the year.
+ */
+ unsigned int get_monday_week_of_year() const;
+
+ /** Returns the week of the year during which this date falls, if weeks are understood to being on Sunday.
+ * Can return 0 if the day is before the first Sunday of the year.
+ * The date must be valid.
+ * @return Week of the year.
+ */
+ unsigned int get_sunday_week_of_year() const;
+
+ /** Returns true if the date is on the first of a month.
+ * The date must be valid.
+ * @return true if the date is the first of the month.
+ */
+ bool is_first_of_month() const;
+
+ /** Returns true if the date is the last day of the month.
+ * The date must be valid.
+ * @return true if the date is the last day of the month.
+ */
+ bool is_last_of_month() const;
+
+ /** Returns the number of days in a month, taking leap years into account.
+ * @param month Month.
+ * @param year Year.
+ * @return Number of days in month during the year.
+ */
+ static guint8 get_days_in_month(Month month, Year year);
+
+ /** Returns the number of weeks in the year, where weeks are taken to start on Monday. Will be 52 or 53.
+ * (Years always have 52 7-day periods, plus 1 or 2 extra days depending on whether it's a leap year. This function is basically telling you how many Mondays are in the year, i.e. there are 53 Mondays if one of the extra days happens to be a Monday.)
+ * @param year Year to count weeks in.
+ * @return Number of weeks.
+ */
+ static guint8 get_monday_weeks_in_year(Year year);
+
+ /** Returns the number of weeks in the year, where weeks are taken to start on Sunday. Will be 52 or 53.
+ * (Years always have 52 7-day periods, plus 1 or 2 extra days depending on whether it's a leap year. This function is basically telling you how many Sundays are in the year, i.e. there are 53 Sundays if one of the extra days happens to be a Sunday.)
+ * @param year Year to count weeks in.
+ * @return Number of weeks.
+ */
+ static guint8 get_sunday_weeks_in_year(Year year);
+
+ /** Returns true if the year is a leap year.
+ * @param year Year to check.
+ * @return true if the year is a leap year.
+ */
+ static bool is_leap_year(Year year);
+
+ /** Convert date to string.
+ * @param format A format string as used by @c strftime(), in UTF-8
+ * encoding. Only date formats are allowed, the result of time formats
+ * is undefined.
+ * @return The formatted date string.
+ * @throw Glib::ConvertError
+ */
+ Glib::ustring format_string(const Glib::ustring& format) const;
+
+ /** Fills in the date-related bits of a struct tm using the date value. Initializes the non-date parts with something sane but meaningless.
+ * @param dest Struct tm to fill.
+ */
+ void to_struct_tm(struct tm& dest) const;
+
+ /** Returns true if the Date represents an existing day.
+ * @return true if the date is valid.
+ */
+ bool valid() const;
+
+ /** Returns true if the day of the month is valid (a day is valid if it's between 1 and 31 inclusive).
+ * @param day Day to check.
+ * @return true if the day is valid.
+ */
+ static bool valid_day(Day day);
+
+ /** Returns true if the month value is valid. The 12 Date::Month enumeration values are the only valid months.
+ * @param month Month to check.
+ * @return true if the month is valid.
+ */
+ static bool valid_month(Month month);
+
+
+ /** Returns true if the year is valid.
+ * Any year greater than 0 is valid, though there is a 16-bit limit to what Date will understand.
+ * @param year Year to check.
+ * @return true if the year is valid.
+ */
+ static bool valid_year(Year year);
+
+ /** Returns true if the weekday is valid.
+ * The 7 Date::Weekday enumeration values are the only valid.
+ * @param weekday Weekday to check.
+ * @return true if the weekday is valid.
+ */
+ static bool valid_weekday(Weekday weekday);
+
+ /** Returns true if the Julian day is valid.
+ * Anything greater than zero is basically a valid Julian, though there is a 32-bit limit.
+ * @param julian_day Julian day to check.
+ * @return true if the Julian day is valid.
+ */
+ static bool valid_julian(guint32 julian_day);
+
+
+ /** Returns true if the day-month-year triplet forms a valid, existing day in the range of days Date understands (Year 1 or later, no more than a few thousand years in the future).
+ * @param day Day to check.
+ * @param month Month to check.
+ * @param year Year to check.
+ * @return true if the date is a valid one.
+ */
+ static bool valid_dmy(Day day, Month month, Year year);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GDate* gobj() { return &gobject_; }
+ const GDate* gobj() const { return &gobject_; }
+#endif
+
+private:
+ GDate gobject_;
+};
+
+
+/** @relates Glib::Date */
+inline bool operator==(const Date& lhs, const Date& rhs)
+ { return (lhs.compare(rhs) == 0); }
+
+/** @relates Glib::Date */
+inline bool operator!=(const Date& lhs, const Date& rhs)
+ { return (lhs.compare(rhs) != 0); }
+
+/** @relates Glib::Date */
+inline bool operator<(const Date& lhs, const Date& rhs)
+ { return (lhs.compare(rhs) < 0); }
+
+/** @relates Glib::Date */
+inline bool operator>(const Date& lhs, const Date& rhs)
+ { return (lhs.compare(rhs) > 0); }
+
+/** @relates Glib::Date */
+inline bool operator<=(const Date& lhs, const Date& rhs)
+ { return (lhs.compare(rhs) <= 0); }
+
+/** @relates Glib::Date */
+inline bool operator>=(const Date& lhs, const Date& rhs)
+ { return (lhs.compare(rhs) >= 0); }
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/fileutils.ccg b/libs/glibmm2/glib/src/fileutils.ccg
new file mode 100644
index 0000000000..e7b63f96c6
--- /dev/null
+++ b/libs/glibmm2/glib/src/fileutils.ccg
@@ -0,0 +1,185 @@
+// -*- c++ -*-
+/* $Id: fileutils.ccg,v 1.1.1.1 2003/01/07 16:58:25 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gdir.h>
+#include <glib/gfileutils.h>
+#include <glib/gstrfuncs.h>
+#include <glibmm/utility.h>
+
+
+namespace Glib
+{
+
+/**** Glib::Dir ************************************************************/
+
+Dir::Dir(const std::string& path)
+{
+ GError* error = 0;
+ gobject_ = g_dir_open(path.c_str(), 0, &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+Dir::Dir(GDir* gobject)
+:
+ gobject_ (gobject)
+{}
+
+Dir::~Dir()
+{
+ if(gobject_)
+ g_dir_close(gobject_);
+}
+
+std::string Dir::read_name()
+{
+ const char *const name = g_dir_read_name(gobject_);
+ return (name) ? std::string(name) : std::string();
+}
+
+void Dir::rewind()
+{
+ g_dir_rewind(gobject_);
+}
+
+void Dir::close()
+{
+ if(gobject_)
+ {
+ g_dir_close(gobject_);
+ gobject_ = 0;
+ }
+}
+
+DirIterator Dir::begin()
+{
+ g_dir_rewind(gobject_);
+ return DirIterator(gobject_, g_dir_read_name(gobject_));
+}
+
+DirIterator Dir::end()
+{
+ return DirIterator(gobject_, 0);
+}
+
+
+/**** Glib::DirIterator ****************************************************/
+
+DirIterator::DirIterator()
+:
+ gobject_ (0),
+ current_ (0)
+{}
+
+DirIterator::DirIterator(GDir* gobject, const char* current)
+:
+ gobject_ (gobject),
+ current_ (current)
+{}
+
+std::string DirIterator::operator*() const
+{
+ return (current_) ? std::string(current_) : std::string();
+}
+
+DirIterator& DirIterator::operator++()
+{
+ current_ = g_dir_read_name(gobject_);
+ return *this;
+}
+
+void DirIterator::operator++(int)
+{
+ current_ = g_dir_read_name(gobject_);
+}
+
+bool DirIterator::operator==(const DirIterator& rhs) const
+{
+ return (current_ == rhs.current_);
+}
+
+bool DirIterator::operator!=(const DirIterator& rhs) const
+{
+ return (current_ != rhs.current_);
+}
+
+
+bool file_test(const std::string& filename, FileTest test)
+{
+ return g_file_test(filename.c_str(), static_cast<GFileTest>(unsigned(test)));
+}
+
+int mkstemp(std::string& filename_template)
+{
+ const ScopedPtr<char> buf (g_strndup(filename_template.data(), filename_template.size()));
+ const int fileno = g_mkstemp(buf.get());
+
+ filename_template = buf.get();
+ return fileno;
+}
+
+int file_open_tmp(std::string& name_used, const std::string& prefix)
+{
+ std::string basename_template (prefix);
+ basename_template += "XXXXXX"; // this sillyness shouldn't be in the interface
+
+ GError* error = 0;
+ ScopedPtr<char> buf_name_used;
+
+ const int fileno = g_file_open_tmp(basename_template.c_str(), buf_name_used.addr(), &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+
+ name_used = buf_name_used.get();
+ return fileno;
+}
+
+int file_open_tmp(std::string& name_used)
+{
+ GError* error = 0;
+ ScopedPtr<char> buf_name_used;
+
+ const int fileno = g_file_open_tmp(0, buf_name_used.addr(), &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+
+ name_used = buf_name_used.get();
+ return fileno;
+}
+
+std::string file_get_contents(const std::string& filename)
+{
+ ScopedPtr<char> contents;
+ gsize length = 0;
+ GError* error = 0;
+
+ g_file_get_contents(filename.c_str(), contents.addr(), &length, &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+
+ return std::string(contents.get(), length);
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/fileutils.hg b/libs/glibmm2/glib/src/fileutils.hg
new file mode 100644
index 0000000000..70dc779ee0
--- /dev/null
+++ b/libs/glibmm2/glib/src/fileutils.hg
@@ -0,0 +1,400 @@
+/* $Id: fileutils.hg,v 1.3 2004/01/22 18:38:12 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+_DEFS(glibmm,glib)
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GDir GDir; }
+#endif
+
+#include <iterator>
+#include <string>
+
+#include <glibmmconfig.h>
+#include <glibmm/error.h>
+
+GLIBMM_USING_STD(input_iterator_tag)
+GLIBMM_USING_STD(string)
+
+
+namespace Glib
+{
+
+_WRAP_ENUM(FileTest, GFileTest, NO_GTYPE)
+
+/** @defgroup FileUtils File Utilities
+ * Various file-related classes and functions.
+ */
+
+/** Exception class for file-related errors.
+ * @ingroup FileUtils
+ */
+_WRAP_GERROR(FileError, GFileError, G_FILE_ERROR, NO_GTYPE,
+ s#^EXIST$#EXISTS#,
+ s#^ISDIR$#IS_DIRECTORY#,
+ s#^ACCES$#ACCESS_DENIED#,
+ s#^NAMETOOLONG$#NAME_TOO_LONG#,
+ s#^NOENT$#NO_SUCH_ENTITY#,
+ s#^NOTDIR$#NOT_DIRECTORY#,
+ s#^NXIO$#NO_SUCH_DEVICE#,
+ s#^NODEV$#NOT_DEVICE#,
+ s#^ROFS$#READONLY_FILESYSTEM#,
+ s#^TXTBSY$#TEXT_FILE_BUSY#,
+ s#^FAULT$#FAULTY_ADDRESS#,
+ s#^LOOP$#SYMLINK_LOOP#,
+ s#^NOSPC$#NO_SPACE_LEFT#,
+ s#^NOMEM$#NOT_ENOUGH_MEMORY#,
+ s#^MFILE$#TOO_MANY_OPEN_FILES#,
+ s#^NFILE$#FILE_TABLE_OVERFLOW#,
+ s#^BADF$#BAD_FILE_DESCRIPTOR#,
+ s#^INVAL$#INVALID_ARGUMENT#,
+ s#^PIPE$#BROKEN_PIPE#,
+ s#^AGAIN$#TRYAGAIN#,
+ s#^INTR$#INTERRUPTED#,
+ s#^IO$#IO_ERROR#,
+ s#^PERM$#NOT_OWNER#
+)
+
+/** @enum FileError::Code
+ * Values corresponding to <tt>errno</tt> codes returned from file operations
+ * on UNIX.
+ * Unlike <tt>errno</tt> codes, FileError::Code values are available on all
+ * systems, even Windows. The exact meaning of each code depends on what sort
+ * of file operation you were performing; the UNIX documentation gives more
+ * details. The following error code descriptions come from the GNU C Library
+ * manual, and are under the copyright of that manual.
+ *
+ * It's not very portable to make detailed assumptions about exactly which
+ * errors will be returned from a given operation. Some errors don't occur on
+ * some systems, etc., sometimes there are subtle differences in when a system
+ * will report a given error, etc.
+ */
+
+/** @var FileError::Code FileError::EXISTS
+ * <tt>(EEXIST)</tt> Operation not permitted; only the owner of the file (or
+ * other resource) or processes with special privileges can perform the operation.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::IS_DIRECTORY
+ * <tt>(EISDIR)</tt> File is a directory; you cannot open a directory for writing,
+ * or create or remove hard links to it.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::ACCESS_DENIED
+ * <tt>(EACCES)</tt> Permission denied; the file permissions do not allow the
+ * attempted operation.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::NAME_TOO_LONG
+ * <tt>(ENAMETOOLONG)</tt> Filename too long.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::NO_SUCH_ENTITY
+ * <tt>(ENOENT)</tt> No such file or directory. This is a "file doesn't exist"
+ * error for ordinary files that are referenced in contexts where they are expected
+ * to already exist.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::NOT_DIRECTORY
+ * <tt>(ENOTDIR)</tt> A file that isn't a directory was specified when a directory
+ * is required.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::NO_SUCH_DEVICE
+ * <tt>(ENXIO)</tt> No such device or address. The system tried to use the device
+ * represented by a file you specified, and it couldn't find the device. This can
+ * mean that the device file was installed incorrectly, or that the physical device
+ * is missing or not correctly attached to the computer.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::NOT_DEVICE
+ * <tt>(ENODEV)</tt> This file is of a type that doesn't support mapping.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::READONLY_FILESYSTEM
+ * <tt>(EROFS)</tt> The directory containing the new link can't be modified
+ * because it's on a read-only file system.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::TEXT_FILE_BUSY
+ * <tt>(ETXTBSY)</tt> Text file busy.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::FAULTY_ADDRESS
+ * <tt>(EFAULT)</tt> You passed in a pointer to bad memory. (Glib won't
+ * reliably return this, don't pass in pointers to bad memory.)
+ * <br><br>
+ */
+/** @var FileError::Code FileError::SYMLINK_LOOP
+ * <tt>(ELOOP)</tt> Too many levels of symbolic links were encountered in
+ * looking up a file name. This often indicates a cycle of symbolic links.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::NO_SPACE_LEFT
+ * <tt>(ENOSPC)</tt> No space left on device; write operation on a file failed
+ * because the disk is full.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::NOT_ENOUGH_MEMORY
+ * <tt>(ENOMEM)</tt> No memory available. The system cannot allocate more
+ * virtual memory because its capacity is full.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::TOO_MANY_OPEN_FILES
+ * <tt>(EMFILE)</tt> The current process has too many files open and can't
+ * open any more. Duplicate descriptors do count toward this limit.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::FILE_TABLE_OVERFLOW
+ * <tt>(ENFILE)</tt> There are too many distinct file openings in the
+ * entire system.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::BAD_FILE_DESCRIPTOR
+ * <tt>(EBADF)</tt> Bad file descriptor; for example, I/O on a descriptor
+ * that has been closed or reading from a descriptor open only for writing
+ * (or vice versa).
+ * <br><br>
+ */
+/** @var FileError::Code FileError::INVALID_ARGUMENT
+ * <tt>(EINVAL)</tt> Invalid argument. This is used to indicate various kinds
+ * of problems with passing the wrong argument to a library function.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::BROKEN_PIPE
+ * <tt>(EPIPE)</tt> Broken pipe; there is no process reading from the other
+ * end of a pipe. Every library function that returns this error code also
+ * generates a <tt>SIGPIPE</tt> signal; this signal terminates the program
+ * if not handled or blocked. Thus, your program will never actually see
+ * this code unless it has handled or blocked <tt>SIGPIPE</tt>.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::TRYAGAIN
+ * <tt>(EAGAIN)</tt> Resource temporarily unavailable; the call might work
+ * if you try again later.
+ * We used TRYAGAIN instead of TRY_AGAIN, because that is a defined as a macro by a Unix header.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::INTERRUPTED
+ * <tt>(EINTR)</tt> Interrupted function call; an asynchronous signal occurred
+ * and prevented completion of the call. When this happens, you should try
+ * the call again.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::IO_ERROR
+ * <tt>(EIO)</tt> Input/output error; usually used for physical read or write
+ * errors. I.e. the disk or other physical device hardware is returning errors.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::NOT_OWNER
+ * <tt>(EPERM)</tt> Operation not permitted; only the owner of the file (or other
+ * resource) or processes with special privileges can perform the operation.
+ * <br><br>
+ */
+/** @var FileError::Code FileError::FAILED
+ * Does not correspond to a UNIX error code; this is the standard "failed for
+ * unspecified reason" error code present in all Glib::Error error code
+ * enumerations. Returned if no specific code applies.
+ */
+
+class Dir;
+
+/** The iterator type of Glib::Dir.
+ * @ingroup FileUtils
+ */
+class DirIterator
+{
+public:
+ typedef std::input_iterator_tag iterator_category;
+ typedef std::string value_type;
+ typedef int difference_type;
+ typedef value_type reference;
+ typedef void pointer;
+
+ DirIterator();
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ DirIterator(GDir* gobject, const char* current);
+#endif
+
+ std::string operator*() const;
+ DirIterator& operator++();
+
+ /** @note DirIterator has input iterator semantics, which means real
+ * postfix increment is impossible. The return type is @c void to
+ * prevent surprising behaviour.
+ */
+ void operator++(int);
+
+ bool operator==(const DirIterator& rhs) const;
+ bool operator!=(const DirIterator& rhs) const;
+
+private:
+ GDir* gobject_;
+ const char* current_;
+};
+
+
+/** Utility class representing an open directory.
+ * @ingroup FileUtils
+ * It's highly recommended to use the iterator interface. With iterators,
+ * reading an entire directory into a STL container is really easy:
+ * @code
+ * Glib::Dir dir (directory_path);
+ * std::list<std::string> entries (dir.begin(), dir.end());
+ * @endcode
+ * @note The encoding of the directory entries isn't necessarily UTF-8.
+ * Use Glib::filename_to_utf8() if you need to display them.
+ */
+class Dir
+{
+public:
+ typedef DirIterator iterator;
+ typedef DirIterator const_iterator;
+
+ /** Opens a directory for reading. The names of the files in the
+ * directory can then be retrieved using read_name().
+ * @param path The path to the directory you are interested in.
+ * @throw Glib::FileError
+ */
+ explicit Dir(const std::string& path);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ explicit Dir(GDir* gobject);
+#endif
+
+ /** Closes the directory and deallocates all related resources.
+ */
+ ~Dir();
+
+ /** Retrieves the name of the next entry in the directory.
+ * The <tt>'.'</tt> and <tt>'..'</tt> entries are omitted.
+ * @return The entry's name or <tt>""</tt> if there are no more entries.
+ * @see begin(), end()
+ */
+ std::string read_name();
+
+ /** Resets the directory. The next call to
+ * read_name() will return the first entry again.
+ */
+ void rewind();
+
+ /** Closes the directory and deallocates all related resources.
+ * Note that close() is implicitely called by ~Dir(). Thus you don't
+ * need to call close() yourself unless you want to close the directory
+ * before the destructor runs.
+ */
+ void close();
+
+ /** Get the begin of an input iterator sequence.
+ * @return An input iterator pointing to the first directory entry.
+ */
+ DirIterator begin();
+
+ /** Get the end of an input iterator sequence.
+ * @return An input iterator pointing behind the last directory entry.
+ */
+ DirIterator end();
+
+private:
+ GDir* gobject_;
+
+ // noncopyable
+ Dir(const Dir&);
+ Dir& operator=(const Dir&);
+};
+
+
+/** Returns @c true if any of the tests in the bitfield @a test are true.
+ * @ingroup FileUtils
+ * For example, <tt>(Glib::FILE_TEST_EXISTS | Glib::FILE_TEST_IS_DIR)</tt> will
+ * return @c true if the file exists; the check whether it's a directory
+ * doesn't matter since the existence test is true. With the current set of
+ * available tests, there's no point passing in more than one test at a time.
+ *
+ * Apart from <tt>Glib::FILE_TEST_IS_SYMLINK</tt> all tests follow symbolic
+ * links, so for a symbolic link to a regular file file_test() will return
+ * @c true for both <tt>Glib::FILE_TEST_IS_SYMLINK</tt> and
+ * <tt>Glib::FILE_TEST_IS_REGULAR</tt>.
+ *
+ * @note For a dangling symbolic link file_test() will return @c true for
+ * <tt>Glib::FILE_TEST_IS_SYMLINK</tt> and @c false for all other flags.
+ *
+ * @param filename A filename to test.
+ * @param test Bitfield of Glib::FileTest flags.
+ * @return Whether a test was true.
+ */
+bool file_test(const std::string& filename, FileTest test);
+
+/** Opens a temporary file.
+ * @ingroup FileUtils
+ * See the %mkstemp() documentation on most UNIX-like systems. This is a
+ * portability wrapper, which simply calls %mkstemp() on systems that have
+ * it, and implements it in GLib otherwise.
+ * @param filename_template A string that should match the rules for
+ * %mkstemp(), i.e. end in <tt>"XXXXXX"</tt>. The <tt>X</tt> string
+ * will be modified to form the name of a file that didn't exist.
+ * @return A file handle (as from open()) to the file opened for reading
+ * and writing. The file is opened in binary mode on platforms where there
+ * is a difference. The file handle should be closed with close(). In
+ * case of errors, <tt>-1</tt> is returned.
+ */
+int mkstemp(std::string& filename_template);
+
+/** Opens a file for writing in the preferred directory for temporary files
+ * (as returned by Glib::get_tmp_dir()).
+ * @ingroup FileUtils
+ * @a prefix should a basename template; it'll be suffixed by 6 characters
+ * in order to form a unique filename. No directory components are allowed.
+ *
+ * The actual name used is returned in @a name_used.
+ *
+ * @param prefix Template for file name, basename only.
+ * @retval name_used The actual name used.
+ * @return A file handle (as from <tt>open()</tt>) to the file opened for reading
+ * and writing. The file is opened in binary mode on platforms where there is a
+ * difference. The file handle should be closed with <tt>close()</tt>.
+ * @throw Glib::FileError
+ */
+int file_open_tmp(std::string& name_used, const std::string& prefix);
+
+/** Opens a file for writing in the preferred directory for temporary files
+ * (as returned by Glib::get_tmp_dir()).
+ * @ingroup FileUtils
+ * This function works like file_open_tmp(std::string&, const std::string&)
+ * but uses a default basename prefix.
+ *
+ * @retval name_used The actual name used.
+ * @return A file handle (as from <tt>open()</tt>) to the file opened for reading
+ * and writing. The file is opened in binary mode on platforms where there is a
+ * difference. The file handle should be closed with <tt>close()</tt>.
+ * @throw Glib::FileError
+ */
+int file_open_tmp(std::string& name_used);
+
+/** Reads an entire file into a string, with good error checking.
+ * @ingroup FileUtils
+ * @param filename A file to read contents from.
+ * @return The file contents.
+ * @throw Glib::FileError
+ */
+std::string file_get_contents(const std::string& filename);
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/glib.defs b/libs/glibmm2/glib/src/glib.defs
new file mode 100644
index 0000000000..ce4f36d9d3
--- /dev/null
+++ b/libs/glibmm2/glib/src/glib.defs
@@ -0,0 +1,5 @@
+(include glib_functions.defs)
+(include glib_enums.defs)
+(include gobject_functions.defs)
+(include gmodule_functions.defs)
+(include gmodule_enums.defs)
diff --git a/libs/glibmm2/glib/src/glib_docs.xml b/libs/glibmm2/glib/src/glib_docs.xml
new file mode 100644
index 0000000000..e6bb3a528c
--- /dev/null
+++ b/libs/glibmm2/glib/src/glib_docs.xml
@@ -0,0 +1,12615 @@
+<root>
+<function name="g_str_hash">
+<description>
+Converts a string to a hash value.
+It can be passed to g_hash_table_new() as the @hash_func parameter,
+when using strings as keys in a #GHashTable.
+
+
+</description>
+<parameters>
+<parameter name="v">
+<parameter_description> a string key.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a hash value corresponding to the key.
+</return>
+</function>
+
+<function name="g_strcasecmp">
+<description>
+A case-insensitive string comparison, corresponding to the standard
+strcasecmp() function on platforms which support it.
+
+
+</description>
+<parameters>
+<parameter name="s1">
+<parameter_description> a string.
+</parameter_description>
+</parameter>
+<parameter name="s2">
+<parameter_description> a string to compare with @s1.
+</parameter_description>
+</parameter>
+</parameters>
+<return> 0 if the strings match, a negative value if @s1 &amp;lt; @s2,
+or a positive value if @s1 &amp;gt; @s2.
+
+Deprecated: See g_strncasecmp() for a discussion of why this function is
+deprecated and how to replace it.
+</return>
+</function>
+
+<function name="g_source_destroy">
+<description>
+Removes a source from its #GMainContext, if any, and mark it as
+destroyed. The source cannot be subsequently added to another
+context.
+
+</description>
+<parameters>
+<parameter name="source">
+<parameter_description> a #GSource
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_unichar_isdigit">
+<description>
+Determines whether a character is numeric (i.e. a digit). This
+covers ASCII 0-9 and also digits in other languages/scripts. Given
+some UTF-8 text, obtain a character value with g_utf8_get_char().
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @c is a digit
+</return>
+</function>
+
+<function name="g_shell_unquote">
+<description>
+Unquotes a string as the shell (/bin/sh) would. Only handles
+quotes; if a string contains file globs, arithmetic operators,
+variables, backticks, redirections, or other special-to-the-shell
+features, the result will be different from the result a real shell
+would produce (the variables, backticks, etc. will be passed
+through literally instead of being expanded). This function is
+guaranteed to succeed if applied to the result of
+g_shell_quote(). If it fails, it returns %NULL and sets the
+error. The @quoted_string need not actually contain quoted or
+escaped text; g_shell_unquote() simply goes through the string and
+unquotes/unescapes anything that the shell would. Both single and
+double quotes are handled, as are escapes including escaped
+newlines. The return value must be freed with g_free(). Possible
+errors are in the #G_SHELL_ERROR domain.
+
+Shell quoting rules are a bit strange. Single quotes preserve the
+literal string exactly. escape sequences are not allowed; not even
+\&apos; - if you want a &apos; in the quoted text, you have to do something
+like &apos;foo&apos;\&apos;&apos;bar&apos;. Double quotes allow $, `, &quot;, \, and newline to
+be escaped with backslash. Otherwise double quotes preserve things
+literally.
+
+
+</description>
+<parameters>
+<parameter name="quoted_string">
+<parameter_description> shell-quoted string
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> error return location or NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> an unquoted string
+</return>
+</function>
+
+<function name="g_build_pathv">
+<description>
+Behaves exactly like g_build_path(), but takes the path elements
+as a string array, instead of varargs. This function is mainly
+meant for language bindings.
+
+
+</description>
+<parameters>
+<parameter name="separator">
+<parameter_description> a string used to separator the elements of the path.
+</parameter_description>
+</parameter>
+<parameter name="args">
+<parameter_description> %NULL-terminated array of strings containing the path elements.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly-allocated string that must be freed with g_free().
+
+Since: 2.8
+</return>
+</function>
+
+<function name="g_propagate_error">
+<description>
+If @dest is %NULL, free @src; otherwise,
+moves @src into *@dest. *@dest must be %NULL.
+
+</description>
+<parameters>
+<parameter name="dest">
+<parameter_description> error return location
+</parameter_description>
+</parameter>
+<parameter name="src">
+<parameter_description> error to move into the return location
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_thread_pool_get_num_threads">
+<description>
+Returns the number of threads currently running in @pool.
+
+
+</description>
+<parameters>
+<parameter name="pool">
+<parameter_description> a #GThreadPool
+</parameter_description>
+</parameter>
+</parameters>
+<return> the number of threads currently running
+</return>
+</function>
+
+<function name="g_key_file_remove_group">
+<description>
+Removes the specified group, @group_name,
+from the key file.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_io_channel_close">
+<description>
+Close an IO channel. Any pending data to be written will be
+flushed, ignoring errors. The channel will not be freed until the
+last reference is dropped using g_io_channel_unref().
+
+Deprecated: Use g_io_channel_shutdown() instead.
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> A #GIOChannel
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_source_new">
+<description>
+Creates a new #GSource structure. The size is specified to
+allow creating structures derived from #GSource that contain
+additional data. The size passed in must be at least
+&amp;lt;literal&amp;gt;sizeof (GSource)&amp;lt;/literal&amp;gt;.
+
+The source will not initially be associated with any #GMainContext
+and must be added to one with g_source_attach() before it will be
+executed.
+
+
+</description>
+<parameters>
+<parameter name="source_funcs">
+<parameter_description> structure containing functions that implement
+the sources behavior.
+</parameter_description>
+</parameter>
+<parameter name="struct_size">
+<parameter_description> size of the #GSource structure to create.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the newly-created #GSource.
+</return>
+</function>
+
+<function name="g_io_channel_set_encoding">
+<description>
+Sets the encoding for the input/output of the channel. The internal
+encoding is always UTF-8. The default encoding for the
+external file is UTF-8.
+
+The encoding %NULL is safe to use with binary data.
+
+The encoding can only be set if one of the following conditions
+is true:
+
+1. The channel was just created, and has not been written to
+or read from yet.
+
+2. The channel is write-only.
+
+3. The channel is a file, and the file pointer was just
+repositioned by a call to g_io_channel_seek_position().
+(This flushes all the internal buffers.)
+
+4. The current encoding is %NULL or UTF-8.
+
+5. One of the (new API) read functions has just returned %G_IO_STATUS_EOF
+(or, in the case of g_io_channel_read_to_end (), %G_IO_STATUS_NORMAL).
+
+6. One of the functions g_io_channel_read_chars () or g_io_channel_read_unichar ()
+has returned %G_IO_STATUS_AGAIN or %G_IO_STATUS_ERROR. This may be
+useful in the case of %G_CONVERT_ERROR_ILLEGAL_SEQUENCE.
+Returning one of these statuses from g_io_channel_read_line (),
+g_io_channel_read_line_string (), or g_io_channel_read_to_end ()
+does &amp;lt;emphasis&amp;gt;not&amp;lt;/emphasis&amp;gt; guarantee that the encoding can be changed.
+
+Channels which do not meet one of the above conditions cannot call
+g_io_channel_seek_position () with an offset of %G_SEEK_CUR,
+and, if they are &quot;seekable&quot;, cannot
+call g_io_channel_write_chars () after calling one
+of the API &quot;read&quot; functions.
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel
+</parameter_description>
+</parameter>
+<parameter name="encoding">
+<parameter_description> the encoding type
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> location to store an error of type #GConvertError.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %G_IO_STATUS_NORMAL if the encoding was successfully set.
+</return>
+</function>
+
+<function name="g_markup_parse_context_free">
+<description>
+Frees a #GMarkupParseContext. Can&apos;t be called from inside
+one of the #GMarkupParser functions.
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMarkupParseContext
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_utf8_normalize">
+<description>
+Converts a string into canonical form, standardizing
+such issues as whether a character with an accent
+is represented as a base character and combining
+accent or as a single precomposed character. You
+should generally call g_utf8_normalize() before
+comparing two Unicode strings.
+
+The normalization mode %G_NORMALIZE_DEFAULT only
+standardizes differences that do not affect the
+text content, such as the above-mentioned accent
+representation. %G_NORMALIZE_ALL also standardizes
+the &quot;compatibility&quot; characters in Unicode, such
+as SUPERSCRIPT THREE to the standard forms
+(in this case DIGIT THREE). Formatting information
+may be lost but for most text operations such
+characters should be considered the same.
+For example, g_utf8_collate() normalizes
+with %G_NORMALIZE_ALL as its first step.
+
+%G_NORMALIZE_DEFAULT_COMPOSE and %G_NORMALIZE_ALL_COMPOSE
+are like %G_NORMALIZE_DEFAULT and %G_NORMALIZE_ALL,
+but returned a result with composed forms rather
+than a maximally decomposed form. This is often
+useful if you intend to convert the string to
+a legacy encoding or pass it to a system with
+less capable Unicode handling.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a UTF-8 encoded string.
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> length of @str, in bytes, or -1 if @str is nul-terminated.
+</parameter_description>
+</parameter>
+<parameter name="mode">
+<parameter_description> the type of normalization to perform.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly allocated string, that is the
+normalized form of @str.
+</return>
+</function>
+
+<function name="g_qsort_with_data">
+<description>
+This is just like the standard C qsort() function, but
+the comparison routine accepts a user data argument.
+
+
+</description>
+<parameters>
+<parameter name="pbase">
+<parameter_description> start of array to sort
+</parameter_description>
+</parameter>
+<parameter name="total_elems">
+<parameter_description> elements in the array
+</parameter_description>
+</parameter>
+<parameter name="size">
+<parameter_description> size of each element
+</parameter_description>
+</parameter>
+<parameter name="compare_func">
+<parameter_description> function to compare elements
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> data to pass to @compare_func
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_main_context_wakeup">
+<description>
+If @context is currently waiting in a poll(), interrupt
+the poll(), and continue the iteration process.
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMainContext
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_get_application_name">
+<description>
+Gets a human-readable name for the application, as set by
+g_set_application_name(). This name should be localized if
+possible, and is intended for display to the user. Contrast with
+g_get_prgname(), which gets a non-localized name. If
+g_set_application_name() has not been called, returns the result of
+g_get_prgname() (which may be %NULL if g_set_prgname() has also not
+been called).
+
+
+</description>
+<parameters>
+</parameters>
+<return> human-readable application name. may return %NULL
+
+Since: 2.2
+</return>
+</function>
+
+<function name="g_get_tmp_dir">
+<description>
+Gets the directory to use for temporary files. This is found from
+inspecting the environment variables &amp;lt;envar&amp;gt;TMPDIR&amp;lt;/envar&amp;gt;,
+&amp;lt;envar&amp;gt;TMP&amp;lt;/envar&amp;gt;, and &amp;lt;envar&amp;gt;TEMP&amp;lt;/envar&amp;gt; in that order. If none
+of those are defined &quot;/tmp&quot; is returned on UNIX and &quot;C:\&quot; on Windows.
+The encoding of the returned string is system-defined. On Windows,
+it is always UTF-8. The return value is never %NULL.
+
+
+</description>
+<parameters>
+</parameters>
+<return> the directory to use for temporary files.
+</return>
+</function>
+
+<function name="g_snprintf">
+<description>
+A safer form of the standard sprintf() function. The output is guaranteed
+to not exceed @n characters (including the terminating nul character), so
+it is easy to ensure that a buffer overflow cannot occur.
+
+See also g_strdup_printf().
+
+In versions of GLib prior to 1.2.3, this function may return -1 if the
+output was truncated, and the truncated string may not be nul-terminated.
+In versions prior to 1.3.12, this function returns the length of the output
+string.
+
+The return value of g_snprintf() conforms to the snprintf()
+function as standardized in ISO C99. Note that this is different from
+traditional snprintf(), which returns the length of the output string.
+
+The format string may contain positional parameters, as specified in
+the Single Unix Specification.
+
+
+</description>
+<parameters>
+<parameter name="string">
+<parameter_description> the buffer to hold the output.
+</parameter_description>
+</parameter>
+<parameter name="n">
+<parameter_description> the maximum number of characters to produce (including the
+terminating nul character).
+</parameter_description>
+</parameter>
+<parameter name="format">
+<parameter_description> a standard printf() format string, but notice
+&amp;lt;link linkend=&quot;string-precision&quot;&amp;gt;string precision pitfalls&amp;lt;/link&amp;gt;.
+</parameter_description>
+</parameter>
+<parameter name="Varargs">
+<parameter_description> the arguments to insert in the output.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the number of characters which would be produced if the buffer
+was large enough.
+</return>
+</function>
+
+<function name="g_main_context_ref">
+<description>
+Increases the reference count on a #GMainContext object by one.
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMainContext
+</parameter_description>
+</parameter>
+</parameters>
+<return> the @context that was passed in (since 2.6)
+</return>
+</function>
+
+<function name="g_set_application_name">
+<description>
+Sets a human-readable name for the application. This name should be
+localized if possible, and is intended for display to the user.
+Contrast with g_set_prgname(), which sets a non-localized name.
+g_set_prgname() will be called automatically by gtk_init(),
+but g_set_application_name() will not.
+
+Note that for thread safety reasons, this function can only
+be called once.
+
+The application name will be used in contexts such as error messages,
+or when displaying an application&apos;s name in the task list.
+
+
+</description>
+<parameters>
+<parameter name="application_name">
+<parameter_description> localized name of the application
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_main_context_acquire">
+<description>
+Tries to become the owner of the specified context.
+If some other context is the owner of the context,
+returns %FALSE immediately. Ownership is properly
+recursive: the owner can require ownership again
+and will release ownership when g_main_context_release()
+is called as many times as g_main_context_acquire().
+
+You must be the owner of a context before you
+can call g_main_context_prepare(), g_main_context_query(),
+g_main_context_check(), g_main_context_dispatch().
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMainContext
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the operation succeeded, and
+this thread is now the owner of @context.
+</return>
+</function>
+
+<function name="g_file_set_contents">
+<description>
+Writes all of @contents to a file named @filename, with good error checking.
+If a file called @filename already exists it will be overwritten.
+
+This write is atomic in the sense that it is first written to a temporary
+file which is then renamed to the final name. Notes:
+&amp;lt;itemizedlist&amp;gt;
+&amp;lt;listitem&amp;gt;
+On Unix, if @filename already exists hard links to @filename will break.
+Also since the file is recreated, existing permissions, access control
+lists, metadata etc. may be lost. If @filename is a symbolic link,
+the link itself will be replaced, not the linked file.
+&amp;lt;/listitem&amp;gt;
+&amp;lt;listitem&amp;gt;
+On Windows renaming a file will not remove an existing file with the
+new name, so on Windows there is a race condition between the existing
+file being removed and the temporary file being renamed.
+&amp;lt;/listitem&amp;gt;
+&amp;lt;listitem&amp;gt;
+On Windows there is no way to remove a file that is open to some
+process, or mapped into memory. Thus, this function will fail if
+@filename already exists and is open.
+&amp;lt;/listitem&amp;gt;
+&amp;lt;/itemizedlist&amp;gt;
+
+If the call was sucessful, it returns %TRUE. If the call was not successful,
+it returns %FALSE and sets @error. The error domain is #G_FILE_ERROR.
+Possible error codes are those in the #GFileError enumeration.
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> name of a file to write @contents to, in the GLib file name
+encoding
+</parameter_description>
+</parameter>
+<parameter name="contents">
+<parameter_description> string to write to the file
+</parameter_description>
+</parameter>
+<parameter name="length">
+<parameter_description> length of @contents, or -1 if @contents is a nul-terminated string
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE on success, %FALSE if an error occurred
+
+Since: 2.8
+</return>
+</function>
+
+<function name="g_idle_add_full">
+<description>
+Adds a function to be called whenever there are no higher priority
+events pending. If the function returns %FALSE it is automatically
+removed from the list of event sources and will not be called again.
+
+
+</description>
+<parameters>
+<parameter name="priority">
+<parameter_description> the priority of the idle source. Typically this will be in the
+range btweeen #G_PRIORITY_DEFAULT_IDLE and #G_PRIORITY_HIGH_IDLE.
+</parameter_description>
+</parameter>
+<parameter name="function">
+<parameter_description> function to call
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> data to pass to @function
+</parameter_description>
+</parameter>
+<parameter name="notify">
+<parameter_description> function to call when the idle is removed, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> the id of the event source.
+</return>
+</function>
+
+<function name="g_dir_rewind">
+<description>
+Resets the given directory. The next call to g_dir_read_name()
+will return the first entry again.
+
+</description>
+<parameters>
+<parameter name="dir">
+<parameter_description> a #GDir* created by g_dir_open()
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_get_system_config_dirs">
+<description>
+Returns an ordered list of base directories in which to access
+system-wide configuration information.
+
+On UNIX platforms this is determined using the mechanisms described in
+the &amp;lt;ulink url=&quot;http://www.freedesktop.org/Standards/basedir-spec&quot;&amp;gt;
+XDG Base Directory Specification&amp;lt;/ulink&amp;gt;
+
+
+</description>
+<parameters>
+</parameters>
+<return> a %NULL-terminated array of strings owned by GLib that must
+not be modified or freed.
+Since: 2.6
+</return>
+</function>
+
+<function name="g_queue_pop_nth">
+<description>
+Removes the @n&apos;th element of @queue.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+<parameter name="n">
+<parameter_description> the position of the element.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the element&apos;s data, or %NULL if @n is off the end of @queue.
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_key_file_has_key">
+<description>
+Looks whether the key file has the key @key in the group
+@group_name.
+
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key name
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @key is a part of @group_name, %FALSE
+otherwise.
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_io_channel_read_chars">
+<description>
+Replacement for g_io_channel_read() with the new API.
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel
+</parameter_description>
+</parameter>
+<parameter name="buf">
+<parameter_description> a buffer to read data into
+</parameter_description>
+</parameter>
+<parameter name="count">
+<parameter_description> the size of the buffer. Note that the buffer may
+not be complelely filled even if there is data
+in the buffer if the remaining data is not a
+complete character.
+</parameter_description>
+</parameter>
+<parameter name="bytes_read">
+<parameter_description> The number of bytes read. This may be zero even on
+success if count &amp;lt; 6 and the channel&apos;s encoding is non-%NULL.
+This indicates that the next UTF-8 character is too wide for
+the buffer.
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> A location to return an error of type #GConvertError
+or #GIOChannelError.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the status of the operation.
+</return>
+</function>
+
+<function name="g_key_file_set_boolean_list">
+<description>
+Associates a list of boolean values with @key under
+@group_name. If @key cannot be found then it is created.
+If @group_name is %NULL, the start_group is used.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="list">
+<parameter_description> an array of boolean values
+</parameter_description>
+</parameter>
+<parameter name="length">
+<parameter_description> length of @list
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_rand_double">
+<description>
+Returns the next random #gdouble from @rand_ equally distributed over
+the range [0..1).
+
+
+</description>
+<parameters>
+<parameter name="rand_">
+<parameter_description> a #GRand.
+</parameter_description>
+</parameter>
+</parameters>
+<return> A random number.
+</return>
+</function>
+
+<function name="g_markup_parse_context_parse">
+<description>
+Feed some data to the #GMarkupParseContext. The data need not
+be valid UTF-8; an error will be signaled if it&apos;s invalid.
+The data need not be an entire document; you can feed a document
+into the parser incrementally, via multiple calls to this function.
+Typically, as you receive data from a network connection or file,
+you feed each received chunk of data into this function, aborting
+the process if an error occurs. Once an error is reported, no further
+data may be fed to the #GMarkupParseContext; all errors are fatal.
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMarkupParseContext
+</parameter_description>
+</parameter>
+<parameter name="text">
+<parameter_description> chunk of text to parse
+</parameter_description>
+</parameter>
+<parameter name="text_len">
+<parameter_description> length of @text in bytes
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError
+</parameter_description>
+</parameter>
+</parameters>
+<return> %FALSE if an error occurred, %TRUE on success
+</return>
+</function>
+
+<function name="g_node_copy_deep">
+<description>
+Recursively copies a #GNode and its data.
+
+
+</description>
+<parameters>
+<parameter name="node">
+<parameter_description> a #GNode
+</parameter_description>
+</parameter>
+<parameter name="copy_func">
+<parameter_description> the function which is called to copy the data inside each node,
+or %NULL to use the original data.
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> data to pass to @copy_func
+</parameter_description>
+</parameter>
+</parameters>
+<return> a new #GNode containing copies of the data in @node.
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_main_context_iteration">
+<description>
+Runs a single iteration for the given main loop. This involves
+checking to see if any event sources are ready to be processed,
+then if no events sources are ready and @may_block is %TRUE, waiting
+for a source to become ready, then dispatching the highest priority
+events sources that are ready. Note that even when @may_block is %TRUE,
+it is still possible for g_main_context_iteration() to return
+%FALSE, since the the wait may be interrupted for other
+reasons than an event source becoming ready.
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMainContext (if %NULL, the default context will be used)
+</parameter_description>
+</parameter>
+<parameter name="may_block">
+<parameter_description> whether the call may block.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if events were dispatched.
+</return>
+</function>
+
+<function name="g_file_read_link">
+<description>
+Reads the contents of the symbolic link @filename like the POSIX
+readlink() function. The returned string is in the encoding used
+for filenames. Use g_filename_to_utf8() to convert it to UTF-8.
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> the symbolic link
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError
+</parameter_description>
+</parameter>
+</parameters>
+<return> A newly allocated string with the contents of the symbolic link,
+or %NULL if an error occurred.
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_unichar_totitle">
+<description>
+Converts a character to the titlecase.
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> the result of converting @c to titlecase.
+If @c is not an uppercase or lowercase character,
+@c is returned unchanged.
+</return>
+</function>
+
+<function name="g_main_loop_unref">
+<description>
+Decreases the reference count on a #GMainLoop object by one. If
+the result is zero, free the loop and free all associated memory.
+
+</description>
+<parameters>
+<parameter name="loop">
+<parameter_description> a #GMainLoop
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_async_queue_unref_and_unlock">
+<description>
+Decreases the reference count of the asynchronous @queue by 1 and
+releases the lock. This function must be called while holding the
+@queue&apos;s lock. If the reference count went to 0, the @queue will be
+destroyed and the memory allocated will be freed.
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GAsyncQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_file_error_from_errno">
+<description>
+Gets a #GFileError constant based on the passed-in @errno.
+For example, if you pass in %EEXIST this function returns
+#G_FILE_ERROR_EXIST. Unlike @errno values, you can portably
+assume that all #GFileError values will exist.
+
+Normally a #GFileError value goes into a #GError returned
+from a function that manipulates files. So you would use
+g_file_error_from_errno() when constructing a #GError.
+
+
+</description>
+<parameters>
+<parameter name="err_no">
+<parameter_description> an &quot;errno&quot; value
+</parameter_description>
+</parameter>
+</parameters>
+<return> #GFileError corresponding to the given @errno
+</return>
+</function>
+
+<function name="g_main_context_find_source_by_funcs_user_data">
+<description>
+Finds a source with the given source functions and user data. If
+multiple sources exist with the same source function and user data,
+the first one found will be returned.
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMainContext (if %NULL, the default context will be used).
+</parameter_description>
+</parameter>
+<parameter name="funcs">
+<parameter_description> the @source_funcs passed to g_source_new().
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> the user data from the callback.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the source, if one was found, otherwise %NULL
+</return>
+</function>
+
+<function name="g_convert">
+<description>
+Converts a string from one character set to another.
+
+Note that you should use g_iconv() for streaming
+conversions&amp;lt;footnoteref linkend=&quot;streaming-state&quot;/&amp;gt;.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> the string to convert
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the length of the string, or -1 if the string is
+nul-terminated&amp;lt;footnote id=&quot;nul-unsafe&quot;&amp;gt;
+ &amp;lt;para&amp;gt;
+ Note that some encodings may allow nul bytes to
+ occur inside strings. In that case, using -1 for
+ the @len parameter is unsafe.
+ &amp;lt;/para&amp;gt;
+ &amp;lt;/footnote&amp;gt;.
+</parameter_description>
+</parameter>
+<parameter name="to_codeset">
+<parameter_description> name of character set into which to convert @str
+</parameter_description>
+</parameter>
+<parameter name="from_codeset">
+<parameter_description> character set of @str.
+</parameter_description>
+</parameter>
+<parameter name="bytes_read">
+<parameter_description> location to store the number of bytes in the
+input string that were successfully converted, or %NULL.
+Even if the conversion was successful, this may be
+less than @len if there were partial characters
+at the end of the input. If the error
+#G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value
+stored will the byte offset after the last valid
+input sequence.
+</parameter_description>
+</parameter>
+<parameter name="bytes_written">
+<parameter_description> the number of bytes stored in the output buffer (not
+including the terminating nul).
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> location to store the error occuring, or %NULL to ignore
+errors. Any of the errors in #GConvertError may occur.
+</parameter_description>
+</parameter>
+</parameters>
+<return> If the conversion was successful, a newly allocated
+nul-terminated string, which must be freed with
+g_free(). Otherwise %NULL and @error will be set.
+</return>
+</function>
+
+<function name="g_main_context_add_poll">
+<description>
+Adds a file descriptor to the set of file descriptors polled for
+this context. This will very seldomly be used directly. Instead
+a typical event source will use g_source_add_poll() instead.
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMainContext (or %NULL for the default context)
+</parameter_description>
+</parameter>
+<parameter name="fd">
+<parameter_description> a #GPollFD structure holding information about a file
+descriptor to watch.
+</parameter_description>
+</parameter>
+<parameter name="priority">
+<parameter_description> the priority for this file descriptor which should be
+the same as the priority used for g_source_attach() to ensure that the
+file descriptor is polled whenever the results may be needed.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_option_group_set_translation_domain">
+<description>
+A convenience function to use gettext() for translating
+user-visible strings.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="group">
+<parameter_description> a #GOptionGroup
+</parameter_description>
+</parameter>
+<parameter name="domain">
+<parameter_description> the domain to use
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_option_context_get_main_group">
+<description>
+Returns a pointer to the main group of @context.
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GOptionContext
+</parameter_description>
+</parameter>
+</parameters>
+<return> the main group of @context, or %NULL if @context doesn&apos;t
+have a main group. Note that group belongs to @context and should
+not be modified or freed.
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_unicode_canonical_ordering">
+<description>
+Computes the canonical ordering of a string in-place.
+This rearranges decomposed characters in the string
+according to their combining classes. See the Unicode
+manual for more information.
+
+</description>
+<parameters>
+<parameter name="string">
+<parameter_description> a UCS-4 encoded string.
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the maximum length of @string to use.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_ascii_strdown">
+<description>
+Converts all upper case ASCII letters to lower case ASCII letters.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a string.
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> length of @str in bytes, or -1 if @str is nul-terminated.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly-allocated string, with all the upper case
+characters in @str converted to lower case, with
+semantics that exactly match g_ascii_tolower(). (Note
+that this is unlike the old g_strdown(), which modified
+the string in place.)
+</return>
+</function>
+
+<function name="g_tree_search">
+<description>
+Searches a #GTree using @search_func.
+
+The @search_func is called with a pointer to the key of a key/value pair in the tree,
+and the passed in @user_data. If @search_func returns 0 for a key/value pair, then
+g_tree_search_func() will return the value of that pair. If @search_func returns -1,
+searching will proceed among the key/value pairs that have a smaller key; if @search_func
+returns 1, searching will proceed among the key/value pairs that have a larger key.
+
+
+</description>
+<parameters>
+<parameter name="tree">
+<parameter_description> a #GTree.
+</parameter_description>
+</parameter>
+<parameter name="search_func">
+<parameter_description> a function used to search the #GTree.
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> the data passed as the second argument to the @search_func
+function.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the value corresponding to the found key, or %NULL if the key
+was not found.
+</return>
+</function>
+
+<function name="g_freopen">
+<description>
+A wrapper for the POSIX freopen() function. The freopen() function
+opens a file and associates it with an existing stream.
+
+See the C library manual for more details about freopen().
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> a pathname in the GLib file name encoding (UTF-8 on Windows)
+</parameter_description>
+</parameter>
+<parameter name="mode">
+<parameter_description> a string describing the mode in which the file should be
+opened
+</parameter_description>
+</parameter>
+<parameter name="stream">
+<parameter_description> an existing stream which will be reused, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> A &amp;lt;type&amp;gt;FILE&amp;lt;/type&amp;gt; pointer if the file was successfully
+opened, or %NULL if an error occurred.
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_queue_foreach">
+<description>
+Calls @func for each element in the queue passing @user_data to the
+function.
+
+Since: 2.4
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+<parameter name="func">
+<parameter_description> the function to call for each element&apos;s data
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> user data to pass to @func
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_queue_remove">
+<description>
+Removes the first element in @queue that contains @data.
+
+Since: 2.4
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> data to remove.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_str_equal">
+<description>
+Compares two strings and returns %TRUE if they are equal.
+It can be passed to g_hash_table_new() as the @key_equal_func
+parameter, when using strings as keys in a #GHashTable.
+
+
+</description>
+<parameters>
+<parameter name="v1">
+<parameter_description> a key.
+</parameter_description>
+</parameter>
+<parameter name="v2">
+<parameter_description> a key to compare with @v1.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the two keys match.
+</return>
+</function>
+
+<function name="g_key_file_get_start_group">
+<description>
+Returns the name of the start group of the file.
+
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+</parameters>
+<return> The start group of the key file.
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_tree_lookup">
+<description>
+Gets the value corresponding to the given key. Since a #GTree is
+automatically balanced as key/value pairs are added, key lookup is very
+fast.
+
+
+</description>
+<parameters>
+<parameter name="tree">
+<parameter_description> a #GTree.
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> the key to look up.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the value corresponding to the key, or %NULL if the key was
+not found.
+</return>
+</function>
+
+<function name="g_hash_table_destroy">
+<description>
+Destroys the #GHashTable. If keys and/or values are dynamically
+allocated, you should either free them first or create the #GHashTable
+using g_hash_table_new_full(). In the latter case the destroy functions
+you supplied will be called on all keys and values before destroying
+the #GHashTable.
+
+</description>
+<parameters>
+<parameter name="hash_table">
+<parameter_description> a #GHashTable.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_tree_height">
+<description>
+Gets the height of a #GTree.
+
+If the #GTree contains no nodes, the height is 0.
+If the #GTree contains only one root node the height is 1.
+If the root node has children the height is 2, etc.
+
+
+</description>
+<parameters>
+<parameter name="tree">
+<parameter_description> a #GTree.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the height of the #GTree.
+</return>
+</function>
+
+<function name="g_get_user_data_dir">
+<description>
+Returns a base directory in which to access application data such
+as icons that is customized for a particular user.
+
+On UNIX platforms this is determined using the mechanisms described in
+the &amp;lt;ulink url=&quot;http://www.freedesktop.org/Standards/basedir-spec&quot;&amp;gt;
+XDG Base Directory Specification&amp;lt;/ulink&amp;gt;
+
+
+</description>
+<parameters>
+</parameters>
+<return> a string owned by GLib that must not be modified
+or freed.
+Since: 2.6
+</return>
+</function>
+
+<function name="g_ascii_strncasecmp">
+<description>
+Compare @s1 and @s2, ignoring the case of ASCII characters and any
+characters after the first @n in each string.
+
+Unlike the BSD strcasecmp() function, this only recognizes standard
+ASCII letters and ignores the locale, treating all non-ASCII
+characters as if they are not letters.
+
+
+</description>
+<parameters>
+<parameter name="s1">
+<parameter_description> string to compare with @s2.
+</parameter_description>
+</parameter>
+<parameter name="s2">
+<parameter_description> string to compare with @s1.
+</parameter_description>
+</parameter>
+<parameter name="n">
+<parameter_description> number of characters to compare.
+</parameter_description>
+</parameter>
+</parameters>
+<return> an integer less than, equal to, or greater than zero
+if the first @n bytes of @s1 is found, respectively,
+to be less than, to match, or to be greater than the
+first @n bytes of @s2.
+</return>
+</function>
+
+<function name="g_source_unref">
+<description>
+Decreases the reference count of a source by one. If the
+resulting reference count is zero the source and associated
+memory will be destroyed.
+
+</description>
+<parameters>
+<parameter name="source">
+<parameter_description> a #GSource
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_main_loop_run">
+<description>
+Runs a main loop until g_main_loop_quit() is called on the loop.
+If this is called for the thread of the loop&apos;s #GMainContext,
+it will process events from the loop, otherwise it will
+simply wait.
+
+</description>
+<parameters>
+<parameter name="loop">
+<parameter_description> a #GMainLoop
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_queue_push_head_link">
+<description>
+Adds a new element at the head of the queue.
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue.
+</parameter_description>
+</parameter>
+<parameter name="link_">
+<parameter_description> a single #GList element, &amp;lt;emphasis&amp;gt;not&amp;lt;/emphasis&amp;gt; a list with
+more than one element.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_unichar_iswide">
+<description>
+Determines if a character is typically rendered in a double-width
+cell.
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the character is wide
+</return>
+</function>
+
+<function name="g_strdown">
+<description>
+Converts a string to lower case.
+
+
+</description>
+<parameters>
+<parameter name="string">
+<parameter_description> the string to convert.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the string
+
+Deprecated: This function is totally broken for the reasons discussed in
+the g_strncasecmp() docs - use g_ascii_strdown() or g_utf8_strdown()
+instead.
+</return>
+</function>
+
+<function name="g_queue_find_custom">
+<description>
+Finds an element in a #GQueue, using a supplied function to find the
+desired element. It iterates over the queue, calling the given function
+which should return 0 when the desired element is found. The function
+takes two gconstpointer arguments, the #GQueue element&apos;s data as the
+first argument and the given user data as the second argument.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> user data passed to @func
+</parameter_description>
+</parameter>
+<parameter name="func">
+<parameter_description> a #GCompareFunc to call for each element. It should return 0
+when the desired element is found
+</parameter_description>
+</parameter>
+</parameters>
+<return> The found link, or %NULL if it wasn&apos;t found
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_option_group_set_error_hook">
+<description>
+Associates a function with @group which will be called
+from g_option_context_parse() when an error occurs.
+
+Note that the user data to be passed to @pre_parse_func and
+@post_parse_func can be specified when constructing the group
+with g_option_group_new().
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="group">
+<parameter_description> a #GOptionGroup
+</parameter_description>
+</parameter>
+<parameter name="error_func">
+<parameter_description> a function to call when an error occurs
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_unichar_validate">
+<description>
+Checks whether @ch is a valid Unicode character. Some possible
+integer values of @ch will not be valid. 0 is considered a valid
+character, though it&apos;s normally a string terminator.
+
+
+</description>
+<parameters>
+<parameter name="ch">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @ch is a valid Unicode character
+</return>
+</function>
+
+<function name="g_thread_pool_free">
+<description>
+Frees all resources allocated for @pool.
+
+If @immediate is %TRUE, no new task is processed for
+@pool. Otherwise @pool is not freed before the last task is
+processed. Note however, that no thread of this pool is
+interrupted, while processing a task. Instead at least all still
+running threads can finish their tasks before the @pool is freed.
+
+If @wait is %TRUE, the functions does not return before all tasks
+to be processed (dependent on @immediate, whether all or only the
+currently running) are ready. Otherwise the function returns immediately.
+
+After calling this function @pool must not be used anymore.
+
+</description>
+<parameters>
+<parameter name="pool">
+<parameter_description> a #GThreadPool
+</parameter_description>
+</parameter>
+<parameter name="immediate">
+<parameter_description> should @pool shut down immediately?
+</parameter_description>
+</parameter>
+<parameter name="wait">
+<parameter_description> should the function wait for all tasks to be finished?
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_thread_pool_stop_unused_threads">
+<description>
+Stops all currently unused threads. This does not change the
+maximal number of unused threads. This function can be used to
+regularly stop all unused threads e.g. from g_timeout_add().
+
+</description>
+<parameters>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_utf8_prev_char">
+<description>
+Finds the previous UTF-8 character in the string before @p.
+
+@p does not have to be at the beginning of a UTF-8 character. No check
+is made to see if the character found is actually valid other than
+it starts with an appropriate byte. If @p might be the first
+character of the string, you must use g_utf8_find_prev_char() instead.
+
+
+</description>
+<parameters>
+<parameter name="p">
+<parameter_description> a pointer to a position within a UTF-8 encoded string
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to the found character.
+</return>
+</function>
+
+<function name="g_fprintf">
+<description>
+An implementation of the standard fprintf() function which supports
+positional parameters, as specified in the Single Unix Specification.
+
+
+</description>
+<parameters>
+<parameter name="file">
+<parameter_description> the stream to write to.
+</parameter_description>
+</parameter>
+<parameter name="format">
+<parameter_description> a standard printf() format string, but notice
+&amp;lt;link linkend=&quot;string-precision&quot;&amp;gt;string precision pitfalls&amp;lt;/link&amp;gt;.
+</parameter_description>
+</parameter>
+<parameter name="Varargs">
+<parameter_description> the arguments to insert in the output.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the number of characters printed.
+
+Since: 2.2
+</return>
+</function>
+
+<function name="find_conversion">
+<description>
+Find the next conversion in a printf-style format string.
+Partially based on code from printf-parser.c,
+Copyright (C) 1999-2000, 2002-2003 Free Software Foundation, Inc.
+
+
+</description>
+<parameters>
+<parameter name="format">
+<parameter_description> a printf-style format string
+</parameter_description>
+</parameter>
+<parameter name="after">
+<parameter_description> location to store a pointer to the character after
+the returned conversion. On a %NULL return, returns the
+pointer to the trailing NUL in the string
+</parameter_description>
+</parameter>
+</parameters>
+<return> pointer to the next conversion in @format,
+or %NULL, if none.
+</return>
+</function>
+
+<function name="g_filename_from_utf8">
+<description>
+Converts a string from UTF-8 to the encoding GLib uses for
+filenames. Note that on Windows GLib uses UTF-8 for filenames.
+
+
+</description>
+<parameters>
+<parameter name="utf8string">
+<parameter_description> a UTF-8 encoded string.
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the length of the string, or -1 if the string is
+nul-terminated.
+</parameter_description>
+</parameter>
+<parameter name="bytes_read">
+<parameter_description> location to store the number of bytes in the
+input string that were successfully converted, or %NULL.
+Even if the conversion was successful, this may be
+less than @len if there were partial characters
+at the end of the input. If the error
+#G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value
+stored will the byte offset after the last valid
+input sequence.
+</parameter_description>
+</parameter>
+<parameter name="bytes_written">
+<parameter_description> the number of bytes stored in the output buffer (not
+including the terminating nul).
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> location to store the error occuring, or %NULL to ignore
+errors. Any of the errors in #GConvertError may occur.
+</parameter_description>
+</parameter>
+</parameters>
+<return> The converted string, or %NULL on an error.
+</return>
+</function>
+
+<function name="g_get_host_name">
+<description>
+Return a name for the machine.
+
+The returned name is not necessarily a fully-qualified domain name,
+or even present in DNS or some other name service at all. It need
+not even be unique on your local network or site, but usually it
+is. Callers should not rely on the return value having any specific
+properties like uniqueness for security purposes. Even if the name
+of the machine is changed while an application is running, the
+return value from this function does not change. The returned
+string is owned by GLib and should not be modified or freed. If no
+name can be determined, a default fixed string &quot;localhost&quot; is
+returned.
+
+
+</description>
+<parameters>
+</parameters>
+<return> the host name of the machine.
+
+Since: 2.8
+</return>
+</function>
+
+<function name="g_spawn_command_line_async">
+<description>
+A simple version of g_spawn_async() that parses a command line with
+g_shell_parse_argv() and passes it to g_spawn_async(). Runs a
+command line in the background. Unlike g_spawn_async(), the
+%G_SPAWN_SEARCH_PATH flag is enabled, other flags are not. Note
+that %G_SPAWN_SEARCH_PATH can have security implications, so
+consider using g_spawn_async() directly if appropriate. Possible
+errors are those from g_shell_parse_argv() and g_spawn_async().
+
+The same concerns on Windows apply as for g_spawn_command_line_sync().
+
+
+</description>
+<parameters>
+<parameter name="command_line">
+<parameter_description> a command line
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for errors
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE on success, %FALSE if error is set.
+</return>
+</function>
+
+<function name="g_hash_table_lookup">
+<description>
+Looks up a key in a #GHashTable. Note that this function cannot
+distinguish between a key that is not present and one which is present
+and has the value %NULL. If you need this distinction, use
+g_hash_table_lookup_extended().
+
+
+</description>
+<parameters>
+<parameter name="hash_table">
+<parameter_description> a #GHashTable.
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> the key to look up.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the associated value, or %NULL if the key is not found.
+</return>
+</function>
+
+<function name="g_random_double_range">
+<description>
+Returns a random #gdouble equally distributed over the range [@begin..@end).
+
+
+</description>
+<parameters>
+<parameter name="begin">
+<parameter_description> lower closed bound of the interval.
+</parameter_description>
+</parameter>
+<parameter name="end">
+<parameter_description> upper open bound of the interval.
+</parameter_description>
+</parameter>
+</parameters>
+<return> A random number.
+</return>
+</function>
+
+<function name="g_time_val_add">
+<description>
+Adds the given number of microseconds to @time_. @microseconds can
+also be negative to decrease the value of @time_.
+
+</description>
+<parameters>
+<parameter name="time_">
+<parameter_description> a #GTimeVal
+</parameter_description>
+</parameter>
+<parameter name="microseconds">
+<parameter_description> number of microseconds to add to @time
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_rename">
+<description>
+A wrapper for the POSIX rename() function. The rename() function
+renames a file, moving it between directories if required.
+
+See your C library manual for more details about how rename() works
+on your system. Note in particular that on Windows, it is in
+general not possible to rename a file if a file with the new name
+already exists. Also it is not possible in general to rename an
+open file.
+
+
+</description>
+<parameters>
+<parameter name="oldfilename">
+<parameter_description> a pathname in the GLib file name encoding (UTF-8 on Windows)
+</parameter_description>
+</parameter>
+<parameter name="newfilename">
+<parameter_description> a pathname in the GLib file name encoding
+</parameter_description>
+</parameter>
+</parameters>
+<return> 0 if the renaming succeeded, -1 if an error occurred
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_child_watch_add">
+<description>
+Sets a function to be called when the child indicated by @pid exits, at a
+default priority, #G_PRIORITY_DEFAULT.
+
+Note that on platforms where #GPid must be explicitely closed
+(see g_spawn_close_pid()) @pid must not be closed while the
+source is still active. Typically, you will want to call
+g_spawn_close_pid() in the callback function for the source.
+
+GLib supports only a single callback per process id.
+
+
+</description>
+<parameters>
+<parameter name="pid">
+<parameter_description> process id of a child process to watch
+</parameter_description>
+</parameter>
+<parameter name="function">
+<parameter_description> function to call
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> data to pass to @function
+</parameter_description>
+</parameter>
+</parameters>
+<return> the id of event source.
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_ascii_formatd">
+<description>
+Converts a #gdouble to a string, using the &apos;.&apos; as
+decimal point. To format the number you pass in
+a printf()-style format string. Allowed conversion
+specifiers are &apos;e&apos;, &apos;E&apos;, &apos;f&apos;, &apos;F&apos;, &apos;g&apos; and &apos;G&apos;.
+
+If you just want to want to serialize the value into a
+string, use g_ascii_dtostr().
+
+
+</description>
+<parameters>
+<parameter name="buffer">
+<parameter_description> A buffer to place the resulting string in
+</parameter_description>
+</parameter>
+<parameter name="buf_len">
+<parameter_description> The length of the buffer.
+</parameter_description>
+</parameter>
+<parameter name="format">
+<parameter_description> The printf()-style format to use for the
+code to use for converting.
+</parameter_description>
+</parameter>
+<parameter name="d">
+<parameter_description> The #gdouble to convert
+</parameter_description>
+</parameter>
+</parameters>
+<return> The pointer to the buffer with the converted string.
+</return>
+</function>
+
+<function name="g_io_channel_set_buffer_size">
+<description>
+Sets the buffer size.
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel
+</parameter_description>
+</parameter>
+<parameter name="size">
+<parameter_description> the size of the buffer. 0 == pick a good size
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_find_program_in_path">
+<description>
+Locates the first executable named @program in the user&apos;s path, in the
+same way that execvp() would locate it. Returns an allocated string
+with the absolute path name, or %NULL if the program is not found in
+the path. If @program is already an absolute path, returns a copy of
+@program if @program exists and is executable, and %NULL otherwise.
+
+On Windows, if @program does not have a file type suffix, tries
+with the suffixes .exe, .cmd, .bat and .com, and the suffixes in
+the &amp;lt;envar&amp;gt;PATHEXT&amp;lt;/envar&amp;gt; environment variable.
+
+On Windows, it looks for the file in the same way as CreateProcess()
+would. This means first in the directory where the executing
+program was loaded from, then in the current directory, then in the
+Windows 32-bit system directory, then in the Windows directory, and
+finally in the directories in the &amp;lt;envar&amp;gt;PATH&amp;lt;/envar&amp;gt; environment
+variable. If the program is found, the return value contains the
+full name including the type suffix.
+
+
+</description>
+<parameters>
+<parameter name="program">
+<parameter_description> a program name in the GLib file name encoding
+</parameter_description>
+</parameter>
+</parameters>
+<return> absolute path, or %NULL
+</return>
+</function>
+
+<function name="g_hash_table_new_full">
+<description>
+Creates a new #GHashTable like g_hash_table_new() and allows to specify
+functions to free the memory allocated for the key and value that get
+called when removing the entry from the #GHashTable.
+
+
+</description>
+<parameters>
+<parameter name="hash_func">
+<parameter_description> a function to create a hash value from a key.
+</parameter_description>
+</parameter>
+<parameter name="key_equal_func">
+<parameter_description> a function to check two keys for equality.
+</parameter_description>
+</parameter>
+<parameter name="key_destroy_func">
+<parameter_description> a function to free the memory allocated for the key
+used when removing the entry from the #GHashTable or %NULL if you
+don&apos;t want to supply such a function.
+</parameter_description>
+</parameter>
+<parameter name="value_destroy_func">
+<parameter_description> a function to free the memory allocated for the
+value used when removing the entry from the #GHashTable or %NULL if
+you don&apos;t want to supply such a function.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a new #GHashTable.
+</return>
+</function>
+
+<function name="g_idle_add">
+<description>
+Adds a function to be called whenever there are no higher priority
+events pending to the default main loop. The function is given the
+default idle priority, #G_PRIORITY_DEFAULT_IDLE. If the function
+returns %FALSE it is automatically removed from the list of event
+sources and will not be called again.
+
+
+</description>
+<parameters>
+<parameter name="function">
+<parameter_description> function to call
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> data to pass to @function.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the id of the event source.
+</return>
+</function>
+
+<function name="g_random_double">
+<description>
+Returns a random #gdouble equally distributed over the range [0..1).
+
+
+</description>
+<parameters>
+</parameters>
+<return> A random number.
+</return>
+</function>
+
+<function name="g_markup_printf_escaped">
+<description>
+Formats arguments according to @format, escaping
+all string and character arguments in the fashion
+of g_markup_escape_text(). This is useful when you
+want to insert literal strings into XML-style markup
+output, without having to worry that the strings
+might themselves contain markup.
+
+&amp;lt;informalexample&amp;gt;&amp;lt;programlisting&amp;gt;
+const char *store = &quot;Fortnum &amp;amp; Mason&quot;;
+const char *item = &quot;Tea&quot;;
+char *output;
+&amp;nbsp;
+output = g_markup_printf_escaped (&quot;&amp;lt;purchase&amp;gt;&quot;
+&quot;&amp;lt;store&amp;gt;&amp;percnt;s&amp;lt;/store&amp;gt;&quot;
+&quot;&amp;lt;item&amp;gt;&amp;percnt;s&amp;lt;/item&amp;gt;&quot;
+&quot;&amp;lt;/purchase&amp;gt;&quot;,
+store, item);
+&amp;lt;/programlisting&amp;gt;&amp;lt;/informalexample&amp;gt;
+
+
+</description>
+<parameters>
+<parameter name="format">
+<parameter_description> printf() style format string
+</parameter_description>
+</parameter>
+<parameter name="Varargs">
+<parameter_description> the arguments to insert in the format string
+</parameter_description>
+</parameter>
+</parameters>
+<return> newly allocated result from formatting
+operation. Free with g_free().
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_key_file_new">
+<description>
+Creates a new empty #GKeyFile object. Use g_key_file_load_from_file(),
+g_key_file_load_from_data() or g_key_file_load_from_data_dirs() to
+read an existing key file.
+
+
+</description>
+<parameters>
+</parameters>
+<return> an empty #GKeyFile.
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_main_context_unref">
+<description>
+Decreases the reference count on a #GMainContext object by one. If
+the result is zero, free the context and free all associated memory.
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMainContext
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_listenv">
+<description>
+Gets the names of all variables set in the environment.
+
+
+</description>
+<parameters>
+</parameters>
+<return> a %NULL-terminated list of strings which must be freed
+with g_strfreev().
+
+Since: 2.8
+</return>
+</function>
+
+<function name="g_random_int">
+<description>
+Return a random #guint32 equally distributed over the range
+[0..2^32-1].
+
+
+</description>
+<parameters>
+</parameters>
+<return> A random number.
+</return>
+</function>
+
+<function name="g_get_current_time">
+<description>
+Equivalent to the UNIX gettimeofday() function, but portable.
+
+</description>
+<parameters>
+<parameter name="result">
+<parameter_description> #GTimeVal structure in which to store current time.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_unichar_break_type">
+<description>
+Determines the break type of @c. @c should be a Unicode character
+(to derive a character from UTF-8 encoded text, use
+g_utf8_get_char()). The break type is used to find word and line
+breaks (&quot;text boundaries&quot;), Pango implements the Unicode boundary
+resolution algorithms and normally you would use a function such
+as pango_break() instead of caring about break types yourself.
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> the break type of @c
+</return>
+</function>
+
+<function name="g_hash_table_steal">
+<description>
+Removes a key and its associated value from a #GHashTable without
+calling the key and value destroy functions.
+
+
+</description>
+<parameters>
+<parameter name="hash_table">
+<parameter_description> a #GHashTable.
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> the key to remove.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the key was found and removed from the #GHashTable.
+</return>
+</function>
+
+<function name="g_source_set_callback_indirect">
+<description>
+Sets the callback function storing the data as a refcounted callback
+&quot;object&quot;. This is used internally. Note that calling
+g_source_set_callback_indirect() assumes
+an initial reference count on @callback_data, and thus
+@callback_funcs-&amp;gt;unref will eventually be called once more
+than @callback_funcs-&amp;gt;ref.
+
+</description>
+<parameters>
+<parameter name="source">
+<parameter_description> the source
+</parameter_description>
+</parameter>
+<parameter name="callback_data">
+<parameter_description> pointer to callback data &quot;object&quot;
+</parameter_description>
+</parameter>
+<parameter name="callback_funcs">
+<parameter_description> functions for reference counting @callback_data
+and getting the callback and data
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_option_context_new">
+<description>
+Creates a new option context.
+
+
+</description>
+<parameters>
+<parameter name="parameter_string">
+<parameter_description> a string which is displayed in
+the first line of &amp;lt;option&amp;gt;--help&amp;lt;/option&amp;gt; output, after
+&amp;lt;literal&amp;gt;&amp;lt;replaceable&amp;gt;programname&amp;lt;/replaceable&amp;gt; [OPTION...]&amp;lt;/literal&amp;gt;
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly created #GOptionContext, which must be
+freed with g_option_context_free() after use.
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_queue_push_tail">
+<description>
+Adds a new element at the tail of the queue.
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue.
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> the data for the new element.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_access">
+<description>
+A wrapper for the POSIX access() function. This function is used to
+test a pathname for one or several of read, write or execute
+permissions, or just existence. On Windows, the underlying access()
+function in the C library only checks the READONLY attribute, and
+does not look at the ACL at all. Software that needs to handle file
+permissions on Windows more exactly should use the Win32 API.
+
+See the C library manual for more details about access().
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> a pathname in the GLib file name encoding (UTF-8 on Windows)
+</parameter_description>
+</parameter>
+<parameter name="mode">
+<parameter_description> as in access()
+</parameter_description>
+</parameter>
+</parameters>
+<return> zero if the pathname refers to an existing file system
+object that has all the tested permissions, or -1 otherwise or on
+error.
+
+Since: 2.8
+</return>
+</function>
+
+<function name="g_key_file_has_group">
+<description>
+Looks whether the key file has the group @group_name.
+
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @group_name is a part of @key_file, %FALSE
+otherwise.
+Since: 2.6
+</return>
+</function>
+
+<function name="g_memmove">
+<description>
+Copies a block of memory @len bytes long, from @src to @dest.
+The source and destination areas may overlap.
+
+In order to use this function, you must include
+&amp;lt;filename&amp;gt;string.h&amp;lt;/filename&amp;gt; yourself, because this macro will
+typically simply resolve to memmove() and GLib does not include
+&amp;lt;filename&amp;gt;string.h&amp;lt;/filename&amp;gt; for you.
+
+</description>
+<parameters>
+<parameter name="dest">
+<parameter_description> the destination address to copy the bytes to.
+</parameter_description>
+</parameter>
+<parameter name="src">
+<parameter_description> the source address to copy the bytes from.
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the number of bytes to copy.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_queue_pop_head">
+<description>
+Removes the first element of the queue.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the data of the first element in the queue, or %NULL if the queue
+is empty.
+</return>
+</function>
+
+<function name="g_queue_peek_head">
+<description>
+Returns the first element of the queue.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the data of the first element in the queue, or %NULL if the queue
+is empty.
+</return>
+</function>
+
+<function name="g_option_group_set_parse_hooks">
+<description>
+Associates two functions with @group which will be called
+from g_option_context_parse() before the first option is parsed
+and after the last option has been parsed, respectively.
+
+Note that the user data to be passed to @pre_parse_func and
+@post_parse_func can be specified when constructing the group
+with g_option_group_new().
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="group">
+<parameter_description> a #GOptionGroup
+</parameter_description>
+</parameter>
+<parameter name="pre_parse_func">
+<parameter_description> a function to call before parsing, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="post_parse_func">
+<parameter_description> a function to call after parsing, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_io_channel_set_flags">
+<description>
+Sets the (writeable) flags in @channel to (@flags &amp; %G_IO_CHANNEL_SET_MASK).
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel.
+</parameter_description>
+</parameter>
+<parameter name="flags">
+<parameter_description> the flags to set on the IO channel.
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> A location to return an error of type #GIOChannelError.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the status of the operation.
+</return>
+</function>
+
+<function name="g_markup_parse_context_new">
+<description>
+Creates a new parse context. A parse context is used to parse
+marked-up documents. You can feed any number of documents into
+a context, as long as no errors occur; once an error occurs,
+the parse context can&apos;t continue to parse text (you have to free it
+and create a new parse context).
+
+
+</description>
+<parameters>
+<parameter name="parser">
+<parameter_description> a #GMarkupParser
+</parameter_description>
+</parameter>
+<parameter name="flags">
+<parameter_description> one or more #GMarkupParseFlags
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> user data to pass to #GMarkupParser functions
+</parameter_description>
+</parameter>
+<parameter name="user_data_dnotify">
+<parameter_description> user data destroy notifier called when the parse context is freed
+</parameter_description>
+</parameter>
+</parameters>
+<return> a new #GMarkupParseContext
+</return>
+</function>
+
+<function name="g_tree_destroy">
+<description>
+Destroys the #GTree. If keys and/or values are dynamically allocated, you
+should either free them first or create the #GTree using g_tree_new_full().
+In the latter case the destroy functions you supplied will be called on
+all keys and values before destroying the #GTree.
+
+</description>
+<parameters>
+<parameter name="tree">
+<parameter_description> a #GTree.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_dir_close">
+<description>
+Closes the directory and deallocates all related resources.
+
+</description>
+<parameters>
+<parameter name="dir">
+<parameter_description> a #GDir* created by g_dir_open()
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_queue_push_nth">
+<description>
+Inserts a new element into @queue at the given position
+
+Since: 2.4
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> the data for the new element
+</parameter_description>
+</parameter>
+<parameter name="n">
+<parameter_description> the position to insert the new element. If @n is negative or
+larger than the number of elements in the @queue, the element is
+added to the end of the queue.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_queue_insert_after">
+<description>
+Inserts @data into @queue after @sibling
+
+@sibling must be part of @queue
+
+Since: 2.4
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+<parameter name="sibling">
+<parameter_description> a #GList link that &amp;lt;emphasis&amp;gt;must&amp;lt;/emphasis&amp;gt; be part of @queue
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> the data to insert
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_unichar_isalnum">
+<description>
+Determines whether a character is alphanumeric.
+Given some UTF-8 text, obtain a character value
+with g_utf8_get_char().
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @c is an alphanumeric character
+</return>
+</function>
+
+<function name="g_main_context_new">
+<description>
+Creates a new #GMainContext strcuture
+
+
+</description>
+<parameters>
+</parameters>
+<return> the new #GMainContext
+</return>
+</function>
+
+<function name="g_vsnprintf">
+<description>
+A safer form of the standard vsprintf() function. The output is guaranteed
+to not exceed @n characters (including the terminating nul character), so
+it is easy to ensure that a buffer overflow cannot occur.
+
+See also g_strdup_vprintf().
+
+In versions of GLib prior to 1.2.3, this function may return -1 if the
+output was truncated, and the truncated string may not be nul-terminated.
+In versions prior to 1.3.12, this function returns the length of the output
+string.
+
+The return value of g_vsnprintf() conforms to the vsnprintf() function
+as standardized in ISO C99. Note that this is different from traditional
+vsnprintf(), which returns the length of the output string.
+
+The format string may contain positional parameters, as specified in
+the Single Unix Specification.
+
+
+</description>
+<parameters>
+<parameter name="string">
+<parameter_description> the buffer to hold the output.
+</parameter_description>
+</parameter>
+<parameter name="n">
+<parameter_description> the maximum number of characters to produce (including the
+terminating nul character).
+</parameter_description>
+</parameter>
+<parameter name="format">
+<parameter_description> a standard printf() format string, but notice
+&amp;lt;link linkend=&quot;string-precision&quot;&amp;gt;string precision pitfalls&amp;lt;/link&amp;gt;.
+</parameter_description>
+</parameter>
+<parameter name="args">
+<parameter_description> the list of arguments to insert in the output.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the number of characters which would be produced if the buffer
+was large enough.
+</return>
+</function>
+
+<function name="g_thread_pool_new">
+<description>
+This function creates a new thread pool.
+
+Whenever you call g_thread_pool_push(), either a new thread is
+created or an unused one is reused. At most @max_threads threads
+are running concurrently for this thread pool. @max_threads = -1
+allows unlimited threads to be created for this thread pool. The
+newly created or reused thread now executes the function @func with
+the two arguments. The first one is the parameter to
+g_thread_pool_push() and the second one is @user_data.
+
+The parameter @exclusive determines, whether the thread pool owns
+all threads exclusive or whether the threads are shared
+globally. If @exclusive is %TRUE, @max_threads threads are started
+immediately and they will run exclusively for this thread pool until
+it is destroyed by g_thread_pool_free(). If @exclusive is %FALSE,
+threads are created, when needed and shared between all
+non-exclusive thread pools. This implies that @max_threads may not
+be -1 for exclusive thread pools.
+
+@error can be %NULL to ignore errors, or non-%NULL to report
+errors. An error can only occur when @exclusive is set to %TRUE and
+not all @max_threads threads could be created.
+
+
+</description>
+<parameters>
+<parameter name="func">
+<parameter_description> a function to execute in the threads of the new thread pool
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> user data that is handed over to @func every time it
+is called
+</parameter_description>
+</parameter>
+<parameter name="max_threads">
+<parameter_description> the maximal number of threads to execute concurrently in
+the new thread pool, -1 means no limit
+</parameter_description>
+</parameter>
+<parameter name="exclusive">
+<parameter_description> should this thread pool be exclusive?
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for error
+</parameter_description>
+</parameter>
+</parameters>
+<return> the new #GThreadPool
+</return>
+</function>
+
+<function name="g_strtod">
+<description>
+Converts a string to a #gdouble value.
+It calls the standard strtod() function to handle the conversion, but
+if the string is not completely converted it attempts the conversion
+again with g_ascii_strtod(), and returns the best match.
+
+This function should seldomly be used. The normal situation when reading
+numbers not for human consumption is to use g_ascii_strtod(). Only when
+you know that you must expect both locale formatted and C formatted numbers
+should you use this. Make sure that you don&apos;t pass strings such as comma
+separated lists of values, since the commas may be interpreted as a decimal
+point in some locales, causing unexpected results.
+
+
+</description>
+<parameters>
+<parameter name="nptr">
+<parameter_description> the string to convert to a numeric value.
+</parameter_description>
+</parameter>
+<parameter name="endptr">
+<parameter_description> if non-%NULL, it returns the character after
+the last character used in the conversion.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the #gdouble value.
+</return>
+</function>
+
+<function name="g_get_system_data_dirs">
+<description>
+Returns an ordered list of base directories in which to access
+system-wide application data.
+
+On UNIX platforms this is determined using the mechanisms described in
+the &amp;lt;ulink url=&quot;http://www.freedesktop.org/Standards/basedir-spec&quot;&amp;gt;
+XDG Base Directory Specification&amp;lt;/ulink&amp;gt;
+
+On Windows the first elements in the list are the Application Data
+and Documents folders for All Users. (These can be determined only
+on Windows 2000 or later and are not present in the list on other
+Windows versions.) See documentation for CSIDL_COMMON_APPDATA and
+CSIDL_COMMON_DOCUMENTS.
+
+Then follows the &quot;share&quot; subfolder in the installation folder for
+the package containing the DLL that calls this function, if it can
+be determined.
+
+Finally the list contains the &quot;share&quot; subfolder in the installation
+folder for GLib, and in the installation folder for the package the
+application&apos;s .exe file belongs to.
+
+The installation folders above are determined by looking up the
+folder where the module (DLL or EXE) in question is located. If the
+folder&apos;s name is &quot;bin&quot;, its parent is used, otherwise the folder
+itself.
+
+Note that on Windows the returned list can vary depending on where
+this function is called.
+
+
+</description>
+<parameters>
+</parameters>
+<return> a %NULL-terminated array of strings owned by GLib that must
+not be modified or freed.
+Since: 2.6
+</return>
+</function>
+
+<function name="iconv_cache_expire_unused">
+<description>
+Expires as many unused cache buckets as it needs to in order to get
+the total number of buckets &amp;lt; ICONV_CACHE_SIZE.
+
+</description>
+<parameters>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_string_append_unichar">
+<description>
+Converts a Unicode character into UTF-8, and appends it
+to the string.
+
+
+</description>
+<parameters>
+<parameter name="string">
+<parameter_description> a #GString
+</parameter_description>
+</parameter>
+<parameter name="wc">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> @string
+</return>
+</function>
+
+<function name="g_option_context_get_ignore_unknown_options">
+<description>
+Returns whether unknown options are ignored or not. See
+g_option_context_set_ignore_unknown_options().
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GOptionContext
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if unknown options are ignored.
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_utf8_offset_to_pointer">
+<description>
+Converts from an integer character offset to a pointer to a position
+within the string.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a UTF-8 encoded string
+</parameter_description>
+</parameter>
+<parameter name="offset">
+<parameter_description> a character offset within @str
+</parameter_description>
+</parameter>
+</parameters>
+<return> the resulting pointer
+</return>
+</function>
+
+<function name="g_io_channel_get_encoding">
+<description>
+Gets the encoding for the input/output of the channel. The internal
+encoding is always UTF-8. The encoding %NULL makes the
+channel safe for binary data.
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel
+</parameter_description>
+</parameter>
+</parameters>
+<return> A string containing the encoding, this string is
+owned by GLib and must not be freed.
+</return>
+</function>
+
+<function name="g_key_file_get_locale_string">
+<description>
+Returns the value associated with @key under @group_name
+translated in the given @locale if available. If @locale is
+%NULL then the current locale is assumed.
+
+If @key cannot be found then %NULL is returned and @error is set to
+#G_KEY_FILE_ERROR_KEY_NOT_FOUND. If the value associated
+with @key cannot be interpreted or no suitable translation can
+be found then the untranslated value is returned.
+
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="locale">
+<parameter_description> a locale or %NULL
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly allocated string or %NULL if the specified
+key cannot be found.
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_strstr_len">
+<description>
+Searches the string @haystack for the first occurrence
+of the string @needle, limiting the length of the search
+to @haystack_len.
+
+
+</description>
+<parameters>
+<parameter name="haystack">
+<parameter_description> a string.
+</parameter_description>
+</parameter>
+<parameter name="haystack_len">
+<parameter_description> the maximum length of @haystack.
+</parameter_description>
+</parameter>
+<parameter name="needle">
+<parameter_description> the string to search for.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to the found occurrence, or
+%NULL if not found.
+</return>
+</function>
+
+<function name="g_chmod">
+<description>
+A wrapper for the POSIX chmod() function. The chmod() function is
+used to set the permissions of a file system object. Note that on
+Windows the file protection mechanism is not at all POSIX-like, and
+the underlying chmod() function in the C library just sets or
+clears the READONLY attribute. It does not touch any ACL. Software
+that needs to manage file permissions on Windows exactly should
+use the Win32 API.
+
+See the C library manual for more details about chmod().
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> a pathname in the GLib file name encoding (UTF-8 on Windows)
+</parameter_description>
+</parameter>
+<parameter name="mode">
+<parameter_description> as in chmod()
+</parameter_description>
+</parameter>
+</parameters>
+<return> zero if the operation succeeded, -1 on error.
+
+Since: 2.8
+</return>
+</function>
+
+<function name="g_unichar_isxdigit">
+<description>
+Determines if a character is a hexidecimal digit.
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the character is a hexadecimal digit
+</return>
+</function>
+
+<function name="g_key_file_set_boolean">
+<description>
+Associates a new boolean value with @key under @group_name.
+If @key cannot be found then it is created.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="value">
+<parameter_description> %TRUE or %FALSE
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_int_hash">
+<description>
+Converts a pointer to a #gint to a hash value.
+It can be passed to g_hash_table_new() as the @hash_func parameter,
+when using pointers to integers values as keys in a #GHashTable.
+
+
+</description>
+<parameters>
+<parameter name="v">
+<parameter_description> a pointer to a #gint key
+</parameter_description>
+</parameter>
+</parameters>
+<return> a hash value corresponding to the key.
+</return>
+</function>
+
+<function name="g_ucs4_to_utf8">
+<description>
+Convert a string from a 32-bit fixed width representation as UCS-4.
+to UTF-8. The result will be terminated with a 0 byte.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a UCS-4 encoded string
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the maximum length of @str to use. If @len &amp;lt; 0, then
+the string is terminated with a 0 character.
+</parameter_description>
+</parameter>
+<parameter name="items_read">
+<parameter_description> location to store number of characters read read, or %NULL.
+</parameter_description>
+</parameter>
+<parameter name="items_written">
+<parameter_description> location to store number of bytes written or %NULL.
+The value here stored does not include the trailing 0
+byte.
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> location to store the error occuring, or %NULL to ignore
+errors. Any of the errors in #GConvertError other than
+%G_CONVERT_ERROR_NO_CONVERSION may occur.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to a newly allocated UTF-8 string.
+This value must be freed with g_free(). If an
+error occurs, %NULL will be returned and
+@error set.
+</return>
+</function>
+
+<function name="g_completion_complete_utf8">
+<description>
+Attempts to complete the string @prefix using the #GCompletion target items.
+In contrast to g_completion_complete(), this function returns the largest common
+prefix that is a valid UTF-8 string, omitting a possible common partial
+character.
+
+You should use this function instead of g_completion_complete() if your
+items are UTF-8 strings.
+
+
+</description>
+<parameters>
+<parameter name="cmp">
+<parameter_description> the #GCompletion
+</parameter_description>
+</parameter>
+<parameter name="prefix">
+<parameter_description> the prefix string, typically used by the user, which is compared
+with each of the items
+</parameter_description>
+</parameter>
+<parameter name="new_prefix">
+<parameter_description> if non-%NULL, returns the longest prefix which is common to all
+items that matched @prefix, or %NULL if no items matched @prefix.
+This string should be freed when no longer needed.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the list of items whose strings begin with @prefix. This should
+not be changed.
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_utf8_to_utf16">
+<description>
+Convert a string from UTF-8 to UTF-16. A 0 word will be
+added to the result after the converted text.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a UTF-8 encoded string
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the maximum length of @str to use. If @len &amp;lt; 0, then
+the string is nul-terminated.
+</parameter_description>
+</parameter>
+<parameter name="items_read">
+<parameter_description> location to store number of bytes read, or %NULL.
+If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will be
+returned in case @str contains a trailing partial
+character. If an error occurs then the index of the
+invalid input is stored here.
+</parameter_description>
+</parameter>
+<parameter name="items_written">
+<parameter_description> location to store number of words written, or %NULL.
+The value stored here does not include the trailing
+0 word.
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> location to store the error occuring, or %NULL to ignore
+errors. Any of the errors in #GConvertError other than
+%G_CONVERT_ERROR_NO_CONVERSION may occur.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to a newly allocated UTF-16 string.
+This value must be freed with g_free(). If an
+error occurs, %NULL will be returned and
+@error set.
+</return>
+</function>
+
+<function name="g_queue_push_nth_link">
+<description>
+Inserts @link into @queue at the given position.
+
+Since: 2.4
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+<parameter name="n">
+<parameter_description> the position to insert the link. If this is negative or larger than
+the number of elements in @queue, the link is added to the end of
+@queue.
+</parameter_description>
+</parameter>
+<parameter name="link_">
+<parameter_description> the link to add to @queue
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_queue_peek_tail">
+<description>
+Returns the last element of the queue.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the data of the last element in the queue, or %NULL if the queue
+is empty.
+</return>
+</function>
+
+<function name="g_queue_push_head">
+<description>
+Adds a new element at the head of the queue.
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue.
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> the data for the new element.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_async_queue_unref">
+<description>
+Decreases the reference count of the asynchronous @queue by 1. If
+the reference count went to 0, the @queue will be destroyed and the
+memory allocated will be freed. So you are not allowed to use the
+@queue afterwards, as it might have disappeared. You do not need to
+hold the lock to call this function.
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GAsyncQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_child_watch_add_full">
+<description>
+Sets a function to be called when the child indicated by @pid exits, at a
+default priority, #G_PRIORITY_DEFAULT.
+
+Note that on platforms where #GPid must be explicitely closed
+(see g_spawn_close_pid()) @pid must not be closed while the
+source is still active. Typically, you will want to call
+g_spawn_close_pid() in the callback function for the source.
+
+GLib supports only a single callback per process id.
+
+
+</description>
+<parameters>
+<parameter name="priority">
+<parameter_description> the priority of the idle source. Typically this will be in the
+range between #G_PRIORITY_DEFAULT_IDLE and #G_PRIORITY_HIGH_IDLE.
+</parameter_description>
+</parameter>
+<parameter name="pid">
+<parameter_description> process id of a child process to watch
+</parameter_description>
+</parameter>
+<parameter name="function">
+<parameter_description> function to call
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> data to pass to @function
+</parameter_description>
+</parameter>
+<parameter name="notify">
+<parameter_description> function to call when the idle is removed, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> the id of event source.
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_option_context_free">
+<description>
+Frees context and all the groups which have been
+added to it.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GOptionContext
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_io_channel_seek">
+<description>
+Sets the current position in the #GIOChannel, similar to the standard library
+function fseek().
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel.
+</parameter_description>
+</parameter>
+<parameter name="offset">
+<parameter_description> an offset, in bytes, which is added to the position specified by @type
+</parameter_description>
+</parameter>
+<parameter name="type">
+<parameter_description> the position in the file, which can be %G_SEEK_CUR (the current
+position), %G_SEEK_SET (the start of the file), or %G_SEEK_END (the end of the
+file).
+</parameter_description>
+</parameter>
+</parameters>
+<return> %G_IO_ERROR_NONE if the operation was successful.
+
+Deprecated: Use g_io_channel_seek_position() instead.
+</return>
+</function>
+
+<function name="g_utf8_strdown">
+<description>
+Converts all Unicode characters in the string that have a case
+to lowercase. The exact manner that this is done depends
+on the current locale, and may result in the number of
+characters in the string changing.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a UTF-8 encoded string
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> length of @str, in bytes, or -1 if @str is nul-terminated.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly allocated string, with all characters
+converted to lowercase.
+</return>
+</function>
+
+<function name="g_stat">
+<description>
+A wrapper for the POSIX stat() function. The stat() function
+returns information about a file.
+
+See the C library manual for more details about stat().
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> a pathname in the GLib file name encoding (UTF-8 on Windows)
+</parameter_description>
+</parameter>
+<parameter name="buf">
+<parameter_description> a pointer to a &amp;lt;structname&amp;gt;stat&amp;lt;/structname&amp;gt; struct, which
+will be filled with the file information
+</parameter_description>
+</parameter>
+</parameters>
+<return> 0 if the information was successfully retrieved, -1 if an error
+occurred
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_filename_display_basename">
+<description>
+Returns the display basename for the particular filename, guaranteed
+to be valid UTF-8. The display name might not be identical to the filename,
+for instance there might be problems converting it to UTF-8, and some files
+can be translated in the display
+
+You must pass the whole absolute pathname to this functions so that
+translation of well known locations can be done.
+
+This function is preferred over g_filename_display_name() if you know the
+whole path, as it allows translation.
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> an absolute pathname in the GLib file name encoding
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly allocated string containing
+a rendition of the basename of the filename in valid UTF-8
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_datalist_set_flags">
+<description>
+Turns on flag values for a data list. This function is used
+to keep a small number of boolean flags in an object with
+a data list without using any additional space. It is
+not generally useful except in circumstances where space
+is very tight. (It is used in the base #GObject type, for
+example.)
+
+</description>
+<parameters>
+<parameter name="datalist">
+<parameter_description> pointer to the location that holds a list
+</parameter_description>
+</parameter>
+<parameter name="flags">
+<parameter_description> the flags to turn on. The values of the flags are
+restricted by %G_DATALIST_FLAGS_MASK (currently
+3; giving two possible boolean flags).
+A value for @flags that doesn&apos;t fit within the mask is
+an error.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_utf8_validate">
+<description>
+Validates UTF-8 encoded text. @str is the text to validate;
+if @str is nul-terminated, then @max_len can be -1, otherwise
+@max_len should be the number of bytes to validate.
+If @end is non-%NULL, then the end of the valid range
+will be stored there (i.e. the start of the first invalid
+character if some bytes were invalid, or the end of the text
+being validated otherwise).
+
+Note that g_utf8_validate() returns %FALSE if @max_len is
+positive and NUL is met before @max_len bytes have been read.
+
+Returns %TRUE if all of @str was valid. Many GLib and GTK+
+routines &amp;lt;emphasis&amp;gt;require&amp;lt;/emphasis&amp;gt; valid UTF-8 as input;
+so data read from a file or the network should be checked
+with g_utf8_validate() before doing anything else with it.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a pointer to character data
+</parameter_description>
+</parameter>
+<parameter name="max_len">
+<parameter_description> max bytes to validate, or -1 to go until NUL
+</parameter_description>
+</parameter>
+<parameter name="end">
+<parameter_description> return location for end of valid data
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the text was valid UTF-8
+</return>
+</function>
+
+<function name="iconv_cache_bucket_new">
+<description>
+Creates a new cache bucket, inserts it into the cache and
+increments the cache size.
+
+
+</description>
+<parameters>
+<parameter name="key">
+<parameter_description> cache key
+</parameter_description>
+</parameter>
+<parameter name="cd">
+<parameter_description> iconv descriptor
+</parameter_description>
+</parameter>
+</parameters>
+<return>a pointer to the newly allocated cache bucket.
+</return>
+</function>
+
+<function name="g_tree_new">
+<description>
+Creates a new #GTree.
+
+
+</description>
+<parameters>
+<parameter name="key_compare_func">
+<parameter_description> the function used to order the nodes in the #GTree.
+It should return values similar to the standard strcmp() function -
+0 if the two arguments are equal, a negative value if the first argument
+comes before the second, or a positive value if the first argument comes
+after the second.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a new #GTree.
+</return>
+</function>
+
+<function name="g_utf8_collate_key">
+<description>
+Converts a string into a collation key that can be compared
+with other collation keys produced by the same function using
+strcmp().
+The results of comparing the collation keys of two strings
+with strcmp() will always be the same as
+comparing the two original keys with g_utf8_collate().
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a UTF-8 encoded string.
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> length of @str, in bytes, or -1 if @str is nul-terminated.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly allocated string. This string should
+be freed with g_free() when you are done with it.
+</return>
+</function>
+
+<function name="g_key_file_get_integer">
+<description>
+Returns the value associated with @key under @group_name as an
+integer. If @group_name is %NULL, the start_group is used.
+
+If @key cannot be found then the return value is undefined and
+@error is set to #G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if
+the value associated with @key cannot be interpreted as an integer
+then the return value is also undefined and @error is set to
+#G_KEY_FILE_ERROR_INVALID_VALUE.
+
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError
+</parameter_description>
+</parameter>
+</parameters>
+<return> the value associated with the key as an integer.
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_unichar_get_mirror_char">
+<description>
+In Unicode, some characters are &amp;lt;firstterm&amp;gt;mirrored&amp;lt;/firstterm&amp;gt;. This
+means that their images are mirrored horizontally in text that is laid
+out from right to left. For instance, &quot;(&quot; would become its mirror image,
+&quot;)&quot;, in right-to-left text.
+
+If @ch has the Unicode mirrored property and there is another unicode
+character that typically has a glyph that is the mirror image of @ch&apos;s
+glyph, puts that character in the address pointed to by @mirrored_ch.
+
+
+</description>
+<parameters>
+<parameter name="ch">
+<parameter_description> a unicode character
+</parameter_description>
+</parameter>
+<parameter name="mirrored_ch">
+<parameter_description> location to store the mirrored character
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @ch has a mirrored character and @mirrored_ch is
+filled in, %FALSE otherwise
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_build_filename">
+<description>
+Creates a filename from a series of elements using the correct
+separator for filenames.
+
+On Unix, this function behaves identically to &amp;lt;literal&amp;gt;g_build_path
+(G_DIR_SEPARATOR_S, first_element, ....)&amp;lt;/literal&amp;gt;.
+
+On Windows, it takes into account that either the backslash
+(&amp;lt;literal&amp;gt;\&amp;lt;/literal&amp;gt; or slash (&amp;lt;literal&amp;gt;/&amp;lt;/literal&amp;gt;) can be used
+as separator in filenames, but otherwise behaves as on Unix. When
+file pathname separators need to be inserted, the one that last
+previously occurred in the parameters (reading from left to right)
+is used.
+
+No attempt is made to force the resulting filename to be an absolute
+path. If the first element is a relative path, the result will
+be a relative path.
+
+
+</description>
+<parameters>
+<parameter name="first_element">
+<parameter_description> the first element in the path
+</parameter_description>
+</parameter>
+<parameter name="Varargs">
+<parameter_description> remaining elements in path, terminated by %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly-allocated string that must be freed with g_free().
+</return>
+</function>
+
+<function name="g_convert_with_iconv">
+<description>
+Converts a string from one character set to another.
+
+Note that you should use g_iconv() for streaming
+conversions&amp;lt;footnote id=&quot;streaming-state&quot;&amp;gt;
+&amp;lt;para&amp;gt;
+Despite the fact that @byes_read can return information about partial
+characters, the &amp;lt;literal&amp;gt;g_convert_...&amp;lt;/literal&amp;gt; functions
+are not generally suitable for streaming. If the underlying converter
+being used maintains internal state, then this won&apos;t be preserved
+across successive calls to g_convert(), g_convert_with_iconv() or
+g_convert_with_fallback(). (An example of this is the GNU C converter
+for CP1255 which does not emit a base character until it knows that
+the next character is not a mark that could combine with the base
+character.)
+&amp;lt;/para&amp;gt;
+&amp;lt;/footnote&amp;gt;.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> the string to convert
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the length of the string, or -1 if the string is
+nul-terminated&amp;lt;footnoteref linkend=&quot;nul-unsafe&quot;/&amp;gt;.
+</parameter_description>
+</parameter>
+<parameter name="converter">
+<parameter_description> conversion descriptor from g_iconv_open()
+</parameter_description>
+</parameter>
+<parameter name="bytes_read">
+<parameter_description> location to store the number of bytes in the
+input string that were successfully converted, or %NULL.
+Even if the conversion was successful, this may be
+less than @len if there were partial characters
+at the end of the input. If the error
+#G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value
+stored will the byte offset after the last valid
+input sequence.
+</parameter_description>
+</parameter>
+<parameter name="bytes_written">
+<parameter_description> the number of bytes stored in the output buffer (not
+including the terminating nul).
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> location to store the error occuring, or %NULL to ignore
+errors. Any of the errors in #GConvertError may occur.
+</parameter_description>
+</parameter>
+</parameters>
+<return> If the conversion was successful, a newly allocated
+nul-terminated string, which must be freed with
+g_free(). Otherwise %NULL and @error will be set.
+</return>
+</function>
+
+<function name="g_strdupv">
+<description>
+Copies %NULL-terminated array of strings. The copy is a deep copy;
+the new array should be freed by first freeing each string, then
+the array itself. g_strfreev() does this for you. If called
+on a %NULL value, g_strdupv() simply returns %NULL.
+
+
+</description>
+<parameters>
+<parameter name="str_array">
+<parameter_description> %NULL-terminated array of strings.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a new %NULL-terminated array of strings.
+</return>
+</function>
+
+<function name="g_ascii_dtostr">
+<description>
+Converts a #gdouble to a string, using the &apos;.&apos; as
+decimal point.
+
+This functions generates enough precision that converting
+the string back using g_ascii_strtod() gives the same machine-number
+(on machines with IEEE compatible 64bit doubles). It is
+guaranteed that the size of the resulting string will never
+be larger than @G_ASCII_DTOSTR_BUF_SIZE bytes.
+
+
+</description>
+<parameters>
+<parameter name="buffer">
+<parameter_description> A buffer to place the resulting string in
+</parameter_description>
+</parameter>
+<parameter name="buf_len">
+<parameter_description> The length of the buffer.
+</parameter_description>
+</parameter>
+<parameter name="d">
+<parameter_description> The #gdouble to convert
+</parameter_description>
+</parameter>
+</parameters>
+<return> The pointer to the buffer with the converted string.
+</return>
+</function>
+
+<function name="glib_check_version">
+<description>
+Checks that the GLib library in use is compatible with the
+given version. Generally you would pass in the constants
+#GLIB_MAJOR_VERSION, #GLIB_MINOR_VERSION, #GLIB_MICRO_VERSION
+as the three arguments to this function; that produces
+a check that the library in use is compatible with
+the version of GLib the application or module was compiled
+against.
+
+Compatibility is defined by two things: first the version
+of the running library is newer than the version
+@required_major.required_minor.@required_micro. Second
+the running library must be binary compatible with the
+version @required_major.required_minor.@required_micro
+(same major version.)
+
+
+</description>
+<parameters>
+<parameter name="required_major">
+<parameter_description> the required major version.
+</parameter_description>
+</parameter>
+<parameter name="required_minor">
+<parameter_description> the required major version.
+</parameter_description>
+</parameter>
+<parameter name="required_micro">
+<parameter_description> the required major version.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %NULL if the GLib library is compatible with the
+given version, or a string describing the version mismatch.
+The returned string is owned by GLib and must not be modified
+or freed.
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_io_channel_write">
+<description>
+Writes data to a #GIOChannel.
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel.
+</parameter_description>
+</parameter>
+<parameter name="buf">
+<parameter_description> the buffer containing the data to write.
+</parameter_description>
+</parameter>
+<parameter name="count">
+<parameter_description> the number of bytes to write.
+</parameter_description>
+</parameter>
+<parameter name="bytes_written">
+<parameter_description> the number of bytes actually written.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %G_IO_ERROR_NONE if the operation was successful.
+
+Deprecated: Use g_io_channel_write_chars() instead.
+</return>
+</function>
+
+<function name="g_key_file_load_from_data_dirs">
+<description>
+This function looks for a key file named @file in the paths
+returned from g_get_user_data_dir() and g_get_system_data_dirs(),
+loads the file into @key_file and returns the file&apos;s full path in
+@full_path. If the file could not be loaded then an %error is
+set to either a #GFileError or #GKeyFileError.
+
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> an empty #GKeyFile struct
+</parameter_description>
+</parameter>
+<parameter name="file">
+<parameter_description> a relative path to a filename to open and parse
+</parameter_description>
+</parameter>
+<parameter name="full_path">
+<parameter_description> return location for a string containing the full path
+of the file, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="flags">
+<parameter_description> flags from #GKeyFileFlags
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if a key file could be loaded, %FALSE othewise
+Since: 2.6
+</return>
+</function>
+
+<function name="g_main_context_find_source_by_user_data">
+<description>
+Finds a source with the given user data for the callback. If
+multiple sources exist with the same user data, the first
+one found will be returned.
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMainContext
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> the user_data for the callback.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the source, if one was found, otherwise %NULL
+</return>
+</function>
+
+<function name="g_queue_push_tail_link">
+<description>
+Adds a new element at the tail of the queue.
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue.
+</parameter_description>
+</parameter>
+<parameter name="link_">
+<parameter_description> a single #GList element, &amp;lt;emphasis&amp;gt;not&amp;lt;/emphasis&amp;gt; a list with
+more than one element.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_vsprintf">
+<description>
+An implementation of the standard vsprintf() function which supports
+positional parameters, as specified in the Single Unix Specification.
+
+
+</description>
+<parameters>
+<parameter name="string">
+<parameter_description> the buffer to hold the output.
+</parameter_description>
+</parameter>
+<parameter name="format">
+<parameter_description> a standard printf() format string, but notice
+&amp;lt;link linkend=&quot;string-precision&quot;&amp;gt;string precision pitfalls&amp;lt;/link&amp;gt;.
+</parameter_description>
+</parameter>
+<parameter name="args">
+<parameter_description> the list of arguments to insert in the output.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the number of characters printed.
+
+Since: 2.2
+</return>
+</function>
+
+<function name="g_async_queue_try_pop">
+<description>
+Tries to pop data from the @queue. If no data is available, %NULL is
+returned.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GAsyncQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return> data from the queue or %NULL, when no data is
+available immediately.
+</return>
+</function>
+
+<function name="g_spawn_async">
+<description>
+See g_spawn_async_with_pipes() for a full description; this function
+simply calls the g_spawn_async_with_pipes() without any pipes.
+
+
+</description>
+<parameters>
+<parameter name="working_directory">
+<parameter_description> child&apos;s current working directory, or %NULL to inherit parent&apos;s
+</parameter_description>
+</parameter>
+<parameter name="argv">
+<parameter_description> child&apos;s argument vector
+</parameter_description>
+</parameter>
+<parameter name="envp">
+<parameter_description> child&apos;s environment, or %NULL to inherit parent&apos;s
+</parameter_description>
+</parameter>
+<parameter name="flags">
+<parameter_description> flags from #GSpawnFlags
+</parameter_description>
+</parameter>
+<parameter name="child_setup">
+<parameter_description> function to run in the child just before exec()
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> user data for @child_setup
+</parameter_description>
+</parameter>
+<parameter name="child_pid">
+<parameter_description> return location for child process ID, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for error
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE on success, %FALSE if error is set
+</return>
+</function>
+
+<function name="g_win32_locale_filename_from_utf8">
+<description>
+Converts a filename from UTF-8 to the system codepage.
+
+On NT-based Windows, on NTFS file systems, file names are in
+Unicode. It is quite possible that Unicode file names contain
+characters not representable in the system codepage. (For instance,
+Greek or Cyrillic characters on Western European or US Windows
+installations, or various less common CJK characters on CJK Windows
+installations.)
+
+In such a case, and if the filename refers to an existing file, and
+the file system stores alternate short (8.3) names for directory
+entries, the short form of the filename is returned. Note that the
+&quot;short&quot; name might in fact be longer than the Unicode name if the
+Unicode name has very short pathname components containing
+non-ASCII characters. If no system codepage name for the file is
+possible, %NULL is returned.
+
+The return value is dynamically allocated and should be freed with
+g_free() when no longer needed.
+
+
+</description>
+<parameters>
+<parameter name="utf8filename">
+<parameter_description> a UTF-8 encoded filename.
+</parameter_description>
+</parameter>
+</parameters>
+<return> The converted filename, or %NULL on conversion
+failure and lack of short names.
+
+Since: 2.8
+</return>
+</function>
+
+<function name="g_io_channel_read_line_string">
+<description>
+Reads a line from a #GIOChannel, using a #GString as a buffer.
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel
+</parameter_description>
+</parameter>
+<parameter name="buffer">
+<parameter_description> a #GString into which the line will be written.
+If @buffer already contains data, the old data will
+be overwritten.
+</parameter_description>
+</parameter>
+<parameter name="terminator_pos">
+<parameter_description> location to store position of line terminator, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> a location to store an error of type #GConvertError
+or #GIOChannelError
+</parameter_description>
+</parameter>
+</parameters>
+<return> the status of the operation.
+</return>
+</function>
+
+<function name="g_set_error">
+<description>
+Does nothing if @err is %NULL; if @err is non-%NULL, then *@err must
+be %NULL. A new #GError is created and assigned to *@err.
+
+</description>
+<parameters>
+<parameter name="err">
+<parameter_description> a return location for a #GError, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="domain">
+<parameter_description> error domain
+</parameter_description>
+</parameter>
+<parameter name="code">
+<parameter_description> error code
+</parameter_description>
+</parameter>
+<parameter name="format">
+<parameter_description> printf()-style format
+</parameter_description>
+</parameter>
+<parameter name="Varargs">
+<parameter_description> args for @format
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_queue_peek_head_link">
+<description>
+Returns the first link in @queue
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+</parameters>
+<return> the first link in @queue, or %NULL if @queue is empty
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_random_set_seed">
+<description>
+Sets the seed for the global random number generator, which is used
+by the &amp;lt;function&amp;gt;g_random_*&amp;lt;/function&amp;gt; functions, to @seed.
+
+</description>
+<parameters>
+<parameter name="seed">
+<parameter_description> a value to reinitialize the global random number generator.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_option_group_new">
+<description>
+Creates a new #GOptionGroup.
+
+
+</description>
+<parameters>
+<parameter name="name">
+<parameter_description> the name for the option group, this is used to provide
+help for the options in this group with &amp;lt;option&amp;gt;--help-&amp;lt;/option&amp;gt;@name
+</parameter_description>
+</parameter>
+<parameter name="description">
+<parameter_description> a description for this group to be shown in
+&amp;lt;option&amp;gt;--help&amp;lt;/option&amp;gt;. This string is translated using the translation
+domain or translation function of the group
+</parameter_description>
+</parameter>
+<parameter name="help_description">
+<parameter_description> a description for the &amp;lt;option&amp;gt;--help-&amp;lt;/option&amp;gt;@name option.
+This string is translated using the translation domain or translation function
+of the group
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> user data that will be passed to the pre- and post-parse hooks,
+the error hook and to callbacks of %G_OPTION_ARG_CALLBACK options, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="destroy">
+<parameter_description> a function that will be called to free @user_data, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly created option group. It should be added
+to a #GOptionContext or freed with g_option_group_free().
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_mapped_file_free">
+<description>
+Unmaps the buffer of @file and frees it.
+
+Since: 2.8
+
+</description>
+<parameters>
+<parameter name="file">
+<parameter_description> a #GMappedFile
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_thread_pool_get_max_unused_threads">
+<description>
+Returns the maximal allowed number of unused threads.
+
+
+</description>
+<parameters>
+</parameters>
+<return> the maximal number of unused threads
+</return>
+</function>
+
+<function name="g_io_channel_error_from_errno">
+<description>
+Converts an &amp;lt;literal&amp;gt;errno&amp;lt;/literal&amp;gt; error number to a #GIOChannelError.
+
+
+</description>
+<parameters>
+<parameter name="en">
+<parameter_description> an &amp;lt;literal&amp;gt;errno&amp;lt;/literal&amp;gt; error number, e.g. %EINVAL.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a #GIOChannelError error number, e.g. %G_IO_CHANNEL_ERROR_INVAL.
+</return>
+</function>
+
+<function name="g_int_equal">
+<description>
+Compares the two #gint values being pointed to and returns
+%TRUE if they are equal.
+It can be passed to g_hash_table_new() as the @key_equal_func
+parameter, when using pointers to integers as keys in a #GHashTable.
+
+
+</description>
+<parameters>
+<parameter name="v1">
+<parameter_description> a pointer to a #gint key.
+</parameter_description>
+</parameter>
+<parameter name="v2">
+<parameter_description> a pointer to a #gint key to compare with @v1.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the two keys match.
+</return>
+</function>
+
+<function name="g_idle_source_new">
+<description>
+Creates a new idle source.
+
+The source will not initially be associated with any #GMainContext
+and must be added to one with g_source_attach() before it will be
+executed. Note that the default priority for idle sources is
+%G_PRIORITY_DEFAULT_IDLE, as compared to other sources which
+have a default priority of %G_PRIORITY_DEFAULT.
+
+
+</description>
+<parameters>
+</parameters>
+<return> the newly-created idle source
+</return>
+</function>
+
+<function name="g_string_chunk_insert_len">
+<description>
+Adds a copy of the first @len bytes of @string to the #GStringChunk. The
+copy is nul-terminated.
+
+The characters in the string can be changed, if necessary, though you
+should not change anything after the end of the string.
+
+
+</description>
+<parameters>
+<parameter name="chunk">
+<parameter_description> a #GStringChunk
+</parameter_description>
+</parameter>
+<parameter name="string">
+<parameter_description> bytes to insert
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> number of bytes of @string to insert, or -1 to insert a
+nul-terminated string.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to the copy of @string within the #GStringChunk
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_unichar_isdefined">
+<description>
+Determines if a given character is assigned in the Unicode
+standard.
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the character has an assigned value
+</return>
+</function>
+
+<function name="g_markup_vprintf_escaped">
+<description>
+Formats the data in @args according to @format, escaping
+all string and character arguments in the fashion
+of g_markup_escape_text(). See g_markup_printf_escaped().
+
+
+</description>
+<parameters>
+<parameter name="format">
+<parameter_description> printf() style format string
+</parameter_description>
+</parameter>
+<parameter name="args">
+<parameter_description> variable argument list, similar to vprintf()
+</parameter_description>
+</parameter>
+</parameters>
+<return> newly allocated result from formatting
+operation. Free with g_free().
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_key_file_get_boolean">
+<description>
+Returns the value associated with @key under @group_name as a
+boolean.
+
+If @key cannot be found then the return value is undefined and
+@error is set to #G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if
+the value associated with @key cannot be interpreted as a boolean
+then the return value is also undefined and @error is set to
+#G_KEY_FILE_ERROR_INVALID_VALUE.
+
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError
+</parameter_description>
+</parameter>
+</parameters>
+<return> the value associated with the key as a boolean
+Since: 2.6
+</return>
+</function>
+
+<function name="g_path_is_absolute">
+<description>
+Returns %TRUE if the given @file_name is an absolute file name,
+i.e. it contains a full path from the root directory such as &quot;/usr/local&quot;
+on UNIX or &quot;C:\windows&quot; on Windows systems.
+
+
+</description>
+<parameters>
+<parameter name="file_name">
+<parameter_description> a file name.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @file_name is an absolute path.
+</return>
+</function>
+
+<function name="g_main_loop_is_running">
+<description>
+Checks to see if the main loop is currently being run via g_main_loop_run().
+
+
+</description>
+<parameters>
+<parameter name="loop">
+<parameter_description> a #GMainLoop.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the mainloop is currently being run.
+</return>
+</function>
+
+<function name="g_filename_to_uri">
+<description>
+Converts an absolute filename to an escaped ASCII-encoded URI.
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> an absolute filename specified in the GLib file name encoding,
+which is the on-disk file name bytes on Unix, and UTF-8 on
+Windows
+</parameter_description>
+</parameter>
+<parameter name="hostname">
+<parameter_description> A UTF-8 encoded hostname, or %NULL for none.
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> location to store the error occuring, or %NULL to ignore
+errors. Any of the errors in #GConvertError may occur.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly-allocated string holding the resulting
+URI, or %NULL on an error.
+</return>
+</function>
+
+<function name="g_string_down">
+<description>
+Converts a #GString to lowercase.
+
+
+</description>
+<parameters>
+<parameter name="string">
+<parameter_description> a #GString
+</parameter_description>
+</parameter>
+</parameters>
+<return> the #GString.
+
+Deprecated: This function uses the locale-specific tolower() function,
+which is almost never the right thing. Use g_string_ascii_down() or
+g_utf8_strdown() instead.
+</return>
+</function>
+
+<function name="g_strup">
+<description>
+Converts a string to upper case.
+
+
+</description>
+<parameters>
+<parameter name="string">
+<parameter_description> the string to convert.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the string
+
+Deprecated: This function is totally broken for the reasons discussed in
+the g_strncasecmp() docs - use g_ascii_strup() or g_utf8_strup() instead.
+</return>
+</function>
+
+<function name="g_tree_steal">
+<description>
+Removes a key and its associated value from a #GTree without calling
+the key and value destroy functions.
+
+If the key does not exist in the #GTree, the function does nothing.
+
+
+</description>
+<parameters>
+<parameter name="tree">
+<parameter_description> a #GTree.
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> the key to remove.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the key was found (prior to 2.8, this function returned nothing)
+</return>
+</function>
+
+<function name="g_win32_get_package_installation_directory">
+<description>
+Try to determine the installation directory for a software package.
+Typically used by GNU software packages.
+
+@package should be a short identifier for the package. Typically it
+is the same identifier as used for
+&amp;lt;literal&amp;gt;GETTEXT_PACKAGE&amp;lt;/literal&amp;gt; in software configured according
+to GNU standards. The function first looks in the Windows Registry
+for the value &amp;lt;literal&amp;gt;&amp;num;InstallationDirectory&amp;lt;/literal&amp;gt; in the key
+&amp;lt;literal&amp;gt;&amp;num;HKLM\Software\@package&amp;lt;/literal&amp;gt;, and if that value
+exists and is a string, returns that.
+
+If @package is %NULL, or the above value isn&apos;t found in the
+Registry, but @dll_name is non-%NULL, it should name a DLL loaded
+into the current process. Typically that would be the name of the
+DLL calling this function, looking for its installation
+directory. The function then asks Windows what directory that DLL
+was loaded from. If that directory&apos;s last component is &quot;bin&quot; or
+&quot;lib&quot;, the parent directory is returned, otherwise the directory
+itself. If that DLL isn&apos;t loaded, the function proceeds as if
+@dll_name was %NULL.
+
+If both @package and @dll_name are %NULL, the directory from where
+the main executable of the process was loaded is used instead in
+the same way as above.
+
+
+</description>
+<parameters>
+<parameter name="package">
+<parameter_description> An identifier for a software package, or %NULL, in UTF-8
+</parameter_description>
+</parameter>
+<parameter name="dll_name">
+<parameter_description> The name of a DLL that a package provides, or %NULL, in UTF-8
+</parameter_description>
+</parameter>
+</parameters>
+<return> a string containing the installation directory for
+@package. The string is in the GLib file name encoding, i.e. UTF-8
+on Windows. The return value should be freed with g_free() when not
+needed any longer.
+</return>
+</function>
+
+<function name="g_option_context_get_help_enabled">
+<description>
+Returns whether automatic &amp;lt;option&amp;gt;--help&amp;lt;/option&amp;gt; generation
+is turned on for @context. See g_option_context_set_help_enabled().
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GOptionContext
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if automatic help generation is turned on.
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_hash_table_size">
+<description>
+Returns the number of elements contained in the #GHashTable.
+
+
+</description>
+<parameters>
+<parameter name="hash_table">
+<parameter_description> a #GHashTable.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the number of key/value pairs in the #GHashTable.
+</return>
+</function>
+
+<function name="g_key_file_remove_key">
+<description>
+Removes @key in @group_name from the key file.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key name to remove
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_source_get_priority">
+<description>
+Gets the priority of a source.
+
+
+</description>
+<parameters>
+<parameter name="source">
+<parameter_description> a #GSource
+</parameter_description>
+</parameter>
+</parameters>
+<return> the priority of the source
+</return>
+</function>
+
+<function name="g_queue_find">
+<description>
+Finds the first link in @queue which contains @data.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> data to find
+</parameter_description>
+</parameter>
+</parameters>
+<return> The first link in @queue which contains @data.
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_queue_pop_nth_link">
+<description>
+Removes and returns the link at the given position.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+<parameter name="n">
+<parameter_description> the link&apos;s position
+</parameter_description>
+</parameter>
+</parameters>
+<return> The @n&apos;th link, or %NULL if @n is off the end of @queue.
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_io_channel_set_close_on_unref">
+<description>
+Setting this flag to %TRUE for a channel you have already closed
+can cause problems.
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel
+</parameter_description>
+</parameter>
+<parameter name="do_close">
+<parameter_description> Whether to close the channel on the final unref of
+the GIOChannel data structure. The default value of
+this is %TRUE for channels created by g_io_channel_new_file (),
+and %FALSE for all other channels.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_async_queue_pop">
+<description>
+Pops data from the @queue. This function blocks until data become
+available.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GAsyncQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return> data from the queue.
+</return>
+</function>
+
+<function name="g_key_file_get_integer_list">
+<description>
+Returns the values associated with @key under @group_name as
+integers.
+
+If @key cannot be found then the return value is undefined and
+@error is set to #G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if
+the values associated with @key cannot be interpreted as integers
+then the return value is also undefined and @error is set to
+#G_KEY_FILE_ERROR_INVALID_VALUE.
+
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="length">
+<parameter_description> the number of integers returned
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError
+</parameter_description>
+</parameter>
+</parameters>
+<return> the values associated with the key as a integer
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_stpcpy">
+<description>
+Copies a nul-terminated string into the dest buffer, include the
+trailing nul, and return a pointer to the trailing nul byte.
+This is useful for concatenating multiple strings together
+without having to repeatedly scan for the end.
+
+
+</description>
+<parameters>
+<parameter name="dest">
+<parameter_description> destination buffer.
+</parameter_description>
+</parameter>
+<parameter name="src">
+<parameter_description> source string.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to trailing nul byte.
+</return>
+</function>
+
+<function name="g_io_channel_shutdown">
+<description>
+Close an IO channel. Any pending data to be written will be
+flushed if @flush is %TRUE. The channel will not be freed until the
+last reference is dropped using g_io_channel_unref().
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel
+</parameter_description>
+</parameter>
+<parameter name="flush">
+<parameter_description> if %TRUE, flush pending
+</parameter_description>
+</parameter>
+<parameter name="err">
+<parameter_description> location to store a #GIOChannelError
+</parameter_description>
+</parameter>
+</parameters>
+<return> the status of the operation.
+</return>
+</function>
+
+<function name="g_ucs4_to_utf16">
+<description>
+Convert a string from UCS-4 to UTF-16. A 0 word will be
+added to the result after the converted text.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a UCS-4 encoded string
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the maximum length of @str to use. If @len &amp;lt; 0, then
+the string is terminated with a 0 character.
+</parameter_description>
+</parameter>
+<parameter name="items_read">
+<parameter_description> location to store number of bytes read, or %NULL.
+If an error occurs then the index of the invalid input
+is stored here.
+</parameter_description>
+</parameter>
+<parameter name="items_written">
+<parameter_description> location to store number of words written, or %NULL.
+The value stored here does not include the trailing
+0 word.
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> location to store the error occuring, or %NULL to ignore
+errors. Any of the errors in #GConvertError other than
+%G_CONVERT_ERROR_NO_CONVERSION may occur.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to a newly allocated UTF-16 string.
+This value must be freed with g_free(). If an
+error occurs, %NULL will be returned and
+@error set.
+</return>
+</function>
+
+<function name="g_thread_pool_unprocessed">
+<description>
+Returns the number of tasks still unprocessed in @pool.
+
+
+</description>
+<parameters>
+<parameter name="pool">
+<parameter_description> a #GThreadPool
+</parameter_description>
+</parameter>
+</parameters>
+<return> the number of unprocessed tasks
+</return>
+</function>
+
+<function name="g_thread_pool_set_max_unused_threads">
+<description>
+Sets the maximal number of unused threads to @max_threads. If
+@max_threads is -1, no limit is imposed on the number of unused
+threads.
+
+</description>
+<parameters>
+<parameter name="max_threads">
+<parameter_description> maximal number of unused threads
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_mkstemp">
+<description>
+Opens a temporary file. See the mkstemp() documentation
+on most UNIX-like systems. This is a portability wrapper, which simply calls
+mkstemp() on systems that have it, and implements
+it in GLib otherwise.
+
+The parameter is a string that should match the rules for
+mkstemp(), i.e. end in &quot;XXXXXX&quot;. The X string will
+be modified to form the name of a file that didn&apos;t exist.
+The string should be in the GLib file name encoding. Most importantly,
+on Windows it should be in UTF-8.
+
+
+</description>
+<parameters>
+<parameter name="tmpl">
+<parameter_description> template filename
+</parameter_description>
+</parameter>
+</parameters>
+<return> A file handle (as from open()) to the file
+opened for reading and writing. The file is opened in binary mode
+on platforms where there is a difference. The file handle should be
+closed with close(). In case of errors, -1 is returned.
+</return>
+</function>
+
+<function name="g_utf8_get_char_validated">
+<description>
+Convert a sequence of bytes encoded as UTF-8 to a Unicode character.
+This function checks for incomplete characters, for invalid characters
+such as characters that are out of the range of Unicode, and for
+overlong encodings of valid characters.
+
+
+</description>
+<parameters>
+<parameter name="p">
+<parameter_description> a pointer to Unicode character encoded as UTF-8
+</parameter_description>
+</parameter>
+<parameter name="max_len">
+<parameter_description> the maximum number of bytes to read, or -1, for no maximum.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the resulting character. If @p points to a partial
+sequence at the end of a string that could begin a valid
+character, returns (gunichar)-2; otherwise, if @p does not point
+to a valid UTF-8 encoded Unicode character, returns (gunichar)-1.
+</return>
+</function>
+
+<function name="g_utf8_to_ucs4_fast">
+<description>
+Convert a string from UTF-8 to a 32-bit fixed width
+representation as UCS-4, assuming valid UTF-8 input.
+This function is roughly twice as fast as g_utf8_to_ucs4()
+but does no error checking on the input.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a UTF-8 encoded string
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the maximum length of @str to use. If @len &amp;lt; 0, then
+the string is nul-terminated.
+</parameter_description>
+</parameter>
+<parameter name="items_written">
+<parameter_description> location to store the number of characters in the
+result, or %NULL.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to a newly allocated UCS-4 string.
+This value must be freed with g_free().
+</return>
+</function>
+
+<function name="g_hash_table_replace">
+<description>
+Inserts a new key and value into a #GHashTable similar to
+g_hash_table_insert(). The difference is that if the key already exists
+in the #GHashTable, it gets replaced by the new key. If you supplied a
+@value_destroy_func when creating the #GHashTable, the old value is freed
+using that function. If you supplied a @key_destroy_func when creating the
+#GHashTable, the old key is freed using that function.
+
+</description>
+<parameters>
+<parameter name="hash_table">
+<parameter_description> a #GHashTable.
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key to insert.
+</parameter_description>
+</parameter>
+<parameter name="value">
+<parameter_description> the value to associate with the key.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_queue_insert_sorted">
+<description>
+Inserts @data into @queue using @func to determine the new position.
+
+Since: 2.4
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> the data to insert
+</parameter_description>
+</parameter>
+<parameter name="func">
+<parameter_description> the #GCompareDataFunc used to compare elements in the queue. It is
+called with two elements of the @queue and @user_data. It should
+return 0 if the elements are equal, a negative value if the first
+element comes before the second, and a positive value if the second
+element comes after the first.
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> user data passed to @func.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_get_user_config_dir">
+<description>
+Returns a base directory in which to store user-specific application
+configuration information such as user preferences and settings.
+
+On UNIX platforms this is determined using the mechanisms described in
+the &amp;lt;ulink url=&quot;http://www.freedesktop.org/Standards/basedir-spec&quot;&amp;gt;
+XDG Base Directory Specification&amp;lt;/ulink&amp;gt;
+
+
+</description>
+<parameters>
+</parameters>
+<return> a string owned by GLib that must not be modified
+or freed.
+Since: 2.6
+</return>
+</function>
+
+<function name="g_async_queue_pop_unlocked">
+<description>
+Pops data from the @queue. This function blocks until data become
+available. This function must be called while holding the @queue&apos;s
+lock.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GAsyncQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return> data from the queue.
+</return>
+</function>
+
+<function name="g_error_new_literal">
+<description>
+Creates a new #GError; unlike g_error_new(), @message is not
+a printf()-style format string. Use this
+function if @message contains text you don&apos;t have control over,
+that could include printf() escape sequences.
+
+
+</description>
+<parameters>
+<parameter name="domain">
+<parameter_description> error domain
+</parameter_description>
+</parameter>
+<parameter name="code">
+<parameter_description> error code
+</parameter_description>
+</parameter>
+<parameter name="message">
+<parameter_description> error message
+</parameter_description>
+</parameter>
+</parameters>
+<return> a new #GError
+</return>
+</function>
+
+<function name="g_option_group_free">
+<description>
+Frees a #GOptionGroup. Note that you must &amp;lt;emphasis&amp;gt;not&amp;lt;/emphasis&amp;gt;
+free groups which have been added to a #GOptionContext.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="group">
+<parameter_description> a #GOptionGroup
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_strv_length">
+<description>
+Returns the length of the given %NULL-terminated
+string array @str_array.
+
+
+</description>
+<parameters>
+<parameter name="str_array">
+<parameter_description> a %NULL-terminated array of strings.
+</parameter_description>
+</parameter>
+</parameters>
+<return> length of @str_array.
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_queue_link_index">
+<description>
+Returns the position of @link_ in @queue.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #Gqueue
+</parameter_description>
+</parameter>
+<parameter name="link_">
+<parameter_description> A #GList link
+</parameter_description>
+</parameter>
+</parameters>
+<return> The position of @link_, or -1 if the link is
+not part of @queue
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_main_context_get_poll_func">
+<description>
+Gets the poll function set by g_main_context_set_poll_func().
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMainContext
+</parameter_description>
+</parameter>
+</parameters>
+<return> the poll function
+</return>
+</function>
+
+<function name="g_iconv_open">
+<description>
+Same as the standard UNIX routine iconv_open(), but
+may be implemented via libiconv on UNIX flavors that lack
+a native implementation.
+
+GLib provides g_convert() and g_locale_to_utf8() which are likely
+more convenient than the raw iconv wrappers.
+
+
+</description>
+<parameters>
+<parameter name="to_codeset">
+<parameter_description> destination codeset
+</parameter_description>
+</parameter>
+<parameter name="from_codeset">
+<parameter_description> source codeset
+</parameter_description>
+</parameter>
+</parameters>
+<return> a &quot;conversion descriptor&quot;, or (GIConv)-1 if
+opening the converter failed.
+</return>
+</function>
+
+<function name="g_rand_free">
+<description>
+Frees the memory allocated for the #GRand.
+
+</description>
+<parameters>
+<parameter name="rand_">
+<parameter_description> a #GRand.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_option_group_add_entries">
+<description>
+Adds the options specified in @entries to @group.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="group">
+<parameter_description> a #GOptionGroup
+</parameter_description>
+</parameter>
+<parameter name="entries">
+<parameter_description> a %NULL-terminated array of #GOptionEntry&amp;lt;!-- --&amp;gt;s
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_io_channel_get_close_on_unref">
+<description>
+Returns whether the file/socket/whatever associated with @channel
+will be closed when @channel receives its final unref and is
+destroyed. The default value of this is %TRUE for channels created
+by g_io_channel_new_file (), and %FALSE for all other channels.
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel.
+</parameter_description>
+</parameter>
+</parameters>
+<return> Whether the channel will be closed on the final unref of
+the GIOChannel data structure.
+</return>
+</function>
+
+<function name="g_key_file_get_groups">
+<description>
+Returns all groups in the key file loaded with @key_file. The
+array of returned groups will be %NULL-terminated, so @length may
+optionally be %NULL.
+
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="length">
+<parameter_description> return location for the number of returned groups, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly-allocated %NULL-terminated array of strings.
+Use g_strfreev() to free it.
+Since: 2.6
+</return>
+</function>
+
+<function name="g_source_ref">
+<description>
+Increases the reference count on a source by one.
+
+
+</description>
+<parameters>
+<parameter name="source">
+<parameter_description> a #GSource
+</parameter_description>
+</parameter>
+</parameters>
+<return> @source
+</return>
+</function>
+
+<function name="g_filename_to_utf8">
+<description>
+Converts a string which is in the encoding used by GLib for
+filenames into a UTF-8 string. Note that on Windows GLib uses UTF-8
+for filenames.
+
+
+</description>
+<parameters>
+<parameter name="opsysstring">
+<parameter_description> a string in the encoding for filenames
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the length of the string, or -1 if the string is
+nul-terminated&amp;lt;footnoteref linkend=&quot;nul-unsafe&quot;/&amp;gt;.
+</parameter_description>
+</parameter>
+<parameter name="bytes_read">
+<parameter_description> location to store the number of bytes in the
+input string that were successfully converted, or %NULL.
+Even if the conversion was successful, this may be
+less than @len if there were partial characters
+at the end of the input. If the error
+#G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value
+stored will the byte offset after the last valid
+input sequence.
+</parameter_description>
+</parameter>
+<parameter name="bytes_written">
+<parameter_description> the number of bytes stored in the output buffer (not
+including the terminating nul).
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> location to store the error occuring, or %NULL to ignore
+errors. Any of the errors in #GConvertError may occur.
+</parameter_description>
+</parameter>
+</parameters>
+<return> The converted string, or %NULL on an error.
+</return>
+</function>
+
+<function name="g_strrstr">
+<description>
+Searches the string @haystack for the last occurrence
+of the string @needle.
+
+
+</description>
+<parameters>
+<parameter name="haystack">
+<parameter_description> a nul-terminated string.
+</parameter_description>
+</parameter>
+<parameter name="needle">
+<parameter_description> the nul-terminated string to search for.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to the found occurrence, or
+%NULL if not found.
+</return>
+</function>
+
+<function name="g_main_context_wait">
+<description>
+Tries to become the owner of the specified context,
+as with g_main_context_acquire(). But if another thread
+is the owner, atomically drop @mutex and wait on @cond until
+that owner releases ownership or until @cond is signaled, then
+try again (once) to become the owner.
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMainContext
+</parameter_description>
+</parameter>
+<parameter name="cond">
+<parameter_description> a condition variable
+</parameter_description>
+</parameter>
+<parameter name="mutex">
+<parameter_description> a mutex, currently held
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the operation succeeded, and
+this thread is now the owner of @context.
+</return>
+</function>
+
+<function name="g_source_set_can_recurse">
+<description>
+Sets whether a source can be called recursively. If @can_recurse is
+%TRUE, then while the source is being dispatched then this source
+will be processed normally. Otherwise, all processing of this
+source is blocked until the dispatch function returns.
+
+</description>
+<parameters>
+<parameter name="source">
+<parameter_description> a #GSource
+</parameter_description>
+</parameter>
+<parameter name="can_recurse">
+<parameter_description> whether recursion is allowed for this source
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_io_channel_error_quark">
+<description>
+
+</description>
+<parameters>
+</parameters>
+<return> The quark used as %G_IO_CHANNEL_ERROR
+</return>
+</function>
+
+<function name="g_printf">
+<description>
+An implementation of the standard printf() function which supports
+positional parameters, as specified in the Single Unix Specification.
+
+
+</description>
+<parameters>
+<parameter name="format">
+<parameter_description> a standard printf() format string, but notice
+&amp;lt;link linkend=&quot;string-precision&quot;&amp;gt;string precision pitfalls&amp;lt;/link&amp;gt;.
+</parameter_description>
+</parameter>
+<parameter name="Varargs">
+<parameter_description> the arguments to insert in the output.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the number of characters printed.
+
+Since: 2.2
+</return>
+</function>
+
+<function name="g_option_context_add_group">
+<description>
+Adds a #GOptionGroup to the @context, so that parsing with @context
+will recognize the options in the group. Note that the group will
+be freed together with the context when g_option_context_free() is
+called, so you must not free the group yourself after adding it
+to a context.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GOptionContext
+</parameter_description>
+</parameter>
+<parameter name="group">
+<parameter_description> the group to add
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_hash_table_foreach_remove">
+<description>
+Calls the given function for each key/value pair in the #GHashTable.
+If the function returns %TRUE, then the key/value pair is removed from the
+#GHashTable. If you supplied key or value destroy functions when creating
+the #GHashTable, they are used to free the memory allocated for the removed
+keys and values.
+
+
+</description>
+<parameters>
+<parameter name="hash_table">
+<parameter_description> a #GHashTable.
+</parameter_description>
+</parameter>
+<parameter name="func">
+<parameter_description> the function to call for each key/value pair.
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> user data to pass to the function.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the number of key/value pairs removed.
+</return>
+</function>
+
+<function name="g_rand_new_with_seed_array">
+<description>
+Creates a new random number generator initialized with @seed.
+
+
+</description>
+<parameters>
+<parameter name="seed">
+<parameter_description> an array of seeds to initialize the random number generator.
+</parameter_description>
+</parameter>
+<parameter name="seed_length">
+<parameter_description> an array of seeds to initialize the random number generator.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the new #GRand.
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_string_prepend_unichar">
+<description>
+Converts a Unicode character into UTF-8, and prepends it
+to the string.
+
+
+</description>
+<parameters>
+<parameter name="string">
+<parameter_description> a #GString.
+</parameter_description>
+</parameter>
+<parameter name="wc">
+<parameter_description> a Unicode character.
+</parameter_description>
+</parameter>
+</parameters>
+<return> @string.
+</return>
+</function>
+
+<function name="g_rand_set_seed_array">
+<description>
+Initializes the random number generator by an array of
+longs. Array can be of arbitrary size, though only the
+first 624 values are taken. This function is useful
+if you have many low entropy seeds, or if you require more then
+32bits of actual entropy for your application.
+
+Since: 2.4
+
+</description>
+<parameters>
+<parameter name="rand_">
+<parameter_description> a #GRand.
+</parameter_description>
+</parameter>
+<parameter name="seed">
+<parameter_description> array to initialize with
+</parameter_description>
+</parameter>
+<parameter name="seed_length">
+<parameter_description> length of array
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_locale_to_utf8">
+<description>
+Converts a string which is in the encoding used for strings by
+the C runtime (usually the same as that used by the operating
+system) in the current locale into a UTF-8 string.
+
+
+</description>
+<parameters>
+<parameter name="opsysstring">
+<parameter_description> a string in the encoding of the current locale. On Windows
+this means the system codepage.
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the length of the string, or -1 if the string is
+nul-terminated&amp;lt;footnoteref linkend=&quot;nul-unsafe&quot;/&amp;gt;.
+</parameter_description>
+</parameter>
+<parameter name="bytes_read">
+<parameter_description> location to store the number of bytes in the
+input string that were successfully converted, or %NULL.
+Even if the conversion was successful, this may be
+less than @len if there were partial characters
+at the end of the input. If the error
+#G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value
+stored will the byte offset after the last valid
+input sequence.
+</parameter_description>
+</parameter>
+<parameter name="bytes_written">
+<parameter_description> the number of bytes stored in the output buffer (not
+including the terminating nul).
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> location to store the error occuring, or %NULL to ignore
+errors. Any of the errors in #GConvertError may occur.
+</parameter_description>
+</parameter>
+</parameters>
+<return> The converted string, or %NULL on an error.
+</return>
+</function>
+
+<function name="g_key_file_get_string">
+<description>
+Returns the value associated with @key under @group_name.
+
+In the event the key cannot be found, %NULL is returned and
+@error is set to #G_KEY_FILE_ERROR_KEY_NOT_FOUND. In the
+event that the @group_name cannot be found, %NULL is returned
+and @error is set to #G_KEY_FILE_ERROR_GROUP_NOT_FOUND.
+
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly allocated string or %NULL if the specified
+key cannot be found.
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_source_remove_poll">
+<description>
+Removes a file descriptor from the set of file descriptors polled for
+this source.
+
+</description>
+<parameters>
+<parameter name="source">
+<parameter_description>a #GSource
+</parameter_description>
+</parameter>
+<parameter name="fd">
+<parameter_description> a #GPollFD structure previously passed to g_source_add_poll().
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_get_real_name">
+<description>
+Gets the real name of the user. This usually comes from the user&apos;s entry
+in the &amp;lt;filename&amp;gt;passwd&amp;lt;/filename&amp;gt; file. The encoding of the returned
+string is system-defined. (On Windows, it is, however, always UTF-8.)
+If the real user name cannot be determined, the string &quot;Unknown&quot; is
+returned.
+
+
+</description>
+<parameters>
+</parameters>
+<return> the user&apos;s real name.
+</return>
+</function>
+
+<function name="g_strfreev">
+<description>
+Frees a %NULL-terminated array of strings, and the array itself.
+If called on a %NULL value, g_strfreev() simply returns.
+
+</description>
+<parameters>
+<parameter name="str_array">
+<parameter_description> a %NULL-terminated array of strings to free.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_vfprintf">
+<description>
+An implementation of the standard fprintf() function which supports
+positional parameters, as specified in the Single Unix Specification.
+
+
+</description>
+<parameters>
+<parameter name="file">
+<parameter_description> the stream to write to.
+</parameter_description>
+</parameter>
+<parameter name="format">
+<parameter_description> a standard printf() format string, but notice
+&amp;lt;link linkend=&quot;string-precision&quot;&amp;gt;string precision pitfalls&amp;lt;/link&amp;gt;.
+</parameter_description>
+</parameter>
+<parameter name="args">
+<parameter_description> the list of arguments to insert in the output.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the number of characters printed.
+
+Since: 2.2
+</return>
+</function>
+
+<function name="g_ascii_xdigit_value">
+<description>
+Determines the numeric value of a character as a hexidecimal
+digit. Differs from g_unichar_xdigit_value() because it takes
+a char, so there&apos;s no worry about sign extension if characters
+are signed.
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> an ASCII character.
+</parameter_description>
+</parameter>
+</parameters>
+<return> If @c is a hex digit (according to
+g_ascii_isxdigit()), its numeric value. Otherwise, -1.
+</return>
+</function>
+
+<function name="g_ascii_strtod">
+<description>
+Converts a string to a #gdouble value.
+This function behaves like the standard strtod() function
+does in the C locale. It does this without actually
+changing the current locale, since that would not be
+thread-safe.
+
+This function is typically used when reading configuration
+files or other non-user input that should be locale independent.
+To handle input from the user you should normally use the
+locale-sensitive system strtod() function.
+
+To convert from a #gdouble to a string in a locale-insensitive
+way, use g_ascii_dtostr().
+
+If the correct value would cause overflow, plus or minus %HUGE_VAL
+is returned (according to the sign of the value), and %ERANGE is
+stored in %errno. If the correct value would cause underflow,
+zero is returned and %ERANGE is stored in %errno.
+
+This function resets %errno before calling strtod() so that
+you can reliably detect overflow and underflow.
+
+
+</description>
+<parameters>
+<parameter name="nptr">
+<parameter_description> the string to convert to a numeric value.
+</parameter_description>
+</parameter>
+<parameter name="endptr">
+<parameter_description> if non-%NULL, it returns the character after
+the last character used in the conversion.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the #gdouble value.
+</return>
+</function>
+
+<function name="g_utf8_strlen">
+<description>
+Returns the length of the string in characters.
+
+
+</description>
+<parameters>
+<parameter name="p">
+<parameter_description> pointer to the start of a UTF-8 encoded string.
+</parameter_description>
+</parameter>
+<parameter name="max">
+<parameter_description> the maximum number of bytes to examine. If @max
+is less than 0, then the string is assumed to be
+nul-terminated. If @max is 0, @p will not be examined and
+may be %NULL.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the length of the string in characters
+</return>
+</function>
+
+<function name="g_iconv">
+<description>
+Same as the standard UNIX routine iconv(), but
+may be implemented via libiconv on UNIX flavors that lack
+a native implementation.
+
+GLib provides g_convert() and g_locale_to_utf8() which are likely
+more convenient than the raw iconv wrappers.
+
+
+</description>
+<parameters>
+<parameter name="converter">
+<parameter_description> conversion descriptor from g_iconv_open()
+</parameter_description>
+</parameter>
+<parameter name="inbuf">
+<parameter_description> bytes to convert
+</parameter_description>
+</parameter>
+<parameter name="inbytes_left">
+<parameter_description> inout parameter, bytes remaining to convert in @inbuf
+</parameter_description>
+</parameter>
+<parameter name="outbuf">
+<parameter_description> converted output bytes
+</parameter_description>
+</parameter>
+<parameter name="outbytes_left">
+<parameter_description> inout parameter, bytes available to fill in @outbuf
+</parameter_description>
+</parameter>
+</parameters>
+<return> count of non-reversible conversions, or -1 on error
+</return>
+</function>
+
+<function name="g_main_context_dispatch">
+<description>
+Dispatches all pending sources.
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMainContext
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_path_get_basename">
+<description>
+Gets the last component of the filename. If @file_name ends with a
+directory separator it gets the component before the last slash. If
+@file_name consists only of directory separators (and on Windows,
+possibly a drive letter), a single separator is returned. If
+@file_name is empty, it gets &quot;.&quot;.
+
+
+</description>
+<parameters>
+<parameter name="file_name">
+<parameter_description> the name of the file.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly allocated string containing the last component of
+the filename.
+</return>
+</function>
+
+<function name="g_queue_remove_all">
+<description>
+Remove all elemeents in @queue which contains @data.
+
+Since: 2.4
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> data to remove
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_option_context_set_help_enabled">
+<description>
+Enables or disables automatic generation of &amp;lt;option&amp;gt;--help&amp;lt;/option&amp;gt;
+output. By default, g_option_context_parse() recognizes
+&amp;lt;option&amp;gt;--help&amp;lt;/option&amp;gt;, &amp;lt;option&amp;gt;-?&amp;lt;/option&amp;gt;, &amp;lt;option&amp;gt;--help-all&amp;lt;/option&amp;gt;
+and &amp;lt;option&amp;gt;--help-&amp;lt;/option&amp;gt;&amp;lt;replaceable&amp;gt;groupname&amp;lt;/replaceable&amp;gt; and creates
+suitable output to stdout.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GOptionContext
+</parameter_description>
+</parameter>
+<parameter name="help_enabled">
+<parameter_description> %TRUE to enable &amp;lt;option&amp;gt;--help&amp;lt;/option&amp;gt;, %FALSE to disable it
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_utf8_strrchr">
+<description>
+Find the rightmost occurrence of the given ISO10646 character
+in a UTF-8 encoded string, while limiting the search to @len bytes.
+If @len is -1, allow unbounded search.
+
+
+</description>
+<parameters>
+<parameter name="p">
+<parameter_description> a nul-terminated UTF-8 encoded string
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the maximum length of @p
+</parameter_description>
+</parameter>
+<parameter name="c">
+<parameter_description> a ISO10646 character
+</parameter_description>
+</parameter>
+</parameters>
+<return> %NULL if the string does not contain the character,
+otherwise, a pointer to the start of the rightmost occurrence of the
+character in the string.
+</return>
+</function>
+
+<function name="g_key_file_free">
+<description>
+Frees a #GKeyFile.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_tree_traverse">
+<description>
+Calls the given function for each node in the #GTree.
+
+Deprecated: The order of a balanced tree is somewhat arbitrary. If you
+just want to visit all nodes in sorted order, use g_tree_foreach()
+instead. If you really need to visit nodes in a different order, consider
+using an &amp;lt;link linkend=&quot;glib-N-ary-Trees&quot;&amp;gt;N-ary Tree&amp;lt;/link&amp;gt;.
+
+</description>
+<parameters>
+<parameter name="tree">
+<parameter_description> a #GTree.
+</parameter_description>
+</parameter>
+<parameter name="traverse_func">
+<parameter_description> the function to call for each node visited. If this
+function returns %TRUE, the traversal is stopped.
+</parameter_description>
+</parameter>
+<parameter name="traverse_type">
+<parameter_description> the order in which nodes are visited, one of %G_IN_ORDER,
+%G_PRE_ORDER and %G_POST_ORDER.
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> user data to pass to the function.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_rand_int_range">
+<description>
+Returns the next random #gint32 from @rand_ equally distributed over
+the range [@begin..@end-1].
+
+
+</description>
+<parameters>
+<parameter name="rand_">
+<parameter_description> a #GRand.
+</parameter_description>
+</parameter>
+<parameter name="begin">
+<parameter_description> lower closed bound of the interval.
+</parameter_description>
+</parameter>
+<parameter name="end">
+<parameter_description> upper open bound of the interval.
+</parameter_description>
+</parameter>
+</parameters>
+<return> A random number.
+</return>
+</function>
+
+<function name="g_get_filename_charsets">
+<description>
+Determines the preferred character sets used for filenames.
+The first character set from the @charsets is the filename encoding, the
+subsequent character sets are used when trying to generate a displayable
+representation of a filename, see g_filename_display_name().
+
+On Unix, the character sets are determined by consulting the
+environment variables &amp;lt;envar&amp;gt;G_FILENAME_ENCODING&amp;lt;/envar&amp;gt; and
+&amp;lt;envar&amp;gt;G_BROKEN_FILENAMES&amp;lt;/envar&amp;gt;. On Windows, the character set
+used in the GLib API is always UTF-8 and said environment variables
+have no effect.
+
+&amp;lt;envar&amp;gt;G_FILENAME_ENCODING&amp;lt;/envar&amp;gt; may be set to a comma-separated list
+of character set names. The special token &quot;@locale&quot; is taken to mean the
+character set for the current locale. If &amp;lt;envar&amp;gt;G_FILENAME_ENCODING&amp;lt;/envar&amp;gt;
+is not set, but &amp;lt;envar&amp;gt;G_BROKEN_FILENAMES&amp;lt;/envar&amp;gt; is, the character set of
+the current locale is taken as the filename encoding. If neither environment
+variable is set, UTF-8 is taken as the filename encoding, but the character
+set of the current locale is also put in the list of encodings.
+
+The returned @charsets belong to GLib and must not be freed.
+
+Note that on Unix, regardless of the locale character set or
+&amp;lt;envar&amp;gt;G_FILENAME_ENCODING&amp;lt;/envar&amp;gt; value, the actual file names present on a
+system might be in any random encoding or just gibberish.
+
+
+</description>
+<parameters>
+<parameter name="charsets">
+<parameter_description> return location for the %NULL-terminated list of encoding names
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the filename encoding is UTF-8.
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_source_get_current_time">
+<description>
+Gets the &quot;current time&quot; to be used when checking
+this source. The advantage of calling this function over
+calling g_get_current_time() directly is that when
+checking multiple sources, GLib can cache a single value
+instead of having to repeatedly get the system time.
+
+</description>
+<parameters>
+<parameter name="source">
+<parameter_description> a #GSource
+</parameter_description>
+</parameter>
+<parameter name="timeval">
+<parameter_description> #GTimeVal structure in which to store current time.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_async_queue_push_unlocked">
+<description>
+Pushes the @data into the @queue. @data must not be %NULL. This
+function must be called while holding the @queue&apos;s lock.
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GAsyncQueue.
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> @data to push into the @queue.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_queue_peek_tail_link">
+<description>
+Returns the last link @queue.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+</parameters>
+<return> the last link in @queue, or %NULL if @queue is empty
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_build_path">
+<description>
+Creates a path from a series of elements using @separator as the
+separator between elements. At the boundary between two elements,
+any trailing occurrences of separator in the first element, or
+leading occurrences of separator in the second element are removed
+and exactly one copy of the separator is inserted.
+
+Empty elements are ignored.
+
+The number of leading copies of the separator on the result is
+the same as the number of leading copies of the separator on
+the first non-empty element.
+
+The number of trailing copies of the separator on the result is
+the same as the number of trailing copies of the separator on
+the last non-empty element. (Determination of the number of
+trailing copies is done without stripping leading copies, so
+if the separator is &amp;lt;literal&amp;gt;ABA&amp;lt;/literal&amp;gt;, &amp;lt;literal&amp;gt;ABABA&amp;lt;/literal&amp;gt;
+has 1 trailing copy.)
+
+However, if there is only a single non-empty element, and there
+are no characters in that element not part of the leading or
+trailing separators, then the result is exactly the original value
+of that element.
+
+Other than for determination of the number of leading and trailing
+copies of the separator, elements consisting only of copies
+of the separator are ignored.
+
+
+</description>
+<parameters>
+<parameter name="separator">
+<parameter_description> a string used to separator the elements of the path.
+</parameter_description>
+</parameter>
+<parameter name="first_element">
+<parameter_description> the first element in the path
+</parameter_description>
+</parameter>
+<parameter name="Varargs">
+<parameter_description> remaining elements in path, terminated by %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly-allocated string that must be freed with g_free().
+</return>
+</function>
+
+<function name="g_source_set_priority">
+<description>
+Sets the priority of a source. While the main loop is being
+run, a source will be dispatched if it is ready to be dispatched and no sources
+at a higher (numerically smaller) priority are ready to be dispatched.
+
+</description>
+<parameters>
+<parameter name="source">
+<parameter_description> a #GSource
+</parameter_description>
+</parameter>
+<parameter name="priority">
+<parameter_description> the new priority.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_file_open_tmp">
+<description>
+Opens a file for writing in the preferred directory for temporary
+files (as returned by g_get_tmp_dir()).
+
+@tmpl should be a string in the GLib file name encoding ending with
+six &apos;X&apos; characters, as the parameter to g_mkstemp() (or mkstemp()).
+However, unlike these functions, the template should only be a
+basename, no directory components are allowed. If template is
+%NULL, a default template is used.
+
+Note that in contrast to g_mkstemp() (and mkstemp())
+@tmpl is not modified, and might thus be a read-only literal string.
+
+The actual name used is returned in @name_used if non-%NULL. This
+string should be freed with g_free() when not needed any longer.
+The returned name is in the GLib file name encoding.
+
+
+</description>
+<parameters>
+<parameter name="tmpl">
+<parameter_description> Template for file name, as in g_mkstemp(), basename only
+</parameter_description>
+</parameter>
+<parameter name="name_used">
+<parameter_description> location to store actual name used
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError
+</parameter_description>
+</parameter>
+</parameters>
+<return> A file handle (as from open()) to
+the file opened for reading and writing. The file is opened in binary
+mode on platforms where there is a difference. The file handle should be
+closed with close(). In case of errors, -1 is returned
+and @error will be set.
+</return>
+</function>
+
+<function name="g_main_context_remove_poll">
+<description>
+Removes file descriptor from the set of file descriptors to be
+polled for a particular context.
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description>a #GMainContext
+</parameter_description>
+</parameter>
+<parameter name="fd">
+<parameter_description> a #GPollFD descriptor previously added with g_main_context_add_poll()
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_source_get_id">
+<description>
+Returns the numeric ID for a particular source. The ID of a source
+is unique within a particular main loop context. The reverse
+mapping from ID to source is done by g_main_context_find_source_by_id().
+
+
+</description>
+<parameters>
+<parameter name="source">
+<parameter_description> a #GSource
+</parameter_description>
+</parameter>
+</parameters>
+<return> the ID for the source
+</return>
+</function>
+
+<function name="g_mapped_file_get_contents">
+<description>
+Returns the contents of a #GMappedFile.
+
+Note that the contents may not be zero-terminated,
+even if the #GMappedFile is backed by a text file.
+
+
+</description>
+<parameters>
+<parameter name="file">
+<parameter_description> a #GMappedFile
+</parameter_description>
+</parameter>
+</parameters>
+<return> the contents of @file.
+
+Since: 2.8
+</return>
+</function>
+
+<function name="g_direct_equal">
+<description>
+Compares two #gpointer arguments and returns %TRUE if they are equal.
+It can be passed to g_hash_table_new() as the @key_equal_func
+parameter, when using pointers as keys in a #GHashTable.
+
+
+</description>
+<parameters>
+<parameter name="v1">
+<parameter_description> a key.
+</parameter_description>
+</parameter>
+<parameter name="v2">
+<parameter_description> a key to compare with @v1.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the two keys match.
+</return>
+</function>
+
+<function name="g_hash_table_new">
+<description>
+Creates a new #GHashTable.
+
+
+</description>
+<parameters>
+<parameter name="hash_func">
+<parameter_description> a function to create a hash value from a key.
+Hash values are used to determine where keys are stored within the
+#GHashTable data structure. The g_direct_hash(), g_int_hash() and
+g_str_hash() functions are provided for some common types of keys.
+If hash_func is %NULL, g_direct_hash() is used.
+</parameter_description>
+</parameter>
+<parameter name="key_equal_func">
+<parameter_description> a function to check two keys for equality. This is
+used when looking up keys in the #GHashTable. The g_direct_equal(),
+g_int_equal() and g_str_equal() functions are provided for the most
+common types of keys. If @key_equal_func is %NULL, keys are compared
+directly in a similar fashion to g_direct_equal(), but without the
+overhead of a function call.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a new #GHashTable.
+</return>
+</function>
+
+<function name="g_tree_nnodes">
+<description>
+Gets the number of nodes in a #GTree.
+
+
+</description>
+<parameters>
+<parameter name="tree">
+<parameter_description> a #GTree.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the number of nodes in the #GTree.
+</return>
+</function>
+
+<function name="g_win32_getlocale">
+<description>
+The setlocale() function in the Microsoft C library uses locale
+names of the form &quot;English_United States.1252&quot; etc. We want the
+UNIXish standard form &quot;en_US&quot;, &quot;zh_TW&quot; etc. This function gets the
+current thread locale from Windows - without any encoding info -
+and returns it as a string of the above form for use in forming
+file names etc. The returned string should be deallocated with
+g_free().
+
+
+</description>
+<parameters>
+</parameters>
+<return> newly-allocated locale name.
+</return>
+</function>
+
+<function name="g_tree_new_with_data">
+<description>
+Creates a new #GTree with a comparison function that accepts user data.
+See g_tree_new() for more details.
+
+
+</description>
+<parameters>
+<parameter name="key_compare_func">
+<parameter_description> qsort()-style comparison function.
+</parameter_description>
+</parameter>
+<parameter name="key_compare_data">
+<parameter_description> data to pass to comparison function.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a new #GTree.
+</return>
+</function>
+
+<function name="g_getenv">
+<description>
+Returns the value of an environment variable. The name and value
+are in the GLib file name encoding. On UNIX, this means the actual
+bytes which might or might not be in some consistent character set
+and encoding. On Windows, it is in UTF-8. On Windows, in case the
+environment variable&apos;s value contains references to other
+environment variables, they are expanded.
+
+
+</description>
+<parameters>
+<parameter name="variable">
+<parameter_description> the environment variable to get, in the GLib file name encoding.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the value of the environment variable, or %NULL if
+the environment variable is not found. The returned string may be
+overwritten by the next call to g_getenv(), g_setenv() or
+g_unsetenv().
+</return>
+</function>
+
+<function name="g_markup_parse_context_get_element">
+<description>
+Retrieves the name of the currently open element.
+
+Since: 2.2
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMarkupParseContext
+</parameter_description>
+</parameter>
+</parameters>
+<return> the name of the currently open element, or %NULL
+</return>
+</function>
+
+<function name="g_mkdir_with_parents">
+<description>
+Create a directory if it doesn&apos;t already exist. Create intermediate
+parent directories as needed, too.
+
+
+</description>
+<parameters>
+<parameter name="pathname">
+<parameter_description> a pathname in the GLib file name encoding
+</parameter_description>
+</parameter>
+<parameter name="mode">
+<parameter_description> permissions to use for newly created directories
+</parameter_description>
+</parameter>
+</parameters>
+<return> 0 if the directory already exists, or was successfully
+created. Returns -1 if an error occurred, with errno set.
+
+Since: 2.8
+</return>
+</function>
+
+<function name="g_io_channel_get_buffer_size">
+<description>
+Gets the buffer size.
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel
+</parameter_description>
+</parameter>
+</parameters>
+<return> the size of the buffer.
+</return>
+</function>
+
+<function name="g_queue_copy">
+<description>
+Copies a @queue. Note that is a shallow copy. If the elements in the
+queue consist of pointers to data, the pointers are copied, but the
+actual data is not.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+</parameters>
+<return> A copy of @queue
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_queue_sort">
+<description>
+Sorts @queue using @compare_func.
+
+Since: 2.4
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+<parameter name="compare_func">
+<parameter_description> the #GCompareDataFunc used to sort @queue. This function
+is passed two elements of the queue and should return 0 if they are
+equal, a negative value if the first comes before the second, and
+a positive value if the second comes before the first.
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> user data passed to @compare_func
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_tree_lookup_extended">
+<description>
+Looks up a key in the #GTree, returning the original key and the
+associated value and a #gboolean which is %TRUE if the key was found. This
+is useful if you need to free the memory allocated for the original key,
+for example before calling g_tree_remove().
+
+
+</description>
+<parameters>
+<parameter name="tree">
+<parameter_description> a #GTree.
+</parameter_description>
+</parameter>
+<parameter name="lookup_key">
+<parameter_description> the key to look up.
+</parameter_description>
+</parameter>
+<parameter name="orig_key">
+<parameter_description> returns the original key.
+</parameter_description>
+</parameter>
+<parameter name="value">
+<parameter_description> returns the value associated with the key.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the key was found in the #GTree.
+</return>
+</function>
+
+<function name="g_unichar_isupper">
+<description>
+Determines if a character is uppercase.
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @c is an uppercase character
+</return>
+</function>
+
+<function name="g_unichar_digit_value">
+<description>
+Determines the numeric value of a character as a decimal
+digit.
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> If @c is a decimal digit (according to
+g_unichar_isdigit()), its numeric value. Otherwise, -1.
+</return>
+</function>
+
+<function name="g_ptr_array_foreach">
+<description>
+Calls a function for each element of a #GPtrArray.
+
+Since: 2.4
+
+</description>
+<parameters>
+<parameter name="array">
+<parameter_description> a #GPtrArray
+</parameter_description>
+</parameter>
+<parameter name="func">
+<parameter_description> the function to call for each array element
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> user data to pass to the function
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_option_context_set_main_group">
+<description>
+Sets a #GOptionGroup as main group of the @context.
+This has the same effect as calling g_option_context_add_group(),
+the only difference is that the options in the main group are
+treated differently when generating &amp;lt;option&amp;gt;--help&amp;lt;/option&amp;gt; output.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GOptionContext
+</parameter_description>
+</parameter>
+<parameter name="group">
+<parameter_description> the group to set as main group
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_file_get_contents">
+<description>
+Reads an entire file into allocated memory, with good error
+checking.
+
+If the call was successful, it returns %TRUE and sets @contents to the file
+contents and @length to the length of the file contents in bytes. The string
+stored in @contents will be nul-terminated, so for text files you can pass
+%NULL for the @length argument. If the call was not successful, it returns
+%FALSE and sets @error. The error domain is #G_FILE_ERROR. Possible error
+codes are those in the #GFileError enumeration. In the error case,
+@contents is set to %NULL and @length is set to zero.
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> name of a file to read contents from, in the GLib file name encoding
+</parameter_description>
+</parameter>
+<parameter name="contents">
+<parameter_description> location to store an allocated string
+</parameter_description>
+</parameter>
+<parameter name="length">
+<parameter_description> location to store length in bytes of the contents, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE on success, %FALSE if an error occurred
+</return>
+</function>
+
+<function name="g_thread_pool_get_num_unused_threads">
+<description>
+Returns the number of currently unused threads.
+
+
+</description>
+<parameters>
+</parameters>
+<return> the number of currently unused threads
+</return>
+</function>
+
+<function name="g_async_queue_push">
+<description>
+Pushes the @data into the @queue. @data must not be %NULL.
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GAsyncQueue.
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> @data to push into the @queue.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_key_file_set_string">
+<description>
+Associates a new string value with @key under @group_name. If
+@key cannot be found then it is created. If @group_name
+cannot be found then it is created.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="string">
+<parameter_description> a string
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_key_file_get_boolean_list">
+<description>
+Returns the values associated with @key under @group_name as
+booleans. If @group_name is %NULL, the start_group is used.
+
+If @key cannot be found then the return value is undefined and
+@error is set to #G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if
+the values associated with @key cannot be interpreted as booleans
+then the return value is also undefined and @error is set to
+#G_KEY_FILE_ERROR_INVALID_VALUE.
+
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="length">
+<parameter_description> the number of booleans returned
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError
+</parameter_description>
+</parameter>
+</parameters>
+<return> the values associated with the key as a boolean
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_fopen">
+<description>
+A wrapper for the POSIX fopen() function. The fopen() function opens
+a file and associates a new stream with it.
+
+See the C library manual for more details about fopen().
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> a pathname in the GLib file name encoding (UTF-8 on Windows)
+</parameter_description>
+</parameter>
+<parameter name="mode">
+<parameter_description> a string describing the mode in which the file should be
+opened
+</parameter_description>
+</parameter>
+</parameters>
+<return> A &amp;lt;type&amp;gt;FILE&amp;lt;/type&amp;gt; pointer if the file was successfully
+opened, or %NULL if an error occurred
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_unichar_iscntrl">
+<description>
+Determines whether a character is a control character.
+Given some UTF-8 text, obtain a character value with
+g_utf8_get_char().
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @c is a control character
+</return>
+</function>
+
+<function name="g_mapped_file_new">
+<description>
+Maps a file into memory. On UNIX, this is using the mmap() function.
+
+If @writable is %TRUE, the mapped buffer may be modified, otherwise
+it is an error to modify the mapped buffer. Modifications to the buffer
+are not visible to other processes mapping the same file, and are not
+written back to the file.
+
+Note that modifications of the underlying file might affect the contents
+of the #GMappedFile. Therefore, mapping should only be used if the file
+will not be modified, or if all modifications of the file are done
+atomically (e.g. using g_file_set_contents()).
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> The path of the file to load, in the GLib filename encoding
+</parameter_description>
+</parameter>
+<parameter name="writable">
+<parameter_description> wether the mapping should be writable
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly allocated #GMappedFile which must be freed
+with g_mapped_file_free(), or %NULL if the mapping failed.
+
+Since: 2.8
+</return>
+</function>
+
+<function name="g_io_channel_read">
+<description>
+Reads data from a #GIOChannel.
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel.
+</parameter_description>
+</parameter>
+<parameter name="buf">
+<parameter_description> a buffer to read the data into (which should be at least count bytes long).
+</parameter_description>
+</parameter>
+<parameter name="count">
+<parameter_description> the number of bytes to read from the #GIOChannel.
+</parameter_description>
+</parameter>
+<parameter name="bytes_read">
+<parameter_description> returns the number of bytes actually read.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %G_IO_ERROR_NONE if the operation was successful.
+
+Deprecated: Use g_io_channel_read_chars() instead.
+</return>
+</function>
+
+<function name="g_utf8_pointer_to_offset">
+<description>
+Converts from a pointer to position within a string to a integer
+character offset.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a UTF-8 encoded string
+</parameter_description>
+</parameter>
+<parameter name="pos">
+<parameter_description> a pointer to a position within @str
+</parameter_description>
+</parameter>
+</parameters>
+<return> the resulting character offset
+</return>
+</function>
+
+<function name="g_unichar_isprint">
+<description>
+Determines whether a character is printable.
+Unlike g_unichar_isgraph(), returns %TRUE for spaces.
+Given some UTF-8 text, obtain a character value with
+g_utf8_get_char().
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @c is printable
+</return>
+</function>
+
+<function name="g_source_set_callback">
+<description>
+Sets the callback function for a source. The callback for a source is
+called from the source&apos;s dispatch function.
+
+The exact type of @func depends on the type of source; ie. you
+should not count on @func being called with @data as its first
+parameter.
+
+Typically, you won&apos;t use this function. Instead use functions specific
+to the type of source you are using.
+
+</description>
+<parameters>
+<parameter name="source">
+<parameter_description> the source
+</parameter_description>
+</parameter>
+<parameter name="func">
+<parameter_description> a callback function
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> the data to pass to callback function
+</parameter_description>
+</parameter>
+<parameter name="notify">
+<parameter_description> a function to call when @data is no longer in use, or %NULL.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_source_remove">
+<description>
+Removes the source with the given id from the default main context. The id of
+a #GSource is given by g_source_get_id(), or will be returned by the
+functions g_source_attach(), g_idle_add(), g_idle_add_full(),
+g_timeout_add(), g_timeout_add_full(), g_child_watch_add(),
+g_child_watch_add_full(), g_io_add_watch(), and g_io_add_watch_full().
+
+See also g_source_destroy().
+
+
+</description>
+<parameters>
+<parameter name="tag">
+<parameter_description> the id of the source to remove.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the source was found and removed.
+</return>
+</function>
+
+<function name="g_main_loop_get_context">
+<description>
+Returns the #GMainContext of @loop.
+
+
+</description>
+<parameters>
+<parameter name="loop">
+<parameter_description> a #GMainLoop.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the #GMainContext of @loop
+</return>
+</function>
+
+<function name="g_async_queue_lock">
+<description>
+Acquires the @queue&apos;s lock. After that you can only call the
+&amp;lt;function&amp;gt;g_async_queue_*_unlocked()&amp;lt;/function&amp;gt; function variants on that
+@queue. Otherwise it will deadlock.
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GAsyncQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_utf8_strup">
+<description>
+Converts all Unicode characters in the string that have a case
+to uppercase. The exact manner that this is done depends
+on the current locale, and may result in the number of
+characters in the string increasing. (For instance, the
+German ess-zet will be changed to SS.)
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a UTF-8 encoded string
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> length of @str, in bytes, or -1 if @str is nul-terminated.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly allocated string, with all characters
+converted to uppercase.
+</return>
+</function>
+
+<function name="g_key_file_set_comment">
+<description>
+Places a comment above @key from @group_name.
+@group_name. If @key is %NULL then @comment will
+be written above @group_name. If both @key
+and @group_name are NULL, then @comment will
+be written above the first group in the file.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="comment">
+<parameter_description> a comment
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_io_channel_seek_position">
+<description>
+Replacement for g_io_channel_seek() with the new API.
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel
+</parameter_description>
+</parameter>
+<parameter name="offset">
+<parameter_description> The offset in bytes from the position specified by @type
+</parameter_description>
+</parameter>
+<parameter name="type">
+<parameter_description> a #GSeekType. The type %G_SEEK_CUR is only allowed in those
+cases where a call to g_io_channel_set_encoding ()
+is allowed. See the documentation for
+g_io_channel_set_encoding () for details.
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> A location to return an error of type #GIOChannelError
+</parameter_description>
+</parameter>
+</parameters>
+<return> the status of the operation.
+</return>
+</function>
+
+<function name="g_io_channel_new_file">
+<description>
+Open a file @filename as a #GIOChannel using mode @mode. This
+channel will be closed when the last reference to it is dropped,
+so there is no need to call g_io_channel_close() (though doing
+so will not cause problems, as long as no attempt is made to
+access the channel after it is closed).
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> A string containing the name of a file.
+</parameter_description>
+</parameter>
+<parameter name="mode">
+<parameter_description> One of &quot;r&quot;, &quot;w&quot;, &quot;a&quot;, &quot;r+&quot;, &quot;w+&quot;, &quot;a+&quot;. These have
+the same meaning as in fopen().
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> A location to return an error of type %G_FILE_ERROR.
+</parameter_description>
+</parameter>
+</parameters>
+<return> A #GIOChannel on success, %NULL on failure.
+</return>
+</function>
+
+<function name="g_queue_insert_before">
+<description>
+Inserts @data into @queue before @sibling.
+
+@sibling must be part of @queue.
+
+Since: 2.4
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+<parameter name="sibling">
+<parameter_description> a #GList link that &amp;lt;emphasis&amp;gt;must&amp;lt;/emphasis&amp;gt; be part of @queue
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> the data to insert
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_setenv">
+<description>
+Sets an environment variable. Both the variable&apos;s name and value
+should be in the GLib file name encoding. On UNIX, this means that
+they can be any sequence of bytes. On Windows, they should be in
+UTF-8.
+
+Note that on some systems, when variables are overwritten, the memory
+used for the previous variables and its value isn&apos;t reclaimed.
+
+
+</description>
+<parameters>
+<parameter name="variable">
+<parameter_description> the environment variable to set, must not contain &apos;=&apos;.
+</parameter_description>
+</parameter>
+<parameter name="value">
+<parameter_description> the value for to set the variable to.
+</parameter_description>
+</parameter>
+<parameter name="overwrite">
+<parameter_description> whether to change the variable if it already exists.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %FALSE if the environment variable couldn&apos;t be set.
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_hash_table_lookup_extended">
+<description>
+Looks up a key in the #GHashTable, returning the original key and the
+associated value and a #gboolean which is %TRUE if the key was found. This
+is useful if you need to free the memory allocated for the original key,
+for example before calling g_hash_table_remove().
+
+
+</description>
+<parameters>
+<parameter name="hash_table">
+<parameter_description> a #GHashTable.
+</parameter_description>
+</parameter>
+<parameter name="lookup_key">
+<parameter_description> the key to look up.
+</parameter_description>
+</parameter>
+<parameter name="orig_key">
+<parameter_description> returns the original key.
+</parameter_description>
+</parameter>
+<parameter name="value">
+<parameter_description> returns the value associated with the key.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the key was found in the #GHashTable.
+</return>
+</function>
+
+<function name="g_datalist_unset_flags">
+<description>
+Turns off flag values for a data list. See g_datalist_unset_flags()
+
+</description>
+<parameters>
+<parameter name="datalist">
+<parameter_description> pointer to the location that holds a list
+</parameter_description>
+</parameter>
+<parameter name="flags">
+<parameter_description> the flags to turn off. The values of the flags are
+restricted by %G_DATALIST_FLAGS_MASK (currently
+3: giving two possible boolean flags).
+A value for @flags that doesn&apos;t fit within the mask is
+an error.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_utf8_collate_key_for_filename">
+<description>
+Converts a string into a collation key that can be compared
+with other collation keys produced by the same function using strcmp().
+
+In order to sort filenames correctly, this function treats the dot &apos;.&apos;
+as a special case. Most dictionary orderings seem to consider it
+insignificant, thus producing the ordering &quot;event.c&quot; &quot;eventgenerator.c&quot;
+&quot;event.h&quot; instead of &quot;event.c&quot; &quot;event.h&quot; &quot;eventgenerator.c&quot;. Also, we
+would like to treat numbers intelligently so that &quot;file1&quot; &quot;file10&quot; &quot;file5&quot;
+is sorted as &quot;file1&quot; &quot;file5&quot; &quot;file10&quot;.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a UTF-8 encoded string.
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> length of @str, in bytes, or -1 if @str is nul-terminated.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly allocated string. This string should
+be freed with g_free() when you are done with it.
+
+Since: 2.8
+</return>
+</function>
+
+<function name="g_convert_with_fallback">
+<description>
+Converts a string from one character set to another, possibly
+including fallback sequences for characters not representable
+in the output. Note that it is not guaranteed that the specification
+for the fallback sequences in @fallback will be honored. Some
+systems may do a approximate conversion from @from_codeset
+to @to_codeset in their iconv() functions,
+in which case GLib will simply return that approximate conversion.
+
+Note that you should use g_iconv() for streaming
+conversions&amp;lt;footnoteref linkend=&quot;streaming-state&quot;/&amp;gt;.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> the string to convert
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the length of the string, or -1 if the string is
+nul-terminated&amp;lt;footnoteref linkend=&quot;nul-unsafe&quot;/&amp;gt;.
+</parameter_description>
+</parameter>
+<parameter name="to_codeset">
+<parameter_description> name of character set into which to convert @str
+</parameter_description>
+</parameter>
+<parameter name="from_codeset">
+<parameter_description> character set of @str.
+</parameter_description>
+</parameter>
+<parameter name="fallback">
+<parameter_description> UTF-8 string to use in place of character not
+present in the target encoding. (The string must be
+representable in the target encoding).
+ If %NULL, characters not in the target encoding will
+ be represented as Unicode escapes \uxxxx or \Uxxxxyyyy.
+</parameter_description>
+</parameter>
+<parameter name="bytes_read">
+<parameter_description> location to store the number of bytes in the
+input string that were successfully converted, or %NULL.
+Even if the conversion was successful, this may be
+less than @len if there were partial characters
+at the end of the input.
+</parameter_description>
+</parameter>
+<parameter name="bytes_written">
+<parameter_description> the number of bytes stored in the output buffer (not
+including the terminating nul).
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> location to store the error occuring, or %NULL to ignore
+errors. Any of the errors in #GConvertError may occur.
+</parameter_description>
+</parameter>
+</parameters>
+<return> If the conversion was successful, a newly allocated
+nul-terminated string, which must be freed with
+g_free(). Otherwise %NULL and @error will be set.
+</return>
+</function>
+
+<function name="g_strrstr_len">
+<description>
+Searches the string @haystack for the last occurrence
+of the string @needle, limiting the length of the search
+to @haystack_len.
+
+
+</description>
+<parameters>
+<parameter name="haystack">
+<parameter_description> a nul-terminated string.
+</parameter_description>
+</parameter>
+<parameter name="haystack_len">
+<parameter_description> the maximum length of @haystack.
+</parameter_description>
+</parameter>
+<parameter name="needle">
+<parameter_description> the nul-terminated string to search for.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to the found occurrence, or
+%NULL if not found.
+</return>
+</function>
+
+<function name="g_main_context_release">
+<description>
+Releases ownership of a context previously acquired by this thread
+with g_main_context_acquire(). If the context was acquired multiple
+times, the only release ownership when g_main_context_release()
+is called as many times as it was acquired.
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMainContext
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_string_ascii_down">
+<description>
+Converts all upper case ASCII letters to lower case ASCII letters.
+
+
+</description>
+<parameters>
+<parameter name="string">
+<parameter_description> a GString
+</parameter_description>
+</parameter>
+</parameters>
+<return> passed-in @string pointer, with all the upper case
+characters converted to lower case in place, with
+semantics that exactly match g_ascii_tolower.
+</return>
+</function>
+
+<function name="g_queue_peek_nth">
+<description>
+Returns the @n&apos;th element of @queue.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+<parameter name="n">
+<parameter_description> the position of the element.
+</parameter_description>
+</parameter>
+</parameters>
+<return> The data for the @n&apos;th element of @queue, or %NULL if @n is
+off the end of @queue.
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_io_channel_flush">
+<description>
+Flushes the write buffer for the GIOChannel.
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> location to store an error of type #GIOChannelError
+</parameter_description>
+</parameter>
+</parameters>
+<return> the status of the operation: One of
+#G_IO_CHANNEL_NORMAL, #G_IO_CHANNEL_AGAIN, or
+#G_IO_CHANNEL_ERROR.
+</return>
+</function>
+
+<function name="g_str_has_suffix">
+<description>
+Looks whether the string @str ends with @suffix.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a nul-terminated string.
+</parameter_description>
+</parameter>
+<parameter name="suffix">
+<parameter_description> the nul-terminated suffix to look for.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @str end with @suffix, %FALSE otherwise.
+
+Since: 2.2
+</return>
+</function>
+
+<function name="g_queue_delete_link">
+<description>
+Removes @link_ from @queue and frees it.
+
+@link_ must be part of @queue.
+
+Since: 2.4
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+<parameter name="link_">
+<parameter_description> a #GList link that &amp;lt;emphasis&amp;gt;must&amp;lt;/emphasis&amp;gt; be part of @queue
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_rand_set_seed">
+<description>
+Sets the seed for the random number generator #GRand to @seed.
+
+</description>
+<parameters>
+<parameter name="rand_">
+<parameter_description> a #GRand.
+</parameter_description>
+</parameter>
+<parameter name="seed">
+<parameter_description> a value to reinitialize the random number generator.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_key_file_remove_comment">
+<description>
+Removes a comment above @key from @group_name.
+@group_name. If @key is %NULL then @comment will
+be written above @group_name. If both @key
+and @group_name are NULL, then @comment will
+be written above the first group in the file.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_main_loop_ref">
+<description>
+Increases the reference count on a #GMainLoop object by one.
+
+
+</description>
+<parameters>
+<parameter name="loop">
+<parameter_description> a #GMainLoop
+</parameter_description>
+</parameter>
+</parameters>
+<return> @loop
+</return>
+</function>
+
+<function name="g_key_file_get_keys">
+<description>
+Returns all keys for the group name @group_name. The array of
+returned keys will be %NULL-terminated, so @length may
+optionally be %NULL. In the event that the @group_name cannot
+be found, %NULL is returned and @error is set to
+#G_KEY_FILE_ERROR_GROUP_NOT_FOUND.
+
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="length">
+<parameter_description> return location for the number of keys returned, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly-allocated %NULL-terminated array of
+strings. Use g_strfreev() to free it.
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_open">
+<description>
+A wrapper for the POSIX open() function. The open() function is
+used to convert a pathname into a file descriptor. Note that on
+POSIX systems file descriptors are implemented by the operating
+system. On Windows, it&apos;s the C library that implements open() and
+file descriptors. The actual Windows API for opening files is
+something different.
+
+See the C library manual for more details about open().
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> a pathname in the GLib file name encoding (UTF-8 on Windows)
+</parameter_description>
+</parameter>
+<parameter name="flags">
+<parameter_description> as in open()
+</parameter_description>
+</parameter>
+<parameter name="mode">
+<parameter_description> as in open()
+</parameter_description>
+</parameter>
+</parameters>
+<return> a new file descriptor, or -1 if an error occurred. The
+return value can be used exactly like the return value from open().
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_mem_is_system_malloc">
+<description>
+Checks whether the allocator used by g_malloc() is the system&apos;s
+malloc implementation. If it returns %TRUE memory allocated with
+malloc() can be used interchangeable with memory allocated using g_malloc().
+This function is useful for avoiding an extra copy of allocated memory returned
+by a non-GLib-based API.
+
+A different allocator can be set using g_mem_set_vtable().
+
+
+</description>
+<parameters>
+</parameters>
+<return> if %TRUE, malloc() and g_malloc() can be mixed.
+</return>
+</function>
+
+<function name="g_str_has_prefix">
+<description>
+Looks whether the string @str begins with @prefix.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a nul-terminated string.
+</parameter_description>
+</parameter>
+<parameter name="prefix">
+<parameter_description> the nul-terminated prefix to look for.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @str begins with @prefix, %FALSE otherwise.
+
+Since: 2.2
+</return>
+</function>
+
+<function name="g_parse_debug_string">
+<description>
+Parses a string containing debugging options separated
+by &apos;:&apos; into a %guint containing bit flags. This is used
+within GDK and GTK+ to parse the debug options passed on the
+command line or through environment variables.
+
+
+</description>
+<parameters>
+<parameter name="string">
+<parameter_description> a list of debug options separated by &apos;:&apos; or &quot;all&quot;
+to set all flags.
+</parameter_description>
+</parameter>
+<parameter name="keys">
+<parameter_description> pointer to an array of #GDebugKey which associate
+strings with bit flags.
+</parameter_description>
+</parameter>
+<parameter name="nkeys">
+<parameter_description> the number of #GDebugKey&amp;lt;!-- --&amp;gt;s in the array.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the combined set of bit flags.
+</return>
+</function>
+
+<function name="g_unichar_ispunct">
+<description>
+Determines whether a character is punctuation or a symbol.
+Given some UTF-8 text, obtain a character value with
+g_utf8_get_char().
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @c is a punctuation or symbol character
+</return>
+</function>
+
+<function name="g_unsetenv">
+<description>
+Removes an environment variable from the environment.
+
+Note that on some systems, when variables are overwritten, the memory
+used for the previous variables and its value isn&apos;t reclaimed.
+Furthermore, this function can&apos;t be guaranteed to operate in a
+threadsafe way.
+
+Since: 2.4
+
+</description>
+<parameters>
+<parameter name="variable">
+<parameter_description> the environment variable to remove, must not contain &apos;=&apos;.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_queue_pop_head_link">
+<description>
+Removes the first element of the queue.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the #GList element at the head of the queue, or %NULL if the queue
+is empty.
+</return>
+</function>
+
+<function name="g_unichar_islower">
+<description>
+Determines whether a character is a lowercase letter.
+Given some UTF-8 text, obtain a character value with
+g_utf8_get_char().
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @c is a lowercase letter
+</return>
+</function>
+
+<function name="g_vprintf">
+<description>
+An implementation of the standard vprintf() function which supports
+positional parameters, as specified in the Single Unix Specification.
+
+
+</description>
+<parameters>
+<parameter name="format">
+<parameter_description> a standard printf() format string, but notice
+&amp;lt;link linkend=&quot;string-precision&quot;&amp;gt;string precision pitfalls&amp;lt;/link&amp;gt;.
+</parameter_description>
+</parameter>
+<parameter name="args">
+<parameter_description> the list of arguments to insert in the output.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the number of characters printed.
+
+Since: 2.2
+</return>
+</function>
+
+<function name="g_rand_new">
+<description>
+Creates a new random number generator initialized with a seed taken
+either from &amp;lt;filename&amp;gt;/dev/urandom&amp;lt;/filename&amp;gt; (if existing) or from
+the current time (as a fallback).
+
+
+</description>
+<parameters>
+</parameters>
+<return> the new #GRand.
+</return>
+</function>
+
+<function name="g_hash_table_find">
+<description>
+Calls the given function for key/value pairs in the #GHashTable until
+@predicate returns %TRUE. The function is passed the key and value of
+each pair, and the given @user_data parameter. The hash table may not
+be modified while iterating over it (you can&apos;t add/remove items).
+
+
+</description>
+<parameters>
+<parameter name="hash_table">
+<parameter_description> a #GHashTable.
+</parameter_description>
+</parameter>
+<parameter name="predicate">
+<parameter_description> function to test the key/value pairs for a certain property.
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> user data to pass to the function.
+</parameter_description>
+</parameter>
+</parameters>
+<return> The value of the first key/value pair is returned, for which
+func evaluates to %TRUE. If no pair with the requested property is found,
+%NULL is returned.
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_get_prgname">
+<description>
+Gets the name of the program. This name should &amp;lt;emphasis&amp;gt;not&amp;lt;/emphasis&amp;gt;
+be localized, contrast with g_get_application_name().
+(If you are using GDK or GTK+ the program name is set in gdk_init(),
+which is called by gtk_init(). The program name is found by taking
+the last component of &amp;lt;literal&amp;gt;argv[0]&amp;lt;/literal&amp;gt;.)
+
+
+</description>
+<parameters>
+</parameters>
+<return> the name of the program. The returned string belongs
+to GLib and must not be modified or freed.
+</return>
+</function>
+
+<function name="g_get_user_cache_dir">
+<description>
+Returns a base directory in which to store non-essential, cached
+data specific to particular user.
+
+On UNIX platforms this is determined using the mechanisms described in
+the &amp;lt;ulink url=&quot;http://www.freedesktop.org/Standards/basedir-spec&quot;&amp;gt;
+XDG Base Directory Specification&amp;lt;/ulink&amp;gt;
+
+
+</description>
+<parameters>
+</parameters>
+<return> a string owned by GLib that must not be modified
+or freed.
+Since: 2.6
+</return>
+</function>
+
+<function name="g_markup_parse_context_get_position">
+<description>
+Retrieves the current line number and the number of the character on
+that line. Intended for use in error messages; there are no strict
+semantics for what constitutes the &quot;current&quot; line number other than
+&quot;the best number we could come up with for error messages.&quot;
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMarkupParseContext
+</parameter_description>
+</parameter>
+<parameter name="line_number">
+<parameter_description> return location for a line number, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="char_number">
+<parameter_description> return location for a char-on-line number, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_key_file_set_value">
+<description>
+Associates a new value with @key under @group_name. If @key
+cannot be found then it is created. If @group_name cannot be
+found then it is created.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="value">
+<parameter_description> a string
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_main_loop_new">
+<description>
+Creates a new #GMainLoop structure.
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMainContext (if %NULL, the default context will be used).
+</parameter_description>
+</parameter>
+<parameter name="is_running">
+<parameter_description> set to %TRUE to indicate that the loop is running. This
+is not very important since calling g_main_loop_run() will set this to
+%TRUE anyway.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a new #GMainLoop.
+</return>
+</function>
+
+<function name="g_io_channel_get_flags">
+<description>
+Gets the current flags for a #GIOChannel, including read-only
+flags such as %G_IO_FLAG_IS_READABLE.
+
+The values of the flags %G_IO_FLAG_IS_READABLE and %G_IO_FLAG_IS_WRITEABLE
+are cached for internal use by the channel when it is created.
+If they should change at some later point (e.g. partial shutdown
+of a socket with the UNIX shutdown() function), the user
+should immediately call g_io_channel_get_flags () to update
+the internal values of these flags.
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel
+</parameter_description>
+</parameter>
+</parameters>
+<return> the flags which are set on the channel
+</return>
+</function>
+
+<function name="g_key_file_load_from_file">
+<description>
+Loads a key file into an empty #GKeyFile structure.
+If the file could not be loaded then %error is set to
+either a #GFileError or #GKeyFileError.
+
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> an empty #GKeyFile struct
+</parameter_description>
+</parameter>
+<parameter name="file">
+<parameter_description> the path of a filename to load, in the GLib file name encoding
+</parameter_description>
+</parameter>
+<parameter name="flags">
+<parameter_description> flags from #GKeyFileFlags
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if a key file could be loaded, %FALSE othewise
+Since: 2.6
+</return>
+</function>
+
+<function name="g_utf8_strchr">
+<description>
+Finds the leftmost occurrence of the given ISO10646 character
+in a UTF-8 encoded string, while limiting the search to @len bytes.
+If @len is -1, allow unbounded search.
+
+
+</description>
+<parameters>
+<parameter name="p">
+<parameter_description> a nul-terminated UTF-8 encoded string
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the maximum length of @p
+</parameter_description>
+</parameter>
+<parameter name="c">
+<parameter_description> a ISO10646 character
+</parameter_description>
+</parameter>
+</parameters>
+<return> %NULL if the string does not contain the character,
+otherwise, a pointer to the start of the leftmost occurrence of
+the character in the string.
+</return>
+</function>
+
+<function name="g_win32_get_package_installation_subdirectory">
+<description>
+Returns a newly-allocated string containing the path of the
+subdirectory @subdir in the return value from calling
+g_win32_get_package_installation_directory() with the @package and
+@dll_name parameters.
+
+
+</description>
+<parameters>
+<parameter name="package">
+<parameter_description> An identifier for a software package, in UTF-8, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="dll_name">
+<parameter_description> The name of a DLL that a package provides, in UTF-8, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="subdir">
+<parameter_description> A subdirectory of the package installation directory, also in UTF-8
+</parameter_description>
+</parameter>
+</parameters>
+<return> a string containing the complete path to @subdir inside
+the installation directory of @package. The returned string is in
+the GLib file name encoding, i.e. UTF-8 on Windows. The return
+value should be freed with g_free() when no longer needed.
+</return>
+</function>
+
+<function name="g_key_file_get_string_list">
+<description>
+Returns the values associated with @key under @group_name.
+
+In the event the key cannot be found, %NULL is returned and
+@error is set to #G_KEY_FILE_ERROR_KEY_NOT_FOUND. In the
+event that the @group_name cannot be found, %NULL is returned
+and @error is set to #G_KEY_FILE_ERROR_GROUP_NOT_FOUND.
+
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="length">
+<parameter_description> return location for the number of returned strings, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> a %NULL-terminated string array or %NULL if the specified
+key cannot be found. The array should be freed with g_strfreev().
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_dir_read_name">
+<description>
+Retrieves the name of the next entry in the directory. The &apos;.&apos; and
+&apos;..&apos; entries are omitted. On Windows, the returned name is in
+UTF-8. On Unix, it is in the on-disk encoding.
+
+
+</description>
+<parameters>
+<parameter name="dir">
+<parameter_description> a #GDir* created by g_dir_open()
+</parameter_description>
+</parameter>
+</parameters>
+<return> The entry&apos;s name or %NULL if there are no
+more entries. The return value is owned by GLib and
+must not be modified or freed.
+</return>
+</function>
+
+<function name="g_async_queue_ref">
+<description>
+Increases the reference count of the asynchronous @queue by 1. You
+do not need to hold the lock to call this function.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GAsyncQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the @queue that was passed in (since 2.6)
+</return>
+</function>
+
+<function name="g_shell_parse_argv">
+<description>
+Parses a command line into an argument vector, in much the same way
+the shell would, but without many of the expansions the shell would
+perform (variable expansion, globs, operators, filename expansion,
+etc. are not supported). The results are defined to be the same as
+those you would get from a UNIX98 /bin/sh, as long as the input
+contains none of the unsupported shell expansions. If the input
+does contain such expansions, they are passed through
+literally. Possible errors are those from the #G_SHELL_ERROR
+domain. Free the returned vector with g_strfreev().
+
+
+</description>
+<parameters>
+<parameter name="command_line">
+<parameter_description> command line to parse
+</parameter_description>
+</parameter>
+<parameter name="argcp">
+<parameter_description> return location for number of args
+</parameter_description>
+</parameter>
+<parameter name="argvp">
+<parameter_description> return location for array of args
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for error
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE on success, %FALSE if error set
+</return>
+</function>
+
+<function name="g_get_user_name">
+<description>
+Gets the user name of the current user. The encoding of the returned
+string is system-defined. On UNIX, it might be the preferred file name
+encoding, or something else, and there is no guarantee that it is even
+consistent on a machine. On Windows, it is always UTF-8.
+
+
+</description>
+<parameters>
+</parameters>
+<return> the user name of the current user.
+</return>
+</function>
+
+<function name="g_main_loop_quit">
+<description>
+Stops a #GMainLoop from running. Any calls to g_main_loop_run()
+for the loop will return.
+
+</description>
+<parameters>
+<parameter name="loop">
+<parameter_description> a #GMainLoop
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_key_file_set_integer_list">
+<description>
+Associates a list of integer values with @key under
+@group_name. If @key cannot be found then it is created.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="list">
+<parameter_description> an array of integer values
+</parameter_description>
+</parameter>
+<parameter name="length">
+<parameter_description> number of integer values in @list
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_queue_peek_nth_link">
+<description>
+Returns the link at the given position
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+<parameter name="n">
+<parameter_description> the position of the link
+</parameter_description>
+</parameter>
+</parameters>
+<return> The link at the @n&apos;th position, or %NULL if @n is off the
+end of the list
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_unichar_to_utf8">
+<description>
+Converts a single character to UTF-8.
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a ISO10646 character code
+</parameter_description>
+</parameter>
+<parameter name="outbuf">
+<parameter_description> output buffer, must have at least 6 bytes of space.
+If %NULL, the length will be computed and returned
+and nothing will be written to @outbuf.
+</parameter_description>
+</parameter>
+</parameters>
+<return> number of bytes written
+</return>
+</function>
+
+<function name="g_iconv_close">
+<description>
+Same as the standard UNIX routine iconv_close(), but
+may be implemented via libiconv on UNIX flavors that lack
+a native implementation. Should be called to clean up
+the conversion descriptor from g_iconv_open() when
+you are done converting things.
+
+GLib provides g_convert() and g_locale_to_utf8() which are likely
+more convenient than the raw iconv wrappers.
+
+
+</description>
+<parameters>
+<parameter name="converter">
+<parameter_description> a conversion descriptor from g_iconv_open()
+</parameter_description>
+</parameter>
+</parameters>
+<return> -1 on error, 0 on success
+</return>
+</function>
+
+<function name="g_async_queue_ref_unlocked">
+<description>
+Increases the reference count of the asynchronous @queue by 1.
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GAsyncQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_utf8_casefold">
+<description>
+Converts a string into a form that is independent of case. The
+result will not correspond to any particular case, but can be
+compared for equality or ordered with the results of calling
+g_utf8_casefold() on other strings.
+
+Note that calling g_utf8_casefold() followed by g_utf8_collate() is
+only an approximation to the correct linguistic case insensitive
+ordering, though it is a fairly good one. Getting this exactly
+right would require a more sophisticated collation function that
+takes case sensitivity into account. GLib does not currently
+provide such a function.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a UTF-8 encoded string
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> length of @str, in bytes, or -1 if @str is nul-terminated.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly allocated string, that is a
+case independent form of @str.
+</return>
+</function>
+
+<function name="g_utf8_get_char">
+<description>
+Converts a sequence of bytes encoded as UTF-8 to a Unicode character.
+If @p does not point to a valid UTF-8 encoded character, results are
+undefined. If you are not sure that the bytes are complete
+valid Unicode characters, you should use g_utf8_get_char_validated()
+instead.
+
+
+</description>
+<parameters>
+<parameter name="p">
+<parameter_description> a pointer to Unicode character encoded as UTF-8
+</parameter_description>
+</parameter>
+</parameters>
+<return> the resulting character
+</return>
+</function>
+
+<function name="g_unichar_isgraph">
+<description>
+Determines whether a character is printable and not a space
+(returns %FALSE for control characters, format characters, and
+spaces). g_unichar_isprint() is similar, but returns %TRUE for
+spaces. Given some UTF-8 text, obtain a character value with
+g_utf8_get_char().
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @c is printable unless it&apos;s a space
+</return>
+</function>
+
+<function name="g_main_context_default">
+<description>
+Returns the default main context. This is the main context used
+for main loop functions when a main loop is not explicitly
+specified.
+
+
+</description>
+<parameters>
+</parameters>
+<return> the default main context.
+</return>
+</function>
+
+<function name="g_ascii_toupper">
+<description>
+Convert a character to ASCII upper case.
+
+Unlike the standard C library toupper() function, this only
+recognizes standard ASCII letters and ignores the locale, returning
+all non-ASCII characters unchanged, even if they are upper case
+letters in a particular character set. Also unlike the standard
+library function, this takes and returns a char, not an int, so
+don&apos;t call it on %EOF but no need to worry about casting to #guchar
+before passing a possibly non-ASCII character in.
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> any character.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the result of converting @c to upper case.
+If @c is not an ASCII lower case letter,
+@c is returned unchanged.
+</return>
+</function>
+
+<function name="g_queue_is_empty">
+<description>
+Returns %TRUE if the queue is empty.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the queue is empty.
+</return>
+</function>
+
+<function name="g_chdir">
+<description>
+A wrapper for the POSIX chdir() function. The function changes the
+current directory of the process to @path.
+
+See your C library manual for more details about chdir().
+
+
+</description>
+<parameters>
+<parameter name="path">
+<parameter_description> a pathname in the GLib file name encoding (UTF-8 on Windows)
+</parameter_description>
+</parameter>
+</parameters>
+<return> 0 on success, -1 if an error occurred.
+
+Since: 2.8
+</return>
+</function>
+
+<function name="g_get_current_dir">
+<description>
+Gets the current directory.
+The returned string should be freed when no longer needed. The encoding
+of the returned string is system defined. On Windows, it is always UTF-8.
+
+
+</description>
+<parameters>
+</parameters>
+<return> the current directory.
+</return>
+</function>
+
+<function name="g_source_remove_by_funcs_user_data">
+<description>
+Removes a source from the default main loop context given the
+source functions and user data. If multiple sources exist with the
+same source functions and user data, only one will be destroyed.
+
+
+</description>
+<parameters>
+<parameter name="funcs">
+<parameter_description> The @source_funcs passed to g_source_new()
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> the user data for the callback
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if a source was found and removed.
+</return>
+</function>
+
+<function name="g_string_set_size">
+<description>
+Sets the length of a #GString. If the length is less than
+the current length, the string will be truncated. If the
+length is greater than the current length, the contents
+of the newly added area are undefined. (However, as
+always, string-&amp;gt;str[string-&amp;gt;len] will be a nul byte.)
+
+
+</description>
+<parameters>
+<parameter name="string">
+<parameter_description> a #GString
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the new length
+</parameter_description>
+</parameter>
+</parameters>
+<return> @string
+</return>
+</function>
+
+<function name="g_strsplit_set">
+<description>
+Splits @string into a number of tokens not containing any of the characters
+in @delimiter. A token is the (possibly empty) longest string that does not
+contain any of the characters in @delimiters. If @max_tokens is reached, the
+remainder is appended to the last token.
+
+For example the result of g_strsplit_set (&quot;abc:def/ghi&quot;, &quot;:/&quot;, -1) is a
+%NULL-terminated vector containing the three strings &quot;abc&quot;, &quot;def&quot;,
+and &quot;ghi&quot;.
+
+The result if g_strsplit_set (&quot;:def/ghi:&quot;, &quot;:/&quot;, -1) is a %NULL-terminated
+vector containing the four strings &quot;&quot;, &quot;def&quot;, &quot;ghi&quot;, and &quot;&quot;.
+
+As a special case, the result of splitting the empty string &quot;&quot; is an empty
+vector, not a vector containing a single string. The reason for this
+special case is that being able to represent a empty vector is typically
+more useful than consistent handling of empty elements. If you do need
+to represent empty elements, you&apos;ll need to check for the empty string
+before calling g_strsplit_set().
+
+Note that this function works on bytes not characters, so it can&apos;t be used
+to delimit UTF-8 strings for anything but ASCII characters.
+
+
+</description>
+<parameters>
+<parameter name="string">
+<parameter_description> The string to be tokenized
+</parameter_description>
+</parameter>
+<parameter name="delimiters">
+<parameter_description> A nul-terminated string containing bytes that are used
+to split the string.
+</parameter_description>
+</parameter>
+<parameter name="max_tokens">
+<parameter_description> The maximum number of tokens to split @string into.
+If this is less than 1, the string is split completely
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly-allocated %NULL-terminated array of strings. Use
+g_strfreev() to free it.
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_main_context_find_source_by_id">
+<description>
+Finds a #GSource given a pair of context and ID
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMainContext (if %NULL, the default context will be used)
+</parameter_description>
+</parameter>
+<parameter name="source_id">
+<parameter_description> the source ID, as returned by g_source_get_id()
+</parameter_description>
+</parameter>
+</parameters>
+<return> the #GSource if found, otherwise, %NULL
+</return>
+</function>
+
+<function name="g_key_file_to_data">
+<description>
+This function outputs @key_file as a string.
+
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="length">
+<parameter_description> return location for the length of the
+returned string, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly allocated string holding
+the contents of the #GKeyFile
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_main_context_prepare">
+<description>
+Prepares to poll sources within a main loop. The resulting information
+for polling is determined by calling g_main_context_query ().
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMainContext
+</parameter_description>
+</parameter>
+<parameter name="priority">
+<parameter_description> location to store priority of highest priority
+source already ready.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if some source is ready to be dispatched
+prior to polling.
+</return>
+</function>
+
+<function name="g_option_group_set_translate_func">
+<description>
+Sets the function which is used to translate user-visible
+strings, for &amp;lt;option&amp;gt;--help&amp;lt;/option&amp;gt; output. Different
+groups can use different #GTranslateFunc&amp;lt;!-- --&amp;gt;s. If @func
+is %NULL, strings are not translated.
+
+If you are using gettext(), you only need to set the translation
+domain, see g_option_group_set_translation_domain().
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="group">
+<parameter_description> a #GOptionGroup
+</parameter_description>
+</parameter>
+<parameter name="func">
+<parameter_description> the #GTranslateFunc, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> user data to pass to @func, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="destroy_notify">
+<parameter_description> a function which gets called to free @data, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_async_queue_timed_pop_unlocked">
+<description>
+Pops data from the @queue. If no data is received before @end_time,
+%NULL is returned. This function must be called while holding the
+@queue&apos;s lock.
+
+To easily calculate @end_time a combination of g_get_current_time()
+and g_time_val_add() can be used.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GAsyncQueue.
+</parameter_description>
+</parameter>
+<parameter name="end_time">
+<parameter_description> a #GTimeVal, determining the final time.
+</parameter_description>
+</parameter>
+</parameters>
+<return> data from the queue or %NULL, when no data is
+received before @end_time.
+</return>
+</function>
+
+<function name="g_key_file_set_integer">
+<description>
+Associates a new integer value with @key under @group_name.
+If @key cannot be found then it is created.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="value">
+<parameter_description> an integer value
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_get_codeset">
+<description>
+Get the codeset for the current locale.
+
+
+</description>
+<parameters>
+</parameters>
+<return> a newly allocated string containing the name
+of the codeset. This string must be freed with g_free().
+</return>
+</function>
+
+<function name="g_vasprintf">
+<description>
+An implementation of the GNU vasprintf() function which supports
+positional parameters, as specified in the Single Unix Specification.
+This function is similar to g_vsprintf(), except that it allocates a
+string to hold the output, instead of putting the output in a buffer
+you allocate in advance.
+
+
+</description>
+<parameters>
+<parameter name="string">
+<parameter_description> the return location for the newly-allocated string.
+</parameter_description>
+</parameter>
+<parameter name="format">
+<parameter_description> a standard printf() format string, but notice
+&amp;lt;link linkend=&quot;string-precision&quot;&amp;gt;string precision pitfalls&amp;lt;/link&amp;gt;.
+</parameter_description>
+</parameter>
+<parameter name="args">
+<parameter_description> the list of arguments to insert in the output.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the number of characters printed.
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_get_language_names">
+<description>
+Computes a list of applicable locale names, which can be used to
+e.g. construct locale-dependent filenames or search paths. The returned
+list is sorted from most desirable to least desirable and always contains
+the default locale &quot;C&quot;.
+
+For example, if LANGUAGE=de:en_US, then the returned list is
+&quot;de&quot;, &quot;en_US&quot;, &quot;en&quot;, &quot;C&quot;.
+
+This function consults the environment variables &amp;lt;envar&amp;gt;LANGUAGE&amp;lt;/envar&amp;gt;,
+&amp;lt;envar&amp;gt;LC_ALL&amp;lt;/envar&amp;gt;, &amp;lt;envar&amp;gt;LC_MESSAGES&amp;lt;/envar&amp;gt; and &amp;lt;envar&amp;gt;LANG&amp;lt;/envar&amp;gt;
+to find the list of locales specified by the user.
+
+
+</description>
+<parameters>
+</parameters>
+<return> a %NULL-terminated array of strings owned by GLib
+that must not be modified or freed.
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_hash_table_foreach_steal">
+<description>
+Calls the given function for each key/value pair in the #GHashTable.
+If the function returns %TRUE, then the key/value pair is removed from the
+#GHashTable, but no key or value destroy functions are called.
+
+
+</description>
+<parameters>
+<parameter name="hash_table">
+<parameter_description> a #GHashTable.
+</parameter_description>
+</parameter>
+<parameter name="func">
+<parameter_description> the function to call for each key/value pair.
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> user data to pass to the function.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the number of key/value pairs removed.
+</return>
+</function>
+
+<function name="g_key_file_get_comment">
+<description>
+Retrieves a comment above @key from @group_name.
+@group_name. If @key is %NULL then @comment will
+be read from above @group_name. If both @key
+and @group_name are NULL, then @comment will
+be read from above the first group in the file.
+
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError
+</parameter_description>
+</parameter>
+</parameters>
+<return> a comment that should be freed with g_free()
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_creat">
+<description>
+A wrapper for the POSIX creat() function. The creat() function is
+used to convert a pathname into a file descriptor, creating a file
+if necessar. Note that on POSIX systems file descriptors are
+implemented by the operating system. On Windows, it&apos;s the C library
+that implements creat() and file descriptors. The actual Windows
+API for opening files is something different.
+
+See the C library manual for more details about creat().
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> a pathname in the GLib file name encoding (UTF-8 on Windows)
+</parameter_description>
+</parameter>
+<parameter name="mode">
+<parameter_description> as in creat()
+</parameter_description>
+</parameter>
+</parameters>
+<return> a new file descriptor, or -1 if an error occurred. The
+return value can be used exactly like the return value from creat().
+
+Since: 2.8
+</return>
+</function>
+
+<function name="g_win32_error_message">
+<description>
+Translate a Win32 error code (as returned by GetLastError()) into
+the corresponding message. The message is either language neutral,
+or in the thread&apos;s language, or the user&apos;s language, the system&apos;s
+language, or US English (see docs for FormatMessage()). The
+returned string is in UTF-8. It should be deallocated with
+g_free().
+
+
+</description>
+<parameters>
+<parameter name="error">
+<parameter_description> error code.
+</parameter_description>
+</parameter>
+</parameters>
+<return> newly-allocated error message
+</return>
+</function>
+
+<function name="g_utf16_to_ucs4">
+<description>
+Convert a string from UTF-16 to UCS-4. The result will be
+terminated with a 0 character.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a UTF-16 encoded string
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the maximum length of @str to use. If @len &amp;lt; 0, then
+the string is terminated with a 0 character.
+</parameter_description>
+</parameter>
+<parameter name="items_read">
+<parameter_description> location to store number of words read, or %NULL.
+If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will be
+returned in case @str contains a trailing partial
+character. If an error occurs then the index of the
+invalid input is stored here.
+</parameter_description>
+</parameter>
+<parameter name="items_written">
+<parameter_description> location to store number of characters written, or %NULL.
+The value stored here does not include the trailing
+0 character.
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> location to store the error occuring, or %NULL to ignore
+errors. Any of the errors in #GConvertError other than
+%G_CONVERT_ERROR_NO_CONVERSION may occur.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to a newly allocated UCS-4 string.
+This value must be freed with g_free(). If an
+error occurs, %NULL will be returned and
+@error set.
+</return>
+</function>
+
+<function name="g_tree_insert">
+<description>
+Inserts a key/value pair into a #GTree. If the given key already exists
+in the #GTree its corresponding value is set to the new value. If you
+supplied a value_destroy_func when creating the #GTree, the old value is
+freed using that function. If you supplied a @key_destroy_func when
+creating the #GTree, the passed key is freed using that function.
+
+The tree is automatically &apos;balanced&apos; as new key/value pairs are added,
+so that the distance from the root to every leaf is as small as possible.
+
+</description>
+<parameters>
+<parameter name="tree">
+<parameter_description> a #GTree.
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> the key to insert.
+</parameter_description>
+</parameter>
+<parameter name="value">
+<parameter_description> the value corresponding to the key.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_async_queue_unlock">
+<description>
+Releases the queue&apos;s lock.
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GAsyncQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_source_add_poll">
+<description>
+Adds a file descriptor to the set of file descriptors polled for
+this source. This is usually combined with g_source_new() to add an
+event source. The event source&apos;s check function will typically test
+the @revents field in the #GPollFD struct and return %TRUE if events need
+to be processed.
+
+</description>
+<parameters>
+<parameter name="source">
+<parameter_description>a #GSource
+</parameter_description>
+</parameter>
+<parameter name="fd">
+<parameter_description> a #GPollFD structure holding information about a file
+descriptor to watch.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_rand_new_with_seed">
+<description>
+Creates a new random number generator initialized with @seed.
+
+
+</description>
+<parameters>
+<parameter name="seed">
+<parameter_description> a value to initialize the random number generator.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the new #GRand.
+</return>
+</function>
+
+<function name="g_queue_pop_tail_link">
+<description>
+Removes the last element of the queue.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the #GList element at the tail of the queue, or %NULL if the queue
+is empty.
+</return>
+</function>
+
+<function name="g_path_skip_root">
+<description>
+Returns a pointer into @file_name after the root component, i.e. after
+the &quot;/&quot; in UNIX or &quot;C:\&quot; under Windows. If @file_name is not an absolute
+path it returns %NULL.
+
+
+</description>
+<parameters>
+<parameter name="file_name">
+<parameter_description> a file name.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer into @file_name after the root component.
+</return>
+</function>
+
+<function name="g_unichar_xdigit_value">
+<description>
+Determines the numeric value of a character as a hexidecimal
+digit.
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> If @c is a hex digit (according to
+g_unichar_isxdigit()), its numeric value. Otherwise, -1.
+</return>
+</function>
+
+<function name="g_win32_get_windows_version">
+<description>
+Returns version information for the Windows operating system the
+code is running on. See MSDN documentation for the GetVersion()
+function. To summarize, the most significant bit is one on Win9x,
+and zero on NT-based systems. The least significant byte is 4 on
+Windows NT 4, 5 on Windows XP. Software that needs really detailled
+version and feature information should use Win32 API like
+GetVersionEx() and VerifyVersionInfo().
+
+If there is an environment variable &amp;lt;envar&amp;gt;G_WIN32_PRETEND_WIN9X&amp;lt;/envar&amp;gt;
+defined (with any value), this function always returns a version
+code for Windows 9x. This is mainly an internal debugging aid for
+GTK+ and GLib developers, to be able to check the code paths for
+Windows 9x.
+
+
+</description>
+<parameters>
+</parameters>
+<return> The version information.
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_path_get_dirname">
+<description>
+Gets the directory components of a file name. If the file name has no
+directory components &quot;.&quot; is returned. The returned string should be
+freed when no longer needed.
+
+
+</description>
+<parameters>
+<parameter name="file_name">
+<parameter_description> the name of the file.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the directory components of the file.
+</return>
+</function>
+
+<function name="g_unichar_type">
+<description>
+Classifies a Unicode character by type.
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> the type of the character.
+</return>
+</function>
+
+<function name="g_filename_from_uri">
+<description>
+Converts an escaped ASCII-encoded URI to a local filename in the
+encoding used for filenames.
+
+
+</description>
+<parameters>
+<parameter name="uri">
+<parameter_description> a uri describing a filename (escaped, encoded in ASCII).
+</parameter_description>
+</parameter>
+<parameter name="hostname">
+<parameter_description> Location to store hostname for the URI, or %NULL.
+If there is no hostname in the URI, %NULL will be
+stored in this location.
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> location to store the error occuring, or %NULL to ignore
+errors. Any of the errors in #GConvertError may occur.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly-allocated string holding the resulting
+filename, or %NULL on an error.
+</return>
+</function>
+
+<function name="g_async_queue_timed_pop">
+<description>
+Pops data from the @queue. If no data is received before @end_time,
+%NULL is returned.
+
+To easily calculate @end_time a combination of g_get_current_time()
+and g_time_val_add() can be used.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GAsyncQueue.
+</parameter_description>
+</parameter>
+<parameter name="end_time">
+<parameter_description> a #GTimeVal, determining the final time.
+</parameter_description>
+</parameter>
+</parameters>
+<return> data from the queue or %NULL, when no data is
+received before @end_time.
+</return>
+</function>
+
+<function name="g_set_prgname">
+<description>
+Sets the name of the program. This name should &amp;lt;emphasis&amp;gt;not&amp;lt;/emphasis&amp;gt;
+be localized, contrast with g_set_application_name(). Note that for
+thread-safety reasons this function can only be called once.
+
+</description>
+<parameters>
+<parameter name="prgname">
+<parameter_description> the name of the program.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_source_get_context">
+<description>
+Gets the #GMainContext with which the source is associated.
+Calling this function on a destroyed source is an error.
+
+
+</description>
+<parameters>
+<parameter name="source">
+<parameter_description> a #GSource
+</parameter_description>
+</parameter>
+</parameters>
+<return> the #GMainContext with which the source is associated,
+or %NULL if the context has not yet been added
+to a source.
+</return>
+</function>
+
+<function name="g_unichar_tolower">
+<description>
+Converts a character to lower case.
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the result of converting @c to lower case.
+If @c is not an upperlower or titlecase character,
+or has no lowercase equivalent @c is returned unchanged.
+</return>
+</function>
+
+<function name="g_spawn_async_with_pipes">
+<description>
+Executes a child program asynchronously (your program will not
+block waiting for the child to exit). The child program is
+specified by the only argument that must be provided, @argv. @argv
+should be a %NULL-terminated array of strings, to be passed as the
+argument vector for the child. The first string in @argv is of
+course the name of the program to execute. By default, the name of
+the program must be a full path; the &amp;lt;envar&amp;gt;PATH&amp;lt;/envar&amp;gt; shell variable
+will only be searched if you pass the %G_SPAWN_SEARCH_PATH flag.
+
+On Windows, the low-level child process creation API
+(CreateProcess())doesn&apos;t use argument vectors,
+but a command line. The C runtime library&apos;s
+&amp;lt;function&amp;gt;spawn*()&amp;lt;/function&amp;gt; family of functions (which
+g_spawn_async_with_pipes() eventually calls) paste the argument
+vector elements into a command line, and the C runtime startup code
+does a corresponding reconstruction of an argument vector from the
+command line, to be passed to main(). Complications arise when you have
+argument vector elements that contain spaces of double quotes. The
+&amp;lt;function&amp;gt;spawn*()&amp;lt;/function&amp;gt; functions don&apos;t do any quoting or
+escaping, but on the other hand the startup code does do unquoting
+and unescaping in order to enable receiving arguments with embedded
+spaces or double quotes. To work around this asymmetry,
+g_spawn_async_with_pipes() will do quoting and escaping on argument
+vector elements that need it before calling the C runtime
+spawn() function.
+
+@envp is a %NULL-terminated array of strings, where each string
+has the form &amp;lt;literal&amp;gt;KEY=VALUE&amp;lt;/literal&amp;gt;. This will become
+the child&apos;s environment. If @envp is %NULL, the child inherits its
+parent&apos;s environment.
+
+@flags should be the bitwise OR of any flags you want to affect the
+function&apos;s behaviour. The %G_SPAWN_DO_NOT_REAP_CHILD means that
+the child will not automatically be reaped; you must use a
+#GChildWatch source to be notified about the death of the child
+process. Eventually you must call g_spawn_close_pid() on the
+@child_pid, in order to free resources which may be associated
+with the child process. (On Unix, using a #GChildWatch source is
+equivalent to calling waitpid() or handling the %SIGCHLD signal
+manually. On Windows, calling g_spawn_close_pid() is equivalent
+to calling CloseHandle() on the process handle returned in
+@child_pid).
+
+%G_SPAWN_LEAVE_DESCRIPTORS_OPEN means that the parent&apos;s open file
+descriptors will be inherited by the child; otherwise all
+descriptors except stdin/stdout/stderr will be closed before
+calling exec() in the child. %G_SPAWN_SEARCH_PATH
+means that &amp;lt;literal&amp;gt;argv[0]&amp;lt;/literal&amp;gt; need not be an absolute path, it
+will be looked for in the user&apos;s &amp;lt;envar&amp;gt;PATH&amp;lt;/envar&amp;gt;.
+%G_SPAWN_STDOUT_TO_DEV_NULL means that the child&apos;s standard output will
+be discarded, instead of going to the same location as the parent&apos;s
+standard output. If you use this flag, @standard_output must be %NULL.
+%G_SPAWN_STDERR_TO_DEV_NULL means that the child&apos;s standard error
+will be discarded, instead of going to the same location as the parent&apos;s
+standard error. If you use this flag, @standard_error must be %NULL.
+%G_SPAWN_CHILD_INHERITS_STDIN means that the child will inherit the parent&apos;s
+standard input (by default, the child&apos;s standard input is attached to
+/dev/null). If you use this flag, @standard_input must be %NULL.
+%G_SPAWN_FILE_AND_ARGV_ZERO means that the first element of @argv is
+the file to execute, while the remaining elements are the
+actual argument vector to pass to the file. Normally
+g_spawn_async_with_pipes() uses @argv[0] as the file to execute, and
+passes all of @argv to the child.
+
+@child_setup and @user_data are a function and user data. On POSIX
+platforms, the function is called in the child after GLib has
+performed all the setup it plans to perform (including creating
+pipes, closing file descriptors, etc.) but before calling
+exec(). That is, @child_setup is called just
+before calling exec() in the child. Obviously
+actions taken in this function will only affect the child, not the
+parent. On Windows, there is no separate fork() and exec()
+functionality. Child processes are created and run right away with
+one API call, CreateProcess(). @child_setup is
+called in the parent process just before creating the child
+process. You should carefully consider what you do in @child_setup
+if you intend your software to be portable to Windows.
+
+If non-%NULL, @child_pid will on Unix be filled with the child&apos;s
+process ID. You can use the process ID to send signals to the
+child, or to waitpid() if you specified the
+%G_SPAWN_DO_NOT_REAP_CHILD flag. On Windows, @child_pid will be
+filled with a handle to the child process only if you specified the
+%G_SPAWN_DO_NOT_REAP_CHILD flag. You can then access the child
+process using the Win32 API, for example wait for its termination
+with the &amp;lt;function&amp;gt;WaitFor*()&amp;lt;/function&amp;gt; functions, or examine its
+exit code with GetExitCodeProcess(). You should close the handle
+with CloseHandle() when you no longer need it.
+
+If non-%NULL, the @standard_input, @standard_output, @standard_error
+locations will be filled with file descriptors for writing to the child&apos;s
+standard input or reading from its standard output or standard error.
+The caller of g_spawn_async_with_pipes() must close these file descriptors
+when they are no longer in use. If these parameters are %NULL, the corresponding
+pipe won&apos;t be created.
+
+If @standard_input is NULL, the child&apos;s standard input is attached to /dev/null
+unless %G_SPAWN_CHILD_INHERITS_STDIN is set.
+
+If @standard_error is NULL, the child&apos;s standard error goes to the same location
+as the parent&apos;s standard error unless %G_SPAWN_STDERR_TO_DEV_NULL is set.
+
+If @standard_output is NULL, the child&apos;s standard output goes to the same location
+as the parent&apos;s standard output unless %G_SPAWN_STDOUT_TO_DEV_NULL is set.
+
+@error can be %NULL to ignore errors, or non-%NULL to report errors.
+If an error is set, the function returns %FALSE. Errors
+are reported even if they occur in the child (for example if the
+executable in &amp;lt;literal&amp;gt;argv[0]&amp;lt;/literal&amp;gt; is not found). Typically
+the &amp;lt;literal&amp;gt;message&amp;lt;/literal&amp;gt; field of returned errors should be displayed
+to users. Possible errors are those from the #G_SPAWN_ERROR domain.
+
+If an error occurs, @child_pid, @standard_input, @standard_output,
+and @standard_error will not be filled with valid values.
+
+If @child_pid is not %NULL and an error does not occur then the returned
+pid must be closed using g_spawn_close_pid().
+
+
+</description>
+<parameters>
+<parameter name="working_directory">
+<parameter_description> child&apos;s current working directory, or %NULL to inherit parent&apos;s
+</parameter_description>
+</parameter>
+<parameter name="argv">
+<parameter_description> child&apos;s argument vector
+</parameter_description>
+</parameter>
+<parameter name="envp">
+<parameter_description> child&apos;s environment, or %NULL to inherit parent&apos;s
+</parameter_description>
+</parameter>
+<parameter name="flags">
+<parameter_description> flags from #GSpawnFlags
+</parameter_description>
+</parameter>
+<parameter name="child_setup">
+<parameter_description> function to run in the child just before exec()
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> user data for @child_setup
+</parameter_description>
+</parameter>
+<parameter name="child_pid">
+<parameter_description> return location for child process ID, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="standard_input">
+<parameter_description> return location for file descriptor to write to child&apos;s stdin, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="standard_output">
+<parameter_description> return location for file descriptor to read child&apos;s stdout, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="standard_error">
+<parameter_description> return location for file descriptor to read child&apos;s stderr, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for error
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE on success, %FALSE if an error was set
+</return>
+</function>
+
+<function name="g_io_channel_write_unichar">
+<description>
+This function cannot be called on a channel with %NULL encoding.
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel
+</parameter_description>
+</parameter>
+<parameter name="thechar">
+<parameter_description> a character
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> A location to return an error of type #GConvertError
+or #GIOChannelError
+</parameter_description>
+</parameter>
+</parameters>
+<return> a #GIOStatus
+</return>
+</function>
+
+<function name="g_rand_copy">
+<description>
+Copies a #GRand into a new one with the same exact state as before.
+This way you can take a snapshot of the random number generator for
+replaying later.
+
+
+</description>
+<parameters>
+<parameter name="rand_">
+<parameter_description> a #GRand.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the new #GRand.
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_spawn_sync">
+<description>
+Executes a child synchronously (waits for the child to exit before returning).
+All output from the child is stored in @standard_output and @standard_error,
+if those parameters are non-%NULL. If @exit_status is non-%NULL, the exit
+status of the child is stored there as it would be returned by
+waitpid(); standard UNIX macros such as WIFEXITED() and WEXITSTATUS()
+must be used to evaluate the exit status. If an error occurs, no data is
+returned in @standard_output, @standard_error, or @exit_status.
+
+This function calls g_spawn_async_with_pipes() internally; see that function
+for full details on the other parameters.
+
+
+</description>
+<parameters>
+<parameter name="working_directory">
+<parameter_description> child&apos;s current working directory, or %NULL to inherit parent&apos;s
+</parameter_description>
+</parameter>
+<parameter name="argv">
+<parameter_description> child&apos;s argument vector
+</parameter_description>
+</parameter>
+<parameter name="envp">
+<parameter_description> child&apos;s environment, or %NULL to inherit parent&apos;s
+</parameter_description>
+</parameter>
+<parameter name="flags">
+<parameter_description> flags from #GSpawnFlags
+</parameter_description>
+</parameter>
+<parameter name="child_setup">
+<parameter_description> function to run in the child just before exec()
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> user data for @child_setup
+</parameter_description>
+</parameter>
+<parameter name="standard_output">
+<parameter_description> return location for child output
+</parameter_description>
+</parameter>
+<parameter name="standard_error">
+<parameter_description> return location for child error messages
+</parameter_description>
+</parameter>
+<parameter name="exit_status">
+<parameter_description> return location for child exit status, as returned by waitpid()
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for error
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE on success, %FALSE if an error was set.
+</return>
+</function>
+
+<function name="g_queue_index">
+<description>
+Returns the position of the first element in @queue which contains @data.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> the data to find.
+</parameter_description>
+</parameter>
+</parameters>
+<return> The position of the first element in @queue which contains @data, or -1 if no element in @queue contains @data.
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_utf16_to_utf8">
+<description>
+Convert a string from UTF-16 to UTF-8. The result will be
+terminated with a 0 byte.
+
+Note that the input is expected to be already in native endianness,
+an initial byte-order-mark character is not handled specially.
+g_convert() can be used to convert a byte buffer of UTF-16 data of
+ambiguous endianess.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a UTF-16 encoded string
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the maximum length of @str to use. If @len &amp;lt; 0, then
+the string is terminated with a 0 character.
+</parameter_description>
+</parameter>
+<parameter name="items_read">
+<parameter_description> location to store number of words read, or %NULL.
+If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will be
+returned in case @str contains a trailing partial
+character. If an error occurs then the index of the
+invalid input is stored here.
+</parameter_description>
+</parameter>
+<parameter name="items_written">
+<parameter_description> location to store number of bytes written, or %NULL.
+The value stored here does not include the trailing
+0 byte.
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> location to store the error occuring, or %NULL to ignore
+errors. Any of the errors in #GConvertError other than
+%G_CONVERT_ERROR_NO_CONVERSION may occur.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to a newly allocated UTF-8 string.
+This value must be freed with g_free(). If an
+error occurs, %NULL will be returned and
+@error set.
+</return>
+</function>
+
+<function name="g_option_context_set_ignore_unknown_options">
+<description>
+Sets whether to ignore unknown options or not. If an argument is
+ignored, it is left in the @argv array after parsing. By default,
+g_option_context_parse() treats unknown options as error.
+
+This setting does not affect non-option arguments (i.e. arguments
+which don&apos;t start with a dash). But note that GOption cannot reliably
+determine whether a non-option belongs to a preceding unknown option.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GOptionContext
+</parameter_description>
+</parameter>
+<parameter name="ignore_unknown">
+<parameter_description> %TRUE to ignore unknown options, %FALSE to produce
+an error when unknown options are met
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_clear_error">
+<description>
+If @err is %NULL, does nothing. If @err is non-%NULL,
+calls g_error_free() on *@err and sets *@err to %NULL.
+
+</description>
+<parameters>
+<parameter name="err">
+<parameter_description> a #GError return location
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_ascii_tolower">
+<description>
+Convert a character to ASCII lower case.
+
+Unlike the standard C library tolower() function, this only
+recognizes standard ASCII letters and ignores the locale, returning
+all non-ASCII characters unchanged, even if they are lower case
+letters in a particular character set. Also unlike the standard
+library function, this takes and returns a char, not an int, so
+don&apos;t call it on %EOF but no need to worry about casting to #guchar
+before passing a possibly non-ASCII character in.
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> any character.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the result of converting @c to lower case.
+If @c is not an ASCII upper case letter,
+@c is returned unchanged.
+</return>
+</function>
+
+<function name="g_queue_get_length">
+<description>
+Returns the number of items in @queue.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+</parameters>
+<return> The number of items in @queue.
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_io_channel_get_line_term">
+<description>
+This returns the string that #GIOChannel uses to determine
+where in the file a line break occurs. A value of %NULL
+indicates auto detection.
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel
+</parameter_description>
+</parameter>
+<parameter name="length">
+<parameter_description> a location to return the length of the line terminator
+</parameter_description>
+</parameter>
+</parameters>
+<return> The line termination string. This value
+is owned by GLib and must not be freed.
+</return>
+</function>
+
+<function name="g_utf8_strreverse">
+<description>
+Reverses a UTF-8 string. @str must be valid UTF-8 encoded text.
+(Use g_utf8_validate() on all text before trying to use UTF-8
+utility functions with it.)
+
+Note that unlike g_strreverse(), this function returns
+newly-allocated memory, which should be freed with g_free() when
+no longer needed.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a UTF-8 encoded string
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the maximum length of @str to use. If @len &amp;lt; 0, then
+the string is nul-terminated.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly-allocated string which is the reverse of @str.
+
+Since: 2.2
+</return>
+</function>
+
+<function name="g_random_int_range">
+<description>
+Returns a random #gint32 equally distributed over the range
+[@begin..@end-1].
+
+
+</description>
+<parameters>
+<parameter name="begin">
+<parameter_description> lower closed bound of the interval.
+</parameter_description>
+</parameter>
+<parameter name="end">
+<parameter_description> upper open bound of the interval.
+</parameter_description>
+</parameter>
+</parameters>
+<return> A random number.
+</return>
+</function>
+
+<function name="g_datalist_get_flags">
+<description>
+Gets flags values packed in together with the datalist.
+See g_datalist_set_flags().
+
+
+</description>
+<parameters>
+<parameter name="datalist">
+<parameter_description> pointer to the location that holds a list
+</parameter_description>
+</parameter>
+</parameters>
+<return> the flags of the datalist
+</return>
+</function>
+
+<function name="g_idle_remove_by_data">
+<description>
+Removes the idle function with the given data.
+
+
+</description>
+<parameters>
+<parameter name="data">
+<parameter_description> the data for the idle source&apos;s callback.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if an idle source was found and removed.
+</return>
+</function>
+
+<function name="g_queue_new">
+<description>
+Creates a new #GQueue.
+
+
+</description>
+<parameters>
+</parameters>
+<return> a new #GQueue.
+</return>
+</function>
+
+<function name="g_basename">
+<description>
+Gets the name of the file without any leading directory components.
+It returns a pointer into the given file name string.
+
+
+</description>
+<parameters>
+<parameter name="file_name">
+<parameter_description> the name of the file.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the name of the file without any leading directory components.
+
+Deprecated: Use g_path_get_basename() instead, but notice that
+g_path_get_basename() allocates new memory for the returned string, unlike
+this function which returns a pointer into the argument.
+</return>
+</function>
+
+<function name="g_unlink">
+<description>
+A wrapper for the POSIX unlink() function. The unlink() function
+deletes a name from the filesystem. If this was the last link to the
+file and no processes have it opened, the diskspace occupied by the
+file is freed.
+
+See your C library manual for more details about unlink(). Note
+that on Windows, it is in general not possible to delete files that
+are open to some process, or mapped into memory.
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> a pathname in the GLib file name encoding (UTF-8 on Windows)
+</parameter_description>
+</parameter>
+</parameters>
+<return> 0 if the name was successfully deleted, -1 if an error
+occurred
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_io_channel_get_buffered">
+<description>
+Returns whether @channel is buffered.
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the @channel is buffered.
+</return>
+</function>
+
+<function name="g_locale_from_utf8">
+<description>
+Converts a string from UTF-8 to the encoding used for strings by
+the C runtime (usually the same as that used by the operating
+system) in the current locale.
+
+
+</description>
+<parameters>
+<parameter name="utf8string">
+<parameter_description> a UTF-8 encoded string
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the length of the string, or -1 if the string is
+nul-terminated&amp;lt;footnoteref linkend=&quot;nul-unsafe&quot;/&amp;gt;.
+</parameter_description>
+</parameter>
+<parameter name="bytes_read">
+<parameter_description> location to store the number of bytes in the
+input string that were successfully converted, or %NULL.
+Even if the conversion was successful, this may be
+less than @len if there were partial characters
+at the end of the input. If the error
+#G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value
+stored will the byte offset after the last valid
+input sequence.
+</parameter_description>
+</parameter>
+<parameter name="bytes_written">
+<parameter_description> the number of bytes stored in the output buffer (not
+including the terminating nul).
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> location to store the error occuring, or %NULL to ignore
+errors. Any of the errors in #GConvertError may occur.
+</parameter_description>
+</parameter>
+</parameters>
+<return> The converted string, or %NULL on an error.
+</return>
+</function>
+
+<function name="g_async_queue_try_pop_unlocked">
+<description>
+Tries to pop data from the @queue. If no data is available, %NULL is
+returned. This function must be called while holding the @queue&apos;s
+lock.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GAsyncQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return> data from the queue or %NULL, when no data is
+available immediately.
+</return>
+</function>
+
+<function name="g_main_depth">
+<description>
+Return value: The main loop recursion level in the current thread
+
+
+</description>
+<parameters>
+</parameters>
+<return>the depth of the stack of calls to
+g_main_context_dispatch() on any #GMainContext in the current thread.
+That is, when called from the toplevel, it gives 0. When
+called from within a callback from g_main_context_iteration()
+(or g_main_loop_run(), etc.) it returns 1. When called from within
+a callback to a recursive call to g_main_context_iterate(),
+it returns 2. And so forth.
+
+This function is useful in a situation like the following:
+Imagine an extremely simple &quot;garbage collected&quot; system.
+
+&amp;lt;example&amp;gt;
+static GList *free_list;
+
+gpointer
+allocate_memory (gsize size)
+{
+gpointer result = g_malloc (size);
+free_list = g_list_prepend (free_list, result);
+return result;
+}
+
+void
+free_allocated_memory (void)
+{
+GList *l;
+for (l = free_list; l; l = l-&amp;gt;next);
+g_free (l-&amp;gt;data);
+g_list_free (free_list);
+free_list = NULL;
+}
+
+[...]
+
+while (TRUE);
+{
+g_main_context_iteration (NULL, TRUE);
+free_allocated_memory();
+}
+&amp;lt;/example&amp;gt;
+
+This works from an application, however, if you want to do the same
+thing from a library, it gets more difficult, since you no longer
+control the main loop. You might think you can simply use an idle
+function to make the call to free_allocated_memory(), but that
+doesn&apos;t work, since the idle function could be called from a
+recursive callback. This can be fixed by using g_main_depth()
+
+&amp;lt;example&amp;gt;
+gpointer
+allocate_memory (gsize size)
+{
+FreeListBlock *block = g_new (FreeListBlock, 1);\
+block-&amp;gt;mem = g_malloc (size);
+block-&amp;gt;depth = g_main_depth ();
+free_list = g_list_prepend (free_list, block);
+return block-&amp;gt;mem;
+}
+
+void
+free_allocated_memory (void)
+{
+GList *l;
+
+int depth = g_main_depth ();
+for (l = free_list; l; );
+{
+GList *next = l-&amp;gt;next;
+FreeListBlock *block = l-&amp;gt;data;
+if (block-&amp;gt;depth &amp;gt; depth)
+{
+g_free (block-&amp;gt;mem);
+g_free (block);
+free_list = g_list_delete_link (free_list, l);
+}
+
+l = next;
+}
+}
+&amp;lt;/example&amp;gt;
+
+There is a temptation to use g_main_depth() to solve
+problems with reentrancy. For instance, while waiting for data
+to be received from the network in response to a menu item,
+the menu item might be selected again. It might seem that
+one could make the menu item&apos;s callback return immediately
+and do nothing if g_main_depth() returns a value greater than 1.
+However, this should be avoided since the user then sees selecting
+the menu item do nothing. Furthermore, you&apos;ll find yourself adding
+these checks all over your code, since there are doubtless many,
+many things that the user could do. Instead, you can use the
+following techniques:
+
+&amp;lt;orderedlist&amp;gt;
+&amp;lt;listitem&amp;gt;
+&amp;lt;para&amp;gt;
+Use gtk_widget_set_sensitive() or modal dialogs to prevent
+the user from interacting with elements while the main
+loop is recursing.
+&amp;lt;/para&amp;gt;
+&amp;lt;/listitem&amp;gt;
+&amp;lt;listitem&amp;gt;
+&amp;lt;para&amp;gt;
+Avoid main loop recursion in situations where you can&apos;t handle
+arbitrary callbacks. Instead, structure your code so that you
+simply return to the main loop and then get called again when
+there is more work to do.
+&amp;lt;/para&amp;gt;
+&amp;lt;/listitem&amp;gt;
+&amp;lt;/orderedlist&amp;gt;
+</return>
+</function>
+
+<function name="g_key_file_set_list_separator">
+<description>
+Sets the character which is used to separate
+values in lists. Typically &apos;;&apos; or &apos;,&apos; are used
+as separators. The default list separator is &apos;;&apos;.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="separator">
+<parameter_description> the separator
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_rand_double_range">
+<description>
+Returns the next random #gdouble from @rand_ equally distributed over
+the range [@begin..@end).
+
+
+</description>
+<parameters>
+<parameter name="rand_">
+<parameter_description> a #GRand.
+</parameter_description>
+</parameter>
+<parameter name="begin">
+<parameter_description> lower closed bound of the interval.
+</parameter_description>
+</parameter>
+<parameter name="end">
+<parameter_description> upper open bound of the interval.
+</parameter_description>
+</parameter>
+</parameters>
+<return> A random number.
+</return>
+</function>
+
+<function name="g_hash_table_remove">
+<description>
+Removes a key and its associated value from a #GHashTable.
+
+If the #GHashTable was created using g_hash_table_new_full(), the
+key and value are freed using the supplied destroy functions, otherwise
+you have to make sure that any dynamically allocated values are freed
+yourself.
+
+
+</description>
+<parameters>
+<parameter name="hash_table">
+<parameter_description> a #GHashTable.
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> the key to remove.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the key was found and removed from the #GHashTable.
+</return>
+</function>
+
+<function name="g_string_up">
+<description>
+Converts a #GString to uppercase.
+
+
+</description>
+<parameters>
+<parameter name="string">
+<parameter_description> a #GString
+</parameter_description>
+</parameter>
+</parameters>
+<return> the #GString
+
+Deprecated: This function uses the locale-specific toupper() function,
+which is almost never the right thing. Use g_string_ascii_up() or
+g_utf8_strup() instead.
+</return>
+</function>
+
+<function name="g_error_matches">
+<description>
+Returns %TRUE if @error matches @domain and @code, %FALSE
+otherwise.
+
+
+</description>
+<parameters>
+<parameter name="error">
+<parameter_description> a #GError
+</parameter_description>
+</parameter>
+<parameter name="domain">
+<parameter_description> an error domain
+</parameter_description>
+</parameter>
+<parameter name="code">
+<parameter_description> an error code
+</parameter_description>
+</parameter>
+</parameters>
+<return> whether @error has @domain and @code
+</return>
+</function>
+
+<function name="_glib_get_locale_dir">
+<description>
+Return the path to the lib\locale subfolder of the GLib
+installation folder. The path is in the system codepage. We have to
+use system codepage as bindtextdomain() doesn&apos;t have a UTF-8
+interface.
+
+</description>
+<parameters>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_filename_display_name">
+<description>
+Converts a filename into a valid UTF-8 string. The
+conversion is not necessarily reversible, so you
+should keep the original around and use the return
+value of this function only for display purposes.
+Unlike g_filename_to_utf8(), the result is guaranteed
+to be non-NULL even if the filename actually isn&apos;t in the GLib
+file name encoding.
+
+If you know the whole pathname of the file you should use
+g_filename_display_basename(), since that allows location-based
+translation of filenames.
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> a pathname hopefully in the GLib file name encoding
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly allocated string containing
+a rendition of the filename in valid UTF-8
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_option_context_add_main_entries">
+<description>
+A convenience function which creates a main group if it doesn&apos;t
+exist, adds the @entries to it and sets the translation domain.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GOptionContext
+</parameter_description>
+</parameter>
+<parameter name="entries">
+<parameter_description> a %NULL-terminated array of #GOptionEntry&amp;lt;!-- --&amp;gt;s
+</parameter_description>
+</parameter>
+<parameter name="translation_domain">
+<parameter_description> a translation domain to use for translating
+the &amp;lt;option&amp;gt;--help&amp;lt;/option&amp;gt; output for the options in @entries
+with gettext(), or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_dir_open">
+<description>
+Opens a directory for reading. The names of the files in the
+directory can then be retrieved using g_dir_read_name().
+
+
+</description>
+<parameters>
+<parameter name="path">
+<parameter_description> the path to the directory you are interested in. On Unix
+in the on-disk encoding. On Windows in UTF-8
+</parameter_description>
+</parameter>
+<parameter name="flags">
+<parameter_description> Currently must be set to 0. Reserved for future use.
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError, or %NULL.
+If non-%NULL, an error will be set if and only if
+g_dir_open() fails.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly allocated #GDir on success, %NULL on failure.
+If non-%NULL, you must free the result with g_dir_close()
+when you are finished with it.
+</return>
+</function>
+
+<function name="g_lstat">
+<description>
+A wrapper for the POSIX lstat() function. The lstat() function is
+like stat() except that in the case of symbolic links, it returns
+information about the symbolic link itself and not the file that it
+refers to. If the system does not support symbolic links g_lstat()
+is identical to g_stat().
+
+See the C library manual for more details about lstat().
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> a pathname in the GLib file name encoding (UTF-8 on Windows)
+</parameter_description>
+</parameter>
+<parameter name="buf">
+<parameter_description> a pointer to a &amp;lt;structname&amp;gt;stat&amp;lt;/structname&amp;gt; struct, which
+will be filled with the file information
+</parameter_description>
+</parameter>
+</parameters>
+<return> 0 if the information was successfully retrieved, -1 if an error
+occurred
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_thread_pool_push">
+<description>
+Inserts @data into the list of tasks to be executed by @pool. When
+the number of currently running threads is lower than the maximal
+allowed number of threads, a new thread is started (or reused) with
+the properties given to g_thread_pool_new (). Otherwise @data stays
+in the queue until a thread in this pool finishes its previous task
+and processes @data.
+
+@error can be %NULL to ignore errors, or non-%NULL to report
+errors. An error can only occur when a new thread couldn&apos;t be
+created. In that case @data is simply appended to the queue of work
+to do.
+
+</description>
+<parameters>
+<parameter name="pool">
+<parameter_description> a #GThreadPool
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> a new task for @pool
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for error
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_io_channel_read_line">
+<description>
+Reads a line, including the terminating character(s),
+from a #GIOChannel into a newly-allocated string.
+@str_return will contain allocated memory if the return
+is %G_IO_STATUS_NORMAL.
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel
+</parameter_description>
+</parameter>
+<parameter name="str_return">
+<parameter_description> The line read from the #GIOChannel, including the
+line terminator. This data should be freed with g_free()
+when no longer needed. This is a nul-terminated string.
+If a @length of zero is returned, this will be %NULL instead.
+</parameter_description>
+</parameter>
+<parameter name="length">
+<parameter_description> location to store length of the read data, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="terminator_pos">
+<parameter_description> location to store position of line terminator, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> A location to return an error of type #GConvertError
+or #GIOChannelError
+</parameter_description>
+</parameter>
+</parameters>
+<return> the status of the operation.
+</return>
+</function>
+
+<function name="g_strip_context">
+<description>
+An auxiliary function for gettext() support (see Q_()).
+
+
+</description>
+<parameters>
+<parameter name="msgid">
+<parameter_description> a string
+</parameter_description>
+</parameter>
+<parameter name="msgval">
+<parameter_description> another string
+</parameter_description>
+</parameter>
+</parameters>
+<return> @msgval, unless @msgval is identical to @msgid and contains
+a &apos;|&apos; character, in which case a pointer to the substring of msgid after
+the first &apos;|&apos; character is returned.
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_main_context_query">
+<description>
+Determines information necessary to poll this main loop.
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMainContext
+</parameter_description>
+</parameter>
+<parameter name="max_priority">
+<parameter_description> maximum priority source to check
+</parameter_description>
+</parameter>
+<parameter name="timeout_">
+<parameter_description> location to store timeout to be used in polling
+</parameter_description>
+</parameter>
+<parameter name="fds">
+<parameter_description> location to store #GPollFD records that need to be polled.
+</parameter_description>
+</parameter>
+<parameter name="n_fds">
+<parameter_description> length of @fds.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the number of records actually stored in @fds,
+or, if more than @n_fds records need to be stored, the number
+of records that need to be stored.
+</return>
+</function>
+
+<function name="g_get_home_dir">
+<description>
+Gets the current user&apos;s home directory.
+
+Note that in contrast to traditional UNIX tools, this function
+prefers &amp;lt;filename&amp;gt;passwd&amp;lt;/filename&amp;gt; entries over the &amp;lt;envar&amp;gt;HOME&amp;lt;/envar&amp;gt;
+environment variable.
+
+
+</description>
+<parameters>
+</parameters>
+<return> the current user&apos;s home directory.
+</return>
+</function>
+
+<function name="g_queue_free">
+<description>
+Frees the memory allocated for the #GQueue.
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_key_file_load_from_data">
+<description>
+Loads a key file from memory into an empty #GKeyFile structure. If
+the object cannot be created then %error is set to a
+#GKeyFileError.
+
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> an empty #GKeyFile struct
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> key file loaded in memory.
+</parameter_description>
+</parameter>
+<parameter name="length">
+<parameter_description> the length of @data in bytes
+</parameter_description>
+</parameter>
+<parameter name="flags">
+<parameter_description> flags from #GKeyFileFlags
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if a key file could be loaded, %FALSE othewise
+Since: 2.6
+</return>
+</function>
+
+<function name="g_string_ascii_up">
+<description>
+Converts all lower case ASCII letters to upper case ASCII letters.
+
+
+</description>
+<parameters>
+<parameter name="string">
+<parameter_description> a GString
+</parameter_description>
+</parameter>
+</parameters>
+<return> passed-in @string pointer, with all the lower case
+characters converted to upper case in place, with
+semantics that exactly match g_ascii_toupper.
+</return>
+</function>
+
+<function name="g_key_file_get_value">
+<description>
+Returns the value associated with @key under @group_name.
+
+In the event the key cannot be found, %NULL is returned and
+@error is set to #G_KEY_FILE_ERROR_KEY_NOT_FOUND. In the
+event that the @group_name cannot be found, %NULL is returned
+and @error is set to #G_KEY_FILE_ERROR_GROUP_NOT_FOUND.
+
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly allocated string or %NULL if the specified
+key cannot be found.
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_markup_parse_context_end_parse">
+<description>
+Signals to the #GMarkupParseContext that all data has been
+fed into the parse context with g_markup_parse_context_parse().
+This function reports an error if the document isn&apos;t complete,
+for example if elements are still open.
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMarkupParseContext
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE on success, %FALSE if an error was set
+</return>
+</function>
+
+<function name="g_thread_pool_get_max_threads">
+<description>
+Returns the maximal number of threads for @pool.
+
+
+</description>
+<parameters>
+<parameter name="pool">
+<parameter_description> a #GThreadPool
+</parameter_description>
+</parameter>
+</parameters>
+<return> the maximal number of threads
+</return>
+</function>
+
+<function name="g_ascii_digit_value">
+<description>
+Determines the numeric value of a character as a decimal
+digit. Differs from g_unichar_digit_value() because it takes
+a char, so there&apos;s no worry about sign extension if characters
+are signed.
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> an ASCII character.
+</parameter_description>
+</parameter>
+</parameters>
+<return> If @c is a decimal digit (according to
+g_ascii_isdigit()), its numeric value. Otherwise, -1.
+</return>
+</function>
+
+<function name="g_main_context_set_poll_func">
+<description>
+Sets the function to use to handle polling of file descriptors. It
+will be used instead of the poll() system call
+(or GLib&apos;s replacement function, which is used where
+poll() isn&apos;t available).
+
+This function could possibly be used to integrate the GLib event
+loop with an external event loop.
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMainContext
+</parameter_description>
+</parameter>
+<parameter name="func">
+<parameter_description> the function to call to poll all file descriptors
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_queue_pop_tail">
+<description>
+Removes the last element of the queue.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the data of the last element in the queue, or %NULL if the queue
+is empty.
+</return>
+</function>
+
+<function name="g_timeout_add_full">
+<description>
+Sets a function to be called at regular intervals, with the given
+priority. The function is called repeatedly until it returns
+%FALSE, at which point the timeout is automatically destroyed and
+the function will not be called again. The @notify function is
+called when the timeout is destroyed. The first call to the
+function will be at the end of the first @interval.
+
+Note that timeout functions may be delayed, due to the processing of other
+event sources. Thus they should not be relied on for precise timing.
+After each call to the timeout function, the time of the next
+timeout is recalculated based on the current time and the given interval
+(it does not try to &apos;catch up&apos; time lost in delays).
+
+
+</description>
+<parameters>
+<parameter name="priority">
+<parameter_description> the priority of the idle source. Typically this will be in the
+range between #G_PRIORITY_DEFAULT_IDLE and #G_PRIORITY_HIGH_IDLE.
+</parameter_description>
+</parameter>
+<parameter name="interval">
+<parameter_description> the time between calls to the function, in milliseconds
+(1/1000ths of a second)
+</parameter_description>
+</parameter>
+<parameter name="function">
+<parameter_description> function to call
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> data to pass to @function
+</parameter_description>
+</parameter>
+<parameter name="notify">
+<parameter_description> function to call when the idle is removed, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> the id of event source.
+</return>
+</function>
+
+<function name="g_utf8_strncpy">
+<description>
+Like the standard C strncpy() function, but
+copies a given number of characters instead of a given number of
+bytes. The @src string must be valid UTF-8 encoded text.
+(Use g_utf8_validate() on all text before trying to use UTF-8
+utility functions with it.)
+
+
+</description>
+<parameters>
+<parameter name="dest">
+<parameter_description> buffer to fill with characters from @src
+</parameter_description>
+</parameter>
+<parameter name="src">
+<parameter_description> UTF-8 encoded string
+</parameter_description>
+</parameter>
+<parameter name="n">
+<parameter_description> character count
+</parameter_description>
+</parameter>
+</parameters>
+<return> @dest
+</return>
+</function>
+
+<function name="g_file_test">
+<description>
+Returns %TRUE if any of the tests in the bitfield @test are
+%TRUE. For example, &amp;lt;literal&amp;gt;(G_FILE_TEST_EXISTS |
+G_FILE_TEST_IS_DIR)&amp;lt;/literal&amp;gt; will return %TRUE if the file exists;
+the check whether it&apos;s a directory doesn&apos;t matter since the existence
+test is %TRUE. With the current set of available tests, there&apos;s no point
+passing in more than one test at a time.
+
+Apart from %G_FILE_TEST_IS_SYMLINK all tests follow symbolic links,
+so for a symbolic link to a regular file g_file_test() will return
+%TRUE for both %G_FILE_TEST_IS_SYMLINK and %G_FILE_TEST_IS_REGULAR.
+
+Note, that for a dangling symbolic link g_file_test() will return
+%TRUE for %G_FILE_TEST_IS_SYMLINK and %FALSE for all other flags.
+
+You should never use g_file_test() to test whether it is safe
+to perform an operation, because there is always the possibility
+of the condition changing before you actually perform the operation.
+For example, you might think you could use %G_FILE_TEST_IS_SYMLINK
+to know whether it is is safe to write to a file without being
+tricked into writing into a different location. It doesn&apos;t work!
+
+&amp;lt;informalexample&amp;gt;&amp;lt;programlisting&amp;gt;
+/&amp;ast; DON&apos;T DO THIS &amp;ast;/
+if (!g_file_test (filename, G_FILE_TEST_IS_SYMLINK)) {
+fd = g_open (filename, O_WRONLY);
+/&amp;ast; write to fd &amp;ast;/
+}
+&amp;lt;/programlisting&amp;gt;&amp;lt;/informalexample&amp;gt;
+
+Another thing to note is that %G_FILE_TEST_EXISTS and
+%G_FILE_TEST_IS_EXECUTABLE are implemented using the access()
+system call. This usually doesn&apos;t matter, but if your program
+is setuid or setgid it means that these tests will give you
+the answer for the real user ID and group ID, rather than the
+effective user ID and group ID.
+
+On Windows, there are no symlinks, so testing for
+%G_FILE_TEST_IS_SYMLINK will always return %FALSE. Testing for
+%G_FILE_TEST_IS_EXECUTABLE will just check that the file exists and
+its name indicates that it is executable, checking for well-known
+extensions and those listed in the %PATHEXT environment variable.
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> a filename to test in the GLib file name encoding
+</parameter_description>
+</parameter>
+<parameter name="test">
+<parameter_description> bitfield of #GFileTest flags
+</parameter_description>
+</parameter>
+</parameters>
+<return> whether a test was %TRUE
+</return>
+</function>
+
+<function name="g_async_queue_length_unlocked">
+<description>
+Returns the length of the queue, negative values mean waiting
+threads, positive values mean available entries in the
+@queue. Actually this function returns the number of data items in
+the queue minus the number of waiting threads. Thus a return value
+of 0 could mean &apos;n&apos; entries in the queue and &apos;n&apos; thread waiting.
+That can happen due to locking of the queue or due to
+scheduling. This function must be called while holding the @queue&apos;s
+lock.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GAsyncQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the length of the @queue.
+</return>
+</function>
+
+<function name="g_thread_pool_set_max_threads">
+<description>
+Sets the maximal allowed number of threads for @pool. A value of -1
+means, that the maximal number of threads is unlimited.
+
+Setting @max_threads to 0 means stopping all work for @pool. It is
+effectively frozen until @max_threads is set to a non-zero value
+again.
+
+A thread is never terminated while calling @func, as supplied by
+g_thread_pool_new (). Instead the maximal number of threads only
+has effect for the allocation of new threads in g_thread_pool_push().
+A new thread is allocated, whenever the number of currently
+running threads in @pool is smaller than the maximal number.
+
+@error can be %NULL to ignore errors, or non-%NULL to report
+errors. An error can only occur when a new thread couldn&apos;t be
+created.
+
+</description>
+<parameters>
+<parameter name="pool">
+<parameter_description> a #GThreadPool
+</parameter_description>
+</parameter>
+<parameter name="max_threads">
+<parameter_description> a new maximal number of threads for @pool
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for error
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_utf8_find_next_char">
+<description>
+Finds the start of the next UTF-8 character in the string after @p.
+
+@p does not have to be at the beginning of a UTF-8 character. No check
+is made to see if the character found is actually valid other than
+it starts with an appropriate byte.
+
+
+</description>
+<parameters>
+<parameter name="p">
+<parameter_description> a pointer to a position within a UTF-8 encoded string
+</parameter_description>
+</parameter>
+<parameter name="end">
+<parameter_description> a pointer to the end of the string, or %NULL to indicate
+that the string is nul-terminated, in which case
+the returned value will be
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to the found character or %NULL
+</return>
+</function>
+
+<function name="g_unichar_isspace">
+<description>
+Determines whether a character is a space, tab, or line separator
+(newline, carriage return, etc.). Given some UTF-8 text, obtain a
+character value with g_utf8_get_char().
+
+(Note: don&apos;t use this to do word breaking; you have to use
+Pango or equivalent to get word breaking right, the algorithm
+is fairly complex.)
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @c is a punctuation character
+</return>
+</function>
+
+<function name="g_utf8_to_ucs4">
+<description>
+Convert a string from UTF-8 to a 32-bit fixed width
+representation as UCS-4. A trailing 0 will be added to the
+string after the converted text.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a UTF-8 encoded string
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> the maximum length of @str to use. If @len &amp;lt; 0, then
+the string is nul-terminated.
+</parameter_description>
+</parameter>
+<parameter name="items_read">
+<parameter_description> location to store number of bytes read, or %NULL.
+If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will be
+returned in case @str contains a trailing partial
+character. If an error occurs then the index of the
+invalid input is stored here.
+</parameter_description>
+</parameter>
+<parameter name="items_written">
+<parameter_description> location to store number of characters written or %NULL.
+The value here stored does not include the trailing 0
+character.
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> location to store the error occuring, or %NULL to ignore
+errors. Any of the errors in #GConvertError other than
+%G_CONVERT_ERROR_NO_CONVERSION may occur.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to a newly allocated UCS-4 string.
+This value must be freed with g_free(). If an
+error occurs, %NULL will be returned and
+@error set.
+</return>
+</function>
+
+<function name="g_error_copy">
+<description>
+Makes a copy of @error.
+
+
+</description>
+<parameters>
+<parameter name="error">
+<parameter_description> a #GError
+</parameter_description>
+</parameter>
+</parameters>
+<return> a new #GError
+</return>
+</function>
+
+<function name="g_tree_replace">
+<description>
+Inserts a new key and value into a #GTree similar to g_tree_insert().
+The difference is that if the key already exists in the #GTree, it gets
+replaced by the new key. If you supplied a @value_destroy_func when
+creating the #GTree, the old value is freed using that function. If you
+supplied a @key_destroy_func when creating the #GTree, the old key is
+freed using that function.
+
+The tree is automatically &apos;balanced&apos; as new key/value pairs are added,
+so that the distance from the root to every leaf is as small as possible.
+
+</description>
+<parameters>
+<parameter name="tree">
+<parameter_description> a #GTree.
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> the key to insert.
+</parameter_description>
+</parameter>
+<parameter name="value">
+<parameter_description> the value corresponding to the key.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_ascii_strup">
+<description>
+Converts all lower case ASCII letters to upper case ASCII letters.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> a string.
+</parameter_description>
+</parameter>
+<parameter name="len">
+<parameter_description> length of @str in bytes, or -1 if @str is nul-terminated.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly allocated string, with all the lower case
+characters in @str converted to upper case, with
+semantics that exactly match g_ascii_toupper(). (Note
+that this is unlike the old g_strup(), which modified
+the string in place.)
+</return>
+</function>
+
+<function name="g_source_attach">
+<description>
+Adds a #GSource to a @context so that it will be executed within
+that context.
+
+
+</description>
+<parameters>
+<parameter name="source">
+<parameter_description> a #GSource
+</parameter_description>
+</parameter>
+<parameter name="context">
+<parameter_description> a #GMainContext (if %NULL, the default context will be used)
+</parameter_description>
+</parameter>
+</parameters>
+<return> the ID for the source within the #GMainContext
+</return>
+</function>
+
+<function name="g_key_file_set_locale_string_list">
+<description>
+Associates a list of string values for @key and @locale under
+@group_name. If the translation for @key cannot be found then
+it is created.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="locale">
+<parameter_description> a locale
+</parameter_description>
+</parameter>
+<parameter name="list">
+<parameter_description> a %NULL-terminated array of locale string values
+</parameter_description>
+</parameter>
+<parameter name="length">
+<parameter_description> the length of @list
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_error_new">
+<description>
+Creates a new #GError with the given @domain and @code,
+and a message formatted with @format.
+
+
+</description>
+<parameters>
+<parameter name="domain">
+<parameter_description> error domain
+</parameter_description>
+</parameter>
+<parameter name="code">
+<parameter_description> error code
+</parameter_description>
+</parameter>
+<parameter name="format">
+<parameter_description> printf()-style format for error message
+</parameter_description>
+</parameter>
+<parameter name="Varargs">
+<parameter_description> parameters for message format
+</parameter_description>
+</parameter>
+</parameters>
+<return> a new #GError
+</return>
+</function>
+
+<function name="g_tree_remove">
+<description>
+Removes a key/value pair from a #GTree.
+
+If the #GTree was created using g_tree_new_full(), the key and value
+are freed using the supplied destroy functions, otherwise you have to
+make sure that any dynamically allocated values are freed yourself.
+If the key does not exist in the #GTree, the function does nothing.
+
+
+</description>
+<parameters>
+<parameter name="tree">
+<parameter_description> a #GTree.
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> the key to remove.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the key was found (prior to 2.8, this function returned nothing)
+</return>
+</function>
+
+<function name="g_rmdir">
+<description>
+A wrapper for the POSIX rmdir() function. The rmdir() function
+deletes a directory from the filesystem.
+
+See your C library manual for more details about how rmdir() works
+on your system.
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> a pathname in the GLib file name encoding (UTF-8 on Windows)
+</parameter_description>
+</parameter>
+</parameters>
+<return> 0 if the directory was successfully removed, -1 if an error
+occurred
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_async_queue_new">
+<description>
+Creates a new asynchronous queue with the initial reference count of 1.
+
+
+</description>
+<parameters>
+</parameters>
+<return> the new #GAsyncQueue.
+</return>
+</function>
+
+<function name="g_atexit">
+<description>
+Specifies a function to be called at normal program termination.
+
+</description>
+<parameters>
+<parameter name="func">
+<parameter_description> the function to call on normal program termination.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_utf8_collate">
+<description>
+Compares two strings for ordering using the linguistically
+correct rules for the current locale. When sorting a large
+number of strings, it will be significantly faster to
+obtain collation keys with g_utf8_collate_key() and
+compare the keys with strcmp() when
+sorting instead of sorting the original strings.
+
+
+</description>
+<parameters>
+<parameter name="str1">
+<parameter_description> a UTF-8 encoded string
+</parameter_description>
+</parameter>
+<parameter name="str2">
+<parameter_description> a UTF-8 encoded string
+</parameter_description>
+</parameter>
+</parameters>
+<return> &amp;lt; 0 if @str1 compares before @str2,
+0 if they compare equal, &amp;gt; 0 if @str1 compares after @str2.
+</return>
+</function>
+
+<function name="g_uri_list_extract_uris">
+<description>
+Splits an URI list conforming to the text/uri-list
+mime type defined in RFC 2483 into individual URIs,
+discarding any comments. The URIs are not validated.
+
+
+</description>
+<parameters>
+<parameter name="uri_list">
+<parameter_description> an URI list
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly allocated %NULL-terminated list of
+strings holding the individual URIs. The array should
+be freed with g_strfreev().
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_ascii_strtoull">
+<description>
+Converts a string to a #guint64 value.
+This function behaves like the standard strtoull() function
+does in the C locale. It does this without actually
+changing the current locale, since that would not be
+thread-safe.
+
+This function is typically used when reading configuration
+files or other non-user input that should be locale independent.
+To handle input from the user you should normally use the
+locale-sensitive system strtoull() function.
+
+If the correct value would cause overflow, %G_MAXUINT64
+is returned, and %ERANGE is stored in %errno.
+
+
+</description>
+<parameters>
+<parameter name="nptr">
+<parameter_description> the string to convert to a numeric value.
+</parameter_description>
+</parameter>
+<parameter name="endptr">
+<parameter_description> if non-%NULL, it returns the character after
+the last character used in the conversion.
+</parameter_description>
+</parameter>
+<parameter name="base">
+<parameter_description> to be used for the conversion, 2..36 or 0
+</parameter_description>
+</parameter>
+</parameters>
+<return> the #guint64 value.
+
+Since: 2.2
+</return>
+</function>
+
+<function name="g_source_remove_by_user_data">
+<description>
+Removes a source from the default main loop context given the user
+data for the callback. If multiple sources exist with the same user
+data, only one will be destroyed.
+
+
+</description>
+<parameters>
+<parameter name="user_data">
+<parameter_description> the user_data for the callback.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if a source was found and removed.
+</return>
+</function>
+
+<function name="g_date_get_iso8601_week_of_year">
+<description>
+Returns the week of the year, where weeks are interpreted according
+to ISO 8601.
+
+
+</description>
+<parameters>
+<parameter name="date">
+<parameter_description> a valid #GDate
+</parameter_description>
+</parameter>
+</parameters>
+<return> ISO 8601 week number of the year.
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_tree_foreach">
+<description>
+Calls the given function for each of the key/value pairs in the #GTree.
+The function is passed the key and value of each pair, and the given
+@data parameter. The tree is traversed in sorted order.
+
+The tree may not be modified while iterating over it (you can&apos;t
+add/remove items). To remove all items matching a predicate, you need
+to add each item to a list in your #GTraverseFunc as you walk over
+the tree, then walk the list and remove each item.
+
+</description>
+<parameters>
+<parameter name="tree">
+<parameter_description> a #GTree.
+</parameter_description>
+</parameter>
+<parameter name="func">
+<parameter_description> the function to call for each node visited. If this function
+returns %TRUE, the traversal is stopped.
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> user data to pass to the function.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_main_context_pending">
+<description>
+Checks if any sources have pending events for the given context.
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMainContext (if %NULL, the default context will be used)
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if events are pending.
+</return>
+</function>
+
+<function name="g_timeout_source_new">
+<description>
+Creates a new timeout source.
+
+The source will not initially be associated with any #GMainContext
+and must be added to one with g_source_attach() before it will be
+executed.
+
+
+</description>
+<parameters>
+<parameter name="interval">
+<parameter_description> the timeout interval in milliseconds.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the newly-created timeout source
+</return>
+</function>
+
+<function name="g_tree_new_full">
+<description>
+Creates a new #GTree like g_tree_new() and allows to specify functions
+to free the memory allocated for the key and value that get called when
+removing the entry from the #GTree.
+
+
+</description>
+<parameters>
+<parameter name="key_compare_func">
+<parameter_description> qsort()-style comparison function.
+</parameter_description>
+</parameter>
+<parameter name="key_compare_data">
+<parameter_description> data to pass to comparison function.
+</parameter_description>
+</parameter>
+<parameter name="key_destroy_func">
+<parameter_description> a function to free the memory allocated for the key
+used when removing the entry from the #GTree or %NULL if you don&apos;t
+want to supply such a function.
+</parameter_description>
+</parameter>
+<parameter name="value_destroy_func">
+<parameter_description> a function to free the memory allocated for the
+value used when removing the entry from the #GTree or %NULL if you
+don&apos;t want to supply such a function.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a new #GTree.
+</return>
+</function>
+
+<function name="g_spawn_close_pid">
+<description>
+On some platforms, notably WIN32, the #GPid type represents a resource
+which must be closed to prevent resource leaking. g_spawn_close_pid()
+is provided for this purpose. It should be used on all platforms, even
+though it doesn&apos;t do anything under UNIX.
+
+</description>
+<parameters>
+<parameter name="pid">
+<parameter_description> The process identifier to close
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_unichar_toupper">
+<description>
+Converts a character to uppercase.
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> the result of converting @c to uppercase.
+If @c is not an lowercase or titlecase character,
+or has no upper case equivalent @c is returned unchanged.
+</return>
+</function>
+
+<function name="g_io_channel_set_line_term">
+<description>
+This sets the string that #GIOChannel uses to determine
+where in the file a line break occurs.
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel
+</parameter_description>
+</parameter>
+<parameter name="line_term">
+<parameter_description> The line termination string. Use %NULL for auto detect.
+Auto detection breaks on &quot;\n&quot;, &quot;\r\n&quot;, &quot;\r&quot;, &quot;\0&quot;, and
+the Unicode paragraph separator. Auto detection should
+not be used for anything other than file-based channels.
+</parameter_description>
+</parameter>
+<parameter name="length">
+<parameter_description> The length of the termination string. If -1 is passed, the
+string is assumed to be nul-terminated. This option allows
+termination strings with embeded nuls.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_sprintf">
+<description>
+An implementation of the standard sprintf() function which supports
+positional parameters, as specified in the Single Unix Specification.
+
+
+</description>
+<parameters>
+<parameter name="string">
+<parameter_description> the buffer to hold the output.
+</parameter_description>
+</parameter>
+<parameter name="format">
+<parameter_description> a standard printf() format string, but notice
+&amp;lt;link linkend=&quot;string-precision&quot;&amp;gt;string precision pitfalls&amp;lt;/link&amp;gt;.
+</parameter_description>
+</parameter>
+<parameter name="Varargs">
+<parameter_description> the arguments to insert in the output.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the number of characters printed.
+
+Since: 2.2
+</return>
+</function>
+
+<function name="g_strncasecmp">
+<description>
+A case-insensitive string comparison, corresponding to the standard
+strncasecmp() function on platforms which support it.
+It is similar to g_strcasecmp() except it only compares the first @n
+characters of the strings.
+
+
+</description>
+<parameters>
+<parameter name="s1">
+<parameter_description> a string.
+</parameter_description>
+</parameter>
+<parameter name="s2">
+<parameter_description> a string to compare with @s1.
+</parameter_description>
+</parameter>
+<parameter name="n">
+<parameter_description> the maximum number of characters to compare.
+</parameter_description>
+</parameter>
+</parameters>
+<return> 0 if the strings match, a negative value if @s1 &amp;lt; @s2,
+or a positive value if @s1 &amp;gt; @s2.
+
+Deprecated: The problem with g_strncasecmp() is that it does the
+comparison by calling toupper()/tolower(). These functions are
+locale-specific and operate on single bytes. However, it is impossible
+to handle things correctly from an I18N standpoint by operating on
+bytes, since characters may be multibyte. Thus g_strncasecmp() is
+broken if your string is guaranteed to be ASCII, since it&apos;s
+locale-sensitive, and it&apos;s broken if your string is localized, since
+it doesn&apos;t work on many encodings at all, including UTF-8, EUC-JP,
+etc.
+
+There are therefore two replacement functions: g_ascii_strncasecmp(),
+which only works on ASCII and is not locale-sensitive, and
+g_utf8_casefold(), which is good for case-insensitive sorting of UTF-8.
+</return>
+</function>
+
+<function name="g_unicode_canonical_decomposition">
+<description>
+Computes the canonical decomposition of a Unicode character.
+
+
+</description>
+<parameters>
+<parameter name="ch">
+<parameter_description> a Unicode character.
+</parameter_description>
+</parameter>
+<parameter name="result_len">
+<parameter_description> location to store the length of the return value.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly allocated string of Unicode characters.
+@result_len is set to the resulting length of the string.
+</return>
+</function>
+
+<function name="iconv_cache_bucket_expire">
+<description>
+Expires a single cache bucket @bucket. This should only ever be
+called on a bucket that currently has no used iconv descriptors
+open.
+
+@node is not a required argument. If @node is not supplied, we
+search for it ourselves.
+
+</description>
+<parameters>
+<parameter name="node">
+<parameter_description> cache bucket&apos;s node
+</parameter_description>
+</parameter>
+<parameter name="bucket">
+<parameter_description> cache bucket
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_child_watch_source_new">
+<description>
+Creates a new child_watch source.
+
+The source will not initially be associated with any #GMainContext
+and must be added to one with g_source_attach() before it will be
+executed.
+
+Note that on platforms where #GPid must be explicitely closed
+(see g_spawn_close_pid()) @pid must not be closed while the
+source is still active. Typically, you will want to call
+g_spawn_close_pid() in the callback function for the source.
+
+Note further that using g_child_watch_source_new() is not
+compatible with calling &amp;lt;literal&amp;gt;waitpid(-1)&amp;lt;/literal&amp;gt; in
+the application. Calling waitpid() for individual pids will
+still work fine.
+
+
+</description>
+<parameters>
+<parameter name="pid">
+<parameter_description> process id of a child process to watch. On Windows, a HANDLE
+for the process to watch (which actually doesn&apos;t have to be a child).
+</parameter_description>
+</parameter>
+</parameters>
+<return> the newly-created child watch source
+
+Since: 2.4
+</return>
+</function>
+
+<function name="g_rand_int">
+<description>
+Returns the next random #guint32 from @rand_ equally distributed over
+the range [0..2^32-1].
+
+
+</description>
+<parameters>
+<parameter name="rand_">
+<parameter_description> a #GRand.
+</parameter_description>
+</parameter>
+</parameters>
+<return> A random number.
+</return>
+</function>
+
+<function name="g_io_channel_get_buffer_condition">
+<description>
+This function returns a #GIOCondition depending on whether there
+is data to be read/space to write data in the
+internal buffers in the #GIOChannel. Only the flags %G_IO_IN and
+%G_IO_OUT may be set.
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> A #GIOChannel
+</parameter_description>
+</parameter>
+</parameters>
+<return> A #GIOCondition
+</return>
+</function>
+
+<function name="g_hash_table_foreach">
+<description>
+Calls the given function for each of the key/value pairs in the
+#GHashTable. The function is passed the key and value of each
+pair, and the given @user_data parameter. The hash table may not
+be modified while iterating over it (you can&apos;t add/remove
+items). To remove all items matching a predicate, use
+g_hash_table_foreach_remove().
+
+</description>
+<parameters>
+<parameter name="hash_table">
+<parameter_description> a #GHashTable.
+</parameter_description>
+</parameter>
+<parameter name="func">
+<parameter_description> the function to call for each key/value pair.
+</parameter_description>
+</parameter>
+<parameter name="user_data">
+<parameter_description> user data to pass to the function.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_key_file_get_locale_string_list">
+<description>
+Returns the values associated with @key under @group_name
+translated in the given @locale if available. If @locale is
+%NULL then the current locale is assumed.
+
+If @key cannot be found then %NULL is returned and @error is set to
+#G_KEY_FILE_ERROR_KEY_NOT_FOUND. If the values associated
+with @key cannot be interpreted or no suitable translations
+can be found then the untranslated values are returned.
+The returned array is %NULL-terminated, so @length may optionally be %NULL.
+
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="locale">
+<parameter_description> a locale
+</parameter_description>
+</parameter>
+<parameter name="length">
+<parameter_description> return location for the number of returned strings or %NULL
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly allocated %NULL-terminated string array
+or %NULL if the key isn&apos;t found. The string array should be freed
+with g_strfreev().
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_nullify_pointer">
+<description>
+Set the pointer at the specified location to %NULL.
+
+</description>
+<parameters>
+<parameter name="nullify_location">
+<parameter_description> the memory address of the pointer.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_key_file_set_locale_string">
+<description>
+Associates a string value for @key and @locale under
+@group_name. If the translation for @key cannot be found
+then it is created.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="locale">
+<parameter_description> a locale
+</parameter_description>
+</parameter>
+<parameter name="string">
+<parameter_description> a string
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_string_insert_unichar">
+<description>
+Converts a Unicode character into UTF-8, and insert it
+into the string at the given position.
+
+
+</description>
+<parameters>
+<parameter name="string">
+<parameter_description> a #GString
+</parameter_description>
+</parameter>
+<parameter name="pos">
+<parameter_description> the position at which to insert character, or -1 to
+append at the end of the string.
+</parameter_description>
+</parameter>
+<parameter name="wc">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> @string
+</return>
+</function>
+
+<function name="g_get_charset">
+<description>
+Obtains the character set for the current locale; you might use
+this character set as an argument to g_convert(), to convert from
+the current locale&apos;s encoding to some other encoding. (Frequently
+g_locale_to_utf8() and g_locale_from_utf8() are nice shortcuts,
+though.)
+
+The return value is %TRUE if the locale&apos;s encoding is UTF-8, in that
+case you can perhaps avoid calling g_convert().
+
+The string returned in @charset is not allocated, and should not be
+freed.
+
+
+</description>
+<parameters>
+<parameter name="charset">
+<parameter_description> return location for character set name
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the returned charset is UTF-8
+</return>
+</function>
+
+<function name="g_key_file_set_string_list">
+<description>
+Associates a list of string values for @key under @group_name.
+If @key cannot be found then it is created. If @group_name
+cannot be found then it is created.
+
+Since: 2.6
+
+</description>
+<parameters>
+<parameter name="key_file">
+<parameter_description> a #GKeyFile
+</parameter_description>
+</parameter>
+<parameter name="group_name">
+<parameter_description> a group name
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key
+</parameter_description>
+</parameter>
+<parameter name="list">
+<parameter_description> an array of locale string values
+</parameter_description>
+</parameter>
+<parameter name="length">
+<parameter_description> number of locale string values in @list
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_markup_escape_text">
+<description>
+Escapes text so that the markup parser will parse it verbatim.
+Less than, greater than, ampersand, etc. are replaced with the
+corresponding entities. This function would typically be used
+when writing out a file to be parsed with the markup parser.
+
+Note that this function doesn&apos;t protect whitespace and line endings
+from being processed according to the XML rules for normalization
+of line endings and attribute values.
+
+
+</description>
+<parameters>
+<parameter name="text">
+<parameter_description> some valid UTF-8 text
+</parameter_description>
+</parameter>
+<parameter name="length">
+<parameter_description> length of @text in bytes
+</parameter_description>
+</parameter>
+</parameters>
+<return> escaped text
+</return>
+</function>
+
+<function name="g_option_context_parse">
+<description>
+Parses the command line arguments, recognizing options
+which have been added to @context. A side-effect of
+calling this function is that g_set_prgname() will be
+called.
+
+If the parsing is successful, any parsed arguments are
+removed from the array and @argc and @argv are updated
+accordingly. A &apos;--&apos; option is stripped from @argv
+unless there are unparsed options before and after it,
+or some of the options after it start with &apos;-&apos;. In case
+of an error, @argc and @argv are left unmodified.
+
+If automatic &amp;lt;option&amp;gt;--help&amp;lt;/option&amp;gt; support is enabled
+(see g_option_context_set_help_enabled()), and the
+@argv array contains one of the recognized help options,
+this function will produce help output to stdout and
+call &amp;lt;literal&amp;gt;exit (0)&amp;lt;/literal&amp;gt;.
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GOptionContext
+</parameter_description>
+</parameter>
+<parameter name="argc">
+<parameter_description> a pointer to the number of command line arguments.
+</parameter_description>
+</parameter>
+<parameter name="argv">
+<parameter_description> a pointer to the array of command line arguments.
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> a return location for errors
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the parsing was successful,
+%FALSE if an error occurred
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_strsplit">
+<description>
+Splits a string into a maximum of @max_tokens pieces, using the given
+@delimiter. If @max_tokens is reached, the remainder of @string is appended
+to the last token.
+
+As a special case, the result of splitting the empty string &quot;&quot; is an empty
+vector, not a vector containing a single string. The reason for this
+special case is that being able to represent a empty vector is typically
+more useful than consistent handling of empty elements. If you do need
+to represent empty elements, you&apos;ll need to check for the empty string
+before calling g_strsplit().
+
+
+</description>
+<parameters>
+<parameter name="string">
+<parameter_description> a string to split.
+</parameter_description>
+</parameter>
+<parameter name="delimiter">
+<parameter_description> a string which specifies the places at which to split the string.
+The delimiter is not included in any of the resulting strings, unless
+@max_tokens is reached.
+</parameter_description>
+</parameter>
+<parameter name="max_tokens">
+<parameter_description> the maximum number of pieces to split @string into. If this is
+less than 1, the string is split completely.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly-allocated %NULL-terminated array of strings. Use
+g_strfreev() to free it.
+</return>
+</function>
+
+<function name="g_shell_quote">
+<description>
+Quotes a string so that the shell (/bin/sh) will interpret the
+quoted string to mean @unquoted_string. If you pass a filename to
+the shell, for example, you should first quote it with this
+function. The return value must be freed with g_free(). The
+quoting style used is undefined (single or double quotes may be
+used).
+
+
+</description>
+<parameters>
+<parameter name="unquoted_string">
+<parameter_description> a literal string
+</parameter_description>
+</parameter>
+</parameters>
+<return> quoted string
+</return>
+</function>
+
+<function name="g_error_free">
+<description>
+Frees a #GError and associated resources.
+
+
+</description>
+<parameters>
+<parameter name="error">
+<parameter_description> a #GError
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_remove">
+<description>
+A wrapper for the POSIX remove() function. The remove() function
+deletes a name from the filesystem.
+
+See your C library manual for more details about how remove() works
+on your system. On Unix, remove() removes also directories, as it
+calls unlink() for files and rmdir() for directories. On Windows,
+although remove() in the C library only works for files, this
+function tries first remove() and then if that fails rmdir(), and
+thus works for both files and directories. Note however, that on
+Windows, it is in general not possible to remove a file that is
+open to some process, or mapped into memory.
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> a pathname in the GLib file name encoding (UTF-8 on Windows)
+</parameter_description>
+</parameter>
+</parameters>
+<return> 0 if the file was successfully removed, -1 if an error
+occurred
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_main_context_check">
+<description>
+Passes the results of polling back to the main loop.
+
+
+</description>
+<parameters>
+<parameter name="context">
+<parameter_description> a #GMainContext
+</parameter_description>
+</parameter>
+<parameter name="max_priority">
+<parameter_description> the maximum numerical priority of sources to check
+</parameter_description>
+</parameter>
+<parameter name="fds">
+<parameter_description> array of #GPollFD&apos;s that was passed to the last call to
+g_main_context_query()
+</parameter_description>
+</parameter>
+<parameter name="n_fds">
+<parameter_description> return value of g_main_context_query()
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if some sources are ready to be dispatched.
+</return>
+</function>
+
+<function name="g_spawn_command_line_sync">
+<description>
+A simple version of g_spawn_sync() with little-used parameters
+removed, taking a command line instead of an argument vector. See
+g_spawn_sync() for full details. @command_line will be parsed by
+g_shell_parse_argv(). Unlike g_spawn_sync(), the %G_SPAWN_SEARCH_PATH flag
+is enabled. Note that %G_SPAWN_SEARCH_PATH can have security
+implications, so consider using g_spawn_sync() directly if
+appropriate. Possible errors are those from g_spawn_sync() and those
+from g_shell_parse_argv().
+
+If @exit_status is non-%NULL, the exit status of the child is stored there as
+it would be returned by waitpid(); standard UNIX macros such as WIFEXITED()
+and WEXITSTATUS() must be used to evaluate the exit status.
+
+On Windows, please note the implications of g_shell_parse_argv()
+parsing @command_line. Space is a separator, and backslashes are
+special. Thus you cannot simply pass a @command_line containing
+canonical Windows paths, like &quot;c:\\program files\\app\\app.exe&quot;, as
+the backslashes will be eaten, and the space will act as a
+separator. You need to enclose such paths with single quotes, like
+&quot;&apos;c:\\program files\\app\\app.exe&apos; &apos;e:\\folder\\argument.txt&apos;&quot;.
+
+
+</description>
+<parameters>
+<parameter name="command_line">
+<parameter_description> a command line
+</parameter_description>
+</parameter>
+<parameter name="standard_output">
+<parameter_description> return location for child output
+</parameter_description>
+</parameter>
+<parameter name="standard_error">
+<parameter_description> return location for child errors
+</parameter_description>
+</parameter>
+<parameter name="exit_status">
+<parameter_description> return location for child exit status, as returned by waitpid()
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for errors
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE on success, %FALSE if an error was set
+</return>
+</function>
+
+<function name="g_build_filenamev">
+<description>
+Behaves exactly like g_build_filename(), but takes the path elements
+as a string array, instead of varargs. This function is mainly
+meant for language bindings.
+
+
+</description>
+<parameters>
+<parameter name="args">
+<parameter_description> %NULL-terminated array of strings containing the path elements.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a newly-allocated string that must be freed with g_free().
+
+Since: 2.8
+</return>
+</function>
+
+<function name="g_io_channel_write_chars">
+<description>
+Replacement for g_io_channel_write() with the new API.
+
+On seekable channels with encodings other than %NULL or UTF-8, generic
+mixing of reading and writing is not allowed. A call to g_io_channel_write_chars ()
+may only be made on a channel from which data has been read in the
+cases described in the documentation for g_io_channel_set_encoding ().
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel
+</parameter_description>
+</parameter>
+<parameter name="buf">
+<parameter_description> a buffer to write data from
+</parameter_description>
+</parameter>
+<parameter name="count">
+<parameter_description> the size of the buffer. If -1, the buffer
+is taken to be a nul-terminated string.
+</parameter_description>
+</parameter>
+<parameter name="bytes_written">
+<parameter_description> The number of bytes written. This can be nonzero
+even if the return value is not %G_IO_STATUS_NORMAL.
+If the return value is %G_IO_STATUS_NORMAL and the
+channel is blocking, this will always be equal
+to @count if @count &amp;gt;= 0.
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> A location to return an error of type #GConvertError
+or #GIOChannelError
+</parameter_description>
+</parameter>
+</parameters>
+<return> the status of the operation.
+</return>
+</function>
+
+<function name="g_source_get_can_recurse">
+<description>
+Checks whether a source is allowed to be called recursively.
+see g_source_set_can_recurse().
+
+
+</description>
+<parameters>
+<parameter name="source">
+<parameter_description> a #GSource
+</parameter_description>
+</parameter>
+</parameters>
+<return> whether recursion is allowed.
+</return>
+</function>
+
+<function name="g_io_channel_read_to_end">
+<description>
+Reads all the remaining data from the file.
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel
+</parameter_description>
+</parameter>
+<parameter name="str_return">
+<parameter_description> Location to store a pointer to a string holding
+the remaining data in the #GIOChannel. This data should
+be freed with g_free() when no longer needed. This
+data is terminated by an extra nul character, but there
+may be other nuls in the intervening data.
+</parameter_description>
+</parameter>
+<parameter name="length">
+<parameter_description> Location to store length of the data
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> A location to return an error of type #GConvertError
+or #GIOChannelError
+</parameter_description>
+</parameter>
+</parameters>
+<return> %G_IO_STATUS_NORMAL on success.
+This function never returns %G_IO_STATUS_EOF.
+</return>
+</function>
+
+<function name="g_io_channel_set_buffered">
+<description>
+The buffering state can only be set if the channel&apos;s encoding
+is %NULL. For any other encoding, the channel must be buffered.
+
+A buffered channel can only be set unbuffered if the channel&apos;s
+internal buffers have been flushed. Newly created channels or
+channels which have returned %G_IO_STATUS_EOF
+not require such a flush. For write-only channels, a call to
+g_io_channel_flush () is sufficient. For all other channels,
+the buffers may be flushed by a call to g_io_channel_seek_position ().
+This includes the possibility of seeking with seek type %G_SEEK_CUR
+and an offset of zero. Note that this means that socket-based
+channels cannot be set unbuffered once they have had data
+read from them.
+
+On unbuffered channels, it is safe to mix read and write
+calls from the new and old APIs, if this is necessary for
+maintaining old code.
+
+The default state of the channel is buffered.
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel
+</parameter_description>
+</parameter>
+<parameter name="buffered">
+<parameter_description> whether to set the channel buffered or unbuffered
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_ascii_strcasecmp">
+<description>
+Compare two strings, ignoring the case of ASCII characters.
+
+Unlike the BSD strcasecmp() function, this only recognizes standard
+ASCII letters and ignores the locale, treating all non-ASCII
+characters as if they are not letters.
+
+
+</description>
+<parameters>
+<parameter name="s1">
+<parameter_description> string to compare with @s2.
+</parameter_description>
+</parameter>
+<parameter name="s2">
+<parameter_description> string to compare with @s1.
+</parameter_description>
+</parameter>
+</parameters>
+<return> an integer less than, equal to, or greater than
+zero if @s1 is found, respectively, to be less than,
+to match, or to be greater than @s2.
+</return>
+</function>
+
+<function name="g_timeout_add">
+<description>
+Sets a function to be called at regular intervals, with the default
+priority, #G_PRIORITY_DEFAULT. The function is called repeatedly
+until it returns %FALSE, at which point the timeout is automatically
+destroyed and the function will not be called again. The first call
+to the function will be at the end of the first @interval.
+
+Note that timeout functions may be delayed, due to the processing of other
+event sources. Thus they should not be relied on for precise timing.
+After each call to the timeout function, the time of the next
+timeout is recalculated based on the current time and the given interval
+(it does not try to &apos;catch up&apos; time lost in delays).
+
+
+</description>
+<parameters>
+<parameter name="interval">
+<parameter_description> the time between calls to the function, in milliseconds
+(1/1000ths of a second)
+</parameter_description>
+</parameter>
+<parameter name="function">
+<parameter_description> function to call
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> data to pass to @function
+</parameter_description>
+</parameter>
+</parameters>
+<return> the id of event source.
+</return>
+</function>
+
+<function name="g_mapped_file_get_length">
+<description>
+Returns the length of the contents of a #GMappedFile.
+
+
+</description>
+<parameters>
+<parameter name="file">
+<parameter_description> a #GMappedFile
+</parameter_description>
+</parameter>
+</parameters>
+<return> the length of the contents of @file.
+
+Since: 2.8
+</return>
+</function>
+
+<function name="g_hash_table_insert">
+<description>
+Inserts a new key and value into a #GHashTable.
+
+If the key already exists in the #GHashTable its current value is replaced
+with the new value. If you supplied a @value_destroy_func when creating the
+#GHashTable, the old value is freed using that function. If you supplied
+a @key_destroy_func when creating the #GHashTable, the passed key is freed
+using that function.
+
+</description>
+<parameters>
+<parameter name="hash_table">
+<parameter_description> a #GHashTable.
+</parameter_description>
+</parameter>
+<parameter name="key">
+<parameter_description> a key to insert.
+</parameter_description>
+</parameter>
+<parameter name="value">
+<parameter_description> the value to associate with the key.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_queue_reverse">
+<description>
+Reverses the order of the items in @queue.
+
+Since: 2.4
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_async_queue_length">
+<description>
+Returns the length of the queue, negative values mean waiting
+threads, positive values mean available entries in the
+@queue. Actually this function returns the number of data items in
+the queue minus the number of waiting threads. Thus a return value
+of 0 could mean &apos;n&apos; entries in the queue and &apos;n&apos; thread waiting.
+That can happen due to locking of the queue or due to
+scheduling.
+
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GAsyncQueue.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the length of the @queue.
+</return>
+</function>
+
+<function name="g_io_channel_read_unichar">
+<description>
+This function cannot be called on a channel with %NULL encoding.
+
+
+</description>
+<parameters>
+<parameter name="channel">
+<parameter_description> a #GIOChannel
+</parameter_description>
+</parameter>
+<parameter name="thechar">
+<parameter_description> a location to return a character
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> A location to return an error of type #GConvertError
+or #GIOChannelError
+</parameter_description>
+</parameter>
+</parameters>
+<return> a #GIOStatus
+</return>
+</function>
+
+<function name="g_mkdir">
+<description>
+A wrapper for the POSIX mkdir() function. The mkdir() function
+attempts to create a directory with the given name and permissions.
+
+See the C library manual for more details about mkdir().
+
+
+</description>
+<parameters>
+<parameter name="filename">
+<parameter_description> a pathname in the GLib file name encoding (UTF-8 on Windows)
+</parameter_description>
+</parameter>
+<parameter name="mode">
+<parameter_description> permissions to use for the newly created directory
+</parameter_description>
+</parameter>
+</parameters>
+<return> 0 if the directory was successfully created, -1 if an error
+occurred
+
+Since: 2.6
+</return>
+</function>
+
+<function name="g_unichar_istitle">
+<description>
+Determines if a character is titlecase. Some characters in
+Unicode which are composites, such as the DZ digraph
+have three case variants instead of just two. The titlecase
+form is used at the beginning of a word where only the
+first letter is capitalized. The titlecase form of the DZ
+digraph is U+01F2 LATIN CAPITAL LETTTER D WITH SMALL LETTER Z.
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the character is titlecase
+</return>
+</function>
+
+<function name="g_direct_hash">
+<description>
+Converts a gpointer to a hash value.
+It can be passed to g_hash_table_new() as the @hash_func parameter,
+when using pointers as keys in a #GHashTable.
+
+
+</description>
+<parameters>
+<parameter name="v">
+<parameter_description> a #gpointer key
+</parameter_description>
+</parameter>
+</parameters>
+<return> a hash value corresponding to the key.
+</return>
+</function>
+
+<function name="g_unichar_isalpha">
+<description>
+Determines whether a character is alphabetic (i.e. a letter).
+Given some UTF-8 text, obtain a character value with
+g_utf8_get_char().
+
+
+</description>
+<parameters>
+<parameter name="c">
+<parameter_description> a Unicode character
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @c is an alphabetic character
+</return>
+</function>
+
+<function name="g_queue_unlink">
+<description>
+Unlinks @link_ so that it will no longer be part of @queue. The link is
+not freed.
+
+@link_ must be part of @queue,
+
+Since: 2.4
+
+</description>
+<parameters>
+<parameter name="queue">
+<parameter_description> a #GQueue
+</parameter_description>
+</parameter>
+<parameter name="link_">
+<parameter_description> a #GList link that &amp;lt;emphasis&amp;gt;must&amp;lt;/emphasis&amp;gt; be part of @queue
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_utf8_find_prev_char">
+<description>
+Given a position @p with a UTF-8 encoded string @str, find the start
+of the previous UTF-8 character starting before @p. Returns %NULL if no
+UTF-8 characters are present in @p before @str.
+
+@p does not have to be at the beginning of a UTF-8 character. No check
+is made to see if the character found is actually valid other than
+it starts with an appropriate byte.
+
+
+</description>
+<parameters>
+<parameter name="str">
+<parameter_description> pointer to the beginning of a UTF-8 encoded string
+</parameter_description>
+</parameter>
+<parameter name="p">
+<parameter_description> pointer to some position within @str
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to the found character or %NULL.
+</return>
+</function>
+
+</root>
diff --git a/libs/glibmm2/glib/src/glib_docs_override.xml b/libs/glibmm2/glib/src/glib_docs_override.xml
new file mode 100644
index 0000000000..093d936b96
--- /dev/null
+++ b/libs/glibmm2/glib/src/glib_docs_override.xml
@@ -0,0 +1,2 @@
+<root>
+</root>
diff --git a/libs/glibmm2/glib/src/glib_enums.defs b/libs/glibmm2/glib/src/glib_enums.defs
new file mode 100644
index 0000000000..3a379676c0
--- /dev/null
+++ b/libs/glibmm2/glib/src/glib_enums.defs
@@ -0,0 +1,682 @@
+;; From /home/murrayc/cvs/gnome212/glib/glib/gbsearcharray.h
+
+(define-flags-extended BSearchArrayFlags
+ (in-module "G")
+ (c-name "GBSearchArrayFlags")
+ (values
+ '("align-power2" "G_BSEARCH_ARRAY_ALIGN_POWER2" "1 << 0")
+ '("auto-shrink" "G_BSEARCH_ARRAY_AUTO_SHRINK" "1 << 1")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gconvert.h
+
+(define-enum-extended ConvertError
+ (in-module "G")
+ (c-name "GConvertError")
+ (values
+ '("no-conversion" "G_CONVERT_ERROR_NO_CONVERSION" "0")
+ '("illegal-sequence" "G_CONVERT_ERROR_ILLEGAL_SEQUENCE" "1")
+ '("failed" "G_CONVERT_ERROR_FAILED" "2")
+ '("partial-input" "G_CONVERT_ERROR_PARTIAL_INPUT" "3")
+ '("bad-uri" "G_CONVERT_ERROR_BAD_URI" "4")
+ '("not-absolute-path" "G_CONVERT_ERROR_NOT_ABSOLUTE_PATH" "5")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gdate.h
+
+(define-enum-extended DateDMY
+ (in-module "G")
+ (c-name "GDateDMY")
+ (values
+ '("day" "G_DATE_DAY" "0")
+ '("month" "G_DATE_MONTH" "1")
+ '("year" "G_DATE_YEAR" "2")
+ )
+)
+
+(define-enum-extended DateWeekday
+ (in-module "G")
+ (c-name "GDateWeekday")
+ (values
+ '("bad-weekday" "G_DATE_BAD_WEEKDAY" "0")
+ '("monday" "G_DATE_MONDAY" "1")
+ '("tuesday" "G_DATE_TUESDAY" "2")
+ '("wednesday" "G_DATE_WEDNESDAY" "3")
+ '("thursday" "G_DATE_THURSDAY" "4")
+ '("friday" "G_DATE_FRIDAY" "5")
+ '("saturday" "G_DATE_SATURDAY" "6")
+ '("sunday" "G_DATE_SUNDAY" "7")
+ )
+)
+
+(define-enum-extended DateMonth
+ (in-module "G")
+ (c-name "GDateMonth")
+ (values
+ '("bad-month" "G_DATE_BAD_MONTH" "0")
+ '("january" "G_DATE_JANUARY" "1")
+ '("february" "G_DATE_FEBRUARY" "2")
+ '("march" "G_DATE_MARCH" "3")
+ '("april" "G_DATE_APRIL" "4")
+ '("may" "G_DATE_MAY" "5")
+ '("june" "G_DATE_JUNE" "6")
+ '("july" "G_DATE_JULY" "7")
+ '("august" "G_DATE_AUGUST" "8")
+ '("september" "G_DATE_SEPTEMBER" "9")
+ '("october" "G_DATE_OCTOBER" "10")
+ '("november" "G_DATE_NOVEMBER" "11")
+ '("december" "G_DATE_DECEMBER" "12")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gdebug.h
+
+(define-flags-extended DebugFlag
+ (in-module "G")
+ (c-name "GDebugFlag")
+ (values
+ '("s" "G_DEBUG_FATAL_WARNINGS" "1 << 0")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gfileutils.h
+
+(define-enum-extended FileError
+ (in-module "G")
+ (c-name "GFileError")
+ (values
+ '("exist" "G_FILE_ERROR_EXIST" "0")
+ '("isdir" "G_FILE_ERROR_ISDIR" "1")
+ '("acces" "G_FILE_ERROR_ACCES" "2")
+ '("nametoolong" "G_FILE_ERROR_NAMETOOLONG" "3")
+ '("noent" "G_FILE_ERROR_NOENT" "4")
+ '("notdir" "G_FILE_ERROR_NOTDIR" "5")
+ '("nxio" "G_FILE_ERROR_NXIO" "6")
+ '("nodev" "G_FILE_ERROR_NODEV" "7")
+ '("rofs" "G_FILE_ERROR_ROFS" "8")
+ '("txtbsy" "G_FILE_ERROR_TXTBSY" "9")
+ '("fault" "G_FILE_ERROR_FAULT" "10")
+ '("loop" "G_FILE_ERROR_LOOP" "11")
+ '("nospc" "G_FILE_ERROR_NOSPC" "12")
+ '("nomem" "G_FILE_ERROR_NOMEM" "13")
+ '("mfile" "G_FILE_ERROR_MFILE" "14")
+ '("nfile" "G_FILE_ERROR_NFILE" "15")
+ '("badf" "G_FILE_ERROR_BADF" "16")
+ '("inval" "G_FILE_ERROR_INVAL" "17")
+ '("pipe" "G_FILE_ERROR_PIPE" "18")
+ '("again" "G_FILE_ERROR_AGAIN" "19")
+ '("intr" "G_FILE_ERROR_INTR" "20")
+ '("io" "G_FILE_ERROR_IO" "21")
+ '("perm" "G_FILE_ERROR_PERM" "22")
+ '("nosys" "G_FILE_ERROR_NOSYS" "23")
+ '("failed" "G_FILE_ERROR_FAILED" "24")
+ )
+)
+
+(define-flags-extended FileTest
+ (in-module "G")
+ (c-name "GFileTest")
+ (values
+ '("is-regular" "G_FILE_TEST_IS_REGULAR" "1 << 0")
+ '("is-symlink" "G_FILE_TEST_IS_SYMLINK" "1 << 1")
+ '("is-dir" "G_FILE_TEST_IS_DIR" "1 << 2")
+ '("is-executable" "G_FILE_TEST_IS_EXECUTABLE" "1 << 3")
+ '("exists" "G_FILE_TEST_EXISTS" "1 << 4")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/ghook.h
+
+(define-flags-extended HookFlagMask
+ (in-module "G")
+ (c-name "GHookFlagMask")
+ (values
+ '("active" "G_HOOK_FLAG_ACTIVE" "1 << 0")
+ '("in-call" "G_HOOK_FLAG_IN_CALL" "1 << 1")
+ '("mask" "G_HOOK_FLAG_MASK" "0x0f")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/giochannel.h
+
+(define-enum-extended IOError
+ (in-module "G")
+ (c-name "GIOError")
+ (values
+ '("none" "G_IO_ERROR_NONE" "0")
+ '("again" "G_IO_ERROR_AGAIN" "1")
+ '("inval" "G_IO_ERROR_INVAL" "2")
+ '("unknown" "G_IO_ERROR_UNKNOWN" "3")
+ )
+)
+
+(define-enum-extended IOChannelError
+ (in-module "G")
+ (c-name "GIOChannelError")
+ (values
+ '("fbig" "G_IO_CHANNEL_ERROR_FBIG" "0")
+ '("inval" "G_IO_CHANNEL_ERROR_INVAL" "1")
+ '("io" "G_IO_CHANNEL_ERROR_IO" "2")
+ '("isdir" "G_IO_CHANNEL_ERROR_ISDIR" "3")
+ '("nospc" "G_IO_CHANNEL_ERROR_NOSPC" "4")
+ '("nxio" "G_IO_CHANNEL_ERROR_NXIO" "5")
+ '("overflow" "G_IO_CHANNEL_ERROR_OVERFLOW" "6")
+ '("pipe" "G_IO_CHANNEL_ERROR_PIPE" "7")
+ '("failed" "G_IO_CHANNEL_ERROR_FAILED" "8")
+ )
+)
+
+(define-enum-extended IOStatus
+ (in-module "G")
+ (c-name "GIOStatus")
+ (values
+ '("error" "G_IO_STATUS_ERROR" "0")
+ '("normal" "G_IO_STATUS_NORMAL" "1")
+ '("eof" "G_IO_STATUS_EOF" "2")
+ '("again" "G_IO_STATUS_AGAIN" "3")
+ )
+)
+
+(define-enum-extended SeekType
+ (in-module "G")
+ (c-name "GSeekType")
+ (values
+ '("cur" "G_SEEK_CUR" "0")
+ '("set" "G_SEEK_SET" "1")
+ '("end" "G_SEEK_END" "2")
+ )
+)
+
+(define-enum-extended IOCondition
+ (in-module "G")
+ (c-name "GIOCondition")
+ (values
+ )
+)
+
+(define-flags-extended IOFlags
+ (in-module "G")
+ (c-name "GIOFlags")
+ (values
+ '("append" "G_IO_FLAG_APPEND" "1 << 0")
+ '("nonblock" "G_IO_FLAG_NONBLOCK" "1 << 1")
+ '("is-readable" "G_IO_FLAG_IS_READABLE" "1 << 2")
+ '("is-writeable" "G_IO_FLAG_IS_WRITEABLE" "1 << 3")
+ '("is-seekable" "G_IO_FLAG_IS_SEEKABLE" "1 << 4")
+ '("get-mask" "G_IO_FLAG_GET_MASK" "0x0")
+ '("set-mask" "G_IO_FLAG_SET_MASK" "0x1")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gkeyfile.h
+
+(define-enum-extended KeyFileError
+ (in-module "G")
+ (c-name "GKeyFileError")
+ (values
+ '("unknown-encoding" "G_KEY_FILE_ERROR_UNKNOWN_ENCODING" "0")
+ '("parse" "G_KEY_FILE_ERROR_PARSE" "1")
+ '("not-found" "G_KEY_FILE_ERROR_NOT_FOUND" "2")
+ '("key-not-found" "G_KEY_FILE_ERROR_KEY_NOT_FOUND" "3")
+ '("group-not-found" "G_KEY_FILE_ERROR_GROUP_NOT_FOUND" "4")
+ '("invalid-value" "G_KEY_FILE_ERROR_INVALID_VALUE" "5")
+ )
+)
+
+(define-flags-extended KeyFileFlags
+ (in-module "G")
+ (c-name "GKeyFileFlags")
+ (values
+ '("none" "G_KEY_FILE_NONE" "0")
+ '("keep-comments" "G_KEY_FILE_KEEP_COMMENTS" "1 << 0")
+ '("keep-translations" "G_KEY_FILE_KEEP_TRANSLATIONS" "1 << 1")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gmarkup.h
+
+(define-enum-extended MarkupError
+ (in-module "G")
+ (c-name "GMarkupError")
+ (values
+ '("bad-utf8" "G_MARKUP_ERROR_BAD_UTF8" "0")
+ '("empty" "G_MARKUP_ERROR_EMPTY" "1")
+ '("parse" "G_MARKUP_ERROR_PARSE" "2")
+ '("unknown-element" "G_MARKUP_ERROR_UNKNOWN_ELEMENT" "3")
+ '("unknown-attribute" "G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE" "4")
+ '("invalid-content" "G_MARKUP_ERROR_INVALID_CONTENT" "5")
+ )
+)
+
+(define-flags-extended MarkupParseFlags
+ (in-module "G")
+ (c-name "GMarkupParseFlags")
+ (values
+ '("g" "G_MARKUP_DO_NOT_USE_THIS_UNSUPPORTED_FLAG" "1 << 0")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gmessages.h
+
+(define-flags-extended LogLevelFlags
+ (in-module "G")
+ (c-name "GLogLevelFlags")
+ (values
+ '("flag-recursion" "G_LOG_FLAG_RECURSION" "1 << 0")
+ '("flag-fatal" "G_LOG_FLAG_FATAL" "1 << 1")
+ '("level-error" "G_LOG_LEVEL_ERROR" "1 << 2")
+ '("level-critical" "G_LOG_LEVEL_CRITICAL" "1 << 3")
+ '("level-warning" "G_LOG_LEVEL_WARNING" "1 << 4")
+ '("level-message" "G_LOG_LEVEL_MESSAGE" "1 << 5")
+ '("level-info" "G_LOG_LEVEL_INFO" "1 << 6")
+ '("level-debug" "G_LOG_LEVEL_DEBUG" "1 << 7")
+ '("level-mask" "G_LOG_LEVEL_MASK" "0xFFFFFFFE")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gnode.h
+
+(define-flags-extended TraverseFlags
+ (in-module "G")
+ (c-name "GTraverseFlags")
+ (values
+ '("leaves" "G_TRAVERSE_LEAVES" "1 << 0")
+ '("non-leaves" "G_TRAVERSE_NON_LEAVES" "1 << 1")
+ '("all" "G_TRAVERSE_ALL" "0x1")
+ '("mask" "G_TRAVERSE_MASK" "0x03")
+ '("leafs" "G_TRAVERSE_LEAFS" "0x1")
+ '("non-leafs" "G_TRAVERSE_NON_LEAFS" "0x2")
+ )
+)
+
+(define-enum-extended TraverseType
+ (in-module "G")
+ (c-name "GTraverseType")
+ (values
+ '("in-order" "G_IN_ORDER" "0")
+ '("pre-order" "G_PRE_ORDER" "1")
+ '("post-order" "G_POST_ORDER" "2")
+ '("level-order" "G_LEVEL_ORDER" "3")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/goption.h
+
+(define-flags-extended OptionFlags
+ (in-module "G")
+ (c-name "GOptionFlags")
+ (values
+ '("hidden" "G_OPTION_FLAG_HIDDEN" "1 << 0")
+ '("in-main" "G_OPTION_FLAG_IN_MAIN" "1 << 1")
+ '("reverse" "G_OPTION_FLAG_REVERSE" "1 << 2")
+ '("no-arg" "G_OPTION_FLAG_NO_ARG" "1 << 3")
+ '("filename" "G_OPTION_FLAG_FILENAME" "1 << 4")
+ '("optional-arg" "G_OPTION_FLAG_OPTIONAL_ARG" "1 << 5")
+ '("noalias" "G_OPTION_FLAG_NOALIAS" "1 << 6")
+ )
+)
+
+(define-enum-extended OptionArg
+ (in-module "G")
+ (c-name "GOptionArg")
+ (values
+ '("none" "G_OPTION_ARG_NONE" "0")
+ '("string" "G_OPTION_ARG_STRING" "1")
+ '("int" "G_OPTION_ARG_INT" "2")
+ '("callback" "G_OPTION_ARG_CALLBACK" "3")
+ '("filename" "G_OPTION_ARG_FILENAME" "4")
+ '("string-array" "G_OPTION_ARG_STRING_ARRAY" "5")
+ '("filename-array" "G_OPTION_ARG_FILENAME_ARRAY" "6")
+ )
+)
+
+(define-enum-extended OptionError
+ (in-module "G")
+ (c-name "GOptionError")
+ (values
+ '("unknown-option" "G_OPTION_ERROR_UNKNOWN_OPTION" "0")
+ '("bad-value" "G_OPTION_ERROR_BAD_VALUE" "1")
+ '("failed" "G_OPTION_ERROR_FAILED" "2")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gscanner.h
+
+(define-enum-extended ErrorType
+ (in-module "G")
+ (c-name "GErrorType")
+ (values
+ '("unknown" "G_ERR_UNKNOWN" "0")
+ '("unexp-eof" "G_ERR_UNEXP_EOF" "1")
+ '("unexp-eof-in-string" "G_ERR_UNEXP_EOF_IN_STRING" "2")
+ '("unexp-eof-in-comment" "G_ERR_UNEXP_EOF_IN_COMMENT" "3")
+ '("non-digit-in-const" "G_ERR_NON_DIGIT_IN_CONST" "4")
+ '("digit-radix" "G_ERR_DIGIT_RADIX" "5")
+ '("float-radix" "G_ERR_FLOAT_RADIX" "6")
+ '("float-malformed" "G_ERR_FLOAT_MALFORMED" "7")
+ )
+)
+
+(define-enum-extended TokenType
+ (in-module "G")
+ (c-name "GTokenType")
+ (values
+ '("eof" "G_TOKEN_EOF" "0")
+ '("left-paren" "G_TOKEN_LEFT_PAREN" "'gmmproc_cannot_handle_quoted_left_bracket'")
+ '("right-paren" "G_TOKEN_RIGHT_PAREN" "'gmmproc_cannot_handle_quoted_right_bracket'")
+ '("left-curly" "G_TOKEN_LEFT_CURLY" "'{'")
+ '("right-curly" "G_TOKEN_RIGHT_CURLY" "']'")
+ '("left-brace" "G_TOKEN_LEFT_BRACE" "'['")
+ '("right-brace" "G_TOKEN_RIGHT_BRACE" "']'")
+ '("equal-sign" "G_TOKEN_EQUAL_SIGN" "'='")
+ '("comma" "G_TOKEN_COMMA" "','")
+ '("none" "G_TOKEN_NONE" "256")
+ '("error" "G_TOKEN_ERROR" "257")
+ '("char" "G_TOKEN_CHAR" "258")
+ '("binary" "G_TOKEN_BINARY" "259")
+ '("octal" "G_TOKEN_OCTAL" "260")
+ '("int" "G_TOKEN_INT" "261")
+ '("hex" "G_TOKEN_HEX" "262")
+ '("float" "G_TOKEN_FLOAT" "263")
+ '("string" "G_TOKEN_STRING" "264")
+ '("symbol" "G_TOKEN_SYMBOL" "265")
+ '("identifier" "G_TOKEN_IDENTIFIER" "266")
+ '("identifier-null" "G_TOKEN_IDENTIFIER_NULL" "267")
+ '("comment-single" "G_TOKEN_COMMENT_SINGLE" "268")
+ '("comment-multi" "G_TOKEN_COMMENT_MULTI" "269")
+ '("last" "G_TOKEN_LAST" "270")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gshell.h
+
+(define-enum-extended ShellError
+ (in-module "G")
+ (c-name "GShellError")
+ (values
+ '("bad-quoting" "G_SHELL_ERROR_BAD_QUOTING" "0")
+ '("empty-string" "G_SHELL_ERROR_EMPTY_STRING" "1")
+ '("failed" "G_SHELL_ERROR_FAILED" "2")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gspawn.h
+
+(define-enum-extended SpawnError
+ (in-module "G")
+ (c-name "GSpawnError")
+ (values
+ '("fork" "G_SPAWN_ERROR_FORK" "0")
+ '("read" "G_SPAWN_ERROR_READ" "1")
+ '("chdir" "G_SPAWN_ERROR_CHDIR" "2")
+ '("acces" "G_SPAWN_ERROR_ACCES" "3")
+ '("perm" "G_SPAWN_ERROR_PERM" "4")
+ '("2big" "G_SPAWN_ERROR_2BIG" "5")
+ '("noexec" "G_SPAWN_ERROR_NOEXEC" "6")
+ '("nametoolong" "G_SPAWN_ERROR_NAMETOOLONG" "7")
+ '("noent" "G_SPAWN_ERROR_NOENT" "8")
+ '("nomem" "G_SPAWN_ERROR_NOMEM" "9")
+ '("notdir" "G_SPAWN_ERROR_NOTDIR" "10")
+ '("loop" "G_SPAWN_ERROR_LOOP" "11")
+ '("txtbusy" "G_SPAWN_ERROR_TXTBUSY" "12")
+ '("io" "G_SPAWN_ERROR_IO" "13")
+ '("nfile" "G_SPAWN_ERROR_NFILE" "14")
+ '("mfile" "G_SPAWN_ERROR_MFILE" "15")
+ '("inval" "G_SPAWN_ERROR_INVAL" "16")
+ '("isdir" "G_SPAWN_ERROR_ISDIR" "17")
+ '("libbad" "G_SPAWN_ERROR_LIBBAD" "18")
+ )
+)
+
+(define-flags-extended SpawnFlags
+ (in-module "G")
+ (c-name "GSpawnFlags")
+ (values
+ '("leave-descriptors-open" "G_SPAWN_LEAVE_DESCRIPTORS_OPEN" "1 << 0")
+ '("do-not-reap-child" "G_SPAWN_DO_NOT_REAP_CHILD" "1 << 1")
+ '("search-path" "G_SPAWN_SEARCH_PATH" "1 << 2")
+ '("stdout-to-dev-null" "G_SPAWN_STDOUT_TO_DEV_NULL" "1 << 3")
+ '("stderr-to-dev-null" "G_SPAWN_STDERR_TO_DEV_NULL" "1 << 4")
+ '("child-inherits-stdin" "G_SPAWN_CHILD_INHERITS_STDIN" "1 << 5")
+ '("file-and-argv-zero" "G_SPAWN_FILE_AND_ARGV_ZERO" "1 << 6")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gstrfuncs.h
+
+(define-flags-extended AsciiType
+ (in-module "G")
+ (c-name "GAsciiType")
+ (values
+ '("alnum" "G_ASCII_ALNUM" "1 << 0")
+ '("alpha" "G_ASCII_ALPHA" "1 << 1")
+ '("cntrl" "G_ASCII_CNTRL" "1 << 2")
+ '("digit" "G_ASCII_DIGIT" "1 << 3")
+ '("graph" "G_ASCII_GRAPH" "1 << 4")
+ '("lower" "G_ASCII_LOWER" "1 << 5")
+ '("print" "G_ASCII_PRINT" "1 << 6")
+ '("punct" "G_ASCII_PUNCT" "1 << 7")
+ '("space" "G_ASCII_SPACE" "1 << 8")
+ '("upper" "G_ASCII_UPPER" "1 << 9")
+ '("xdigit" "G_ASCII_XDIGIT" "1 << 10")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gthread.h
+
+(define-enum-extended ThreadError
+ (in-module "G")
+ (c-name "GThreadError")
+ (values
+ '("n" "G_THREAD_ERROR_AGAIN" "0")
+ )
+)
+
+(define-enum-extended ThreadPriority
+ (in-module "G")
+ (c-name "GThreadPriority")
+ (values
+ '("low" "G_THREAD_PRIORITY_LOW" "0")
+ '("normal" "G_THREAD_PRIORITY_NORMAL" "1")
+ '("high" "G_THREAD_PRIORITY_HIGH" "2")
+ '("urgent" "G_THREAD_PRIORITY_URGENT" "3")
+ )
+)
+
+(define-enum-extended OnceStatus
+ (in-module "G")
+ (c-name "GOnceStatus")
+ (values
+ '("notcalled" "G_ONCE_STATUS_NOTCALLED" "0")
+ '("progress" "G_ONCE_STATUS_PROGRESS" "1")
+ '("ready" "G_ONCE_STATUS_READY" "2")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gunicode.h
+
+(define-enum-extended UnicodeType
+ (in-module "G")
+ (c-name "GUnicodeType")
+ (values
+ '("control" "G_UNICODE_CONTROL" "0")
+ '("format" "G_UNICODE_FORMAT" "1")
+ '("unassigned" "G_UNICODE_UNASSIGNED" "2")
+ '("private-use" "G_UNICODE_PRIVATE_USE" "3")
+ '("surrogate" "G_UNICODE_SURROGATE" "4")
+ '("lowercase-letter" "G_UNICODE_LOWERCASE_LETTER" "5")
+ '("modifier-letter" "G_UNICODE_MODIFIER_LETTER" "6")
+ '("other-letter" "G_UNICODE_OTHER_LETTER" "7")
+ '("titlecase-letter" "G_UNICODE_TITLECASE_LETTER" "8")
+ '("uppercase-letter" "G_UNICODE_UPPERCASE_LETTER" "9")
+ '("combining-mark" "G_UNICODE_COMBINING_MARK" "10")
+ '("enclosing-mark" "G_UNICODE_ENCLOSING_MARK" "11")
+ '("non-spacing-mark" "G_UNICODE_NON_SPACING_MARK" "12")
+ '("decimal-number" "G_UNICODE_DECIMAL_NUMBER" "13")
+ '("letter-number" "G_UNICODE_LETTER_NUMBER" "14")
+ '("other-number" "G_UNICODE_OTHER_NUMBER" "15")
+ '("connect-punctuation" "G_UNICODE_CONNECT_PUNCTUATION" "16")
+ '("dash-punctuation" "G_UNICODE_DASH_PUNCTUATION" "17")
+ '("close-punctuation" "G_UNICODE_CLOSE_PUNCTUATION" "18")
+ '("final-punctuation" "G_UNICODE_FINAL_PUNCTUATION" "19")
+ '("initial-punctuation" "G_UNICODE_INITIAL_PUNCTUATION" "20")
+ '("other-punctuation" "G_UNICODE_OTHER_PUNCTUATION" "21")
+ '("open-punctuation" "G_UNICODE_OPEN_PUNCTUATION" "22")
+ '("currency-symbol" "G_UNICODE_CURRENCY_SYMBOL" "23")
+ '("modifier-symbol" "G_UNICODE_MODIFIER_SYMBOL" "24")
+ '("math-symbol" "G_UNICODE_MATH_SYMBOL" "25")
+ '("other-symbol" "G_UNICODE_OTHER_SYMBOL" "26")
+ '("line-separator" "G_UNICODE_LINE_SEPARATOR" "27")
+ '("paragraph-separator" "G_UNICODE_PARAGRAPH_SEPARATOR" "28")
+ '("space-separator" "G_UNICODE_SPACE_SEPARATOR" "29")
+ )
+)
+
+(define-enum-extended UnicodeBreakType
+ (in-module "G")
+ (c-name "GUnicodeBreakType")
+ (values
+ '("mandatory" "G_UNICODE_BREAK_MANDATORY" "0")
+ '("carriage-return" "G_UNICODE_BREAK_CARRIAGE_RETURN" "1")
+ '("line-feed" "G_UNICODE_BREAK_LINE_FEED" "2")
+ '("combining-mark" "G_UNICODE_BREAK_COMBINING_MARK" "3")
+ '("surrogate" "G_UNICODE_BREAK_SURROGATE" "4")
+ '("zero-width-space" "G_UNICODE_BREAK_ZERO_WIDTH_SPACE" "5")
+ '("inseparable" "G_UNICODE_BREAK_INSEPARABLE" "6")
+ '("non-breaking-glue" "G_UNICODE_BREAK_NON_BREAKING_GLUE" "7")
+ '("contingent" "G_UNICODE_BREAK_CONTINGENT" "8")
+ '("space" "G_UNICODE_BREAK_SPACE" "9")
+ '("after" "G_UNICODE_BREAK_AFTER" "10")
+ '("before" "G_UNICODE_BREAK_BEFORE" "11")
+ '("before-and-after" "G_UNICODE_BREAK_BEFORE_AND_AFTER" "12")
+ '("hyphen" "G_UNICODE_BREAK_HYPHEN" "13")
+ '("non-starter" "G_UNICODE_BREAK_NON_STARTER" "14")
+ '("open-punctuation" "G_UNICODE_BREAK_OPEN_PUNCTUATION" "15")
+ '("close-punctuation" "G_UNICODE_BREAK_CLOSE_PUNCTUATION" "16")
+ '("quotation" "G_UNICODE_BREAK_QUOTATION" "17")
+ '("exclamation" "G_UNICODE_BREAK_EXCLAMATION" "18")
+ '("ideographic" "G_UNICODE_BREAK_IDEOGRAPHIC" "19")
+ '("numeric" "G_UNICODE_BREAK_NUMERIC" "20")
+ '("infix-separator" "G_UNICODE_BREAK_INFIX_SEPARATOR" "21")
+ '("symbol" "G_UNICODE_BREAK_SYMBOL" "22")
+ '("alphabetic" "G_UNICODE_BREAK_ALPHABETIC" "23")
+ '("prefix" "G_UNICODE_BREAK_PREFIX" "24")
+ '("postfix" "G_UNICODE_BREAK_POSTFIX" "25")
+ '("complex-context" "G_UNICODE_BREAK_COMPLEX_CONTEXT" "26")
+ '("ambiguous" "G_UNICODE_BREAK_AMBIGUOUS" "27")
+ '("unknown" "G_UNICODE_BREAK_UNKNOWN" "28")
+ '("next-line" "G_UNICODE_BREAK_NEXT_LINE" "29")
+ '("word-joiner" "G_UNICODE_BREAK_WORD_JOINER" "30")
+ )
+)
+
+(define-enum-extended NormalizeMode
+ (in-module "G")
+ (c-name "GNormalizeMode")
+ (values
+ '("default" "G_NORMALIZE_DEFAULT" "0")
+ '("nfd" "G_NORMALIZE_NFD" "0")
+ '("default-compose" "G_NORMALIZE_DEFAULT_COMPOSE" "1")
+ '("nfc" "G_NORMALIZE_NFC" "1")
+ '("all" "G_NORMALIZE_ALL" "2")
+ '("nfkd" "G_NORMALIZE_NFKD" "2")
+ '("all-compose" "G_NORMALIZE_ALL_COMPOSE" "3")
+ '("nfkc" "G_NORMALIZE_NFKC" "3")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/gparam.h
+
+(define-flags-extended ParamFlags
+ (in-module "G")
+ (c-name "GParamFlags")
+ (values
+ '("readable" "G_PARAM_READABLE" "1 << 0")
+ '("writable" "G_PARAM_WRITABLE" "1 << 1")
+ '("construct" "G_PARAM_CONSTRUCT" "1 << 2")
+ '("construct-only" "G_PARAM_CONSTRUCT_ONLY" "1 << 3")
+ '("lax-validation" "G_PARAM_LAX_VALIDATION" "1 << 4")
+ '("static-name" "G_PARAM_STATIC_NAME" "1 << 5")
+ '("static-blurb" "G_PARAM_STATIC_BLURB" "1 << 7")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/gsignal.h
+
+(define-flags-extended SignalFlags
+ (in-module "G")
+ (c-name "GSignalFlags")
+ (values
+ '("run-first" "G_SIGNAL_RUN_FIRST" "1 << 0")
+ '("run-last" "G_SIGNAL_RUN_LAST" "1 << 1")
+ '("run-cleanup" "G_SIGNAL_RUN_CLEANUP" "1 << 2")
+ '("no-recurse" "G_SIGNAL_NO_RECURSE" "1 << 3")
+ '("detailed" "G_SIGNAL_DETAILED" "1 << 4")
+ '("action" "G_SIGNAL_ACTION" "1 << 5")
+ '("no-hooks" "G_SIGNAL_NO_HOOKS" "1 << 6")
+ )
+)
+
+(define-flags-extended ConnectFlags
+ (in-module "G")
+ (c-name "GConnectFlags")
+ (values
+ '("after" "G_CONNECT_AFTER" "1 << 0")
+ '("swapped" "G_CONNECT_SWAPPED" "1 << 1")
+ )
+)
+
+(define-flags-extended SignalMatchType
+ (in-module "G")
+ (c-name "GSignalMatchType")
+ (values
+ '("id" "G_SIGNAL_MATCH_ID" "1 << 0")
+ '("detail" "G_SIGNAL_MATCH_DETAIL" "1 << 1")
+ '("closure" "G_SIGNAL_MATCH_CLOSURE" "1 << 2")
+ '("func" "G_SIGNAL_MATCH_FUNC" "1 << 3")
+ '("data" "G_SIGNAL_MATCH_DATA" "1 << 4")
+ '("unblocked" "G_SIGNAL_MATCH_UNBLOCKED" "1 << 5")
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/gtype.h
+
+(define-flags-extended TypeDebugFlags
+ (in-module "G")
+ (c-name "GTypeDebugFlags")
+ (values
+ '("none" "G_TYPE_DEBUG_NONE" "0")
+ '("objects" "G_TYPE_DEBUG_OBJECTS" "1 << 0")
+ '("signals" "G_TYPE_DEBUG_SIGNALS" "1 << 1")
+ '("mask" "G_TYPE_DEBUG_MASK" "0x03")
+ )
+)
+
+(define-enum-extended TypeFundamentalFlags
+ (in-module "G")
+ (c-name "GTypeFundamentalFlags")
+ (values
+ )
+)
+
+(define-enum-extended TypeFlags
+ (in-module "G")
+ (c-name "GTypeFlags")
+ (values
+ )
+)
+
+;; From /home/murrayc/cvs/gnome212/glib/gmodule/gmodule.h
+
+(define-flags-extended ModuleFlags
+ (in-module "G")
+ (c-name "GModuleFlags")
+ (values
+ '("lazy" "G_MODULE_BIND_LAZY" "1 << 0")
+ '("local" "G_MODULE_BIND_LOCAL" "1 << 1")
+ '("mask" "G_MODULE_BIND_MASK" "0x03")
+ )
+)
+
diff --git a/libs/glibmm2/glib/src/glib_functions.defs b/libs/glibmm2/glib/src/glib_functions.defs
new file mode 100644
index 0000000000..58f949a2e6
--- /dev/null
+++ b/libs/glibmm2/glib/src/glib_functions.defs
@@ -0,0 +1,11335 @@
+;; -*- scheme -*-
+; object definitions ...
+(define-object Module
+ (in-module "GType")
+ (parent "GObject")
+ (c-name "GTypeModule")
+ (gtype-id "G_TYPE_TYPE_MODULE")
+)
+
+(define-object Plugin
+ (in-module "GType")
+ (c-name "GTypePlugin")
+ (gtype-id "G_TYPE_TYPE_PLUGIN")
+)
+
+;; Enumerations and flags ...
+
+(define-flags ArrayFlags
+ (in-module "GBSearch")
+ (c-name "GBSearchArrayFlags")
+ (gtype-id "G_TYPE_B_SEARCH_ARRAY_FLAGS")
+ (values
+ '("lign-power2" "G_BSEARCH_ARRAY_ALIGN_POWER2")
+ '("uto-shrink" "G_BSEARCH_ARRAY_AUTO_SHRINK")
+ )
+)
+
+(define-enum Error
+ (in-module "GConvert")
+ (c-name "GConvertError")
+ (gtype-id "G_TYPE_CONVERT_ERROR")
+ (values
+ '("no-conversion" "G_CONVERT_ERROR_NO_CONVERSION")
+ '("illegal-sequence" "G_CONVERT_ERROR_ILLEGAL_SEQUENCE")
+ '("failed" "G_CONVERT_ERROR_FAILED")
+ '("partial-input" "G_CONVERT_ERROR_PARTIAL_INPUT")
+ '("bad-uri" "G_CONVERT_ERROR_BAD_URI")
+ '("not-absolute-path" "G_CONVERT_ERROR_NOT_ABSOLUTE_PATH")
+ )
+)
+
+(define-enum DMY
+ (in-module "GDate")
+ (c-name "GDateDMY")
+ (gtype-id "G_TYPE_DATE_DMY")
+ (values
+ '("day" "G_DATE_DAY")
+ '("month" "G_DATE_MONTH")
+ '("year" "G_DATE_YEAR")
+ )
+)
+
+(define-enum Weekday
+ (in-module "GDate")
+ (c-name "GDateWeekday")
+ (gtype-id "G_TYPE_DATE_WEEKDAY")
+ (values
+ '("bad-weekday" "G_DATE_BAD_WEEKDAY")
+ '("monday" "G_DATE_MONDAY")
+ '("tuesday" "G_DATE_TUESDAY")
+ '("wednesday" "G_DATE_WEDNESDAY")
+ '("thursday" "G_DATE_THURSDAY")
+ '("friday" "G_DATE_FRIDAY")
+ '("saturday" "G_DATE_SATURDAY")
+ '("sunday" "G_DATE_SUNDAY")
+ )
+)
+
+(define-enum Month
+ (in-module "GDate")
+ (c-name "GDateMonth")
+ (gtype-id "G_TYPE_DATE_MONTH")
+ (values
+ '("bad-month" "G_DATE_BAD_MONTH")
+ '("january" "G_DATE_JANUARY")
+ '("february" "G_DATE_FEBRUARY")
+ '("march" "G_DATE_MARCH")
+ '("april" "G_DATE_APRIL")
+ '("may" "G_DATE_MAY")
+ '("june" "G_DATE_JUNE")
+ '("july" "G_DATE_JULY")
+ '("august" "G_DATE_AUGUST")
+ '("september" "G_DATE_SEPTEMBER")
+ '("october" "G_DATE_OCTOBER")
+ '("november" "G_DATE_NOVEMBER")
+ '("december" "G_DATE_DECEMBER")
+ )
+)
+
+(define-flags Flag
+ (in-module "GDebug")
+ (c-name "GDebugFlag")
+ (gtype-id "G_TYPE_DEBUG_FLAG")
+ (values
+ '("s" "G_DEBUG_FATAL_WARNINGS")
+ )
+)
+
+(define-enum Error
+ (in-module "GFile")
+ (c-name "GFileError")
+ (gtype-id "G_TYPE_FILE_ERROR")
+ (values
+ '("exist" "G_FILE_ERROR_EXIST")
+ '("isdir" "G_FILE_ERROR_ISDIR")
+ '("acces" "G_FILE_ERROR_ACCES")
+ '("nametoolong" "G_FILE_ERROR_NAMETOOLONG")
+ '("noent" "G_FILE_ERROR_NOENT")
+ '("notdir" "G_FILE_ERROR_NOTDIR")
+ '("nxio" "G_FILE_ERROR_NXIO")
+ '("nodev" "G_FILE_ERROR_NODEV")
+ '("rofs" "G_FILE_ERROR_ROFS")
+ '("txtbsy" "G_FILE_ERROR_TXTBSY")
+ '("fault" "G_FILE_ERROR_FAULT")
+ '("loop" "G_FILE_ERROR_LOOP")
+ '("nospc" "G_FILE_ERROR_NOSPC")
+ '("nomem" "G_FILE_ERROR_NOMEM")
+ '("mfile" "G_FILE_ERROR_MFILE")
+ '("nfile" "G_FILE_ERROR_NFILE")
+ '("badf" "G_FILE_ERROR_BADF")
+ '("inval" "G_FILE_ERROR_INVAL")
+ '("pipe" "G_FILE_ERROR_PIPE")
+ '("again" "G_FILE_ERROR_AGAIN")
+ '("intr" "G_FILE_ERROR_INTR")
+ '("io" "G_FILE_ERROR_IO")
+ '("perm" "G_FILE_ERROR_PERM")
+ '("nosys" "G_FILE_ERROR_NOSYS")
+ '("failed" "G_FILE_ERROR_FAILED")
+ )
+)
+
+(define-flags Test
+ (in-module "GFile")
+ (c-name "GFileTest")
+ (gtype-id "G_TYPE_FILE_TEST")
+ (values
+ '("is-regular" "G_FILE_TEST_IS_REGULAR")
+ '("is-symlink" "G_FILE_TEST_IS_SYMLINK")
+ '("is-dir" "G_FILE_TEST_IS_DIR")
+ '("is-executable" "G_FILE_TEST_IS_EXECUTABLE")
+ '("exists" "G_FILE_TEST_EXISTS")
+ )
+)
+
+(define-flags FlagMask
+ (in-module "GHook")
+ (c-name "GHookFlagMask")
+ (gtype-id "G_TYPE_HOOK_FLAG_MASK")
+ (values
+ '("active" "G_HOOK_FLAG_ACTIVE")
+ '("in-call" "G_HOOK_FLAG_IN_CALL")
+ '("mask" "G_HOOK_FLAG_MASK")
+ )
+)
+
+(define-enum r
+ (in-module "GIOErro")
+ (c-name "GIOError")
+ (gtype-id "G_TYPE_IO_ERROR")
+ (values
+ '("none" "G_IO_ERROR_NONE")
+ '("again" "G_IO_ERROR_AGAIN")
+ '("inval" "G_IO_ERROR_INVAL")
+ '("unknown" "G_IO_ERROR_UNKNOWN")
+ )
+)
+
+(define-enum Error
+ (in-module "GIOChannel")
+ (c-name "GIOChannelError")
+ (gtype-id "G_TYPE_IO_CHANNEL_ERROR")
+ (values
+ '("fbig" "G_IO_CHANNEL_ERROR_FBIG")
+ '("inval" "G_IO_CHANNEL_ERROR_INVAL")
+ '("io" "G_IO_CHANNEL_ERROR_IO")
+ '("isdir" "G_IO_CHANNEL_ERROR_ISDIR")
+ '("nospc" "G_IO_CHANNEL_ERROR_NOSPC")
+ '("nxio" "G_IO_CHANNEL_ERROR_NXIO")
+ '("overflow" "G_IO_CHANNEL_ERROR_OVERFLOW")
+ '("pipe" "G_IO_CHANNEL_ERROR_PIPE")
+ '("failed" "G_IO_CHANNEL_ERROR_FAILED")
+ )
+)
+
+(define-enum s
+ (in-module "GIOStatu")
+ (c-name "GIOStatus")
+ (gtype-id "G_TYPE_IO_STATUS")
+ (values
+ '("error" "G_IO_STATUS_ERROR")
+ '("normal" "G_IO_STATUS_NORMAL")
+ '("eof" "G_IO_STATUS_EOF")
+ '("again" "G_IO_STATUS_AGAIN")
+ )
+)
+
+(define-enum Type
+ (in-module "GSeek")
+ (c-name "GSeekType")
+ (gtype-id "G_TYPE_SEEK_TYPE")
+ (values
+ '("cur" "G_SEEK_CUR")
+ '("set" "G_SEEK_SET")
+ '("end" "G_SEEK_END")
+ )
+)
+
+(define-enum n
+ (in-module "GIOConditio")
+ (c-name "GIOCondition")
+ (gtype-id "G_TYPE_IO_CONDITION")
+ (values
+ '("in" "G_IO_IN")
+ '("out" "G_IO_OUT")
+ '("pri" "G_IO_PRI")
+ '("err" "G_IO_ERR")
+ '("hup" "G_IO_HUP")
+ '("nval" "G_IO_NVAL")
+ )
+)
+
+(define-flags s
+ (in-module "GIOFlag")
+ (c-name "GIOFlags")
+ (gtype-id "G_TYPE_IO_FLAGS")
+ (values
+ '("append" "G_IO_FLAG_APPEND")
+ '("nonblock" "G_IO_FLAG_NONBLOCK")
+ '("is-readable" "G_IO_FLAG_IS_READABLE")
+ '("is-writeable" "G_IO_FLAG_IS_WRITEABLE")
+ '("is-seekable" "G_IO_FLAG_IS_SEEKABLE")
+ '("mask" "G_IO_FLAG_MASK")
+ '("get-mask" "G_IO_FLAG_GET_MASK")
+ '("set-mask" "G_IO_FLAG_SET_MASK")
+ )
+)
+
+(define-enum FileError
+ (in-module "GKey")
+ (c-name "GKeyFileError")
+ (gtype-id "G_TYPE_KEY_FILE_ERROR")
+ (values
+ '("unknown-encoding" "G_KEY_FILE_ERROR_UNKNOWN_ENCODING")
+ '("parse" "G_KEY_FILE_ERROR_PARSE")
+ '("not-found" "G_KEY_FILE_ERROR_NOT_FOUND")
+ '("key-not-found" "G_KEY_FILE_ERROR_KEY_NOT_FOUND")
+ '("group-not-found" "G_KEY_FILE_ERROR_GROUP_NOT_FOUND")
+ '("invalid-value" "G_KEY_FILE_ERROR_INVALID_VALUE")
+ )
+)
+
+(define-flags FileFlags
+ (in-module "GKey")
+ (c-name "GKeyFileFlags")
+ (gtype-id "G_TYPE_KEY_FILE_FLAGS")
+ (values
+ '("none" "G_KEY_FILE_NONE")
+ '("keep-comments" "G_KEY_FILE_KEEP_COMMENTS")
+ '("keep-translations" "G_KEY_FILE_KEEP_TRANSLATIONS")
+ )
+)
+
+(define-enum Error
+ (in-module "GMarkup")
+ (c-name "GMarkupError")
+ (gtype-id "G_TYPE_MARKUP_ERROR")
+ (values
+ '("bad-utf8" "G_MARKUP_ERROR_BAD_UTF8")
+ '("empty" "G_MARKUP_ERROR_EMPTY")
+ '("parse" "G_MARKUP_ERROR_PARSE")
+ '("unknown-element" "G_MARKUP_ERROR_UNKNOWN_ELEMENT")
+ '("unknown-attribute" "G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE")
+ '("invalid-content" "G_MARKUP_ERROR_INVALID_CONTENT")
+ )
+)
+
+(define-flags ParseFlags
+ (in-module "GMarkup")
+ (c-name "GMarkupParseFlags")
+ (gtype-id "G_TYPE_MARKUP_PARSE_FLAGS")
+ (values
+ '("g" "G_MARKUP_DO_NOT_USE_THIS_UNSUPPORTED_FLAG")
+ )
+)
+
+(define-flags LevelFlags
+ (in-module "GLog")
+ (c-name "GLogLevelFlags")
+ (gtype-id "G_TYPE_LOG_LEVEL_FLAGS")
+ (values
+ '("flag-recursion" "G_LOG_FLAG_RECURSION")
+ '("flag-fatal" "G_LOG_FLAG_FATAL")
+ '("level-error" "G_LOG_LEVEL_ERROR")
+ '("level-critical" "G_LOG_LEVEL_CRITICAL")
+ '("level-warning" "G_LOG_LEVEL_WARNING")
+ '("level-message" "G_LOG_LEVEL_MESSAGE")
+ '("level-info" "G_LOG_LEVEL_INFO")
+ '("level-debug" "G_LOG_LEVEL_DEBUG")
+ '("level-mask" "G_LOG_LEVEL_MASK")
+ )
+)
+
+(define-flags Flags
+ (in-module "GTraverse")
+ (c-name "GTraverseFlags")
+ (gtype-id "G_TYPE_TRAVERSE_FLAGS")
+ (values
+ '("leaves" "G_TRAVERSE_LEAVES")
+ '("non-leaves" "G_TRAVERSE_NON_LEAVES")
+ '("all" "G_TRAVERSE_ALL")
+ '("mask" "G_TRAVERSE_MASK")
+ '("leafs" "G_TRAVERSE_LEAFS")
+ '("non-leafs" "G_TRAVERSE_NON_LEAFS")
+ )
+)
+
+(define-enum Type
+ (in-module "GTraverse")
+ (c-name "GTraverseType")
+ (gtype-id "G_TYPE_TRAVERSE_TYPE")
+ (values
+ '("in-order" "G_IN_ORDER")
+ '("pre-order" "G_PRE_ORDER")
+ '("post-order" "G_POST_ORDER")
+ '("level-order" "G_LEVEL_ORDER")
+ )
+)
+
+(define-flags Flags
+ (in-module "GOption")
+ (c-name "GOptionFlags")
+ (gtype-id "G_TYPE_OPTION_FLAGS")
+ (values
+ '("hidden" "G_OPTION_FLAG_HIDDEN")
+ '("in-main" "G_OPTION_FLAG_IN_MAIN")
+ '("reverse" "G_OPTION_FLAG_REVERSE")
+ '("no-arg" "G_OPTION_FLAG_NO_ARG")
+ '("filename" "G_OPTION_FLAG_FILENAME")
+ '("optional-arg" "G_OPTION_FLAG_OPTIONAL_ARG")
+ '("noalias" "G_OPTION_FLAG_NOALIAS")
+ )
+)
+
+(define-enum Arg
+ (in-module "GOption")
+ (c-name "GOptionArg")
+ (gtype-id "G_TYPE_OPTION_ARG")
+ (values
+ '("none" "G_OPTION_ARG_NONE")
+ '("string" "G_OPTION_ARG_STRING")
+ '("int" "G_OPTION_ARG_INT")
+ '("callback" "G_OPTION_ARG_CALLBACK")
+ '("filename" "G_OPTION_ARG_FILENAME")
+ '("string-array" "G_OPTION_ARG_STRING_ARRAY")
+ '("filename-array" "G_OPTION_ARG_FILENAME_ARRAY")
+ )
+)
+
+(define-enum Error
+ (in-module "GOption")
+ (c-name "GOptionError")
+ (gtype-id "G_TYPE_OPTION_ERROR")
+ (values
+ '("unknown-option" "G_OPTION_ERROR_UNKNOWN_OPTION")
+ '("bad-value" "G_OPTION_ERROR_BAD_VALUE")
+ '("failed" "G_OPTION_ERROR_FAILED")
+ )
+)
+
+(define-enum Type
+ (in-module "GError")
+ (c-name "GErrorType")
+ (gtype-id "G_TYPE_ERROR_TYPE")
+ (values
+ '("unknown" "G_ERR_UNKNOWN")
+ '("unexp-eof" "G_ERR_UNEXP_EOF")
+ '("unexp-eof-in-string" "G_ERR_UNEXP_EOF_IN_STRING")
+ '("unexp-eof-in-comment" "G_ERR_UNEXP_EOF_IN_COMMENT")
+ '("non-digit-in-const" "G_ERR_NON_DIGIT_IN_CONST")
+ '("digit-radix" "G_ERR_DIGIT_RADIX")
+ '("float-radix" "G_ERR_FLOAT_RADIX")
+ '("float-malformed" "G_ERR_FLOAT_MALFORMED")
+ )
+)
+
+(define-enum Error
+ (in-module "GShell")
+ (c-name "GShellError")
+ (gtype-id "G_TYPE_SHELL_ERROR")
+ (values
+ '("bad-quoting" "G_SHELL_ERROR_BAD_QUOTING")
+ '("empty-string" "G_SHELL_ERROR_EMPTY_STRING")
+ '("failed" "G_SHELL_ERROR_FAILED")
+ )
+)
+
+(define-enum Error
+ (in-module "GSpawn")
+ (c-name "GSpawnError")
+ (gtype-id "G_TYPE_SPAWN_ERROR")
+ (values
+ '("fork" "G_SPAWN_ERROR_FORK")
+ '("read" "G_SPAWN_ERROR_READ")
+ '("chdir" "G_SPAWN_ERROR_CHDIR")
+ '("acces" "G_SPAWN_ERROR_ACCES")
+ '("perm" "G_SPAWN_ERROR_PERM")
+ '("2big" "G_SPAWN_ERROR_2BIG")
+ '("noexec" "G_SPAWN_ERROR_NOEXEC")
+ '("nametoolong" "G_SPAWN_ERROR_NAMETOOLONG")
+ '("noent" "G_SPAWN_ERROR_NOENT")
+ '("nomem" "G_SPAWN_ERROR_NOMEM")
+ '("notdir" "G_SPAWN_ERROR_NOTDIR")
+ '("loop" "G_SPAWN_ERROR_LOOP")
+ '("txtbusy" "G_SPAWN_ERROR_TXTBUSY")
+ '("io" "G_SPAWN_ERROR_IO")
+ '("nfile" "G_SPAWN_ERROR_NFILE")
+ '("mfile" "G_SPAWN_ERROR_MFILE")
+ '("inval" "G_SPAWN_ERROR_INVAL")
+ '("isdir" "G_SPAWN_ERROR_ISDIR")
+ '("libbad" "G_SPAWN_ERROR_LIBBAD")
+ '("failed" "G_SPAWN_ERROR_FAILED")
+ )
+)
+
+(define-flags Flags
+ (in-module "GSpawn")
+ (c-name "GSpawnFlags")
+ (gtype-id "G_TYPE_SPAWN_FLAGS")
+ (values
+ '("leave-descriptors-open" "G_SPAWN_LEAVE_DESCRIPTORS_OPEN")
+ '("do-not-reap-child" "G_SPAWN_DO_NOT_REAP_CHILD")
+ '("search-path" "G_SPAWN_SEARCH_PATH")
+ '("stdout-to-dev-null" "G_SPAWN_STDOUT_TO_DEV_NULL")
+ '("stderr-to-dev-null" "G_SPAWN_STDERR_TO_DEV_NULL")
+ '("child-inherits-stdin" "G_SPAWN_CHILD_INHERITS_STDIN")
+ '("file-and-argv-zero" "G_SPAWN_FILE_AND_ARGV_ZERO")
+ )
+)
+
+(define-flags Type
+ (in-module "GAscii")
+ (c-name "GAsciiType")
+ (gtype-id "G_TYPE_ASCII_TYPE")
+ (values
+ '("alnum" "G_ASCII_ALNUM")
+ '("alpha" "G_ASCII_ALPHA")
+ '("cntrl" "G_ASCII_CNTRL")
+ '("digit" "G_ASCII_DIGIT")
+ '("graph" "G_ASCII_GRAPH")
+ '("lower" "G_ASCII_LOWER")
+ '("print" "G_ASCII_PRINT")
+ '("punct" "G_ASCII_PUNCT")
+ '("space" "G_ASCII_SPACE")
+ '("upper" "G_ASCII_UPPER")
+ '("xdigit" "G_ASCII_XDIGIT")
+ )
+)
+
+(define-enum Error
+ (in-module "GThread")
+ (c-name "GThreadError")
+ (gtype-id "G_TYPE_THREAD_ERROR")
+ (values
+ '("n" "G_THREAD_ERROR_AGAIN")
+ )
+)
+
+(define-enum Priority
+ (in-module "GThread")
+ (c-name "GThreadPriority")
+ (gtype-id "G_TYPE_THREAD_PRIORITY")
+ (values
+ '("low" "G_THREAD_PRIORITY_LOW")
+ '("normal" "G_THREAD_PRIORITY_NORMAL")
+ '("high" "G_THREAD_PRIORITY_HIGH")
+ '("urgent" "G_THREAD_PRIORITY_URGENT")
+ )
+)
+
+(define-enum Status
+ (in-module "GOnce")
+ (c-name "GOnceStatus")
+ (gtype-id "G_TYPE_ONCE_STATUS")
+ (values
+ '("notcalled" "G_ONCE_STATUS_NOTCALLED")
+ '("progress" "G_ONCE_STATUS_PROGRESS")
+ '("ready" "G_ONCE_STATUS_READY")
+ )
+)
+
+(define-enum Type
+ (in-module "GUnicode")
+ (c-name "GUnicodeType")
+ (gtype-id "G_TYPE_UNICODE_TYPE")
+ (values
+ '("control" "G_UNICODE_CONTROL")
+ '("format" "G_UNICODE_FORMAT")
+ '("unassigned" "G_UNICODE_UNASSIGNED")
+ '("private-use" "G_UNICODE_PRIVATE_USE")
+ '("surrogate" "G_UNICODE_SURROGATE")
+ '("lowercase-letter" "G_UNICODE_LOWERCASE_LETTER")
+ '("modifier-letter" "G_UNICODE_MODIFIER_LETTER")
+ '("other-letter" "G_UNICODE_OTHER_LETTER")
+ '("titlecase-letter" "G_UNICODE_TITLECASE_LETTER")
+ '("uppercase-letter" "G_UNICODE_UPPERCASE_LETTER")
+ '("combining-mark" "G_UNICODE_COMBINING_MARK")
+ '("enclosing-mark" "G_UNICODE_ENCLOSING_MARK")
+ '("non-spacing-mark" "G_UNICODE_NON_SPACING_MARK")
+ '("decimal-number" "G_UNICODE_DECIMAL_NUMBER")
+ '("letter-number" "G_UNICODE_LETTER_NUMBER")
+ '("other-number" "G_UNICODE_OTHER_NUMBER")
+ '("connect-punctuation" "G_UNICODE_CONNECT_PUNCTUATION")
+ '("dash-punctuation" "G_UNICODE_DASH_PUNCTUATION")
+ '("close-punctuation" "G_UNICODE_CLOSE_PUNCTUATION")
+ '("final-punctuation" "G_UNICODE_FINAL_PUNCTUATION")
+ '("initial-punctuation" "G_UNICODE_INITIAL_PUNCTUATION")
+ '("other-punctuation" "G_UNICODE_OTHER_PUNCTUATION")
+ '("open-punctuation" "G_UNICODE_OPEN_PUNCTUATION")
+ '("currency-symbol" "G_UNICODE_CURRENCY_SYMBOL")
+ '("modifier-symbol" "G_UNICODE_MODIFIER_SYMBOL")
+ '("math-symbol" "G_UNICODE_MATH_SYMBOL")
+ '("other-symbol" "G_UNICODE_OTHER_SYMBOL")
+ '("line-separator" "G_UNICODE_LINE_SEPARATOR")
+ '("paragraph-separator" "G_UNICODE_PARAGRAPH_SEPARATOR")
+ '("space-separator" "G_UNICODE_SPACE_SEPARATOR")
+ )
+)
+
+(define-enum BreakType
+ (in-module "GUnicode")
+ (c-name "GUnicodeBreakType")
+ (gtype-id "G_TYPE_UNICODE_BREAK_TYPE")
+ (values
+ '("mandatory" "G_UNICODE_BREAK_MANDATORY")
+ '("carriage-return" "G_UNICODE_BREAK_CARRIAGE_RETURN")
+ '("line-feed" "G_UNICODE_BREAK_LINE_FEED")
+ '("combining-mark" "G_UNICODE_BREAK_COMBINING_MARK")
+ '("surrogate" "G_UNICODE_BREAK_SURROGATE")
+ '("zero-width-space" "G_UNICODE_BREAK_ZERO_WIDTH_SPACE")
+ '("inseparable" "G_UNICODE_BREAK_INSEPARABLE")
+ '("non-breaking-glue" "G_UNICODE_BREAK_NON_BREAKING_GLUE")
+ '("contingent" "G_UNICODE_BREAK_CONTINGENT")
+ '("space" "G_UNICODE_BREAK_SPACE")
+ '("after" "G_UNICODE_BREAK_AFTER")
+ '("before" "G_UNICODE_BREAK_BEFORE")
+ '("before-and-after" "G_UNICODE_BREAK_BEFORE_AND_AFTER")
+ '("hyphen" "G_UNICODE_BREAK_HYPHEN")
+ '("non-starter" "G_UNICODE_BREAK_NON_STARTER")
+ '("open-punctuation" "G_UNICODE_BREAK_OPEN_PUNCTUATION")
+ '("close-punctuation" "G_UNICODE_BREAK_CLOSE_PUNCTUATION")
+ '("quotation" "G_UNICODE_BREAK_QUOTATION")
+ '("exclamation" "G_UNICODE_BREAK_EXCLAMATION")
+ '("ideographic" "G_UNICODE_BREAK_IDEOGRAPHIC")
+ '("numeric" "G_UNICODE_BREAK_NUMERIC")
+ '("infix-separator" "G_UNICODE_BREAK_INFIX_SEPARATOR")
+ '("symbol" "G_UNICODE_BREAK_SYMBOL")
+ '("alphabetic" "G_UNICODE_BREAK_ALPHABETIC")
+ '("prefix" "G_UNICODE_BREAK_PREFIX")
+ '("postfix" "G_UNICODE_BREAK_POSTFIX")
+ '("complex-context" "G_UNICODE_BREAK_COMPLEX_CONTEXT")
+ '("ambiguous" "G_UNICODE_BREAK_AMBIGUOUS")
+ '("unknown" "G_UNICODE_BREAK_UNKNOWN")
+ '("next-line" "G_UNICODE_BREAK_NEXT_LINE")
+ '("word-joiner" "G_UNICODE_BREAK_WORD_JOINER")
+ )
+)
+
+(define-enum Mode
+ (in-module "GNormalize")
+ (c-name "GNormalizeMode")
+ (gtype-id "G_TYPE_NORMALIZE_MODE")
+ (values
+ '("default" "G_NORMALIZE_DEFAULT")
+ '("nfd" "G_NORMALIZE_NFD")
+ '("default-compose" "G_NORMALIZE_DEFAULT_COMPOSE")
+ '("nfc" "G_NORMALIZE_NFC")
+ '("all" "G_NORMALIZE_ALL")
+ '("nfkd" "G_NORMALIZE_NFKD")
+ '("all-compose" "G_NORMALIZE_ALL_COMPOSE")
+ '("nfkc" "G_NORMALIZE_NFKC")
+ )
+)
+
+(define-flags Flags
+ (in-module "GParam")
+ (c-name "GParamFlags")
+ (gtype-id "G_TYPE_PARAM_FLAGS")
+ (values
+ '("g-param-readable" "G_PARAM_READABLE")
+ '("g-param-writable" "G_PARAM_WRITABLE")
+ '("g-param-construct" "G_PARAM_CONSTRUCT")
+ '("g-param-construct-only" "G_PARAM_CONSTRUCT_ONLY")
+ '("g-param-lax-validation" "G_PARAM_LAX_VALIDATION")
+ '("g-param-static-name" "G_PARAM_STATIC_NAME")
+ '("#ifndef" "#ifndef")
+ '("#endif" "#endif")
+ '("g-param-static-blurb" "G_PARAM_STATIC_BLURB")
+ )
+)
+
+(define-flags Flags
+ (in-module "GSignal")
+ (c-name "GSignalFlags")
+ (gtype-id "G_TYPE_SIGNAL_FLAGS")
+ (values
+ '("run-first" "G_SIGNAL_RUN_FIRST")
+ '("run-last" "G_SIGNAL_RUN_LAST")
+ '("run-cleanup" "G_SIGNAL_RUN_CLEANUP")
+ '("no-recurse" "G_SIGNAL_NO_RECURSE")
+ '("detailed" "G_SIGNAL_DETAILED")
+ '("action" "G_SIGNAL_ACTION")
+ '("no-hooks" "G_SIGNAL_NO_HOOKS")
+ )
+)
+
+(define-flags Flags
+ (in-module "GConnect")
+ (c-name "GConnectFlags")
+ (gtype-id "G_TYPE_CONNECT_FLAGS")
+ (values
+ '("after" "G_CONNECT_AFTER")
+ '("swapped" "G_CONNECT_SWAPPED")
+ )
+)
+
+(define-flags MatchType
+ (in-module "GSignal")
+ (c-name "GSignalMatchType")
+ (gtype-id "G_TYPE_SIGNAL_MATCH_TYPE")
+ (values
+ '("id" "G_SIGNAL_MATCH_ID")
+ '("detail" "G_SIGNAL_MATCH_DETAIL")
+ '("closure" "G_SIGNAL_MATCH_CLOSURE")
+ '("func" "G_SIGNAL_MATCH_FUNC")
+ '("data" "G_SIGNAL_MATCH_DATA")
+ '("unblocked" "G_SIGNAL_MATCH_UNBLOCKED")
+ )
+)
+
+(define-flags DebugFlags
+ (in-module "GType")
+ (c-name "GTypeDebugFlags")
+ (gtype-id "G_TYPE_TYPE_DEBUG_FLAGS")
+ (values
+ '("none" "G_TYPE_DEBUG_NONE")
+ '("objects" "G_TYPE_DEBUG_OBJECTS")
+ '("signals" "G_TYPE_DEBUG_SIGNALS")
+ '("mask" "G_TYPE_DEBUG_MASK")
+ )
+)
+
+(define-flags FundamentalFlags
+ (in-module "GType")
+ (c-name "GTypeFundamentalFlags")
+ (gtype-id "G_TYPE_TYPE_FUNDAMENTAL_FLAGS")
+ (values
+ '("classed" "G_TYPE_FLAG_CLASSED")
+ '("instantiatable" "G_TYPE_FLAG_INSTANTIATABLE")
+ '("derivable" "G_TYPE_FLAG_DERIVABLE")
+ '("deep-derivable" "G_TYPE_FLAG_DEEP_DERIVABLE")
+ )
+)
+
+(define-flags Flags
+ (in-module "GType")
+ (c-name "GTypeFlags")
+ (gtype-id "G_TYPE_TYPE_FLAGS")
+ (values
+ '("abstract" "G_TYPE_FLAG_ABSTRACT")
+ '("value-abstract" "G_TYPE_FLAG_VALUE_ABSTRACT")
+ )
+)
+
+(define-flags Flags
+ (in-module "GModule")
+ (c-name "GModuleFlags")
+ (gtype-id "G_TYPE_MODULE_FLAGS")
+ (values
+ '("lazy" "G_MODULE_BIND_LAZY")
+ '("local" "G_MODULE_BIND_LOCAL")
+ '("mask" "G_MODULE_BIND_MASK")
+ )
+)
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/galias.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/galloca.h
+
+(define-function alloca
+ (c-name "alloca")
+ (return-type "char*")
+ (parameters
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/garray.h
+
+(define-function g_array_new
+ (c-name "g_array_new")
+ (is-constructor-of "GArray")
+ (return-type "GArray*")
+ (parameters
+ '("gboolean" "zero_terminated")
+ '("gboolean" "clear_")
+ '("guint" "element_size")
+ )
+)
+
+(define-function g_array_sized_new
+ (c-name "g_array_sized_new")
+ (is-constructor-of "GArraySized")
+ (return-type "GArray*")
+ (parameters
+ '("gboolean" "zero_terminated")
+ '("gboolean" "clear_")
+ '("guint" "element_size")
+ '("guint" "reserved_size")
+ )
+)
+
+(define-method free
+ (of-object "GArray")
+ (c-name "g_array_free")
+ (return-type "gchar*")
+ (parameters
+ '("gboolean" "free_segment")
+ )
+)
+
+(define-method append_vals
+ (of-object "GArray")
+ (c-name "g_array_append_vals")
+ (return-type "GArray*")
+ (parameters
+ '("gconstpointer" "data")
+ '("guint" "len")
+ )
+)
+
+(define-method prepend_vals
+ (of-object "GArray")
+ (c-name "g_array_prepend_vals")
+ (return-type "GArray*")
+ (parameters
+ '("gconstpointer" "data")
+ '("guint" "len")
+ )
+)
+
+(define-method insert_vals
+ (of-object "GArray")
+ (c-name "g_array_insert_vals")
+ (return-type "GArray*")
+ (parameters
+ '("guint" "index_")
+ '("gconstpointer" "data")
+ '("guint" "len")
+ )
+)
+
+(define-method set_size
+ (of-object "GArray")
+ (c-name "g_array_set_size")
+ (return-type "GArray*")
+ (parameters
+ '("guint" "length")
+ )
+)
+
+(define-method remove_index
+ (of-object "GArray")
+ (c-name "g_array_remove_index")
+ (return-type "GArray*")
+ (parameters
+ '("guint" "index_")
+ )
+)
+
+(define-method remove_index_fast
+ (of-object "GArray")
+ (c-name "g_array_remove_index_fast")
+ (return-type "GArray*")
+ (parameters
+ '("guint" "index_")
+ )
+)
+
+(define-method remove_range
+ (of-object "GArray")
+ (c-name "g_array_remove_range")
+ (return-type "GArray*")
+ (parameters
+ '("guint" "index_")
+ '("guint" "length")
+ )
+)
+
+(define-method sort
+ (of-object "GArray")
+ (c-name "g_array_sort")
+ (return-type "none")
+ (parameters
+ '("GCompareFunc" "compare_func")
+ )
+)
+
+(define-method sort_with_data
+ (of-object "GArray")
+ (c-name "g_array_sort_with_data")
+ (return-type "none")
+ (parameters
+ '("GCompareDataFunc" "compare_func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-function g_ptr_array_new
+ (c-name "g_ptr_array_new")
+ (is-constructor-of "GPtrArray")
+ (return-type "GPtrArray*")
+)
+
+(define-function g_ptr_array_sized_new
+ (c-name "g_ptr_array_sized_new")
+ (is-constructor-of "GPtrArraySized")
+ (return-type "GPtrArray*")
+ (parameters
+ '("guint" "reserved_size")
+ )
+)
+
+(define-method free
+ (of-object "GPtrArray")
+ (c-name "g_ptr_array_free")
+ (return-type "gpointer*")
+ (parameters
+ '("gboolean" "free_seg")
+ )
+)
+
+(define-method set_size
+ (of-object "GPtrArray")
+ (c-name "g_ptr_array_set_size")
+ (return-type "none")
+ (parameters
+ '("gint" "length")
+ )
+)
+
+(define-method remove_index
+ (of-object "GPtrArray")
+ (c-name "g_ptr_array_remove_index")
+ (return-type "gpointer")
+ (parameters
+ '("guint" "index_")
+ )
+)
+
+(define-method remove_index_fast
+ (of-object "GPtrArray")
+ (c-name "g_ptr_array_remove_index_fast")
+ (return-type "gpointer")
+ (parameters
+ '("guint" "index_")
+ )
+)
+
+(define-method remove
+ (of-object "GPtrArray")
+ (c-name "g_ptr_array_remove")
+ (return-type "gboolean")
+ (parameters
+ '("gpointer" "data")
+ )
+)
+
+(define-method remove_fast
+ (of-object "GPtrArray")
+ (c-name "g_ptr_array_remove_fast")
+ (return-type "gboolean")
+ (parameters
+ '("gpointer" "data")
+ )
+)
+
+(define-method remove_range
+ (of-object "GPtrArray")
+ (c-name "g_ptr_array_remove_range")
+ (return-type "none")
+ (parameters
+ '("guint" "index_")
+ '("guint" "length")
+ )
+)
+
+(define-method add
+ (of-object "GPtrArray")
+ (c-name "g_ptr_array_add")
+ (return-type "none")
+ (parameters
+ '("gpointer" "data")
+ )
+)
+
+(define-method sort
+ (of-object "GPtrArray")
+ (c-name "g_ptr_array_sort")
+ (return-type "none")
+ (parameters
+ '("GCompareFunc" "compare_func")
+ )
+)
+
+(define-method sort_with_data
+ (of-object "GPtrArray")
+ (c-name "g_ptr_array_sort_with_data")
+ (return-type "none")
+ (parameters
+ '("GCompareDataFunc" "compare_func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method foreach
+ (of-object "GPtrArray")
+ (c-name "g_ptr_array_foreach")
+ (return-type "none")
+ (parameters
+ '("GFunc" "func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-function g_byte_array_new
+ (c-name "g_byte_array_new")
+ (is-constructor-of "GByteArray")
+ (return-type "GByteArray*")
+)
+
+(define-function g_byte_array_sized_new
+ (c-name "g_byte_array_sized_new")
+ (is-constructor-of "GByteArraySized")
+ (return-type "GByteArray*")
+ (parameters
+ '("guint" "reserved_size")
+ )
+)
+
+(define-method free
+ (of-object "GByteArray")
+ (c-name "g_byte_array_free")
+ (return-type "guint8*")
+ (parameters
+ '("gboolean" "free_segment")
+ )
+)
+
+(define-method append
+ (of-object "GByteArray")
+ (c-name "g_byte_array_append")
+ (return-type "GByteArray*")
+ (parameters
+ '("const-guint8*" "data")
+ '("guint" "len")
+ )
+)
+
+(define-method prepend
+ (of-object "GByteArray")
+ (c-name "g_byte_array_prepend")
+ (return-type "GByteArray*")
+ (parameters
+ '("const-guint8*" "data")
+ '("guint" "len")
+ )
+)
+
+(define-method set_size
+ (of-object "GByteArray")
+ (c-name "g_byte_array_set_size")
+ (return-type "GByteArray*")
+ (parameters
+ '("guint" "length")
+ )
+)
+
+(define-method remove_index
+ (of-object "GByteArray")
+ (c-name "g_byte_array_remove_index")
+ (return-type "GByteArray*")
+ (parameters
+ '("guint" "index_")
+ )
+)
+
+(define-method remove_index_fast
+ (of-object "GByteArray")
+ (c-name "g_byte_array_remove_index_fast")
+ (return-type "GByteArray*")
+ (parameters
+ '("guint" "index_")
+ )
+)
+
+(define-method remove_range
+ (of-object "GByteArray")
+ (c-name "g_byte_array_remove_range")
+ (return-type "GByteArray*")
+ (parameters
+ '("guint" "index_")
+ '("guint" "length")
+ )
+)
+
+(define-method sort
+ (of-object "GByteArray")
+ (c-name "g_byte_array_sort")
+ (return-type "none")
+ (parameters
+ '("GCompareFunc" "compare_func")
+ )
+)
+
+(define-method sort_with_data
+ (of-object "GByteArray")
+ (c-name "g_byte_array_sort_with_data")
+ (return-type "none")
+ (parameters
+ '("GCompareDataFunc" "compare_func")
+ '("gpointer" "user_data")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gasyncqueue.h
+
+(define-function g_async_queue_new
+ (c-name "g_async_queue_new")
+ (is-constructor-of "GAsyncQueue")
+ (return-type "GAsyncQueue*")
+)
+
+(define-method lock
+ (of-object "GAsyncQueue")
+ (c-name "g_async_queue_lock")
+ (return-type "none")
+)
+
+(define-method unlock
+ (of-object "GAsyncQueue")
+ (c-name "g_async_queue_unlock")
+ (return-type "none")
+)
+
+(define-method ref
+ (of-object "GAsyncQueue")
+ (c-name "g_async_queue_ref")
+ (return-type "GAsyncQueue*")
+)
+
+(define-method unref
+ (of-object "GAsyncQueue")
+ (c-name "g_async_queue_unref")
+ (return-type "none")
+)
+
+(define-method ref_unlocked
+ (of-object "GAsyncQueue")
+ (c-name "g_async_queue_ref_unlocked")
+ (return-type "none")
+)
+
+(define-method unref_and_unlock
+ (of-object "GAsyncQueue")
+ (c-name "g_async_queue_unref_and_unlock")
+ (return-type "none")
+)
+
+(define-method push
+ (of-object "GAsyncQueue")
+ (c-name "g_async_queue_push")
+ (return-type "none")
+ (parameters
+ '("gpointer" "data")
+ )
+)
+
+(define-method push_unlocked
+ (of-object "GAsyncQueue")
+ (c-name "g_async_queue_push_unlocked")
+ (return-type "none")
+ (parameters
+ '("gpointer" "data")
+ )
+)
+
+(define-method pop
+ (of-object "GAsyncQueue")
+ (c-name "g_async_queue_pop")
+ (return-type "gpointer")
+)
+
+(define-method pop_unlocked
+ (of-object "GAsyncQueue")
+ (c-name "g_async_queue_pop_unlocked")
+ (return-type "gpointer")
+)
+
+(define-method try_pop
+ (of-object "GAsyncQueue")
+ (c-name "g_async_queue_try_pop")
+ (return-type "gpointer")
+)
+
+(define-method try_pop_unlocked
+ (of-object "GAsyncQueue")
+ (c-name "g_async_queue_try_pop_unlocked")
+ (return-type "gpointer")
+)
+
+(define-method timed_pop
+ (of-object "GAsyncQueue")
+ (c-name "g_async_queue_timed_pop")
+ (return-type "gpointer")
+ (parameters
+ '("GTimeVal*" "end_time")
+ )
+)
+
+(define-method timed_pop_unlocked
+ (of-object "GAsyncQueue")
+ (c-name "g_async_queue_timed_pop_unlocked")
+ (return-type "gpointer")
+ (parameters
+ '("GTimeVal*" "end_time")
+ )
+)
+
+(define-method length
+ (of-object "GAsyncQueue")
+ (c-name "g_async_queue_length")
+ (return-type "gint")
+)
+
+(define-method length_unlocked
+ (of-object "GAsyncQueue")
+ (c-name "g_async_queue_length_unlocked")
+ (return-type "gint")
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gatomic.h
+
+(define-function g_atomic_int_exchange_and_add
+ (c-name "g_atomic_int_exchange_and_add")
+ (return-type "gint")
+ (parameters
+ '("gint*" "atomic")
+ '("gint" "val")
+ )
+)
+
+(define-function g_atomic_int_add
+ (c-name "g_atomic_int_add")
+ (return-type "none")
+ (parameters
+ '("gint*" "atomic")
+ '("gint" "val")
+ )
+)
+
+(define-function g_atomic_int_compare_and_exchange
+ (c-name "g_atomic_int_compare_and_exchange")
+ (return-type "gboolean")
+ (parameters
+ '("gint*" "atomic")
+ '("gint" "oldval")
+ '("gint" "newval")
+ )
+)
+
+(define-function g_atomic_pointer_compare_and_exchange
+ (c-name "g_atomic_pointer_compare_and_exchange")
+ (return-type "gboolean")
+ (parameters
+ '("gpointer*" "atomic")
+ '("gpointer" "oldval")
+ '("gpointer" "newval")
+ )
+)
+
+(define-function g_atomic_int_get
+ (c-name "g_atomic_int_get")
+ (return-type "gint")
+ (parameters
+ '("gint*" "atomic")
+ )
+)
+
+(define-function g_atomic_pointer_get
+ (c-name "g_atomic_pointer_get")
+ (return-type "gpointer")
+ (parameters
+ '("gpointer*" "atomic")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gbacktrace.h
+
+(define-function g_on_error_query
+ (c-name "g_on_error_query")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "prg_name")
+ )
+)
+
+(define-function g_on_error_stack_trace
+ (c-name "g_on_error_stack_trace")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "prg_name")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gbsearcharray.h
+
+(define-function if
+ (c-name "if")
+ (return-type "else")
+ (parameters
+ '("cmp-<" "0")
+ )
+)
+
+(define-function MIN
+ (c-name "MIN")
+ (return-type "return")
+ (parameters
+ '("barray->n_nodes-+" "1")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gcache.h
+
+(define-function g_cache_new
+ (c-name "g_cache_new")
+ (is-constructor-of "GCache")
+ (return-type "GCache*")
+ (parameters
+ '("GCacheNewFunc" "value_new_func")
+ '("GCacheDestroyFunc" "value_destroy_func")
+ '("GCacheDupFunc" "key_dup_func")
+ '("GCacheDestroyFunc" "key_destroy_func")
+ '("GHashFunc" "hash_key_func")
+ '("GHashFunc" "hash_value_func")
+ '("GEqualFunc" "key_equal_func")
+ )
+)
+
+(define-method destroy
+ (of-object "GCache")
+ (c-name "g_cache_destroy")
+ (return-type "none")
+)
+
+(define-method insert
+ (of-object "GCache")
+ (c-name "g_cache_insert")
+ (return-type "gpointer")
+ (parameters
+ '("gpointer" "key")
+ )
+)
+
+(define-method remove
+ (of-object "GCache")
+ (c-name "g_cache_remove")
+ (return-type "none")
+ (parameters
+ '("gconstpointer" "value")
+ )
+)
+
+(define-method key_foreach
+ (of-object "GCache")
+ (c-name "g_cache_key_foreach")
+ (return-type "none")
+ (parameters
+ '("GHFunc" "func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method value_foreach
+ (of-object "GCache")
+ (c-name "g_cache_value_foreach")
+ (return-type "none")
+ (parameters
+ '("GHFunc" "func")
+ '("gpointer" "user_data")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gcompletion.h
+
+(define-function g_completion_new
+ (c-name "g_completion_new")
+ (is-constructor-of "GCompletion")
+ (return-type "GCompletion*")
+ (parameters
+ '("GCompletionFunc" "func")
+ )
+)
+
+(define-method add_items
+ (of-object "GCompletion")
+ (c-name "g_completion_add_items")
+ (return-type "none")
+ (parameters
+ '("GList*" "items")
+ )
+)
+
+(define-method remove_items
+ (of-object "GCompletion")
+ (c-name "g_completion_remove_items")
+ (return-type "none")
+ (parameters
+ '("GList*" "items")
+ )
+)
+
+(define-method clear_items
+ (of-object "GCompletion")
+ (c-name "g_completion_clear_items")
+ (return-type "none")
+)
+
+(define-method complete
+ (of-object "GCompletion")
+ (c-name "g_completion_complete")
+ (return-type "GList*")
+ (parameters
+ '("const-gchar*" "prefix")
+ '("gchar**" "new_prefix")
+ )
+)
+
+(define-method complete_utf8
+ (of-object "GCompletion")
+ (c-name "g_completion_complete_utf8")
+ (return-type "GList*")
+ (parameters
+ '("const-gchar*" "prefix")
+ '("gchar**" "new_prefix")
+ )
+)
+
+(define-method set_compare
+ (of-object "GCompletion")
+ (c-name "g_completion_set_compare")
+ (return-type "none")
+ (parameters
+ '("GCompletionStrncmpFunc" "strncmp_func")
+ )
+)
+
+(define-method free
+ (of-object "GCompletion")
+ (c-name "g_completion_free")
+ (return-type "none")
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gconvert.h
+
+(define-function g_convert_error_quark
+ (c-name "g_convert_error_quark")
+ (return-type "GQuark")
+)
+
+(define-function g_iconv_open
+ (c-name "g_iconv_open")
+ (return-type "GIConv")
+ (parameters
+ '("const-gchar*" "to_codeset")
+ '("const-gchar*" "from_codeset")
+ )
+)
+
+(define-function g_iconv
+ (c-name "g_iconv")
+ (return-type "size_t")
+ (parameters
+ '("gchar**" "inbuf")
+ '("gsize*" "inbytes_left")
+ '("gchar**" "outbuf")
+ '("gsize*" "outbytes_left")
+ )
+)
+
+(define-method close
+ (of-object "GIConv")
+ (c-name "g_iconv_close")
+ (return-type "gint")
+)
+
+(define-function g_convert
+ (c-name "g_convert")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "str")
+ '("gssize" "len")
+ '("const-gchar*" "to_codeset")
+ '("const-gchar*" "from_codeset")
+ '("gsize*" "bytes_read")
+ '("gsize*" "bytes_written")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_convert_with_iconv
+ (c-name "g_convert_with_iconv")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "str")
+ '("gssize" "len")
+ '("GIConv" "converter")
+ '("gsize*" "bytes_read")
+ '("gsize*" "bytes_written")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_convert_with_fallback
+ (c-name "g_convert_with_fallback")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "str")
+ '("gssize" "len")
+ '("const-gchar*" "to_codeset")
+ '("const-gchar*" "from_codeset")
+ '("gchar*" "fallback")
+ '("gsize*" "bytes_read")
+ '("gsize*" "bytes_written")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_locale_to_utf8
+ (c-name "g_locale_to_utf8")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "opsysstring")
+ '("gssize" "len")
+ '("gsize*" "bytes_read")
+ '("gsize*" "bytes_written")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_locale_from_utf8
+ (c-name "g_locale_from_utf8")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "utf8string")
+ '("gssize" "len")
+ '("gsize*" "bytes_read")
+ '("gsize*" "bytes_written")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_filename_to_utf8
+ (c-name "g_filename_to_utf8")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "opsysstring")
+ '("gssize" "len")
+ '("gsize*" "bytes_read")
+ '("gsize*" "bytes_written")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_filename_from_utf8
+ (c-name "g_filename_from_utf8")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "utf8string")
+ '("gssize" "len")
+ '("gsize*" "bytes_read")
+ '("gsize*" "bytes_written")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_filename_from_uri
+ (c-name "g_filename_from_uri")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "uri")
+ '("gchar**" "hostname")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_filename_to_uri
+ (c-name "g_filename_to_uri")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "filename")
+ '("const-gchar*" "hostname")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_filename_display_name
+ (c-name "g_filename_display_name")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "filename")
+ )
+)
+
+(define-function g_get_filename_charsets
+ (c-name "g_get_filename_charsets")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar***" "charsets")
+ )
+)
+
+(define-function g_filename_display_basename
+ (c-name "g_filename_display_basename")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "filename")
+ )
+)
+
+(define-function g_uri_list_extract_uris
+ (c-name "g_uri_list_extract_uris")
+ (return-type "gchar**")
+ (parameters
+ '("const-gchar*" "uri_list")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gdataset.h
+
+(define-function g_datalist_init
+ (c-name "g_datalist_init")
+ (return-type "none")
+ (parameters
+ '("GData**" "datalist")
+ )
+)
+
+(define-function g_datalist_clear
+ (c-name "g_datalist_clear")
+ (return-type "none")
+ (parameters
+ '("GData**" "datalist")
+ )
+)
+
+(define-function g_datalist_id_get_data
+ (c-name "g_datalist_id_get_data")
+ (return-type "gpointer")
+ (parameters
+ '("GData**" "datalist")
+ '("GQuark" "key_id")
+ )
+)
+
+(define-function g_datalist_id_set_data_full
+ (c-name "g_datalist_id_set_data_full")
+ (return-type "none")
+ (parameters
+ '("GData**" "datalist")
+ '("GQuark" "key_id")
+ '("gpointer" "data")
+ '("GDestroyNotify" "destroy_func")
+ )
+)
+
+(define-function g_datalist_id_remove_no_notify
+ (c-name "g_datalist_id_remove_no_notify")
+ (return-type "gpointer")
+ (parameters
+ '("GData**" "datalist")
+ '("GQuark" "key_id")
+ )
+)
+
+(define-function g_datalist_foreach
+ (c-name "g_datalist_foreach")
+ (return-type "none")
+ (parameters
+ '("GData**" "datalist")
+ '("GDataForeachFunc" "func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-function g_datalist_set_flags
+ (c-name "g_datalist_set_flags")
+ (return-type "none")
+ (parameters
+ '("GData**" "datalist")
+ '("guint" "flags")
+ )
+)
+
+(define-function g_datalist_unset_flags
+ (c-name "g_datalist_unset_flags")
+ (return-type "none")
+ (parameters
+ '("GData**" "datalist")
+ '("guint" "flags")
+ )
+)
+
+(define-function g_datalist_get_flags
+ (c-name "g_datalist_get_flags")
+ (return-type "guint")
+ (parameters
+ '("GData**" "datalist")
+ )
+)
+
+(define-function g_dataset_destroy
+ (c-name "g_dataset_destroy")
+ (return-type "none")
+ (parameters
+ '("gconstpointer" "dataset_location")
+ )
+)
+
+(define-function g_dataset_id_get_data
+ (c-name "g_dataset_id_get_data")
+ (return-type "gpointer")
+ (parameters
+ '("gconstpointer" "dataset_location")
+ '("GQuark" "key_id")
+ )
+)
+
+(define-function g_dataset_id_set_data_full
+ (c-name "g_dataset_id_set_data_full")
+ (return-type "none")
+ (parameters
+ '("gconstpointer" "dataset_location")
+ '("GQuark" "key_id")
+ '("gpointer" "data")
+ '("GDestroyNotify" "destroy_func")
+ )
+)
+
+(define-function g_dataset_id_remove_no_notify
+ (c-name "g_dataset_id_remove_no_notify")
+ (return-type "gpointer")
+ (parameters
+ '("gconstpointer" "dataset_location")
+ '("GQuark" "key_id")
+ )
+)
+
+(define-function g_dataset_foreach
+ (c-name "g_dataset_foreach")
+ (return-type "none")
+ (parameters
+ '("gconstpointer" "dataset_location")
+ '("GDataForeachFunc" "func")
+ '("gpointer" "user_data")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gdatasetprivate.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gdate.h
+
+(define-function g_date_new
+ (c-name "g_date_new")
+ (is-constructor-of "GDate")
+ (return-type "GDate*")
+)
+
+(define-function g_date_new_dmy
+ (c-name "g_date_new_dmy")
+ (return-type "GDate*")
+ (parameters
+ '("GDateDay" "day")
+ '("GDateMonth" "month")
+ '("GDateYear" "year")
+ )
+)
+
+(define-function g_date_new_julian
+ (c-name "g_date_new_julian")
+ (return-type "GDate*")
+ (parameters
+ '("guint32" "julian_day")
+ )
+)
+
+(define-method free
+ (of-object "GDate")
+ (c-name "g_date_free")
+ (return-type "none")
+)
+
+(define-method valid
+ (of-object "GDate")
+ (c-name "g_date_valid")
+ (return-type "gboolean")
+)
+
+(define-function g_date_valid_day
+ (c-name "g_date_valid_day")
+ (return-type "gboolean")
+ (parameters
+ '("GDateDay" "day")
+ )
+)
+
+(define-function g_date_valid_month
+ (c-name "g_date_valid_month")
+ (return-type "gboolean")
+ (parameters
+ '("GDateMonth" "month")
+ )
+)
+
+(define-function g_date_valid_year
+ (c-name "g_date_valid_year")
+ (return-type "gboolean")
+ (parameters
+ '("GDateYear" "year")
+ )
+)
+
+(define-function g_date_valid_weekday
+ (c-name "g_date_valid_weekday")
+ (return-type "gboolean")
+ (parameters
+ '("GDateWeekday" "weekday")
+ )
+)
+
+(define-function g_date_valid_julian
+ (c-name "g_date_valid_julian")
+ (return-type "gboolean")
+ (parameters
+ '("guint32" "julian_date")
+ )
+)
+
+(define-function g_date_valid_dmy
+ (c-name "g_date_valid_dmy")
+ (return-type "gboolean")
+ (parameters
+ '("GDateDay" "day")
+ '("GDateMonth" "month")
+ '("GDateYear" "year")
+ )
+)
+
+(define-method get_weekday
+ (of-object "GDate")
+ (c-name "g_date_get_weekday")
+ (return-type "GDateWeekday")
+)
+
+(define-method get_month
+ (of-object "GDate")
+ (c-name "g_date_get_month")
+ (return-type "GDateMonth")
+)
+
+(define-method get_year
+ (of-object "GDate")
+ (c-name "g_date_get_year")
+ (return-type "GDateYear")
+)
+
+(define-method get_day
+ (of-object "GDate")
+ (c-name "g_date_get_day")
+ (return-type "GDateDay")
+)
+
+(define-method get_julian
+ (of-object "GDate")
+ (c-name "g_date_get_julian")
+ (return-type "guint32")
+)
+
+(define-method get_day_of_year
+ (of-object "GDate")
+ (c-name "g_date_get_day_of_year")
+ (return-type "guint")
+)
+
+(define-method get_monday_week_of_year
+ (of-object "GDate")
+ (c-name "g_date_get_monday_week_of_year")
+ (return-type "guint")
+)
+
+(define-method get_sunday_week_of_year
+ (of-object "GDate")
+ (c-name "g_date_get_sunday_week_of_year")
+ (return-type "guint")
+)
+
+(define-method get_iso8601_week_of_year
+ (of-object "GDate")
+ (c-name "g_date_get_iso8601_week_of_year")
+ (return-type "guint")
+)
+
+(define-method clear
+ (of-object "GDate")
+ (c-name "g_date_clear")
+ (return-type "none")
+ (parameters
+ '("guint" "n_dates")
+ )
+)
+
+(define-method set_parse
+ (of-object "GDate")
+ (c-name "g_date_set_parse")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "str")
+ )
+)
+
+(define-method set_time
+ (of-object "GDate")
+ (c-name "g_date_set_time")
+ (return-type "none")
+ (parameters
+ '("GTime" "time_")
+ )
+)
+
+(define-method set_month
+ (of-object "GDate")
+ (c-name "g_date_set_month")
+ (return-type "none")
+ (parameters
+ '("GDateMonth" "month")
+ )
+)
+
+(define-method set_day
+ (of-object "GDate")
+ (c-name "g_date_set_day")
+ (return-type "none")
+ (parameters
+ '("GDateDay" "day")
+ )
+)
+
+(define-method set_year
+ (of-object "GDate")
+ (c-name "g_date_set_year")
+ (return-type "none")
+ (parameters
+ '("GDateYear" "year")
+ )
+)
+
+(define-method set_dmy
+ (of-object "GDate")
+ (c-name "g_date_set_dmy")
+ (return-type "none")
+ (parameters
+ '("GDateDay" "day")
+ '("GDateMonth" "month")
+ '("GDateYear" "y")
+ )
+)
+
+(define-method set_julian
+ (of-object "GDate")
+ (c-name "g_date_set_julian")
+ (return-type "none")
+ (parameters
+ '("guint32" "julian_date")
+ )
+)
+
+(define-method is_first_of_month
+ (of-object "GDate")
+ (c-name "g_date_is_first_of_month")
+ (return-type "gboolean")
+)
+
+(define-method is_last_of_month
+ (of-object "GDate")
+ (c-name "g_date_is_last_of_month")
+ (return-type "gboolean")
+)
+
+(define-method add_days
+ (of-object "GDate")
+ (c-name "g_date_add_days")
+ (return-type "none")
+ (parameters
+ '("guint" "n_days")
+ )
+)
+
+(define-method subtract_days
+ (of-object "GDate")
+ (c-name "g_date_subtract_days")
+ (return-type "none")
+ (parameters
+ '("guint" "n_days")
+ )
+)
+
+(define-method add_months
+ (of-object "GDate")
+ (c-name "g_date_add_months")
+ (return-type "none")
+ (parameters
+ '("guint" "n_months")
+ )
+)
+
+(define-method subtract_months
+ (of-object "GDate")
+ (c-name "g_date_subtract_months")
+ (return-type "none")
+ (parameters
+ '("guint" "n_months")
+ )
+)
+
+(define-method add_years
+ (of-object "GDate")
+ (c-name "g_date_add_years")
+ (return-type "none")
+ (parameters
+ '("guint" "n_years")
+ )
+)
+
+(define-method subtract_years
+ (of-object "GDate")
+ (c-name "g_date_subtract_years")
+ (return-type "none")
+ (parameters
+ '("guint" "n_years")
+ )
+)
+
+(define-function g_date_is_leap_year
+ (c-name "g_date_is_leap_year")
+ (return-type "gboolean")
+ (parameters
+ '("GDateYear" "year")
+ )
+)
+
+(define-function g_date_get_days_in_month
+ (c-name "g_date_get_days_in_month")
+ (return-type "guint8")
+ (parameters
+ '("GDateMonth" "month")
+ '("GDateYear" "year")
+ )
+)
+
+(define-function g_date_get_monday_weeks_in_year
+ (c-name "g_date_get_monday_weeks_in_year")
+ (return-type "guint8")
+ (parameters
+ '("GDateYear" "year")
+ )
+)
+
+(define-function g_date_get_sunday_weeks_in_year
+ (c-name "g_date_get_sunday_weeks_in_year")
+ (return-type "guint8")
+ (parameters
+ '("GDateYear" "year")
+ )
+)
+
+(define-method days_between
+ (of-object "GDate")
+ (c-name "g_date_days_between")
+ (return-type "gint")
+ (parameters
+ '("const-GDate*" "date2")
+ )
+)
+
+(define-method compare
+ (of-object "GDate")
+ (c-name "g_date_compare")
+ (return-type "gint")
+ (parameters
+ '("const-GDate*" "rhs")
+ )
+)
+
+(define-method to_struct_tm
+ (of-object "GDate")
+ (c-name "g_date_to_struct_tm")
+ (return-type "none")
+ (parameters
+ '("struct-tm*" "tm")
+ )
+)
+
+(define-method clamp
+ (of-object "GDate")
+ (c-name "g_date_clamp")
+ (return-type "none")
+ (parameters
+ '("const-GDate*" "min_date")
+ '("const-GDate*" "max_date")
+ )
+)
+
+(define-method order
+ (of-object "GDate")
+ (c-name "g_date_order")
+ (return-type "none")
+ (parameters
+ '("GDate*" "date2")
+ )
+)
+
+(define-function g_date_strftime
+ (c-name "g_date_strftime")
+ (return-type "gsize")
+ (parameters
+ '("gchar*" "s")
+ '("gsize" "slen")
+ '("const-gchar*" "format")
+ '("const-GDate*" "date")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gdebug.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gdir.h
+
+(define-function g_dir_open
+ (c-name "g_dir_open")
+ (return-type "GDir*")
+ (parameters
+ '("const-gchar*" "path")
+ '("guint" "flags")
+ '("GError**" "error")
+ )
+)
+
+(define-method read_name
+ (of-object "GDir")
+ (c-name "g_dir_read_name")
+ (return-type "const-gchar*")
+)
+
+(define-method rewind
+ (of-object "GDir")
+ (c-name "g_dir_rewind")
+ (return-type "none")
+)
+
+(define-method close
+ (of-object "GDir")
+ (c-name "g_dir_close")
+ (return-type "none")
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gerror.h
+
+(define-function g_error_new
+ (c-name "g_error_new")
+ (is-constructor-of "GError")
+ (return-type "GError*")
+ (parameters
+ '("GQuark" "domain")
+ '("gint" "code")
+ '("const-gchar*" "format")
+ )
+ (varargs #t)
+)
+
+(define-function g_error_new_literal
+ (c-name "g_error_new_literal")
+ (return-type "GError*")
+ (parameters
+ '("GQuark" "domain")
+ '("gint" "code")
+ '("const-gchar*" "message")
+ )
+)
+
+(define-method free
+ (of-object "GError")
+ (c-name "g_error_free")
+ (return-type "none")
+)
+
+(define-method copy
+ (of-object "GError")
+ (c-name "g_error_copy")
+ (return-type "GError*")
+)
+
+(define-method matches
+ (of-object "GError")
+ (c-name "g_error_matches")
+ (return-type "gboolean")
+ (parameters
+ '("GQuark" "domain")
+ '("gint" "code")
+ )
+)
+
+(define-function g_set_error
+ (c-name "g_set_error")
+ (return-type "none")
+ (parameters
+ '("GError**" "err")
+ '("GQuark" "domain")
+ '("gint" "code")
+ '("const-gchar*" "format")
+ )
+ (varargs #t)
+)
+
+(define-function g_propagate_error
+ (c-name "g_propagate_error")
+ (return-type "none")
+ (parameters
+ '("GError**" "dest")
+ '("GError*" "src")
+ )
+)
+
+(define-function g_clear_error
+ (c-name "g_clear_error")
+ (return-type "none")
+ (parameters
+ '("GError**" "err")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gfileutils.h
+
+(define-function g_file_error_quark
+ (c-name "g_file_error_quark")
+ (return-type "GQuark")
+)
+
+(define-function g_file_error_from_errno
+ (c-name "g_file_error_from_errno")
+ (return-type "GFileError")
+ (parameters
+ '("gint" "err_no")
+ )
+)
+
+(define-function g_file_test
+ (c-name "g_file_test")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "filename")
+ '("GFileTest" "test")
+ )
+)
+
+(define-function g_file_get_contents
+ (c-name "g_file_get_contents")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "filename")
+ '("gchar**" "contents")
+ '("gsize*" "length")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_file_set_contents
+ (c-name "g_file_set_contents")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "filename")
+ '("const-gchar*" "contents")
+ '("gssize" "length")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_file_read_link
+ (c-name "g_file_read_link")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "filename")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_mkstemp
+ (c-name "g_mkstemp")
+ (return-type "gint")
+ (parameters
+ '("gchar*" "tmpl")
+ )
+)
+
+(define-function g_file_open_tmp
+ (c-name "g_file_open_tmp")
+ (return-type "gint")
+ (parameters
+ '("const-gchar*" "tmpl")
+ '("gchar**" "name_used")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_build_path
+ (c-name "g_build_path")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "separator")
+ '("const-gchar*" "first_element")
+ )
+ (varargs #t)
+)
+
+(define-function g_build_pathv
+ (c-name "g_build_pathv")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "separator")
+ '("gchar**" "args")
+ )
+)
+
+(define-function g_build_filename
+ (c-name "g_build_filename")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "first_element")
+ )
+ (varargs #t)
+)
+
+(define-function g_build_filenamev
+ (c-name "g_build_filenamev")
+ (return-type "gchar*")
+ (parameters
+ '("gchar**" "args")
+ )
+)
+
+(define-function g_mkdir_with_parents
+ (c-name "g_mkdir_with_parents")
+ (return-type "int")
+ (parameters
+ '("const-gchar*" "pathname")
+ '("int" "mode")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/ghash.h
+
+(define-function g_hash_table_new
+ (c-name "g_hash_table_new")
+ (is-constructor-of "GHashTable")
+ (return-type "GHashTable*")
+ (parameters
+ '("GHashFunc" "hash_func")
+ '("GEqualFunc" "key_equal_func")
+ )
+)
+
+(define-function g_hash_table_new_full
+ (c-name "g_hash_table_new_full")
+ (return-type "GHashTable*")
+ (parameters
+ '("GHashFunc" "hash_func")
+ '("GEqualFunc" "key_equal_func")
+ '("GDestroyNotify" "key_destroy_func")
+ '("GDestroyNotify" "value_destroy_func")
+ )
+)
+
+(define-method destroy
+ (of-object "GHashTable")
+ (c-name "g_hash_table_destroy")
+ (return-type "none")
+)
+
+(define-method insert
+ (of-object "GHashTable")
+ (c-name "g_hash_table_insert")
+ (return-type "none")
+ (parameters
+ '("gpointer" "key")
+ '("gpointer" "value")
+ )
+)
+
+(define-method replace
+ (of-object "GHashTable")
+ (c-name "g_hash_table_replace")
+ (return-type "none")
+ (parameters
+ '("gpointer" "key")
+ '("gpointer" "value")
+ )
+)
+
+(define-method remove
+ (of-object "GHashTable")
+ (c-name "g_hash_table_remove")
+ (return-type "gboolean")
+ (parameters
+ '("gconstpointer" "key")
+ )
+)
+
+(define-method steal
+ (of-object "GHashTable")
+ (c-name "g_hash_table_steal")
+ (return-type "gboolean")
+ (parameters
+ '("gconstpointer" "key")
+ )
+)
+
+(define-method lookup
+ (of-object "GHashTable")
+ (c-name "g_hash_table_lookup")
+ (return-type "gpointer")
+ (parameters
+ '("gconstpointer" "key")
+ )
+)
+
+(define-method lookup_extended
+ (of-object "GHashTable")
+ (c-name "g_hash_table_lookup_extended")
+ (return-type "gboolean")
+ (parameters
+ '("gconstpointer" "lookup_key")
+ '("gpointer*" "orig_key")
+ '("gpointer*" "value")
+ )
+)
+
+(define-method foreach
+ (of-object "GHashTable")
+ (c-name "g_hash_table_foreach")
+ (return-type "none")
+ (parameters
+ '("GHFunc" "func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method find
+ (of-object "GHashTable")
+ (c-name "g_hash_table_find")
+ (return-type "gpointer")
+ (parameters
+ '("GHRFunc" "predicate")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method foreach_remove
+ (of-object "GHashTable")
+ (c-name "g_hash_table_foreach_remove")
+ (return-type "guint")
+ (parameters
+ '("GHRFunc" "func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method foreach_steal
+ (of-object "GHashTable")
+ (c-name "g_hash_table_foreach_steal")
+ (return-type "guint")
+ (parameters
+ '("GHRFunc" "func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method size
+ (of-object "GHashTable")
+ (c-name "g_hash_table_size")
+ (return-type "guint")
+)
+
+(define-function g_str_equal
+ (c-name "g_str_equal")
+ (return-type "gboolean")
+ (parameters
+ '("gconstpointer" "v1")
+ '("gconstpointer" "v2")
+ )
+)
+
+(define-function g_str_hash
+ (c-name "g_str_hash")
+ (return-type "guint")
+ (parameters
+ '("gconstpointer" "v")
+ )
+)
+
+(define-function g_int_equal
+ (c-name "g_int_equal")
+ (return-type "gboolean")
+ (parameters
+ '("gconstpointer" "v1")
+ '("gconstpointer" "v2")
+ )
+)
+
+(define-function g_int_hash
+ (c-name "g_int_hash")
+ (return-type "guint")
+ (parameters
+ '("gconstpointer" "v")
+ )
+)
+
+(define-function g_direct_hash
+ (c-name "g_direct_hash")
+ (return-type "guint")
+ (parameters
+ '("gconstpointer" "v")
+ )
+)
+
+(define-function g_direct_equal
+ (c-name "g_direct_equal")
+ (return-type "gboolean")
+ (parameters
+ '("gconstpointer" "v1")
+ '("gconstpointer" "v2")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/ghook.h
+
+(define-method init
+ (of-object "GHookList")
+ (c-name "g_hook_list_init")
+ (return-type "none")
+ (parameters
+ '("guint" "hook_size")
+ )
+)
+
+(define-method clear
+ (of-object "GHookList")
+ (c-name "g_hook_list_clear")
+ (return-type "none")
+)
+
+(define-function g_hook_alloc
+ (c-name "g_hook_alloc")
+ (return-type "GHook*")
+ (parameters
+ '("GHookList*" "hook_list")
+ )
+)
+
+(define-function g_hook_free
+ (c-name "g_hook_free")
+ (return-type "none")
+ (parameters
+ '("GHookList*" "hook_list")
+ '("GHook*" "hook")
+ )
+)
+
+(define-function g_hook_ref
+ (c-name "g_hook_ref")
+ (return-type "GHook*")
+ (parameters
+ '("GHookList*" "hook_list")
+ '("GHook*" "hook")
+ )
+)
+
+(define-function g_hook_unref
+ (c-name "g_hook_unref")
+ (return-type "none")
+ (parameters
+ '("GHookList*" "hook_list")
+ '("GHook*" "hook")
+ )
+)
+
+(define-function g_hook_destroy
+ (c-name "g_hook_destroy")
+ (return-type "gboolean")
+ (parameters
+ '("GHookList*" "hook_list")
+ '("gulong" "hook_id")
+ )
+)
+
+(define-function g_hook_destroy_link
+ (c-name "g_hook_destroy_link")
+ (return-type "none")
+ (parameters
+ '("GHookList*" "hook_list")
+ '("GHook*" "hook")
+ )
+)
+
+(define-function g_hook_prepend
+ (c-name "g_hook_prepend")
+ (return-type "none")
+ (parameters
+ '("GHookList*" "hook_list")
+ '("GHook*" "hook")
+ )
+)
+
+(define-function g_hook_insert_before
+ (c-name "g_hook_insert_before")
+ (return-type "none")
+ (parameters
+ '("GHookList*" "hook_list")
+ '("GHook*" "sibling")
+ '("GHook*" "hook")
+ )
+)
+
+(define-function g_hook_insert_sorted
+ (c-name "g_hook_insert_sorted")
+ (return-type "none")
+ (parameters
+ '("GHookList*" "hook_list")
+ '("GHook*" "hook")
+ '("GHookCompareFunc" "func")
+ )
+)
+
+(define-function g_hook_get
+ (c-name "g_hook_get")
+ (return-type "GHook*")
+ (parameters
+ '("GHookList*" "hook_list")
+ '("gulong" "hook_id")
+ )
+)
+
+(define-function g_hook_find
+ (c-name "g_hook_find")
+ (return-type "GHook*")
+ (parameters
+ '("GHookList*" "hook_list")
+ '("gboolean" "need_valids")
+ '("GHookFindFunc" "func")
+ '("gpointer" "data")
+ )
+)
+
+(define-function g_hook_find_data
+ (c-name "g_hook_find_data")
+ (return-type "GHook*")
+ (parameters
+ '("GHookList*" "hook_list")
+ '("gboolean" "need_valids")
+ '("gpointer" "data")
+ )
+)
+
+(define-function g_hook_find_func
+ (c-name "g_hook_find_func")
+ (return-type "GHook*")
+ (parameters
+ '("GHookList*" "hook_list")
+ '("gboolean" "need_valids")
+ '("gpointer" "func")
+ )
+)
+
+(define-function g_hook_find_func_data
+ (c-name "g_hook_find_func_data")
+ (return-type "GHook*")
+ (parameters
+ '("GHookList*" "hook_list")
+ '("gboolean" "need_valids")
+ '("gpointer" "func")
+ '("gpointer" "data")
+ )
+)
+
+(define-function g_hook_first_valid
+ (c-name "g_hook_first_valid")
+ (return-type "GHook*")
+ (parameters
+ '("GHookList*" "hook_list")
+ '("gboolean" "may_be_in_call")
+ )
+)
+
+(define-function g_hook_next_valid
+ (c-name "g_hook_next_valid")
+ (return-type "GHook*")
+ (parameters
+ '("GHookList*" "hook_list")
+ '("GHook*" "hook")
+ '("gboolean" "may_be_in_call")
+ )
+)
+
+(define-method compare_ids
+ (of-object "GHook")
+ (c-name "g_hook_compare_ids")
+ (return-type "gint")
+ (parameters
+ '("GHook*" "sibling")
+ )
+)
+
+(define-method invoke
+ (of-object "GHookList")
+ (c-name "g_hook_list_invoke")
+ (return-type "none")
+ (parameters
+ '("gboolean" "may_recurse")
+ )
+)
+
+(define-method invoke_check
+ (of-object "GHookList")
+ (c-name "g_hook_list_invoke_check")
+ (return-type "none")
+ (parameters
+ '("gboolean" "may_recurse")
+ )
+)
+
+(define-method marshal
+ (of-object "GHookList")
+ (c-name "g_hook_list_marshal")
+ (return-type "none")
+ (parameters
+ '("gboolean" "may_recurse")
+ '("GHookMarshaller" "marshaller")
+ '("gpointer" "marshal_data")
+ )
+)
+
+(define-method marshal_check
+ (of-object "GHookList")
+ (c-name "g_hook_list_marshal_check")
+ (return-type "none")
+ (parameters
+ '("gboolean" "may_recurse")
+ '("GHookCheckMarshaller" "marshaller")
+ '("gpointer" "marshal_data")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gi18n.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gi18n-lib.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/giochannel.h
+
+(define-method init
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_init")
+ (return-type "none")
+)
+
+(define-method ref
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_ref")
+ (return-type "GIOChannel*")
+)
+
+(define-method unref
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_unref")
+ (return-type "none")
+)
+
+(define-method read
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_read")
+ (return-type "GIOError")
+ (parameters
+ '("gchar*" "buf")
+ '("gsize" "count")
+ '("gsize*" "bytes_read")
+ )
+)
+
+(define-method write
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_write")
+ (return-type "GIOError")
+ (parameters
+ '("const-gchar*" "buf")
+ '("gsize" "count")
+ '("gsize*" "bytes_written")
+ )
+)
+
+(define-method seek
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_seek")
+ (return-type "GIOError")
+ (parameters
+ '("gint64" "offset")
+ '("GSeekType" "type")
+ )
+)
+
+(define-method close
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_close")
+ (return-type "none")
+)
+
+(define-method shutdown
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_shutdown")
+ (return-type "GIOStatus")
+ (parameters
+ '("gboolean" "flush")
+ '("GError**" "err")
+ )
+)
+
+(define-function g_io_add_watch_full
+ (c-name "g_io_add_watch_full")
+ (return-type "guint")
+ (parameters
+ '("GIOChannel*" "channel")
+ '("gint" "priority")
+ '("GIOCondition" "condition")
+ '("GIOFunc" "func")
+ '("gpointer" "user_data")
+ '("GDestroyNotify" "notify")
+ )
+)
+
+(define-function g_io_create_watch
+ (c-name "g_io_create_watch")
+ (return-type "GSource*")
+ (parameters
+ '("GIOChannel*" "channel")
+ '("GIOCondition" "condition")
+ )
+)
+
+(define-function g_io_add_watch
+ (c-name "g_io_add_watch")
+ (return-type "guint")
+ (parameters
+ '("GIOChannel*" "channel")
+ '("GIOCondition" "condition")
+ '("GIOFunc" "func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method set_buffer_size
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_set_buffer_size")
+ (return-type "none")
+ (parameters
+ '("gsize" "size")
+ )
+)
+
+(define-method get_buffer_size
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_get_buffer_size")
+ (return-type "gsize")
+)
+
+(define-method get_buffer_condition
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_get_buffer_condition")
+ (return-type "GIOCondition")
+)
+
+(define-method set_flags
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_set_flags")
+ (return-type "GIOStatus")
+ (parameters
+ '("GIOFlags" "flags")
+ '("GError**" "error")
+ )
+)
+
+(define-method get_flags
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_get_flags")
+ (return-type "GIOFlags")
+)
+
+(define-method set_line_term
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_set_line_term")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "line_term")
+ '("gint" "length")
+ )
+)
+
+(define-method get_line_term
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_get_line_term")
+ (return-type "const-gchar*")
+ (parameters
+ '("gint*" "length")
+ )
+)
+
+(define-method set_buffered
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_set_buffered")
+ (return-type "none")
+ (parameters
+ '("gboolean" "buffered")
+ )
+)
+
+(define-method get_buffered
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_get_buffered")
+ (return-type "gboolean")
+)
+
+(define-method set_encoding
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_set_encoding")
+ (return-type "GIOStatus")
+ (parameters
+ '("const-gchar*" "encoding")
+ '("GError**" "error")
+ )
+)
+
+(define-method get_encoding
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_get_encoding")
+ (return-type "const-gchar*")
+)
+
+(define-method set_close_on_unref
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_set_close_on_unref")
+ (return-type "none")
+ (parameters
+ '("gboolean" "do_close")
+ )
+)
+
+(define-method get_close_on_unref
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_get_close_on_unref")
+ (return-type "gboolean")
+)
+
+(define-method flush
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_flush")
+ (return-type "GIOStatus")
+ (parameters
+ '("GError**" "error")
+ )
+)
+
+(define-method read_line
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_read_line")
+ (return-type "GIOStatus")
+ (parameters
+ '("gchar**" "str_return")
+ '("gsize*" "length")
+ '("gsize*" "terminator_pos")
+ '("GError**" "error")
+ )
+)
+
+(define-method read_line_string
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_read_line_string")
+ (return-type "GIOStatus")
+ (parameters
+ '("GString*" "buffer")
+ '("gsize*" "terminator_pos")
+ '("GError**" "error")
+ )
+)
+
+(define-method read_to_end
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_read_to_end")
+ (return-type "GIOStatus")
+ (parameters
+ '("gchar**" "str_return")
+ '("gsize*" "length")
+ '("GError**" "error")
+ )
+)
+
+(define-method read_chars
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_read_chars")
+ (return-type "GIOStatus")
+ (parameters
+ '("gchar*" "buf")
+ '("gsize" "count")
+ '("gsize*" "bytes_read")
+ '("GError**" "error")
+ )
+)
+
+(define-method read_unichar
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_read_unichar")
+ (return-type "GIOStatus")
+ (parameters
+ '("gunichar*" "thechar")
+ '("GError**" "error")
+ )
+)
+
+(define-method write_chars
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_write_chars")
+ (return-type "GIOStatus")
+ (parameters
+ '("const-gchar*" "buf")
+ '("gssize" "count")
+ '("gsize*" "bytes_written")
+ '("GError**" "error")
+ )
+)
+
+(define-method write_unichar
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_write_unichar")
+ (return-type "GIOStatus")
+ (parameters
+ '("gunichar" "thechar")
+ '("GError**" "error")
+ )
+)
+
+(define-method seek_position
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_seek_position")
+ (return-type "GIOStatus")
+ (parameters
+ '("gint64" "offset")
+ '("GSeekType" "type")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_io_channel_new_file
+ (c-name "g_io_channel_new_file")
+ (return-type "GIOChannel*")
+ (parameters
+ '("const-gchar*" "filename")
+ '("const-gchar*" "mode")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_io_channel_error_quark
+ (c-name "g_io_channel_error_quark")
+ (return-type "GQuark")
+)
+
+(define-function g_io_channel_error_from_errno
+ (c-name "g_io_channel_error_from_errno")
+ (return-type "GIOChannelError")
+ (parameters
+ '("gint" "en")
+ )
+)
+
+(define-function g_io_channel_unix_new
+ (c-name "g_io_channel_unix_new")
+ (is-constructor-of "GIoChannelUnix")
+ (return-type "GIOChannel*")
+ (parameters
+ '("int" "fd")
+ )
+)
+
+(define-method unix_get_fd
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_unix_get_fd")
+ (return-type "gint")
+)
+
+(define-method win32_make_pollfd
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_win32_make_pollfd")
+ (return-type "none")
+ (parameters
+ '("GIOCondition" "condition")
+ '("GPollFD*" "fd")
+ )
+)
+
+(define-function g_io_channel_win32_poll
+ (c-name "g_io_channel_win32_poll")
+ (return-type "gint")
+ (parameters
+ '("GPollFD*" "fds")
+ '("gint" "n_fds")
+ '("gint" "timeout_")
+ )
+)
+
+(define-function g_io_channel_win32_new_messages
+ (c-name "g_io_channel_win32_new_messages")
+ (return-type "GIOChannel*")
+ (parameters
+ '("guint" "hwnd")
+ )
+)
+
+(define-function g_io_channel_win32_new_fd
+ (c-name "g_io_channel_win32_new_fd")
+ (return-type "GIOChannel*")
+ (parameters
+ '("gint" "fd")
+ )
+)
+
+(define-method win32_get_fd
+ (of-object "GIOChannel")
+ (c-name "g_io_channel_win32_get_fd")
+ (return-type "gint")
+)
+
+(define-function g_io_channel_win32_new_socket
+ (c-name "g_io_channel_win32_new_socket")
+ (return-type "GIOChannel*")
+ (parameters
+ '("gint" "socket")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gkeyfile.h
+
+(define-function g_key_file_error_quark
+ (c-name "g_key_file_error_quark")
+ (return-type "GQuark")
+)
+
+(define-function g_key_file_new
+ (c-name "g_key_file_new")
+ (is-constructor-of "GKeyFile")
+ (return-type "GKeyFile*")
+)
+
+(define-method free
+ (of-object "GKeyFile")
+ (c-name "g_key_file_free")
+ (return-type "none")
+)
+
+(define-method set_list_separator
+ (of-object "GKeyFile")
+ (c-name "g_key_file_set_list_separator")
+ (return-type "none")
+ (parameters
+ '("gchar" "separator")
+ )
+)
+
+(define-method load_from_file
+ (of-object "GKeyFile")
+ (c-name "g_key_file_load_from_file")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "file")
+ '("GKeyFileFlags" "flags")
+ '("GError**" "error")
+ )
+)
+
+(define-method load_from_data
+ (of-object "GKeyFile")
+ (c-name "g_key_file_load_from_data")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "data")
+ '("gsize" "length")
+ '("GKeyFileFlags" "flags")
+ '("GError**" "error")
+ )
+)
+
+(define-method load_from_data_dirs
+ (of-object "GKeyFile")
+ (c-name "g_key_file_load_from_data_dirs")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "file")
+ '("gchar**" "full_path")
+ '("GKeyFileFlags" "flags")
+ '("GError**" "error")
+ )
+)
+
+(define-method to_data
+ (of-object "GKeyFile")
+ (c-name "g_key_file_to_data")
+ (return-type "gchar*")
+ (parameters
+ '("gsize*" "length")
+ '("GError**" "error")
+ )
+)
+
+(define-method get_start_group
+ (of-object "GKeyFile")
+ (c-name "g_key_file_get_start_group")
+ (return-type "gchar*")
+)
+
+(define-method get_groups
+ (of-object "GKeyFile")
+ (c-name "g_key_file_get_groups")
+ (return-type "gchar**")
+ (parameters
+ '("gsize*" "length")
+ )
+)
+
+(define-method get_keys
+ (of-object "GKeyFile")
+ (c-name "g_key_file_get_keys")
+ (return-type "gchar**")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("gsize*" "length")
+ '("GError**" "error")
+ )
+)
+
+(define-method has_group
+ (of-object "GKeyFile")
+ (c-name "g_key_file_has_group")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "group_name")
+ )
+)
+
+(define-method has_key
+ (of-object "GKeyFile")
+ (c-name "g_key_file_has_key")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("GError**" "error")
+ )
+)
+
+(define-method get_value
+ (of-object "GKeyFile")
+ (c-name "g_key_file_get_value")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("GError**" "error")
+ )
+)
+
+(define-method set_value
+ (of-object "GKeyFile")
+ (c-name "g_key_file_set_value")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("const-gchar*" "value")
+ )
+)
+
+(define-method get_string
+ (of-object "GKeyFile")
+ (c-name "g_key_file_get_string")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("GError**" "error")
+ )
+)
+
+(define-method set_string
+ (of-object "GKeyFile")
+ (c-name "g_key_file_set_string")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("const-gchar*" "string")
+ )
+)
+
+(define-method get_locale_string
+ (of-object "GKeyFile")
+ (c-name "g_key_file_get_locale_string")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("const-gchar*" "locale")
+ '("GError**" "error")
+ )
+)
+
+(define-method set_locale_string
+ (of-object "GKeyFile")
+ (c-name "g_key_file_set_locale_string")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("const-gchar*" "locale")
+ '("const-gchar*" "string")
+ )
+)
+
+(define-method get_boolean
+ (of-object "GKeyFile")
+ (c-name "g_key_file_get_boolean")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("GError**" "error")
+ )
+)
+
+(define-method set_boolean
+ (of-object "GKeyFile")
+ (c-name "g_key_file_set_boolean")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("gboolean" "value")
+ )
+)
+
+(define-method get_integer
+ (of-object "GKeyFile")
+ (c-name "g_key_file_get_integer")
+ (return-type "gint")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("GError**" "error")
+ )
+)
+
+(define-method set_integer
+ (of-object "GKeyFile")
+ (c-name "g_key_file_set_integer")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("gint" "value")
+ )
+)
+
+(define-method get_string_list
+ (of-object "GKeyFile")
+ (c-name "g_key_file_get_string_list")
+ (return-type "gchar**")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("gsize*" "length")
+ '("GError**" "error")
+ )
+)
+
+(define-method set_string_list
+ (of-object "GKeyFile")
+ (c-name "g_key_file_set_string_list")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("const-gchar*-const[]" "list")
+ '("gsize" "length")
+ )
+)
+
+(define-method get_locale_string_list
+ (of-object "GKeyFile")
+ (c-name "g_key_file_get_locale_string_list")
+ (return-type "gchar**")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("const-gchar*" "locale")
+ '("gsize*" "length")
+ '("GError**" "error")
+ )
+)
+
+(define-method set_locale_string_list
+ (of-object "GKeyFile")
+ (c-name "g_key_file_set_locale_string_list")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("const-gchar*" "locale")
+ '("const-gchar*-const[]" "list")
+ '("gsize" "length")
+ )
+)
+
+(define-method get_boolean_list
+ (of-object "GKeyFile")
+ (c-name "g_key_file_get_boolean_list")
+ (return-type "gboolean*")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("gsize*" "length")
+ '("GError**" "error")
+ )
+)
+
+(define-method set_boolean_list
+ (of-object "GKeyFile")
+ (c-name "g_key_file_set_boolean_list")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("gboolean[]" "list")
+ '("gsize" "length")
+ )
+)
+
+(define-method get_integer_list
+ (of-object "GKeyFile")
+ (c-name "g_key_file_get_integer_list")
+ (return-type "gint*")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("gsize*" "length")
+ '("GError**" "error")
+ )
+)
+
+(define-method set_integer_list
+ (of-object "GKeyFile")
+ (c-name "g_key_file_set_integer_list")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("gint[]" "list")
+ '("gsize" "length")
+ )
+)
+
+(define-method set_comment
+ (of-object "GKeyFile")
+ (c-name "g_key_file_set_comment")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("const-gchar*" "comment")
+ '("GError**" "error")
+ )
+)
+
+(define-method get_comment
+ (of-object "GKeyFile")
+ (c-name "g_key_file_get_comment")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("GError**" "error")
+ )
+)
+
+(define-method remove_comment
+ (of-object "GKeyFile")
+ (c-name "g_key_file_remove_comment")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("GError**" "error")
+ )
+)
+
+(define-method remove_key
+ (of-object "GKeyFile")
+ (c-name "g_key_file_remove_key")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("const-gchar*" "key")
+ '("GError**" "error")
+ )
+)
+
+(define-method remove_group
+ (of-object "GKeyFile")
+ (c-name "g_key_file_remove_group")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "group_name")
+ '("GError**" "error")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/glib.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/glibintl.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/glib-object.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/glist.h
+
+(define-function g_list_push_allocator
+ (c-name "g_list_push_allocator")
+ (return-type "none")
+ (parameters
+ '("GAllocator*" "allocator")
+ )
+)
+
+(define-function g_list_pop_allocator
+ (c-name "g_list_pop_allocator")
+ (return-type "none")
+)
+
+(define-function g_list_alloc
+ (c-name "g_list_alloc")
+ (return-type "GList*")
+)
+
+(define-method free
+ (of-object "GList")
+ (c-name "g_list_free")
+ (return-type "none")
+)
+
+(define-method free_1
+ (of-object "GList")
+ (c-name "g_list_free_1")
+ (return-type "none")
+)
+
+(define-method append
+ (of-object "GList")
+ (c-name "g_list_append")
+ (return-type "GList*")
+ (parameters
+ '("gpointer" "data")
+ )
+)
+
+(define-method prepend
+ (of-object "GList")
+ (c-name "g_list_prepend")
+ (return-type "GList*")
+ (parameters
+ '("gpointer" "data")
+ )
+)
+
+(define-method insert
+ (of-object "GList")
+ (c-name "g_list_insert")
+ (return-type "GList*")
+ (parameters
+ '("gpointer" "data")
+ '("gint" "position")
+ )
+)
+
+(define-method insert_sorted
+ (of-object "GList")
+ (c-name "g_list_insert_sorted")
+ (return-type "GList*")
+ (parameters
+ '("gpointer" "data")
+ '("GCompareFunc" "func")
+ )
+)
+
+(define-method insert_before
+ (of-object "GList")
+ (c-name "g_list_insert_before")
+ (return-type "GList*")
+ (parameters
+ '("GList*" "sibling")
+ '("gpointer" "data")
+ )
+)
+
+(define-method concat
+ (of-object "GList")
+ (c-name "g_list_concat")
+ (return-type "GList*")
+ (parameters
+ '("GList*" "list2")
+ )
+)
+
+(define-method remove
+ (of-object "GList")
+ (c-name "g_list_remove")
+ (return-type "GList*")
+ (parameters
+ '("gconstpointer" "data")
+ )
+)
+
+(define-method remove_all
+ (of-object "GList")
+ (c-name "g_list_remove_all")
+ (return-type "GList*")
+ (parameters
+ '("gconstpointer" "data")
+ )
+)
+
+(define-method remove_link
+ (of-object "GList")
+ (c-name "g_list_remove_link")
+ (return-type "GList*")
+ (parameters
+ '("GList*" "llink")
+ )
+)
+
+(define-method delete_link
+ (of-object "GList")
+ (c-name "g_list_delete_link")
+ (return-type "GList*")
+ (parameters
+ '("GList*" "link_")
+ )
+)
+
+(define-method reverse
+ (of-object "GList")
+ (c-name "g_list_reverse")
+ (return-type "GList*")
+)
+
+(define-method copy
+ (of-object "GList")
+ (c-name "g_list_copy")
+ (return-type "GList*")
+)
+
+(define-method nth
+ (of-object "GList")
+ (c-name "g_list_nth")
+ (return-type "GList*")
+ (parameters
+ '("guint" "n")
+ )
+)
+
+(define-method nth_prev
+ (of-object "GList")
+ (c-name "g_list_nth_prev")
+ (return-type "GList*")
+ (parameters
+ '("guint" "n")
+ )
+)
+
+(define-method find
+ (of-object "GList")
+ (c-name "g_list_find")
+ (return-type "GList*")
+ (parameters
+ '("gconstpointer" "data")
+ )
+)
+
+(define-method find_custom
+ (of-object "GList")
+ (c-name "g_list_find_custom")
+ (return-type "GList*")
+ (parameters
+ '("gconstpointer" "data")
+ '("GCompareFunc" "func")
+ )
+)
+
+(define-method position
+ (of-object "GList")
+ (c-name "g_list_position")
+ (return-type "gint")
+ (parameters
+ '("GList*" "llink")
+ )
+)
+
+(define-method index
+ (of-object "GList")
+ (c-name "g_list_index")
+ (return-type "gint")
+ (parameters
+ '("gconstpointer" "data")
+ )
+)
+
+(define-method last
+ (of-object "GList")
+ (c-name "g_list_last")
+ (return-type "GList*")
+)
+
+(define-method first
+ (of-object "GList")
+ (c-name "g_list_first")
+ (return-type "GList*")
+)
+
+(define-method length
+ (of-object "GList")
+ (c-name "g_list_length")
+ (return-type "guint")
+)
+
+(define-method foreach
+ (of-object "GList")
+ (c-name "g_list_foreach")
+ (return-type "none")
+ (parameters
+ '("GFunc" "func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method sort
+ (of-object "GList")
+ (c-name "g_list_sort")
+ (return-type "GList*")
+ (parameters
+ '("GCompareFunc" "compare_func")
+ )
+)
+
+(define-method sort_with_data
+ (of-object "GList")
+ (c-name "g_list_sort_with_data")
+ (return-type "GList*")
+ (parameters
+ '("GCompareDataFunc" "compare_func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method nth_data
+ (of-object "GList")
+ (c-name "g_list_nth_data")
+ (return-type "gpointer")
+ (parameters
+ '("guint" "n")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gmacros.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gmain.h
+
+(define-function g_main_context_new
+ (c-name "g_main_context_new")
+ (is-constructor-of "GMainContext")
+ (return-type "GMainContext*")
+)
+
+(define-method ref
+ (of-object "GMainContext")
+ (c-name "g_main_context_ref")
+ (return-type "GMainContext*")
+)
+
+(define-method unref
+ (of-object "GMainContext")
+ (c-name "g_main_context_unref")
+ (return-type "none")
+)
+
+(define-function g_main_context_default
+ (c-name "g_main_context_default")
+ (return-type "GMainContext*")
+)
+
+(define-method iteration
+ (of-object "GMainContext")
+ (c-name "g_main_context_iteration")
+ (return-type "gboolean")
+ (parameters
+ '("gboolean" "may_block")
+ )
+)
+
+(define-method pending
+ (of-object "GMainContext")
+ (c-name "g_main_context_pending")
+ (return-type "gboolean")
+)
+
+(define-method find_source_by_id
+ (of-object "GMainContext")
+ (c-name "g_main_context_find_source_by_id")
+ (return-type "GSource*")
+ (parameters
+ '("guint" "source_id")
+ )
+)
+
+(define-method find_source_by_user_data
+ (of-object "GMainContext")
+ (c-name "g_main_context_find_source_by_user_data")
+ (return-type "GSource*")
+ (parameters
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method find_source_by_funcs_user_data
+ (of-object "GMainContext")
+ (c-name "g_main_context_find_source_by_funcs_user_data")
+ (return-type "GSource*")
+ (parameters
+ '("GSourceFuncs*" "funcs")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method wakeup
+ (of-object "GMainContext")
+ (c-name "g_main_context_wakeup")
+ (return-type "none")
+)
+
+(define-method acquire
+ (of-object "GMainContext")
+ (c-name "g_main_context_acquire")
+ (return-type "gboolean")
+)
+
+(define-method release
+ (of-object "GMainContext")
+ (c-name "g_main_context_release")
+ (return-type "none")
+)
+
+(define-method wait
+ (of-object "GMainContext")
+ (c-name "g_main_context_wait")
+ (return-type "gboolean")
+ (parameters
+ '("GCond*" "cond")
+ '("GMutex*" "mutex")
+ )
+)
+
+(define-method prepare
+ (of-object "GMainContext")
+ (c-name "g_main_context_prepare")
+ (return-type "gboolean")
+ (parameters
+ '("gint*" "priority")
+ )
+)
+
+(define-method query
+ (of-object "GMainContext")
+ (c-name "g_main_context_query")
+ (return-type "gint")
+ (parameters
+ '("gint" "max_priority")
+ '("gint*" "timeout_")
+ '("GPollFD*" "fds")
+ '("gint" "n_fds")
+ )
+)
+
+(define-method check
+ (of-object "GMainContext")
+ (c-name "g_main_context_check")
+ (return-type "gint")
+ (parameters
+ '("gint" "max_priority")
+ '("GPollFD*" "fds")
+ '("gint" "n_fds")
+ )
+)
+
+(define-method dispatch
+ (of-object "GMainContext")
+ (c-name "g_main_context_dispatch")
+ (return-type "none")
+)
+
+(define-method set_poll_func
+ (of-object "GMainContext")
+ (c-name "g_main_context_set_poll_func")
+ (return-type "none")
+ (parameters
+ '("GPollFunc" "func")
+ )
+)
+
+(define-method get_poll_func
+ (of-object "GMainContext")
+ (c-name "g_main_context_get_poll_func")
+ (return-type "GPollFunc")
+)
+
+(define-method add_poll
+ (of-object "GMainContext")
+ (c-name "g_main_context_add_poll")
+ (return-type "none")
+ (parameters
+ '("GPollFD*" "fd")
+ '("gint" "priority")
+ )
+)
+
+(define-method remove_poll
+ (of-object "GMainContext")
+ (c-name "g_main_context_remove_poll")
+ (return-type "none")
+ (parameters
+ '("GPollFD*" "fd")
+ )
+)
+
+(define-function g_main_depth
+ (c-name "g_main_depth")
+ (return-type "int")
+)
+
+(define-function g_main_loop_new
+ (c-name "g_main_loop_new")
+ (is-constructor-of "GMainLoop")
+ (return-type "GMainLoop*")
+ (parameters
+ '("GMainContext*" "context")
+ '("gboolean" "is_running")
+ )
+)
+
+(define-method run
+ (of-object "GMainLoop")
+ (c-name "g_main_loop_run")
+ (return-type "none")
+)
+
+(define-method quit
+ (of-object "GMainLoop")
+ (c-name "g_main_loop_quit")
+ (return-type "none")
+)
+
+(define-method ref
+ (of-object "GMainLoop")
+ (c-name "g_main_loop_ref")
+ (return-type "GMainLoop*")
+)
+
+(define-method unref
+ (of-object "GMainLoop")
+ (c-name "g_main_loop_unref")
+ (return-type "none")
+)
+
+(define-method is_running
+ (of-object "GMainLoop")
+ (c-name "g_main_loop_is_running")
+ (return-type "gboolean")
+)
+
+(define-method get_context
+ (of-object "GMainLoop")
+ (c-name "g_main_loop_get_context")
+ (return-type "GMainContext*")
+)
+
+(define-function g_source_new
+ (c-name "g_source_new")
+ (is-constructor-of "GSource")
+ (return-type "GSource*")
+ (parameters
+ '("GSourceFuncs*" "source_funcs")
+ '("guint" "struct_size")
+ )
+)
+
+(define-method ref
+ (of-object "GSource")
+ (c-name "g_source_ref")
+ (return-type "GSource*")
+)
+
+(define-method unref
+ (of-object "GSource")
+ (c-name "g_source_unref")
+ (return-type "none")
+)
+
+(define-method attach
+ (of-object "GSource")
+ (c-name "g_source_attach")
+ (return-type "guint")
+ (parameters
+ '("GMainContext*" "context")
+ )
+)
+
+(define-method destroy
+ (of-object "GSource")
+ (c-name "g_source_destroy")
+ (return-type "none")
+)
+
+(define-method set_priority
+ (of-object "GSource")
+ (c-name "g_source_set_priority")
+ (return-type "none")
+ (parameters
+ '("gint" "priority")
+ )
+)
+
+(define-method get_priority
+ (of-object "GSource")
+ (c-name "g_source_get_priority")
+ (return-type "gint")
+)
+
+(define-method set_can_recurse
+ (of-object "GSource")
+ (c-name "g_source_set_can_recurse")
+ (return-type "none")
+ (parameters
+ '("gboolean" "can_recurse")
+ )
+)
+
+(define-method get_can_recurse
+ (of-object "GSource")
+ (c-name "g_source_get_can_recurse")
+ (return-type "gboolean")
+)
+
+(define-method get_id
+ (of-object "GSource")
+ (c-name "g_source_get_id")
+ (return-type "guint")
+)
+
+(define-method get_context
+ (of-object "GSource")
+ (c-name "g_source_get_context")
+ (return-type "GMainContext*")
+)
+
+(define-method set_callback
+ (of-object "GSource")
+ (c-name "g_source_set_callback")
+ (return-type "none")
+ (parameters
+ '("GSourceFunc" "func")
+ '("gpointer" "data")
+ '("GDestroyNotify" "notify")
+ )
+)
+
+(define-method set_callback_indirect
+ (of-object "GSource")
+ (c-name "g_source_set_callback_indirect")
+ (return-type "none")
+ (parameters
+ '("gpointer" "callback_data")
+ '("GSourceCallbackFuncs*" "callback_funcs")
+ )
+)
+
+(define-method add_poll
+ (of-object "GSource")
+ (c-name "g_source_add_poll")
+ (return-type "none")
+ (parameters
+ '("GPollFD*" "fd")
+ )
+)
+
+(define-method remove_poll
+ (of-object "GSource")
+ (c-name "g_source_remove_poll")
+ (return-type "none")
+ (parameters
+ '("GPollFD*" "fd")
+ )
+)
+
+(define-method get_current_time
+ (of-object "GSource")
+ (c-name "g_source_get_current_time")
+ (return-type "none")
+ (parameters
+ '("GTimeVal*" "timeval")
+ )
+)
+
+(define-function g_idle_source_new
+ (c-name "g_idle_source_new")
+ (is-constructor-of "GIdleSource")
+ (return-type "GSource*")
+)
+
+(define-function g_child_watch_source_new
+ (c-name "g_child_watch_source_new")
+ (is-constructor-of "GChildWatchSource")
+ (return-type "GSource*")
+ (parameters
+ '("GPid" "pid")
+ )
+)
+
+(define-function g_timeout_source_new
+ (c-name "g_timeout_source_new")
+ (is-constructor-of "GTimeoutSource")
+ (return-type "GSource*")
+ (parameters
+ '("guint" "interval")
+ )
+)
+
+(define-function g_get_current_time
+ (c-name "g_get_current_time")
+ (return-type "none")
+ (parameters
+ '("GTimeVal*" "result")
+ )
+)
+
+(define-function g_source_remove
+ (c-name "g_source_remove")
+ (return-type "gboolean")
+ (parameters
+ '("guint" "tag")
+ )
+)
+
+(define-function g_source_remove_by_user_data
+ (c-name "g_source_remove_by_user_data")
+ (return-type "gboolean")
+ (parameters
+ '("gpointer" "user_data")
+ )
+)
+
+(define-function g_source_remove_by_funcs_user_data
+ (c-name "g_source_remove_by_funcs_user_data")
+ (return-type "gboolean")
+ (parameters
+ '("GSourceFuncs*" "funcs")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-function g_timeout_add_full
+ (c-name "g_timeout_add_full")
+ (return-type "guint")
+ (parameters
+ '("gint" "priority")
+ '("guint" "interval")
+ '("GSourceFunc" "function")
+ '("gpointer" "data")
+ '("GDestroyNotify" "notify")
+ )
+)
+
+(define-function g_timeout_add
+ (c-name "g_timeout_add")
+ (return-type "guint")
+ (parameters
+ '("guint" "interval")
+ '("GSourceFunc" "function")
+ '("gpointer" "data")
+ )
+)
+
+(define-function g_child_watch_add_full
+ (c-name "g_child_watch_add_full")
+ (return-type "guint")
+ (parameters
+ '("gint" "priority")
+ '("GPid" "pid")
+ '("GChildWatchFunc" "function")
+ '("gpointer" "data")
+ '("GDestroyNotify" "notify")
+ )
+)
+
+(define-function g_child_watch_add
+ (c-name "g_child_watch_add")
+ (return-type "guint")
+ (parameters
+ '("GPid" "pid")
+ '("GChildWatchFunc" "function")
+ '("gpointer" "data")
+ )
+)
+
+(define-function g_idle_add
+ (c-name "g_idle_add")
+ (return-type "guint")
+ (parameters
+ '("GSourceFunc" "function")
+ '("gpointer" "data")
+ )
+)
+
+(define-function g_idle_add_full
+ (c-name "g_idle_add_full")
+ (return-type "guint")
+ (parameters
+ '("gint" "priority")
+ '("GSourceFunc" "function")
+ '("gpointer" "data")
+ '("GDestroyNotify" "notify")
+ )
+)
+
+(define-function g_idle_remove_by_data
+ (c-name "g_idle_remove_by_data")
+ (return-type "gboolean")
+ (parameters
+ '("gpointer" "data")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gmappedfile.h
+
+(define-function g_mapped_file_new
+ (c-name "g_mapped_file_new")
+ (is-constructor-of "GMappedFile")
+ (return-type "GMappedFile*")
+ (parameters
+ '("const-gchar*" "filename")
+ '("gboolean" "writable")
+ '("GError**" "error")
+ )
+)
+
+(define-method get_length
+ (of-object "GMappedFile")
+ (c-name "g_mapped_file_get_length")
+ (return-type "gsize")
+)
+
+(define-method get_contents
+ (of-object "GMappedFile")
+ (c-name "g_mapped_file_get_contents")
+ (return-type "gchar*")
+)
+
+(define-method free
+ (of-object "GMappedFile")
+ (c-name "g_mapped_file_free")
+ (return-type "none")
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gmarkup.h
+
+(define-function g_markup_error_quark
+ (c-name "g_markup_error_quark")
+ (return-type "GQuark")
+)
+
+(define-function g_markup_parse_context_new
+ (c-name "g_markup_parse_context_new")
+ (is-constructor-of "GMarkupParseContext")
+ (return-type "GMarkupParseContext*")
+ (parameters
+ '("const-GMarkupParser*" "parser")
+ '("GMarkupParseFlags" "flags")
+ '("gpointer" "user_data")
+ '("GDestroyNotify" "user_data_dnotify")
+ )
+)
+
+(define-method free
+ (of-object "GMarkupParseContext")
+ (c-name "g_markup_parse_context_free")
+ (return-type "none")
+)
+
+(define-method parse
+ (of-object "GMarkupParseContext")
+ (c-name "g_markup_parse_context_parse")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "text")
+ '("gssize" "text_len")
+ '("GError**" "error")
+ )
+)
+
+(define-method end_parse
+ (of-object "GMarkupParseContext")
+ (c-name "g_markup_parse_context_end_parse")
+ (return-type "gboolean")
+ (parameters
+ '("GError**" "error")
+ )
+)
+
+(define-method get_element
+ (of-object "GMarkupParseContext")
+ (c-name "g_markup_parse_context_get_element")
+ (return-type "const-gchar*")
+)
+
+(define-method get_position
+ (of-object "GMarkupParseContext")
+ (c-name "g_markup_parse_context_get_position")
+ (return-type "none")
+ (parameters
+ '("gint*" "line_number")
+ '("gint*" "char_number")
+ )
+)
+
+(define-function g_markup_escape_text
+ (c-name "g_markup_escape_text")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "text")
+ '("gssize" "length")
+ )
+)
+
+(define-function g_markup_printf_escaped
+ (c-name "g_markup_printf_escaped")
+ (return-type "gchar*")
+ (parameters
+ '("const-char*" "format")
+ )
+ (varargs #t)
+)
+
+(define-function g_markup_vprintf_escaped
+ (c-name "g_markup_vprintf_escaped")
+ (return-type "gchar*")
+ (parameters
+ '("const-char*" "format")
+ '("va_list" "args")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gmem.h
+
+(define-function g_malloc
+ (c-name "g_malloc")
+ (return-type "gpointer")
+ (parameters
+ '("gulong" "n_bytes")
+ )
+)
+
+(define-function g_malloc0
+ (c-name "g_malloc0")
+ (return-type "gpointer")
+ (parameters
+ '("gulong" "n_bytes")
+ )
+)
+
+(define-function g_realloc
+ (c-name "g_realloc")
+ (return-type "gpointer")
+ (parameters
+ '("gpointer" "mem")
+ '("gulong" "n_bytes")
+ )
+)
+
+(define-function g_free
+ (c-name "g_free")
+ (return-type "none")
+ (parameters
+ '("gpointer" "mem")
+ )
+)
+
+(define-function g_try_malloc
+ (c-name "g_try_malloc")
+ (return-type "gpointer")
+ (parameters
+ '("gulong" "n_bytes")
+ )
+)
+
+(define-function g_try_malloc0
+ (c-name "g_try_malloc0")
+ (return-type "gpointer")
+ (parameters
+ '("gulong" "n_bytes")
+ )
+)
+
+(define-function g_try_realloc
+ (c-name "g_try_realloc")
+ (return-type "gpointer")
+ (parameters
+ '("gpointer" "mem")
+ '("gulong" "n_bytes")
+ )
+)
+
+(define-function g_mem_set_vtable
+ (c-name "g_mem_set_vtable")
+ (return-type "none")
+ (parameters
+ '("GMemVTable*" "vtable")
+ )
+)
+
+(define-function g_mem_is_system_malloc
+ (c-name "g_mem_is_system_malloc")
+ (return-type "gboolean")
+)
+
+(define-function g_mem_profile
+ (c-name "g_mem_profile")
+ (return-type "none")
+)
+
+(define-function g_mem_chunk_new
+ (c-name "g_mem_chunk_new")
+ (is-constructor-of "GMemChunk")
+ (return-type "GMemChunk*")
+ (parameters
+ '("const-gchar*" "name")
+ '("gint" "atom_size")
+ '("gulong" "area_size")
+ '("gint" "type")
+ )
+)
+
+(define-method destroy
+ (of-object "GMemChunk")
+ (c-name "g_mem_chunk_destroy")
+ (return-type "none")
+)
+
+(define-method alloc
+ (of-object "GMemChunk")
+ (c-name "g_mem_chunk_alloc")
+ (return-type "gpointer")
+)
+
+(define-method alloc0
+ (of-object "GMemChunk")
+ (c-name "g_mem_chunk_alloc0")
+ (return-type "gpointer")
+)
+
+(define-method free
+ (of-object "GMemChunk")
+ (c-name "g_mem_chunk_free")
+ (return-type "none")
+ (parameters
+ '("gpointer" "mem")
+ )
+)
+
+(define-method clean
+ (of-object "GMemChunk")
+ (c-name "g_mem_chunk_clean")
+ (return-type "none")
+)
+
+(define-method reset
+ (of-object "GMemChunk")
+ (c-name "g_mem_chunk_reset")
+ (return-type "none")
+)
+
+(define-method print
+ (of-object "GMemChunk")
+ (c-name "g_mem_chunk_print")
+ (return-type "none")
+)
+
+(define-function g_mem_chunk_info
+ (c-name "g_mem_chunk_info")
+ (return-type "none")
+)
+
+(define-function g_blow_chunks
+ (c-name "g_blow_chunks")
+ (return-type "none")
+)
+
+(define-function g_allocator_new
+ (c-name "g_allocator_new")
+ (is-constructor-of "GAllocator")
+ (return-type "GAllocator*")
+ (parameters
+ '("const-gchar*" "name")
+ '("guint" "n_preallocs")
+ )
+)
+
+(define-method free
+ (of-object "GAllocator")
+ (c-name "g_allocator_free")
+ (return-type "none")
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gmessages.h
+
+(define-function g_printf_string_upper_bound
+ (c-name "g_printf_string_upper_bound")
+ (return-type "gsize")
+ (parameters
+ '("const-gchar*" "format")
+ '("va_list" "args")
+ )
+)
+
+(define-function g_log_set_handler
+ (c-name "g_log_set_handler")
+ (return-type "guint")
+ (parameters
+ '("const-gchar*" "log_domain")
+ '("GLogLevelFlags" "log_levels")
+ '("GLogFunc" "log_func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-function g_log_remove_handler
+ (c-name "g_log_remove_handler")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "log_domain")
+ '("guint" "handler_id")
+ )
+)
+
+(define-function g_log_default_handler
+ (c-name "g_log_default_handler")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "log_domain")
+ '("GLogLevelFlags" "log_level")
+ '("const-gchar*" "message")
+ '("gpointer" "unused_data")
+ )
+)
+
+(define-function g_log_set_default_handler
+ (c-name "g_log_set_default_handler")
+ (return-type "GLogFunc")
+ (parameters
+ '("GLogFunc" "log_func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-function g_log
+ (c-name "g_log")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "log_domain")
+ '("GLogLevelFlags" "log_level")
+ '("const-gchar*" "format")
+ )
+ (varargs #t)
+)
+
+(define-function g_logv
+ (c-name "g_logv")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "log_domain")
+ '("GLogLevelFlags" "log_level")
+ '("const-gchar*" "format")
+ '("va_list" "args")
+ )
+)
+
+(define-function g_log_set_fatal_mask
+ (c-name "g_log_set_fatal_mask")
+ (return-type "GLogLevelFlags")
+ (parameters
+ '("const-gchar*" "log_domain")
+ '("GLogLevelFlags" "fatal_mask")
+ )
+)
+
+(define-function g_log_set_always_fatal
+ (c-name "g_log_set_always_fatal")
+ (return-type "GLogLevelFlags")
+ (parameters
+ '("GLogLevelFlags" "fatal_mask")
+ )
+)
+
+(define-function g_return_if_fail_warning
+ (c-name "g_return_if_fail_warning")
+ (return-type "none")
+ (parameters
+ '("const-char*" "log_domain")
+ '("const-char*" "pretty_function")
+ '("const-char*" "expression")
+ )
+)
+
+(define-function g_assert_warning
+ (c-name "g_assert_warning")
+ (return-type "none")
+ (parameters
+ '("const-char*" "log_domain")
+ '("const-char*" "file")
+ '("const-int" "line")
+ '("const-char*" "pretty_function")
+ '("const-char*" "expression")
+ )
+)
+
+(define-function g_set_print_handler
+ (c-name "g_set_print_handler")
+ (return-type "GPrintFunc")
+ (parameters
+ '("GPrintFunc" "func")
+ )
+)
+
+(define-function g_printerr
+ (c-name "g_printerr")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "format")
+ )
+ (varargs #t)
+)
+
+(define-function g_set_printerr_handler
+ (c-name "g_set_printerr_handler")
+ (return-type "GPrintFunc")
+ (parameters
+ '("GPrintFunc" "func")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gnode.h
+
+(define-function g_node_push_allocator
+ (c-name "g_node_push_allocator")
+ (return-type "none")
+ (parameters
+ '("GAllocator*" "allocator")
+ )
+)
+
+(define-function g_node_pop_allocator
+ (c-name "g_node_pop_allocator")
+ (return-type "none")
+)
+
+(define-function g_node_new
+ (c-name "g_node_new")
+ (is-constructor-of "GNode")
+ (return-type "GNode*")
+ (parameters
+ '("gpointer" "data")
+ )
+)
+
+(define-method destroy
+ (of-object "GNode")
+ (c-name "g_node_destroy")
+ (return-type "none")
+)
+
+(define-method unlink
+ (of-object "GNode")
+ (c-name "g_node_unlink")
+ (return-type "none")
+)
+
+(define-method copy_deep
+ (of-object "GNode")
+ (c-name "g_node_copy_deep")
+ (return-type "GNode*")
+ (parameters
+ '("GCopyFunc" "copy_func")
+ '("gpointer" "data")
+ )
+)
+
+(define-method copy
+ (of-object "GNode")
+ (c-name "g_node_copy")
+ (return-type "GNode*")
+)
+
+(define-method insert
+ (of-object "GNode")
+ (c-name "g_node_insert")
+ (return-type "GNode*")
+ (parameters
+ '("gint" "position")
+ '("GNode*" "node")
+ )
+)
+
+(define-method insert_before
+ (of-object "GNode")
+ (c-name "g_node_insert_before")
+ (return-type "GNode*")
+ (parameters
+ '("GNode*" "sibling")
+ '("GNode*" "node")
+ )
+)
+
+(define-method insert_after
+ (of-object "GNode")
+ (c-name "g_node_insert_after")
+ (return-type "GNode*")
+ (parameters
+ '("GNode*" "sibling")
+ '("GNode*" "node")
+ )
+)
+
+(define-method prepend
+ (of-object "GNode")
+ (c-name "g_node_prepend")
+ (return-type "GNode*")
+ (parameters
+ '("GNode*" "node")
+ )
+)
+
+(define-method n_nodes
+ (of-object "GNode")
+ (c-name "g_node_n_nodes")
+ (return-type "guint")
+ (parameters
+ '("GTraverseFlags" "flags")
+ )
+)
+
+(define-method get_root
+ (of-object "GNode")
+ (c-name "g_node_get_root")
+ (return-type "GNode*")
+)
+
+(define-method is_ancestor
+ (of-object "GNode")
+ (c-name "g_node_is_ancestor")
+ (return-type "gboolean")
+ (parameters
+ '("GNode*" "descendant")
+ )
+)
+
+(define-method depth
+ (of-object "GNode")
+ (c-name "g_node_depth")
+ (return-type "guint")
+)
+
+(define-method find
+ (of-object "GNode")
+ (c-name "g_node_find")
+ (return-type "GNode*")
+ (parameters
+ '("GTraverseType" "order")
+ '("GTraverseFlags" "flags")
+ '("gpointer" "data")
+ )
+)
+
+(define-method traverse
+ (of-object "GNode")
+ (c-name "g_node_traverse")
+ (return-type "none")
+ (parameters
+ '("GTraverseType" "order")
+ '("GTraverseFlags" "flags")
+ '("gint" "max_depth")
+ '("GNodeTraverseFunc" "func")
+ '("gpointer" "data")
+ )
+)
+
+(define-method max_height
+ (of-object "GNode")
+ (c-name "g_node_max_height")
+ (return-type "guint")
+)
+
+(define-method children_foreach
+ (of-object "GNode")
+ (c-name "g_node_children_foreach")
+ (return-type "none")
+ (parameters
+ '("GTraverseFlags" "flags")
+ '("GNodeForeachFunc" "func")
+ '("gpointer" "data")
+ )
+)
+
+(define-method reverse_children
+ (of-object "GNode")
+ (c-name "g_node_reverse_children")
+ (return-type "none")
+)
+
+(define-method n_children
+ (of-object "GNode")
+ (c-name "g_node_n_children")
+ (return-type "guint")
+)
+
+(define-method nth_child
+ (of-object "GNode")
+ (c-name "g_node_nth_child")
+ (return-type "GNode*")
+ (parameters
+ '("guint" "n")
+ )
+)
+
+(define-method last_child
+ (of-object "GNode")
+ (c-name "g_node_last_child")
+ (return-type "GNode*")
+)
+
+(define-method find_child
+ (of-object "GNode")
+ (c-name "g_node_find_child")
+ (return-type "GNode*")
+ (parameters
+ '("GTraverseFlags" "flags")
+ '("gpointer" "data")
+ )
+)
+
+(define-method child_position
+ (of-object "GNode")
+ (c-name "g_node_child_position")
+ (return-type "gint")
+ (parameters
+ '("GNode*" "child")
+ )
+)
+
+(define-method child_index
+ (of-object "GNode")
+ (c-name "g_node_child_index")
+ (return-type "gint")
+ (parameters
+ '("gpointer" "data")
+ )
+)
+
+(define-method first_sibling
+ (of-object "GNode")
+ (c-name "g_node_first_sibling")
+ (return-type "GNode*")
+)
+
+(define-method last_sibling
+ (of-object "GNode")
+ (c-name "g_node_last_sibling")
+ (return-type "GNode*")
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/goption.h
+
+(define-function g_option_error_quark
+ (c-name "g_option_error_quark")
+ (return-type "GQuark")
+)
+
+(define-function g_option_context_new
+ (c-name "g_option_context_new")
+ (is-constructor-of "GOptionContext")
+ (return-type "GOptionContext*")
+ (parameters
+ '("const-gchar*" "parameter_string")
+ )
+)
+
+(define-method free
+ (of-object "GOptionContext")
+ (c-name "g_option_context_free")
+ (return-type "none")
+)
+
+(define-method set_help_enabled
+ (of-object "GOptionContext")
+ (c-name "g_option_context_set_help_enabled")
+ (return-type "none")
+ (parameters
+ '("gboolean" "help_enabled")
+ )
+)
+
+(define-method get_help_enabled
+ (of-object "GOptionContext")
+ (c-name "g_option_context_get_help_enabled")
+ (return-type "gboolean")
+)
+
+(define-method set_ignore_unknown_options
+ (of-object "GOptionContext")
+ (c-name "g_option_context_set_ignore_unknown_options")
+ (return-type "none")
+ (parameters
+ '("gboolean" "ignore_unknown")
+ )
+)
+
+(define-method get_ignore_unknown_options
+ (of-object "GOptionContext")
+ (c-name "g_option_context_get_ignore_unknown_options")
+ (return-type "gboolean")
+)
+
+(define-method add_main_entries
+ (of-object "GOptionContext")
+ (c-name "g_option_context_add_main_entries")
+ (return-type "none")
+ (parameters
+ '("const-GOptionEntry*" "entries")
+ '("const-gchar*" "translation_domain")
+ )
+)
+
+(define-method parse
+ (of-object "GOptionContext")
+ (c-name "g_option_context_parse")
+ (return-type "gboolean")
+ (parameters
+ '("gint*" "argc")
+ '("gchar***" "argv")
+ '("GError**" "error")
+ )
+)
+
+(define-method add_group
+ (of-object "GOptionContext")
+ (c-name "g_option_context_add_group")
+ (return-type "none")
+ (parameters
+ '("GOptionGroup*" "group")
+ )
+)
+
+(define-method set_main_group
+ (of-object "GOptionContext")
+ (c-name "g_option_context_set_main_group")
+ (return-type "none")
+ (parameters
+ '("GOptionGroup*" "group")
+ )
+)
+
+(define-method get_main_group
+ (of-object "GOptionContext")
+ (c-name "g_option_context_get_main_group")
+ (return-type "GOptionGroup*")
+)
+
+(define-function g_option_group_new
+ (c-name "g_option_group_new")
+ (is-constructor-of "GOptionGroup")
+ (return-type "GOptionGroup*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "description")
+ '("const-gchar*" "help_description")
+ '("gpointer" "user_data")
+ '("GDestroyNotify" "destroy")
+ )
+)
+
+(define-method set_parse_hooks
+ (of-object "GOptionGroup")
+ (c-name "g_option_group_set_parse_hooks")
+ (return-type "none")
+ (parameters
+ '("GOptionParseFunc" "pre_parse_func")
+ '("GOptionParseFunc" "post_parse_func")
+ )
+)
+
+(define-method set_error_hook
+ (of-object "GOptionGroup")
+ (c-name "g_option_group_set_error_hook")
+ (return-type "none")
+ (parameters
+ '("GOptionErrorFunc" "error_func")
+ )
+)
+
+(define-method free
+ (of-object "GOptionGroup")
+ (c-name "g_option_group_free")
+ (return-type "none")
+)
+
+(define-method add_entries
+ (of-object "GOptionGroup")
+ (c-name "g_option_group_add_entries")
+ (return-type "none")
+ (parameters
+ '("const-GOptionEntry*" "entries")
+ )
+)
+
+(define-method set_translate_func
+ (of-object "GOptionGroup")
+ (c-name "g_option_group_set_translate_func")
+ (return-type "none")
+ (parameters
+ '("GTranslateFunc" "func")
+ '("gpointer" "data")
+ '("GDestroyNotify" "destroy_notify")
+ )
+)
+
+(define-method set_translation_domain
+ (of-object "GOptionGroup")
+ (c-name "g_option_group_set_translation_domain")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "domain")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gpattern.h
+
+(define-function g_pattern_spec_new
+ (c-name "g_pattern_spec_new")
+ (is-constructor-of "GPatternSpec")
+ (return-type "GPatternSpec*")
+ (parameters
+ '("const-gchar*" "pattern")
+ )
+)
+
+(define-method free
+ (of-object "GPatternSpec")
+ (c-name "g_pattern_spec_free")
+ (return-type "none")
+)
+
+(define-method equal
+ (of-object "GPatternSpec")
+ (c-name "g_pattern_spec_equal")
+ (return-type "gboolean")
+ (parameters
+ '("GPatternSpec*" "pspec2")
+ )
+)
+
+(define-function g_pattern_match
+ (c-name "g_pattern_match")
+ (return-type "gboolean")
+ (parameters
+ '("GPatternSpec*" "pspec")
+ '("guint" "string_length")
+ '("const-gchar*" "string")
+ '("const-gchar*" "string_reversed")
+ )
+)
+
+(define-function g_pattern_match_string
+ (c-name "g_pattern_match_string")
+ (return-type "gboolean")
+ (parameters
+ '("GPatternSpec*" "pspec")
+ '("const-gchar*" "string")
+ )
+)
+
+(define-function g_pattern_match_simple
+ (c-name "g_pattern_match_simple")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "pattern")
+ '("const-gchar*" "string")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gprimes.h
+
+(define-function g_spaced_primes_closest
+ (c-name "g_spaced_primes_closest")
+ (return-type "guint")
+ (parameters
+ '("guint" "num")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gprintf.h
+
+(define-function g_printf
+ (c-name "g_printf")
+ (return-type "gint")
+ (parameters
+ '("gchar-const*" "format")
+ )
+ (varargs #t)
+)
+
+(define-function g_fprintf
+ (c-name "g_fprintf")
+ (return-type "gint")
+ (parameters
+ '("FILE*" "file")
+ '("gchar-const*" "format")
+ )
+ (varargs #t)
+)
+
+(define-function g_sprintf
+ (c-name "g_sprintf")
+ (return-type "gint")
+ (parameters
+ '("gchar*" "string")
+ '("gchar-const*" "format")
+ )
+ (varargs #t)
+)
+
+(define-function g_snprintf
+ (c-name "g_snprintf")
+ (return-type "gint")
+ (parameters
+ '("gchar*" "string")
+ '("gulong" "n")
+ '("gchar-const*" "format")
+ )
+ (varargs #t)
+)
+
+(define-function g_vprintf
+ (c-name "g_vprintf")
+ (return-type "gint")
+ (parameters
+ '("gchar-const*" "format")
+ '("va_list" "args")
+ )
+)
+
+(define-function g_vfprintf
+ (c-name "g_vfprintf")
+ (return-type "gint")
+ (parameters
+ '("FILE*" "file")
+ '("gchar-const*" "format")
+ '("va_list" "args")
+ )
+)
+
+(define-function g_vsprintf
+ (c-name "g_vsprintf")
+ (return-type "gint")
+ (parameters
+ '("gchar*" "string")
+ '("gchar-const*" "format")
+ '("va_list" "args")
+ )
+)
+
+(define-function g_vsnprintf
+ (c-name "g_vsnprintf")
+ (return-type "gint")
+ (parameters
+ '("gchar*" "string")
+ '("gulong" "n")
+ '("gchar-const*" "format")
+ '("va_list" "args")
+ )
+)
+
+(define-function g_vasprintf
+ (c-name "g_vasprintf")
+ (return-type "gint")
+ (parameters
+ '("gchar**" "string")
+ '("gchar-const*" "format")
+ '("va_list" "args")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gprintfint.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gqsort.h
+
+(define-function g_qsort_with_data
+ (c-name "g_qsort_with_data")
+ (return-type "none")
+ (parameters
+ '("gconstpointer" "pbase")
+ '("gint" "total_elems")
+ '("gsize" "size")
+ '("GCompareDataFunc" "compare_func")
+ '("gpointer" "user_data")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gquark.h
+
+(define-function g_quark_try_string
+ (c-name "g_quark_try_string")
+ (return-type "GQuark")
+ (parameters
+ '("const-gchar*" "string")
+ )
+)
+
+(define-function g_quark_from_static_string
+ (c-name "g_quark_from_static_string")
+ (return-type "GQuark")
+ (parameters
+ '("const-gchar*" "string")
+ )
+)
+
+(define-function g_quark_from_string
+ (c-name "g_quark_from_string")
+ (return-type "GQuark")
+ (parameters
+ '("const-gchar*" "string")
+ )
+)
+
+(define-method to_string
+ (of-object "GQuark")
+ (c-name "g_quark_to_string")
+ (return-type "const-gchar*")
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gqueue.h
+
+(define-function g_queue_new
+ (c-name "g_queue_new")
+ (is-constructor-of "GQueue")
+ (return-type "GQueue*")
+)
+
+(define-method free
+ (of-object "GQueue")
+ (c-name "g_queue_free")
+ (return-type "none")
+)
+
+(define-method is_empty
+ (of-object "GQueue")
+ (c-name "g_queue_is_empty")
+ (return-type "gboolean")
+)
+
+(define-method get_length
+ (of-object "GQueue")
+ (c-name "g_queue_get_length")
+ (return-type "guint")
+)
+
+(define-method reverse
+ (of-object "GQueue")
+ (c-name "g_queue_reverse")
+ (return-type "none")
+)
+
+(define-method copy
+ (of-object "GQueue")
+ (c-name "g_queue_copy")
+ (return-type "GQueue*")
+)
+
+(define-method foreach
+ (of-object "GQueue")
+ (c-name "g_queue_foreach")
+ (return-type "none")
+ (parameters
+ '("GFunc" "func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method find
+ (of-object "GQueue")
+ (c-name "g_queue_find")
+ (return-type "GList*")
+ (parameters
+ '("gconstpointer" "data")
+ )
+)
+
+(define-method find_custom
+ (of-object "GQueue")
+ (c-name "g_queue_find_custom")
+ (return-type "GList*")
+ (parameters
+ '("gconstpointer" "data")
+ '("GCompareFunc" "func")
+ )
+)
+
+(define-method sort
+ (of-object "GQueue")
+ (c-name "g_queue_sort")
+ (return-type "none")
+ (parameters
+ '("GCompareDataFunc" "compare_func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method push_head
+ (of-object "GQueue")
+ (c-name "g_queue_push_head")
+ (return-type "none")
+ (parameters
+ '("gpointer" "data")
+ )
+)
+
+(define-method push_tail
+ (of-object "GQueue")
+ (c-name "g_queue_push_tail")
+ (return-type "none")
+ (parameters
+ '("gpointer" "data")
+ )
+)
+
+(define-method push_nth
+ (of-object "GQueue")
+ (c-name "g_queue_push_nth")
+ (return-type "none")
+ (parameters
+ '("gpointer" "data")
+ '("gint" "n")
+ )
+)
+
+(define-method pop_head
+ (of-object "GQueue")
+ (c-name "g_queue_pop_head")
+ (return-type "gpointer")
+)
+
+(define-method pop_tail
+ (of-object "GQueue")
+ (c-name "g_queue_pop_tail")
+ (return-type "gpointer")
+)
+
+(define-method pop_nth
+ (of-object "GQueue")
+ (c-name "g_queue_pop_nth")
+ (return-type "gpointer")
+ (parameters
+ '("guint" "n")
+ )
+)
+
+(define-method peek_head
+ (of-object "GQueue")
+ (c-name "g_queue_peek_head")
+ (return-type "gpointer")
+)
+
+(define-method peek_tail
+ (of-object "GQueue")
+ (c-name "g_queue_peek_tail")
+ (return-type "gpointer")
+)
+
+(define-method peek_nth
+ (of-object "GQueue")
+ (c-name "g_queue_peek_nth")
+ (return-type "gpointer")
+ (parameters
+ '("guint" "n")
+ )
+)
+
+(define-method index
+ (of-object "GQueue")
+ (c-name "g_queue_index")
+ (return-type "gint")
+ (parameters
+ '("gconstpointer" "data")
+ )
+)
+
+(define-method remove
+ (of-object "GQueue")
+ (c-name "g_queue_remove")
+ (return-type "none")
+ (parameters
+ '("gconstpointer" "data")
+ )
+)
+
+(define-method remove_all
+ (of-object "GQueue")
+ (c-name "g_queue_remove_all")
+ (return-type "none")
+ (parameters
+ '("gconstpointer" "data")
+ )
+)
+
+(define-method insert_before
+ (of-object "GQueue")
+ (c-name "g_queue_insert_before")
+ (return-type "none")
+ (parameters
+ '("GList*" "sibling")
+ '("gpointer" "data")
+ )
+)
+
+(define-method insert_after
+ (of-object "GQueue")
+ (c-name "g_queue_insert_after")
+ (return-type "none")
+ (parameters
+ '("GList*" "sibling")
+ '("gpointer" "data")
+ )
+)
+
+(define-method insert_sorted
+ (of-object "GQueue")
+ (c-name "g_queue_insert_sorted")
+ (return-type "none")
+ (parameters
+ '("gpointer" "data")
+ '("GCompareDataFunc" "func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method push_head_link
+ (of-object "GQueue")
+ (c-name "g_queue_push_head_link")
+ (return-type "none")
+ (parameters
+ '("GList*" "link_")
+ )
+)
+
+(define-method push_tail_link
+ (of-object "GQueue")
+ (c-name "g_queue_push_tail_link")
+ (return-type "none")
+ (parameters
+ '("GList*" "link_")
+ )
+)
+
+(define-method push_nth_link
+ (of-object "GQueue")
+ (c-name "g_queue_push_nth_link")
+ (return-type "none")
+ (parameters
+ '("gint" "n")
+ '("GList*" "link_")
+ )
+)
+
+(define-method pop_head_link
+ (of-object "GQueue")
+ (c-name "g_queue_pop_head_link")
+ (return-type "GList*")
+)
+
+(define-method pop_tail_link
+ (of-object "GQueue")
+ (c-name "g_queue_pop_tail_link")
+ (return-type "GList*")
+)
+
+(define-method pop_nth_link
+ (of-object "GQueue")
+ (c-name "g_queue_pop_nth_link")
+ (return-type "GList*")
+ (parameters
+ '("guint" "n")
+ )
+)
+
+(define-method peek_head_link
+ (of-object "GQueue")
+ (c-name "g_queue_peek_head_link")
+ (return-type "GList*")
+)
+
+(define-method peek_tail_link
+ (of-object "GQueue")
+ (c-name "g_queue_peek_tail_link")
+ (return-type "GList*")
+)
+
+(define-method peek_nth_link
+ (of-object "GQueue")
+ (c-name "g_queue_peek_nth_link")
+ (return-type "GList*")
+ (parameters
+ '("guint" "n")
+ )
+)
+
+(define-method link_index
+ (of-object "GQueue")
+ (c-name "g_queue_link_index")
+ (return-type "gint")
+ (parameters
+ '("GList*" "link_")
+ )
+)
+
+(define-method unlink
+ (of-object "GQueue")
+ (c-name "g_queue_unlink")
+ (return-type "none")
+ (parameters
+ '("GList*" "link_")
+ )
+)
+
+(define-method delete_link
+ (of-object "GQueue")
+ (c-name "g_queue_delete_link")
+ (return-type "none")
+ (parameters
+ '("GList*" "link_")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/grand.h
+
+(define-function g_rand_new_with_seed
+ (c-name "g_rand_new_with_seed")
+ (return-type "GRand*")
+ (parameters
+ '("guint32" "seed")
+ )
+)
+
+(define-function g_rand_new_with_seed_array
+ (c-name "g_rand_new_with_seed_array")
+ (return-type "GRand*")
+ (parameters
+ '("const-guint32*" "seed")
+ '("guint" "seed_length")
+ )
+)
+
+(define-function g_rand_new
+ (c-name "g_rand_new")
+ (is-constructor-of "GRand")
+ (return-type "GRand*")
+)
+
+(define-method free
+ (of-object "GRand")
+ (c-name "g_rand_free")
+ (return-type "none")
+)
+
+(define-method copy
+ (of-object "GRand")
+ (c-name "g_rand_copy")
+ (return-type "GRand*")
+)
+
+(define-method set_seed
+ (of-object "GRand")
+ (c-name "g_rand_set_seed")
+ (return-type "none")
+ (parameters
+ '("guint32" "seed")
+ )
+)
+
+(define-method set_seed_array
+ (of-object "GRand")
+ (c-name "g_rand_set_seed_array")
+ (return-type "none")
+ (parameters
+ '("const-guint32*" "seed")
+ '("guint" "seed_length")
+ )
+)
+
+(define-method int
+ (of-object "GRand")
+ (c-name "g_rand_int")
+ (return-type "guint32")
+)
+
+(define-method int_range
+ (of-object "GRand")
+ (c-name "g_rand_int_range")
+ (return-type "gint32")
+ (parameters
+ '("gint32" "begin")
+ '("gint32" "end")
+ )
+)
+
+(define-method double
+ (of-object "GRand")
+ (c-name "g_rand_double")
+ (return-type "gdouble")
+)
+
+(define-method double_range
+ (of-object "GRand")
+ (c-name "g_rand_double_range")
+ (return-type "gdouble")
+ (parameters
+ '("gdouble" "begin")
+ '("gdouble" "end")
+ )
+)
+
+(define-function g_random_set_seed
+ (c-name "g_random_set_seed")
+ (return-type "none")
+ (parameters
+ '("guint32" "seed")
+ )
+)
+
+(define-function g_random_int
+ (c-name "g_random_int")
+ (return-type "guint32")
+)
+
+(define-function g_random_int_range
+ (c-name "g_random_int_range")
+ (return-type "gint32")
+ (parameters
+ '("gint32" "begin")
+ '("gint32" "end")
+ )
+)
+
+(define-function g_random_double
+ (c-name "g_random_double")
+ (return-type "gdouble")
+)
+
+(define-function g_random_double_range
+ (c-name "g_random_double_range")
+ (return-type "gdouble")
+ (parameters
+ '("gdouble" "begin")
+ '("gdouble" "end")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/grel.h
+
+(define-function g_relation_new
+ (c-name "g_relation_new")
+ (is-constructor-of "GRelation")
+ (return-type "GRelation*")
+ (parameters
+ '("gint" "fields")
+ )
+)
+
+(define-method destroy
+ (of-object "GRelation")
+ (c-name "g_relation_destroy")
+ (return-type "none")
+)
+
+(define-method index
+ (of-object "GRelation")
+ (c-name "g_relation_index")
+ (return-type "none")
+ (parameters
+ '("gint" "field")
+ '("GHashFunc" "hash_func")
+ '("GEqualFunc" "key_equal_func")
+ )
+)
+
+(define-method insert
+ (of-object "GRelation")
+ (c-name "g_relation_insert")
+ (return-type "none")
+ (parameters
+ )
+ (varargs #t)
+)
+
+(define-method delete
+ (of-object "GRelation")
+ (c-name "g_relation_delete")
+ (return-type "gint")
+ (parameters
+ '("gconstpointer" "key")
+ '("gint" "field")
+ )
+)
+
+(define-method select
+ (of-object "GRelation")
+ (c-name "g_relation_select")
+ (return-type "GTuples*")
+ (parameters
+ '("gconstpointer" "key")
+ '("gint" "field")
+ )
+)
+
+(define-method count
+ (of-object "GRelation")
+ (c-name "g_relation_count")
+ (return-type "gint")
+ (parameters
+ '("gconstpointer" "key")
+ '("gint" "field")
+ )
+)
+
+(define-method exists
+ (of-object "GRelation")
+ (c-name "g_relation_exists")
+ (return-type "gboolean")
+ (parameters
+ )
+ (varargs #t)
+)
+
+(define-method print
+ (of-object "GRelation")
+ (c-name "g_relation_print")
+ (return-type "none")
+)
+
+(define-method destroy
+ (of-object "GTuples")
+ (c-name "g_tuples_destroy")
+ (return-type "none")
+)
+
+(define-method index
+ (of-object "GTuples")
+ (c-name "g_tuples_index")
+ (return-type "gpointer")
+ (parameters
+ '("gint" "index_")
+ '("gint" "field")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gscanner.h
+
+(define-function g_scanner_new
+ (c-name "g_scanner_new")
+ (is-constructor-of "GScanner")
+ (return-type "GScanner*")
+ (parameters
+ '("const-GScannerConfig*" "config_templ")
+ )
+)
+
+(define-method destroy
+ (of-object "GScanner")
+ (c-name "g_scanner_destroy")
+ (return-type "none")
+)
+
+(define-method input_file
+ (of-object "GScanner")
+ (c-name "g_scanner_input_file")
+ (return-type "none")
+ (parameters
+ '("gint" "input_fd")
+ )
+)
+
+(define-method sync_file_offset
+ (of-object "GScanner")
+ (c-name "g_scanner_sync_file_offset")
+ (return-type "none")
+)
+
+(define-method input_text
+ (of-object "GScanner")
+ (c-name "g_scanner_input_text")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "text")
+ '("guint" "text_len")
+ )
+)
+
+(define-method get_next_token
+ (of-object "GScanner")
+ (c-name "g_scanner_get_next_token")
+ (return-type "GTokenType")
+)
+
+(define-method peek_next_token
+ (of-object "GScanner")
+ (c-name "g_scanner_peek_next_token")
+ (return-type "GTokenType")
+)
+
+(define-method cur_token
+ (of-object "GScanner")
+ (c-name "g_scanner_cur_token")
+ (return-type "GTokenType")
+)
+
+(define-method cur_value
+ (of-object "GScanner")
+ (c-name "g_scanner_cur_value")
+ (return-type "GTokenValue")
+)
+
+(define-method cur_line
+ (of-object "GScanner")
+ (c-name "g_scanner_cur_line")
+ (return-type "guint")
+)
+
+(define-method cur_position
+ (of-object "GScanner")
+ (c-name "g_scanner_cur_position")
+ (return-type "guint")
+)
+
+(define-method eof
+ (of-object "GScanner")
+ (c-name "g_scanner_eof")
+ (return-type "gboolean")
+)
+
+(define-method set_scope
+ (of-object "GScanner")
+ (c-name "g_scanner_set_scope")
+ (return-type "guint")
+ (parameters
+ '("guint" "scope_id")
+ )
+)
+
+(define-method scope_add_symbol
+ (of-object "GScanner")
+ (c-name "g_scanner_scope_add_symbol")
+ (return-type "none")
+ (parameters
+ '("guint" "scope_id")
+ '("const-gchar*" "symbol")
+ '("gpointer" "value")
+ )
+)
+
+(define-method scope_remove_symbol
+ (of-object "GScanner")
+ (c-name "g_scanner_scope_remove_symbol")
+ (return-type "none")
+ (parameters
+ '("guint" "scope_id")
+ '("const-gchar*" "symbol")
+ )
+)
+
+(define-method scope_lookup_symbol
+ (of-object "GScanner")
+ (c-name "g_scanner_scope_lookup_symbol")
+ (return-type "gpointer")
+ (parameters
+ '("guint" "scope_id")
+ '("const-gchar*" "symbol")
+ )
+)
+
+(define-method scope_foreach_symbol
+ (of-object "GScanner")
+ (c-name "g_scanner_scope_foreach_symbol")
+ (return-type "none")
+ (parameters
+ '("guint" "scope_id")
+ '("GHFunc" "func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method lookup_symbol
+ (of-object "GScanner")
+ (c-name "g_scanner_lookup_symbol")
+ (return-type "gpointer")
+ (parameters
+ '("const-gchar*" "symbol")
+ )
+)
+
+(define-method unexp_token
+ (of-object "GScanner")
+ (c-name "g_scanner_unexp_token")
+ (return-type "none")
+ (parameters
+ '("GTokenType" "expected_token")
+ '("const-gchar*" "identifier_spec")
+ '("const-gchar*" "symbol_spec")
+ '("const-gchar*" "symbol_name")
+ '("const-gchar*" "message")
+ '("gint" "is_error")
+ )
+)
+
+(define-method error
+ (of-object "GScanner")
+ (c-name "g_scanner_error")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "format")
+ )
+ (varargs #t)
+)
+
+(define-method warn
+ (of-object "GScanner")
+ (c-name "g_scanner_warn")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "format")
+ )
+ (varargs #t)
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gshell.h
+
+(define-function g_shell_error_quark
+ (c-name "g_shell_error_quark")
+ (return-type "GQuark")
+)
+
+(define-function g_shell_quote
+ (c-name "g_shell_quote")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "unquoted_string")
+ )
+)
+
+(define-function g_shell_unquote
+ (c-name "g_shell_unquote")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "quoted_string")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_shell_parse_argv
+ (c-name "g_shell_parse_argv")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "command_line")
+ '("gint*" "argcp")
+ '("gchar***" "argvp")
+ '("GError**" "error")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gslist.h
+
+(define-function g_slist_push_allocator
+ (c-name "g_slist_push_allocator")
+ (return-type "none")
+ (parameters
+ '("GAllocator*" "allocator")
+ )
+)
+
+(define-function g_slist_pop_allocator
+ (c-name "g_slist_pop_allocator")
+ (return-type "none")
+)
+
+(define-function g_slist_alloc
+ (c-name "g_slist_alloc")
+ (return-type "GSList*")
+)
+
+(define-method free
+ (of-object "GSList")
+ (c-name "g_slist_free")
+ (return-type "none")
+)
+
+(define-method free_1
+ (of-object "GSList")
+ (c-name "g_slist_free_1")
+ (return-type "none")
+)
+
+(define-method append
+ (of-object "GSList")
+ (c-name "g_slist_append")
+ (return-type "GSList*")
+ (parameters
+ '("gpointer" "data")
+ )
+)
+
+(define-method prepend
+ (of-object "GSList")
+ (c-name "g_slist_prepend")
+ (return-type "GSList*")
+ (parameters
+ '("gpointer" "data")
+ )
+)
+
+(define-method insert
+ (of-object "GSList")
+ (c-name "g_slist_insert")
+ (return-type "GSList*")
+ (parameters
+ '("gpointer" "data")
+ '("gint" "position")
+ )
+)
+
+(define-method insert_sorted
+ (of-object "GSList")
+ (c-name "g_slist_insert_sorted")
+ (return-type "GSList*")
+ (parameters
+ '("gpointer" "data")
+ '("GCompareFunc" "func")
+ )
+)
+
+(define-method insert_before
+ (of-object "GSList")
+ (c-name "g_slist_insert_before")
+ (return-type "GSList*")
+ (parameters
+ '("GSList*" "sibling")
+ '("gpointer" "data")
+ )
+)
+
+(define-method concat
+ (of-object "GSList")
+ (c-name "g_slist_concat")
+ (return-type "GSList*")
+ (parameters
+ '("GSList*" "list2")
+ )
+)
+
+(define-method remove
+ (of-object "GSList")
+ (c-name "g_slist_remove")
+ (return-type "GSList*")
+ (parameters
+ '("gconstpointer" "data")
+ )
+)
+
+(define-method remove_all
+ (of-object "GSList")
+ (c-name "g_slist_remove_all")
+ (return-type "GSList*")
+ (parameters
+ '("gconstpointer" "data")
+ )
+)
+
+(define-method remove_link
+ (of-object "GSList")
+ (c-name "g_slist_remove_link")
+ (return-type "GSList*")
+ (parameters
+ '("GSList*" "link_")
+ )
+)
+
+(define-method delete_link
+ (of-object "GSList")
+ (c-name "g_slist_delete_link")
+ (return-type "GSList*")
+ (parameters
+ '("GSList*" "link_")
+ )
+)
+
+(define-method reverse
+ (of-object "GSList")
+ (c-name "g_slist_reverse")
+ (return-type "GSList*")
+)
+
+(define-method copy
+ (of-object "GSList")
+ (c-name "g_slist_copy")
+ (return-type "GSList*")
+)
+
+(define-method nth
+ (of-object "GSList")
+ (c-name "g_slist_nth")
+ (return-type "GSList*")
+ (parameters
+ '("guint" "n")
+ )
+)
+
+(define-method find
+ (of-object "GSList")
+ (c-name "g_slist_find")
+ (return-type "GSList*")
+ (parameters
+ '("gconstpointer" "data")
+ )
+)
+
+(define-method find_custom
+ (of-object "GSList")
+ (c-name "g_slist_find_custom")
+ (return-type "GSList*")
+ (parameters
+ '("gconstpointer" "data")
+ '("GCompareFunc" "func")
+ )
+)
+
+(define-method position
+ (of-object "GSList")
+ (c-name "g_slist_position")
+ (return-type "gint")
+ (parameters
+ '("GSList*" "llink")
+ )
+)
+
+(define-method index
+ (of-object "GSList")
+ (c-name "g_slist_index")
+ (return-type "gint")
+ (parameters
+ '("gconstpointer" "data")
+ )
+)
+
+(define-method last
+ (of-object "GSList")
+ (c-name "g_slist_last")
+ (return-type "GSList*")
+)
+
+(define-method length
+ (of-object "GSList")
+ (c-name "g_slist_length")
+ (return-type "guint")
+)
+
+(define-method foreach
+ (of-object "GSList")
+ (c-name "g_slist_foreach")
+ (return-type "none")
+ (parameters
+ '("GFunc" "func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method sort
+ (of-object "GSList")
+ (c-name "g_slist_sort")
+ (return-type "GSList*")
+ (parameters
+ '("GCompareFunc" "compare_func")
+ )
+)
+
+(define-method sort_with_data
+ (of-object "GSList")
+ (c-name "g_slist_sort_with_data")
+ (return-type "GSList*")
+ (parameters
+ '("GCompareDataFunc" "compare_func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method nth_data
+ (of-object "GSList")
+ (c-name "g_slist_nth_data")
+ (return-type "gpointer")
+ (parameters
+ '("guint" "n")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gspawn.h
+
+(define-function g_spawn_error_quark
+ (c-name "g_spawn_error_quark")
+ (return-type "GQuark")
+)
+
+(define-function g_spawn_async
+ (c-name "g_spawn_async")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "working_directory")
+ '("gchar**" "argv")
+ '("gchar**" "envp")
+ '("GSpawnFlags" "flags")
+ '("GSpawnChildSetupFunc" "child_setup")
+ '("gpointer" "user_data")
+ '("GPid*" "child_pid")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_spawn_async_with_pipes
+ (c-name "g_spawn_async_with_pipes")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "working_directory")
+ '("gchar**" "argv")
+ '("gchar**" "envp")
+ '("GSpawnFlags" "flags")
+ '("GSpawnChildSetupFunc" "child_setup")
+ '("gpointer" "user_data")
+ '("GPid*" "child_pid")
+ '("gint*" "standard_input")
+ '("gint*" "standard_output")
+ '("gint*" "standard_error")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_spawn_sync
+ (c-name "g_spawn_sync")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "working_directory")
+ '("gchar**" "argv")
+ '("gchar**" "envp")
+ '("GSpawnFlags" "flags")
+ '("GSpawnChildSetupFunc" "child_setup")
+ '("gpointer" "user_data")
+ '("gchar**" "standard_output")
+ '("gchar**" "standard_error")
+ '("gint*" "exit_status")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_spawn_command_line_sync
+ (c-name "g_spawn_command_line_sync")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "command_line")
+ '("gchar**" "standard_output")
+ '("gchar**" "standard_error")
+ '("gint*" "exit_status")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_spawn_command_line_async
+ (c-name "g_spawn_command_line_async")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "command_line")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_spawn_close_pid
+ (c-name "g_spawn_close_pid")
+ (return-type "none")
+ (parameters
+ '("GPid" "pid")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gstdio.h
+
+(define-function g_access
+ (c-name "g_access")
+ (return-type "int")
+ (parameters
+ '("const-gchar*" "filename")
+ '("int" "mode")
+ )
+)
+
+(define-function g_chmod
+ (c-name "g_chmod")
+ (return-type "int")
+ (parameters
+ '("const-gchar*" "filename")
+ '("int" "mode")
+ )
+)
+
+(define-function g_open
+ (c-name "g_open")
+ (return-type "int")
+ (parameters
+ '("const-gchar*" "filename")
+ '("int" "flags")
+ '("int" "mode")
+ )
+)
+
+(define-function g_creat
+ (c-name "g_creat")
+ (return-type "int")
+ (parameters
+ '("const-gchar*" "filename")
+ '("int" "mode")
+ )
+)
+
+(define-function g_rename
+ (c-name "g_rename")
+ (return-type "int")
+ (parameters
+ '("const-gchar*" "oldfilename")
+ '("const-gchar*" "newfilename")
+ )
+)
+
+(define-function g_mkdir
+ (c-name "g_mkdir")
+ (return-type "int")
+ (parameters
+ '("const-gchar*" "filename")
+ '("int" "mode")
+ )
+)
+
+(define-function g_chdir
+ (c-name "g_chdir")
+ (return-type "int")
+ (parameters
+ '("const-gchar*" "path")
+ )
+)
+
+(define-function g_stat
+ (c-name "g_stat")
+ (return-type "int")
+ (parameters
+ '("const-gchar*" "filename")
+ '("struct-stat*" "buf")
+ )
+)
+
+(define-function g_lstat
+ (c-name "g_lstat")
+ (return-type "int")
+ (parameters
+ '("const-gchar*" "filename")
+ '("struct-stat*" "buf")
+ )
+)
+
+(define-function g_unlink
+ (c-name "g_unlink")
+ (return-type "int")
+ (parameters
+ '("const-gchar*" "filename")
+ )
+)
+
+(define-function g_remove
+ (c-name "g_remove")
+ (return-type "int")
+ (parameters
+ '("const-gchar*" "filename")
+ )
+)
+
+(define-function g_rmdir
+ (c-name "g_rmdir")
+ (return-type "int")
+ (parameters
+ '("const-gchar*" "filename")
+ )
+)
+
+(define-function g_fopen
+ (c-name "g_fopen")
+ (return-type "FILE*")
+ (parameters
+ '("const-gchar*" "filename")
+ '("const-gchar*" "mode")
+ )
+)
+
+(define-function g_freopen
+ (c-name "g_freopen")
+ (return-type "FILE*")
+ (parameters
+ '("const-gchar*" "filename")
+ '("const-gchar*" "mode")
+ '("FILE*" "stream")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gstrfuncs.h
+
+(define-function g_ascii_tolower
+ (c-name "g_ascii_tolower")
+ (return-type "gchar")
+ (parameters
+ '("gchar" "c")
+ )
+)
+
+(define-function g_ascii_toupper
+ (c-name "g_ascii_toupper")
+ (return-type "gchar")
+ (parameters
+ '("gchar" "c")
+ )
+)
+
+(define-function g_ascii_digit_value
+ (c-name "g_ascii_digit_value")
+ (return-type "gint")
+ (parameters
+ '("gchar" "c")
+ )
+)
+
+(define-function g_ascii_xdigit_value
+ (c-name "g_ascii_xdigit_value")
+ (return-type "gint")
+ (parameters
+ '("gchar" "c")
+ )
+)
+
+(define-function g_strdelimit
+ (c-name "g_strdelimit")
+ (return-type "gchar*")
+ (parameters
+ '("gchar*" "string")
+ '("const-gchar*" "delimiters")
+ '("gchar" "new_delimiter")
+ )
+)
+
+(define-function g_strcanon
+ (c-name "g_strcanon")
+ (return-type "gchar*")
+ (parameters
+ '("gchar*" "string")
+ '("const-gchar*" "valid_chars")
+ '("gchar" "substitutor")
+ )
+)
+
+(define-function g_strerror
+ (c-name "g_strerror")
+ (return-type "const-gchar*")
+ (parameters
+ '("gint" "errnum")
+ )
+)
+
+(define-function g_strsignal
+ (c-name "g_strsignal")
+ (return-type "const-gchar*")
+ (parameters
+ '("gint" "signum")
+ )
+)
+
+(define-function g_strreverse
+ (c-name "g_strreverse")
+ (return-type "gchar*")
+ (parameters
+ '("gchar*" "string")
+ )
+)
+
+(define-function g_strlcpy
+ (c-name "g_strlcpy")
+ (return-type "gsize")
+ (parameters
+ '("gchar*" "dest")
+ '("const-gchar*" "src")
+ '("gsize" "dest_size")
+ )
+)
+
+(define-function g_strlcat
+ (c-name "g_strlcat")
+ (return-type "gsize")
+ (parameters
+ '("gchar*" "dest")
+ '("const-gchar*" "src")
+ '("gsize" "dest_size")
+ )
+)
+
+(define-function g_strstr_len
+ (c-name "g_strstr_len")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "haystack")
+ '("gssize" "haystack_len")
+ '("const-gchar*" "needle")
+ )
+)
+
+(define-function g_strrstr
+ (c-name "g_strrstr")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "haystack")
+ '("const-gchar*" "needle")
+ )
+)
+
+(define-function g_strrstr_len
+ (c-name "g_strrstr_len")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "haystack")
+ '("gssize" "haystack_len")
+ '("const-gchar*" "needle")
+ )
+)
+
+(define-function g_str_has_suffix
+ (c-name "g_str_has_suffix")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "str")
+ '("const-gchar*" "suffix")
+ )
+)
+
+(define-function g_str_has_prefix
+ (c-name "g_str_has_prefix")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "str")
+ '("const-gchar*" "prefix")
+ )
+)
+
+(define-function g_strtod
+ (c-name "g_strtod")
+ (return-type "gdouble")
+ (parameters
+ '("const-gchar*" "nptr")
+ '("gchar**" "endptr")
+ )
+)
+
+(define-function g_ascii_strtod
+ (c-name "g_ascii_strtod")
+ (return-type "gdouble")
+ (parameters
+ '("const-gchar*" "nptr")
+ '("gchar**" "endptr")
+ )
+)
+
+(define-function g_ascii_strtoull
+ (c-name "g_ascii_strtoull")
+ (return-type "guint64")
+ (parameters
+ '("const-gchar*" "nptr")
+ '("gchar**" "endptr")
+ '("guint" "base")
+ )
+)
+
+(define-function g_ascii_dtostr
+ (c-name "g_ascii_dtostr")
+ (return-type "gchar*")
+ (parameters
+ '("gchar*" "buffer")
+ '("gint" "buf_len")
+ '("gdouble" "d")
+ )
+)
+
+(define-function g_ascii_formatd
+ (c-name "g_ascii_formatd")
+ (return-type "gchar*")
+ (parameters
+ '("gchar*" "buffer")
+ '("gint" "buf_len")
+ '("const-gchar*" "format")
+ '("gdouble" "d")
+ )
+)
+
+(define-function g_strchug
+ (c-name "g_strchug")
+ (return-type "gchar*")
+ (parameters
+ '("gchar*" "string")
+ )
+)
+
+(define-function g_strchomp
+ (c-name "g_strchomp")
+ (return-type "gchar*")
+ (parameters
+ '("gchar*" "string")
+ )
+)
+
+(define-function g_ascii_strcasecmp
+ (c-name "g_ascii_strcasecmp")
+ (return-type "gint")
+ (parameters
+ '("const-gchar*" "s1")
+ '("const-gchar*" "s2")
+ )
+)
+
+(define-function g_ascii_strncasecmp
+ (c-name "g_ascii_strncasecmp")
+ (return-type "gint")
+ (parameters
+ '("const-gchar*" "s1")
+ '("const-gchar*" "s2")
+ '("gsize" "n")
+ )
+)
+
+(define-function g_ascii_strdown
+ (c-name "g_ascii_strdown")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "str")
+ '("gssize" "len")
+ )
+)
+
+(define-function g_ascii_strup
+ (c-name "g_ascii_strup")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "str")
+ '("gssize" "len")
+ )
+)
+
+(define-function g_strcasecmp
+ (c-name "g_strcasecmp")
+ (return-type "gint")
+ (parameters
+ '("const-gchar*" "s1")
+ '("const-gchar*" "s2")
+ )
+)
+
+(define-function g_strncasecmp
+ (c-name "g_strncasecmp")
+ (return-type "gint")
+ (parameters
+ '("const-gchar*" "s1")
+ '("const-gchar*" "s2")
+ '("guint" "n")
+ )
+)
+
+(define-function g_strdown
+ (c-name "g_strdown")
+ (return-type "gchar*")
+ (parameters
+ '("gchar*" "string")
+ )
+)
+
+(define-function g_strup
+ (c-name "g_strup")
+ (return-type "gchar*")
+ (parameters
+ '("gchar*" "string")
+ )
+)
+
+(define-function g_strdup
+ (c-name "g_strdup")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "str")
+ )
+)
+
+(define-function g_strdup_printf
+ (c-name "g_strdup_printf")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "format")
+ )
+ (varargs #t)
+)
+
+(define-function g_strdup_vprintf
+ (c-name "g_strdup_vprintf")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "format")
+ '("va_list" "args")
+ )
+)
+
+(define-function g_strndup
+ (c-name "g_strndup")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "str")
+ '("gsize" "n")
+ )
+)
+
+(define-function g_strnfill
+ (c-name "g_strnfill")
+ (return-type "gchar*")
+ (parameters
+ '("gsize" "length")
+ '("gchar" "fill_char")
+ )
+)
+
+(define-function g_strconcat
+ (c-name "g_strconcat")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "string1")
+ )
+ (varargs #t)
+)
+
+(define-function g_strjoin
+ (c-name "g_strjoin")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "separator")
+ )
+ (varargs #t)
+)
+
+(define-function g_strcompress
+ (c-name "g_strcompress")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "source")
+ )
+)
+
+(define-function g_strescape
+ (c-name "g_strescape")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "source")
+ '("const-gchar*" "exceptions")
+ )
+)
+
+(define-function g_memdup
+ (c-name "g_memdup")
+ (return-type "gpointer")
+ (parameters
+ '("gconstpointer" "mem")
+ '("guint" "byte_size")
+ )
+)
+
+(define-function g_strsplit
+ (c-name "g_strsplit")
+ (return-type "gchar**")
+ (parameters
+ '("const-gchar*" "string")
+ '("const-gchar*" "delimiter")
+ '("gint" "max_tokens")
+ )
+)
+
+(define-function g_strsplit_set
+ (c-name "g_strsplit_set")
+ (return-type "gchar**")
+ (parameters
+ '("const-gchar*" "string")
+ '("const-gchar*" "delimiters")
+ '("gint" "max_tokens")
+ )
+)
+
+(define-function g_strjoinv
+ (c-name "g_strjoinv")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "separator")
+ '("gchar**" "str_array")
+ )
+)
+
+(define-function g_strfreev
+ (c-name "g_strfreev")
+ (return-type "none")
+ (parameters
+ '("gchar**" "str_array")
+ )
+)
+
+(define-function g_strdupv
+ (c-name "g_strdupv")
+ (return-type "gchar**")
+ (parameters
+ '("gchar**" "str_array")
+ )
+)
+
+(define-function g_strv_length
+ (c-name "g_strv_length")
+ (return-type "guint")
+ (parameters
+ '("gchar**" "str_array")
+ )
+)
+
+(define-function g_stpcpy
+ (c-name "g_stpcpy")
+ (return-type "gchar*")
+ (parameters
+ '("gchar*" "dest")
+ '("const-char*" "src")
+ )
+)
+
+(define-function g_strip_context
+ (c-name "g_strip_context")
+ (return-type "const-gchar*")
+ (parameters
+ '("const-gchar*" "msgid")
+ '("const-gchar*" "msgval")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gstring.h
+
+(define-function g_string_chunk_new
+ (c-name "g_string_chunk_new")
+ (is-constructor-of "GStringChunk")
+ (return-type "GStringChunk*")
+ (parameters
+ '("gsize" "size")
+ )
+)
+
+(define-method free
+ (of-object "GStringChunk")
+ (c-name "g_string_chunk_free")
+ (return-type "none")
+)
+
+(define-method insert
+ (of-object "GStringChunk")
+ (c-name "g_string_chunk_insert")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "string")
+ )
+)
+
+(define-method insert_len
+ (of-object "GStringChunk")
+ (c-name "g_string_chunk_insert_len")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "string")
+ '("gssize" "len")
+ )
+)
+
+(define-function g_string_new
+ (c-name "g_string_new")
+ (is-constructor-of "GString")
+ (return-type "GString*")
+ (parameters
+ '("const-gchar*" "init")
+ )
+)
+
+(define-function g_string_new_len
+ (c-name "g_string_new_len")
+ (return-type "GString*")
+ (parameters
+ '("const-gchar*" "init")
+ '("gssize" "len")
+ )
+)
+
+(define-function g_string_sized_new
+ (c-name "g_string_sized_new")
+ (is-constructor-of "GStringSized")
+ (return-type "GString*")
+ (parameters
+ '("gsize" "dfl_size")
+ )
+)
+
+(define-method free
+ (of-object "GString")
+ (c-name "g_string_free")
+ (return-type "gchar*")
+ (parameters
+ '("gboolean" "free_segment")
+ )
+)
+
+(define-method equal
+ (of-object "GString")
+ (c-name "g_string_equal")
+ (return-type "gboolean")
+ (parameters
+ '("const-GString*" "v2")
+ )
+)
+
+(define-method hash
+ (of-object "GString")
+ (c-name "g_string_hash")
+ (return-type "guint")
+)
+
+(define-method assign
+ (of-object "GString")
+ (c-name "g_string_assign")
+ (return-type "GString*")
+ (parameters
+ '("const-gchar*" "rval")
+ )
+)
+
+(define-method truncate
+ (of-object "GString")
+ (c-name "g_string_truncate")
+ (return-type "GString*")
+ (parameters
+ '("gsize" "len")
+ )
+)
+
+(define-method set_size
+ (of-object "GString")
+ (c-name "g_string_set_size")
+ (return-type "GString*")
+ (parameters
+ '("gsize" "len")
+ )
+)
+
+(define-method insert_len
+ (of-object "GString")
+ (c-name "g_string_insert_len")
+ (return-type "GString*")
+ (parameters
+ '("gssize" "pos")
+ '("const-gchar*" "val")
+ '("gssize" "len")
+ )
+)
+
+(define-method append
+ (of-object "GString")
+ (c-name "g_string_append")
+ (return-type "GString*")
+ (parameters
+ '("const-gchar*" "val")
+ )
+)
+
+(define-method append_len
+ (of-object "GString")
+ (c-name "g_string_append_len")
+ (return-type "GString*")
+ (parameters
+ '("const-gchar*" "val")
+ '("gssize" "len")
+ )
+)
+
+(define-method append_c
+ (of-object "GString")
+ (c-name "g_string_append_c")
+ (return-type "GString*")
+ (parameters
+ '("gchar" "c")
+ )
+)
+
+(define-method append_unichar
+ (of-object "GString")
+ (c-name "g_string_append_unichar")
+ (return-type "GString*")
+ (parameters
+ '("gunichar" "wc")
+ )
+)
+
+(define-method prepend
+ (of-object "GString")
+ (c-name "g_string_prepend")
+ (return-type "GString*")
+ (parameters
+ '("const-gchar*" "val")
+ )
+)
+
+(define-method prepend_c
+ (of-object "GString")
+ (c-name "g_string_prepend_c")
+ (return-type "GString*")
+ (parameters
+ '("gchar" "c")
+ )
+)
+
+(define-method prepend_unichar
+ (of-object "GString")
+ (c-name "g_string_prepend_unichar")
+ (return-type "GString*")
+ (parameters
+ '("gunichar" "wc")
+ )
+)
+
+(define-method prepend_len
+ (of-object "GString")
+ (c-name "g_string_prepend_len")
+ (return-type "GString*")
+ (parameters
+ '("const-gchar*" "val")
+ '("gssize" "len")
+ )
+)
+
+(define-method insert
+ (of-object "GString")
+ (c-name "g_string_insert")
+ (return-type "GString*")
+ (parameters
+ '("gssize" "pos")
+ '("const-gchar*" "val")
+ )
+)
+
+(define-method insert_c
+ (of-object "GString")
+ (c-name "g_string_insert_c")
+ (return-type "GString*")
+ (parameters
+ '("gssize" "pos")
+ '("gchar" "c")
+ )
+)
+
+(define-method insert_unichar
+ (of-object "GString")
+ (c-name "g_string_insert_unichar")
+ (return-type "GString*")
+ (parameters
+ '("gssize" "pos")
+ '("gunichar" "wc")
+ )
+)
+
+(define-method erase
+ (of-object "GString")
+ (c-name "g_string_erase")
+ (return-type "GString*")
+ (parameters
+ '("gssize" "pos")
+ '("gssize" "len")
+ )
+)
+
+(define-method ascii_down
+ (of-object "GString")
+ (c-name "g_string_ascii_down")
+ (return-type "GString*")
+)
+
+(define-method ascii_up
+ (of-object "GString")
+ (c-name "g_string_ascii_up")
+ (return-type "GString*")
+)
+
+(define-method printf
+ (of-object "GString")
+ (c-name "g_string_printf")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "format")
+ )
+ (varargs #t)
+)
+
+(define-method append_printf
+ (of-object "GString")
+ (c-name "g_string_append_printf")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "format")
+ )
+ (varargs #t)
+)
+
+(define-method up
+ (of-object "GString")
+ (c-name "g_string_up")
+ (return-type "GString*")
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gthread.h
+
+(define-function g_thread_init
+ (c-name "g_thread_init")
+ (return-type "none")
+ (parameters
+ '("GThreadFunctions*" "vtable")
+ )
+)
+
+(define-function g_thread_init_with_errorcheck_mutexes
+ (c-name "g_thread_init_with_errorcheck_mutexes")
+ (return-type "none")
+ (parameters
+ '("GThreadFunctions*" "vtable")
+ )
+)
+
+(define-function g_static_mutex_get_mutex_impl
+ (c-name "g_static_mutex_get_mutex_impl")
+ (return-type "GMutex*")
+ (parameters
+ '("GMutex**" "mutex")
+ )
+)
+
+(define-function g_thread_create_full
+ (c-name "g_thread_create_full")
+ (return-type "GThread*")
+ (parameters
+ '("GThreadFunc" "func")
+ '("gpointer" "data")
+ '("gulong" "stack_size")
+ '("gboolean" "joinable")
+ '("gboolean" "bound")
+ '("GThreadPriority" "priority")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_thread_self
+ (c-name "g_thread_self")
+ (return-type "GThread*")
+)
+
+(define-function g_thread_exit
+ (c-name "g_thread_exit")
+ (return-type "none")
+ (parameters
+ '("gpointer" "retval")
+ )
+)
+
+(define-method join
+ (of-object "GThread")
+ (c-name "g_thread_join")
+ (return-type "gpointer")
+)
+
+(define-method set_priority
+ (of-object "GThread")
+ (c-name "g_thread_set_priority")
+ (return-type "none")
+ (parameters
+ '("GThreadPriority" "priority")
+ )
+)
+
+(define-method init
+ (of-object "GStaticMutex")
+ (c-name "g_static_mutex_init")
+ (return-type "none")
+)
+
+(define-method free
+ (of-object "GStaticMutex")
+ (c-name "g_static_mutex_free")
+ (return-type "none")
+)
+
+(define-method init
+ (of-object "GStaticPrivate")
+ (c-name "g_static_private_init")
+ (return-type "none")
+)
+
+(define-method get
+ (of-object "GStaticPrivate")
+ (c-name "g_static_private_get")
+ (return-type "gpointer")
+)
+
+(define-method set
+ (of-object "GStaticPrivate")
+ (c-name "g_static_private_set")
+ (return-type "none")
+ (parameters
+ '("gpointer" "data")
+ '("GDestroyNotify" "notify")
+ )
+)
+
+(define-method free
+ (of-object "GStaticPrivate")
+ (c-name "g_static_private_free")
+ (return-type "none")
+)
+
+(define-method init
+ (of-object "GStaticRecMutex")
+ (c-name "g_static_rec_mutex_init")
+ (return-type "none")
+)
+
+(define-method lock
+ (of-object "GStaticRecMutex")
+ (c-name "g_static_rec_mutex_lock")
+ (return-type "none")
+)
+
+(define-method trylock
+ (of-object "GStaticRecMutex")
+ (c-name "g_static_rec_mutex_trylock")
+ (return-type "gboolean")
+)
+
+(define-method unlock
+ (of-object "GStaticRecMutex")
+ (c-name "g_static_rec_mutex_unlock")
+ (return-type "none")
+)
+
+(define-method lock_full
+ (of-object "GStaticRecMutex")
+ (c-name "g_static_rec_mutex_lock_full")
+ (return-type "none")
+ (parameters
+ '("guint" "depth")
+ )
+)
+
+(define-method unlock_full
+ (of-object "GStaticRecMutex")
+ (c-name "g_static_rec_mutex_unlock_full")
+ (return-type "guint")
+)
+
+(define-method free
+ (of-object "GStaticRecMutex")
+ (c-name "g_static_rec_mutex_free")
+ (return-type "none")
+)
+
+(define-method init
+ (of-object "GStaticRWLock")
+ (c-name "g_static_rw_lock_init")
+ (return-type "none")
+)
+
+(define-method reader_lock
+ (of-object "GStaticRWLock")
+ (c-name "g_static_rw_lock_reader_lock")
+ (return-type "none")
+)
+
+(define-method reader_trylock
+ (of-object "GStaticRWLock")
+ (c-name "g_static_rw_lock_reader_trylock")
+ (return-type "gboolean")
+)
+
+(define-method reader_unlock
+ (of-object "GStaticRWLock")
+ (c-name "g_static_rw_lock_reader_unlock")
+ (return-type "none")
+)
+
+(define-method writer_lock
+ (of-object "GStaticRWLock")
+ (c-name "g_static_rw_lock_writer_lock")
+ (return-type "none")
+)
+
+(define-method writer_trylock
+ (of-object "GStaticRWLock")
+ (c-name "g_static_rw_lock_writer_trylock")
+ (return-type "gboolean")
+)
+
+(define-method writer_unlock
+ (of-object "GStaticRWLock")
+ (c-name "g_static_rw_lock_writer_unlock")
+ (return-type "none")
+)
+
+(define-method free
+ (of-object "GStaticRWLock")
+ (c-name "g_static_rw_lock_free")
+ (return-type "none")
+)
+
+(define-method impl
+ (of-object "GOnce")
+ (c-name "g_once_impl")
+ (return-type "gpointer")
+ (parameters
+ '("GThreadFunc" "func")
+ '("gpointer" "arg")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gthreadinit.h
+
+(define-function g_thread_init_glib
+ (c-name "g_thread_init_glib")
+ (return-type "none")
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gthreadpool.h
+
+(define-function g_thread_pool_new
+ (c-name "g_thread_pool_new")
+ (is-constructor-of "GThreadPool")
+ (return-type "GThreadPool*")
+ (parameters
+ '("GFunc" "func")
+ '("gpointer" "user_data")
+ '("gint" "max_threads")
+ '("gboolean" "exclusive")
+ '("GError**" "error")
+ )
+)
+
+(define-method push
+ (of-object "GThreadPool")
+ (c-name "g_thread_pool_push")
+ (return-type "none")
+ (parameters
+ '("gpointer" "data")
+ '("GError**" "error")
+ )
+)
+
+(define-method set_max_threads
+ (of-object "GThreadPool")
+ (c-name "g_thread_pool_set_max_threads")
+ (return-type "none")
+ (parameters
+ '("gint" "max_threads")
+ '("GError**" "error")
+ )
+)
+
+(define-method get_max_threads
+ (of-object "GThreadPool")
+ (c-name "g_thread_pool_get_max_threads")
+ (return-type "gint")
+)
+
+(define-method get_num_threads
+ (of-object "GThreadPool")
+ (c-name "g_thread_pool_get_num_threads")
+ (return-type "guint")
+)
+
+(define-method unprocessed
+ (of-object "GThreadPool")
+ (c-name "g_thread_pool_unprocessed")
+ (return-type "guint")
+)
+
+(define-method free
+ (of-object "GThreadPool")
+ (c-name "g_thread_pool_free")
+ (return-type "none")
+ (parameters
+ '("gboolean" "immediate")
+ '("gboolean" "wait")
+ )
+)
+
+(define-function g_thread_pool_set_max_unused_threads
+ (c-name "g_thread_pool_set_max_unused_threads")
+ (return-type "none")
+ (parameters
+ '("gint" "max_threads")
+ )
+)
+
+(define-function g_thread_pool_get_max_unused_threads
+ (c-name "g_thread_pool_get_max_unused_threads")
+ (return-type "gint")
+)
+
+(define-function g_thread_pool_get_num_unused_threads
+ (c-name "g_thread_pool_get_num_unused_threads")
+ (return-type "guint")
+)
+
+(define-function g_thread_pool_stop_unused_threads
+ (c-name "g_thread_pool_stop_unused_threads")
+ (return-type "none")
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gtimer.h
+
+(define-function g_timer_new
+ (c-name "g_timer_new")
+ (is-constructor-of "GTimer")
+ (return-type "GTimer*")
+)
+
+(define-method destroy
+ (of-object "GTimer")
+ (c-name "g_timer_destroy")
+ (return-type "none")
+)
+
+(define-method start
+ (of-object "GTimer")
+ (c-name "g_timer_start")
+ (return-type "none")
+)
+
+(define-method stop
+ (of-object "GTimer")
+ (c-name "g_timer_stop")
+ (return-type "none")
+)
+
+(define-method reset
+ (of-object "GTimer")
+ (c-name "g_timer_reset")
+ (return-type "none")
+)
+
+(define-method continue
+ (of-object "GTimer")
+ (c-name "g_timer_continue")
+ (return-type "none")
+)
+
+(define-method elapsed
+ (of-object "GTimer")
+ (c-name "g_timer_elapsed")
+ (return-type "gdouble")
+ (parameters
+ '("gulong*" "microseconds")
+ )
+)
+
+(define-function g_usleep
+ (c-name "g_usleep")
+ (return-type "none")
+ (parameters
+ '("gulong" "microseconds")
+ )
+)
+
+(define-method add
+ (of-object "GTimeVal")
+ (c-name "g_time_val_add")
+ (return-type "none")
+ (parameters
+ '("glong" "microseconds")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gtree.h
+
+(define-function g_tree_new
+ (c-name "g_tree_new")
+ (is-constructor-of "GTree")
+ (return-type "GTree*")
+ (parameters
+ '("GCompareFunc" "key_compare_func")
+ )
+)
+
+(define-function g_tree_new_with_data
+ (c-name "g_tree_new_with_data")
+ (return-type "GTree*")
+ (parameters
+ '("GCompareDataFunc" "key_compare_func")
+ '("gpointer" "key_compare_data")
+ )
+)
+
+(define-function g_tree_new_full
+ (c-name "g_tree_new_full")
+ (return-type "GTree*")
+ (parameters
+ '("GCompareDataFunc" "key_compare_func")
+ '("gpointer" "key_compare_data")
+ '("GDestroyNotify" "key_destroy_func")
+ '("GDestroyNotify" "value_destroy_func")
+ )
+)
+
+(define-method destroy
+ (of-object "GTree")
+ (c-name "g_tree_destroy")
+ (return-type "none")
+)
+
+(define-method insert
+ (of-object "GTree")
+ (c-name "g_tree_insert")
+ (return-type "none")
+ (parameters
+ '("gpointer" "key")
+ '("gpointer" "value")
+ )
+)
+
+(define-method replace
+ (of-object "GTree")
+ (c-name "g_tree_replace")
+ (return-type "none")
+ (parameters
+ '("gpointer" "key")
+ '("gpointer" "value")
+ )
+)
+
+(define-method remove
+ (of-object "GTree")
+ (c-name "g_tree_remove")
+ (return-type "gboolean")
+ (parameters
+ '("gconstpointer" "key")
+ )
+)
+
+(define-method steal
+ (of-object "GTree")
+ (c-name "g_tree_steal")
+ (return-type "gboolean")
+ (parameters
+ '("gconstpointer" "key")
+ )
+)
+
+(define-method lookup
+ (of-object "GTree")
+ (c-name "g_tree_lookup")
+ (return-type "gpointer")
+ (parameters
+ '("gconstpointer" "key")
+ )
+)
+
+(define-method lookup_extended
+ (of-object "GTree")
+ (c-name "g_tree_lookup_extended")
+ (return-type "gboolean")
+ (parameters
+ '("gconstpointer" "lookup_key")
+ '("gpointer*" "orig_key")
+ '("gpointer*" "value")
+ )
+)
+
+(define-method foreach
+ (of-object "GTree")
+ (c-name "g_tree_foreach")
+ (return-type "none")
+ (parameters
+ '("GTraverseFunc" "func")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method traverse
+ (of-object "GTree")
+ (c-name "g_tree_traverse")
+ (return-type "none")
+ (parameters
+ '("GTraverseFunc" "traverse_func")
+ '("GTraverseType" "traverse_type")
+ '("gpointer" "user_data")
+ )
+)
+
+(define-method search
+ (of-object "GTree")
+ (c-name "g_tree_search")
+ (return-type "gpointer")
+ (parameters
+ '("GCompareFunc" "search_func")
+ '("gconstpointer" "user_data")
+ )
+)
+
+(define-method height
+ (of-object "GTree")
+ (c-name "g_tree_height")
+ (return-type "gint")
+)
+
+(define-method nnodes
+ (of-object "GTree")
+ (c-name "g_tree_nnodes")
+ (return-type "gint")
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gtypes.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gunibreak.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gunichartables.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gunicode.h
+
+(define-function g_get_charset
+ (c-name "g_get_charset")
+ (return-type "gboolean")
+ (parameters
+ '("const-char**" "charset")
+ )
+)
+
+(define-method isalnum
+ (of-object "gunichar")
+ (c-name "g_unichar_isalnum")
+ (return-type "gboolean")
+)
+
+(define-method isalpha
+ (of-object "gunichar")
+ (c-name "g_unichar_isalpha")
+ (return-type "gboolean")
+)
+
+(define-method iscntrl
+ (of-object "gunichar")
+ (c-name "g_unichar_iscntrl")
+ (return-type "gboolean")
+)
+
+(define-method isdigit
+ (of-object "gunichar")
+ (c-name "g_unichar_isdigit")
+ (return-type "gboolean")
+)
+
+(define-method isgraph
+ (of-object "gunichar")
+ (c-name "g_unichar_isgraph")
+ (return-type "gboolean")
+)
+
+(define-method islower
+ (of-object "gunichar")
+ (c-name "g_unichar_islower")
+ (return-type "gboolean")
+)
+
+(define-method isprint
+ (of-object "gunichar")
+ (c-name "g_unichar_isprint")
+ (return-type "gboolean")
+)
+
+(define-method ispunct
+ (of-object "gunichar")
+ (c-name "g_unichar_ispunct")
+ (return-type "gboolean")
+)
+
+(define-method isspace
+ (of-object "gunichar")
+ (c-name "g_unichar_isspace")
+ (return-type "gboolean")
+)
+
+(define-method isupper
+ (of-object "gunichar")
+ (c-name "g_unichar_isupper")
+ (return-type "gboolean")
+)
+
+(define-method isxdigit
+ (of-object "gunichar")
+ (c-name "g_unichar_isxdigit")
+ (return-type "gboolean")
+)
+
+(define-method istitle
+ (of-object "gunichar")
+ (c-name "g_unichar_istitle")
+ (return-type "gboolean")
+)
+
+(define-method isdefined
+ (of-object "gunichar")
+ (c-name "g_unichar_isdefined")
+ (return-type "gboolean")
+)
+
+(define-method iswide
+ (of-object "gunichar")
+ (c-name "g_unichar_iswide")
+ (return-type "gboolean")
+)
+
+(define-method toupper
+ (of-object "gunichar")
+ (c-name "g_unichar_toupper")
+ (return-type "gunichar")
+)
+
+(define-method tolower
+ (of-object "gunichar")
+ (c-name "g_unichar_tolower")
+ (return-type "gunichar")
+)
+
+(define-method totitle
+ (of-object "gunichar")
+ (c-name "g_unichar_totitle")
+ (return-type "gunichar")
+)
+
+(define-method digit_value
+ (of-object "gunichar")
+ (c-name "g_unichar_digit_value")
+ (return-type "gint")
+)
+
+(define-method xdigit_value
+ (of-object "gunichar")
+ (c-name "g_unichar_xdigit_value")
+ (return-type "gint")
+)
+
+(define-method type
+ (of-object "gunichar")
+ (c-name "g_unichar_type")
+ (return-type "GUnicodeType")
+)
+
+(define-method break_type
+ (of-object "gunichar")
+ (c-name "g_unichar_break_type")
+ (return-type "GUnicodeBreakType")
+)
+
+(define-function g_unicode_canonical_ordering
+ (c-name "g_unicode_canonical_ordering")
+ (return-type "none")
+ (parameters
+ '("gunichar*" "string")
+ '("gsize" "len")
+ )
+)
+
+(define-function g_unicode_canonical_decomposition
+ (c-name "g_unicode_canonical_decomposition")
+ (return-type "gunichar*")
+ (parameters
+ '("gunichar" "ch")
+ '("gsize*" "result_len")
+ )
+)
+
+(define-function g_utf8_get_char
+ (c-name "g_utf8_get_char")
+ (return-type "gunichar")
+ (parameters
+ '("const-gchar*" "p")
+ )
+)
+
+(define-function g_utf8_get_char_validated
+ (c-name "g_utf8_get_char_validated")
+ (return-type "gunichar")
+ (parameters
+ '("const-gchar*" "p")
+ '("gssize" "max_len")
+ )
+)
+
+(define-function g_utf8_offset_to_pointer
+ (c-name "g_utf8_offset_to_pointer")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "str")
+ '("glong" "offset")
+ )
+)
+
+(define-function g_utf8_pointer_to_offset
+ (c-name "g_utf8_pointer_to_offset")
+ (return-type "glong")
+ (parameters
+ '("const-gchar*" "str")
+ '("const-gchar*" "pos")
+ )
+)
+
+(define-function g_utf8_prev_char
+ (c-name "g_utf8_prev_char")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "p")
+ )
+)
+
+(define-function g_utf8_find_next_char
+ (c-name "g_utf8_find_next_char")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "p")
+ '("const-gchar*" "end")
+ )
+)
+
+(define-function g_utf8_find_prev_char
+ (c-name "g_utf8_find_prev_char")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "str")
+ '("const-gchar*" "p")
+ )
+)
+
+(define-function g_utf8_strlen
+ (c-name "g_utf8_strlen")
+ (return-type "glong")
+ (parameters
+ '("const-gchar*" "p")
+ '("gssize" "max")
+ )
+)
+
+(define-function g_utf8_strncpy
+ (c-name "g_utf8_strncpy")
+ (return-type "gchar*")
+ (parameters
+ '("gchar*" "dest")
+ '("const-gchar*" "src")
+ '("gsize" "n")
+ )
+)
+
+(define-function g_utf8_strchr
+ (c-name "g_utf8_strchr")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "p")
+ '("gssize" "len")
+ '("gunichar" "c")
+ )
+)
+
+(define-function g_utf8_strrchr
+ (c-name "g_utf8_strrchr")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "p")
+ '("gssize" "len")
+ '("gunichar" "c")
+ )
+)
+
+(define-function g_utf8_strreverse
+ (c-name "g_utf8_strreverse")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "str")
+ '("gssize" "len")
+ )
+)
+
+(define-function g_utf8_to_utf16
+ (c-name "g_utf8_to_utf16")
+ (return-type "gunichar2*")
+ (parameters
+ '("const-gchar*" "str")
+ '("glong" "len")
+ '("glong*" "items_read")
+ '("glong*" "items_written")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_utf8_to_ucs4
+ (c-name "g_utf8_to_ucs4")
+ (return-type "gunichar*")
+ (parameters
+ '("const-gchar*" "str")
+ '("glong" "len")
+ '("glong*" "items_read")
+ '("glong*" "items_written")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_utf8_to_ucs4_fast
+ (c-name "g_utf8_to_ucs4_fast")
+ (return-type "gunichar*")
+ (parameters
+ '("const-gchar*" "str")
+ '("glong" "len")
+ '("glong*" "items_written")
+ )
+)
+
+(define-function g_utf16_to_ucs4
+ (c-name "g_utf16_to_ucs4")
+ (return-type "gunichar*")
+ (parameters
+ '("const-gunichar2*" "str")
+ '("glong" "len")
+ '("glong*" "items_read")
+ '("glong*" "items_written")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_utf16_to_utf8
+ (c-name "g_utf16_to_utf8")
+ (return-type "gchar*")
+ (parameters
+ '("const-gunichar2*" "str")
+ '("glong" "len")
+ '("glong*" "items_read")
+ '("glong*" "items_written")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_ucs4_to_utf16
+ (c-name "g_ucs4_to_utf16")
+ (return-type "gunichar2*")
+ (parameters
+ '("const-gunichar*" "str")
+ '("glong" "len")
+ '("glong*" "items_read")
+ '("glong*" "items_written")
+ '("GError**" "error")
+ )
+)
+
+(define-function g_ucs4_to_utf8
+ (c-name "g_ucs4_to_utf8")
+ (return-type "gchar*")
+ (parameters
+ '("const-gunichar*" "str")
+ '("glong" "len")
+ '("glong*" "items_read")
+ '("glong*" "items_written")
+ '("GError**" "error")
+ )
+)
+
+(define-method to_utf8
+ (of-object "gunichar")
+ (c-name "g_unichar_to_utf8")
+ (return-type "gint")
+ (parameters
+ '("gchar*" "outbuf")
+ )
+)
+
+(define-function g_utf8_validate
+ (c-name "g_utf8_validate")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "str")
+ '("gssize" "max_len")
+ '("const-gchar**" "end")
+ )
+)
+
+(define-method validate
+ (of-object "gunichar")
+ (c-name "g_unichar_validate")
+ (return-type "gboolean")
+)
+
+(define-function g_utf8_strup
+ (c-name "g_utf8_strup")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "str")
+ '("gssize" "len")
+ )
+)
+
+(define-function g_utf8_strdown
+ (c-name "g_utf8_strdown")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "str")
+ '("gssize" "len")
+ )
+)
+
+(define-function g_utf8_casefold
+ (c-name "g_utf8_casefold")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "str")
+ '("gssize" "len")
+ )
+)
+
+(define-function g_utf8_normalize
+ (c-name "g_utf8_normalize")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "str")
+ '("gssize" "len")
+ '("GNormalizeMode" "mode")
+ )
+)
+
+(define-function g_utf8_collate
+ (c-name "g_utf8_collate")
+ (return-type "gint")
+ (parameters
+ '("const-gchar*" "str1")
+ '("const-gchar*" "str2")
+ )
+)
+
+(define-function g_utf8_collate_key
+ (c-name "g_utf8_collate_key")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "str")
+ '("gssize" "len")
+ )
+)
+
+(define-function g_utf8_collate_key_for_filename
+ (c-name "g_utf8_collate_key_for_filename")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "str")
+ '("gssize" "len")
+ )
+)
+
+(define-method get_mirror_char
+ (of-object "gunichar")
+ (c-name "g_unichar_get_mirror_char")
+ (return-type "gboolean")
+ (parameters
+ '("gunichar*" "mirrored_ch")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gunicodeprivate.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gunicomp.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gunidecomp.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gutils.h
+
+(define-function g_get_user_name
+ (c-name "g_get_user_name")
+ (return-type "const-gchar*")
+)
+
+(define-function g_get_real_name
+ (c-name "g_get_real_name")
+ (return-type "const-gchar*")
+)
+
+(define-function g_get_home_dir
+ (c-name "g_get_home_dir")
+ (return-type "const-gchar*")
+)
+
+(define-function g_get_tmp_dir
+ (c-name "g_get_tmp_dir")
+ (return-type "const-gchar*")
+)
+
+(define-function g_get_host_name
+ (c-name "g_get_host_name")
+ (return-type "const-gchar*")
+)
+
+(define-function g_get_prgname
+ (c-name "g_get_prgname")
+ (return-type "gchar*")
+)
+
+(define-function g_set_prgname
+ (c-name "g_set_prgname")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "prgname")
+ )
+)
+
+(define-function g_get_application_name
+ (c-name "g_get_application_name")
+ (return-type "const-gchar*")
+)
+
+(define-function g_set_application_name
+ (c-name "g_set_application_name")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "application_name")
+ )
+)
+
+(define-function g_get_user_data_dir
+ (c-name "g_get_user_data_dir")
+ (return-type "const-gchar*")
+)
+
+(define-function g_get_user_config_dir
+ (c-name "g_get_user_config_dir")
+ (return-type "const-gchar*")
+)
+
+(define-function g_get_user_cache_dir
+ (c-name "g_get_user_cache_dir")
+ (return-type "const-gchar*")
+)
+
+(define-function g_parse_debug_string
+ (c-name "g_parse_debug_string")
+ (return-type "guint")
+ (parameters
+ '("const-gchar*" "string")
+ '("const-GDebugKey*" "keys")
+ '("guint" "nkeys")
+ )
+)
+
+(define-function g_snprintf
+ (c-name "g_snprintf")
+ (return-type "gint")
+ (parameters
+ '("gchar*" "string")
+ '("gulong" "n")
+ '("gchar-const*" "format")
+ )
+ (varargs #t)
+)
+
+(define-function g_vsnprintf
+ (c-name "g_vsnprintf")
+ (return-type "gint")
+ (parameters
+ '("gchar*" "string")
+ '("gulong" "n")
+ '("gchar-const*" "format")
+ '("va_list" "args")
+ )
+)
+
+(define-function g_path_is_absolute
+ (c-name "g_path_is_absolute")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "file_name")
+ )
+)
+
+(define-function g_path_skip_root
+ (c-name "g_path_skip_root")
+ (return-type "const-gchar*")
+ (parameters
+ '("const-gchar*" "file_name")
+ )
+)
+
+(define-function g_basename
+ (c-name "g_basename")
+ (return-type "const-gchar*")
+ (parameters
+ '("const-gchar*" "file_name")
+ )
+)
+
+(define-function g_get_current_dir
+ (c-name "g_get_current_dir")
+ (return-type "gchar*")
+)
+
+(define-function g_path_get_basename
+ (c-name "g_path_get_basename")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "file_name")
+ )
+)
+
+(define-function g_path_get_dirname
+ (c-name "g_path_get_dirname")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "file_name")
+ )
+)
+
+(define-function g_nullify_pointer
+ (c-name "g_nullify_pointer")
+ (return-type "none")
+ (parameters
+ '("gpointer*" "nullify_location")
+ )
+)
+
+(define-function g_getenv
+ (c-name "g_getenv")
+ (return-type "const-gchar*")
+ (parameters
+ '("const-gchar*" "variable")
+ )
+)
+
+(define-function g_setenv
+ (c-name "g_setenv")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "variable")
+ '("const-gchar*" "value")
+ '("gboolean" "overwrite")
+ )
+)
+
+(define-function g_unsetenv
+ (c-name "g_unsetenv")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "variable")
+ )
+)
+
+(define-function g_listenv
+ (c-name "g_listenv")
+ (return-type "gchar**")
+)
+
+(define-function g_atexit
+ (c-name "g_atexit")
+ (return-type "none")
+ (parameters
+ '("GVoidFunc" "func")
+ )
+)
+
+(define-function g_find_program_in_path
+ (c-name "g_find_program_in_path")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "program")
+ )
+)
+
+(define-function glib_check_version
+ (c-name "glib_check_version")
+ (return-type "const-gchar*")
+ (parameters
+ '("guint" "required_major")
+ '("guint" "required_minor")
+ '("guint" "required_micro")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/glib/gwin32.h
+
+(define-function g_win32_ftruncate
+ (c-name "g_win32_ftruncate")
+ (return-type "gint")
+ (parameters
+ '("gint" "f")
+ '("guint" "size")
+ )
+)
+
+(define-function g_win32_getlocale
+ (c-name "g_win32_getlocale")
+ (return-type "gchar*")
+)
+
+(define-function g_win32_error_message
+ (c-name "g_win32_error_message")
+ (return-type "gchar*")
+ (parameters
+ '("gint" "error")
+ )
+)
+
+(define-function g_win32_get_package_installation_directory
+ (c-name "g_win32_get_package_installation_directory")
+ (return-type "gchar*")
+ (parameters
+ '("gchar*" "package")
+ '("gchar*" "dll_name")
+ )
+)
+
+(define-function g_win32_get_package_installation_subdirectory
+ (c-name "g_win32_get_package_installation_subdirectory")
+ (return-type "gchar*")
+ (parameters
+ '("gchar*" "package")
+ '("gchar*" "dll_name")
+ '("gchar*" "subdir")
+ )
+)
+
+(define-function g_win32_get_windows_version
+ (c-name "g_win32_get_windows_version")
+ (return-type "guint")
+)
+
+(define-function g_win32_locale_filename_from_utf8
+ (c-name "g_win32_locale_filename_from_utf8")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "utf8filename")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/gboxed.h
+
+(define-function g_boxed_copy
+ (c-name "g_boxed_copy")
+ (return-type "gpointer")
+ (parameters
+ '("GType" "boxed_type")
+ '("gconstpointer" "src_boxed")
+ )
+)
+
+(define-function g_boxed_free
+ (c-name "g_boxed_free")
+ (return-type "none")
+ (parameters
+ '("GType" "boxed_type")
+ '("gpointer" "boxed")
+ )
+)
+
+(define-method set_boxed
+ (of-object "GValue")
+ (c-name "g_value_set_boxed")
+ (return-type "none")
+ (parameters
+ '("gconstpointer" "v_boxed")
+ )
+)
+
+(define-method set_static_boxed
+ (of-object "GValue")
+ (c-name "g_value_set_static_boxed")
+ (return-type "none")
+ (parameters
+ '("gconstpointer" "v_boxed")
+ )
+)
+
+(define-method get_boxed
+ (of-object "GValue")
+ (c-name "g_value_get_boxed")
+ (return-type "gpointer")
+)
+
+(define-method dup_boxed
+ (of-object "GValue")
+ (c-name "g_value_dup_boxed")
+ (return-type "gpointer")
+)
+
+(define-function g_boxed_type_register_static
+ (c-name "g_boxed_type_register_static")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "name")
+ '("GBoxedCopyFunc" "boxed_copy")
+ '("GBoxedFreeFunc" "boxed_free")
+ )
+)
+
+(define-method take_boxed
+ (of-object "GValue")
+ (c-name "g_value_take_boxed")
+ (return-type "none")
+ (parameters
+ '("gconstpointer" "v_boxed")
+ )
+)
+
+(define-method set_boxed_take_ownership
+ (of-object "GValue")
+ (c-name "g_value_set_boxed_take_ownership")
+ (return-type "none")
+ (parameters
+ '("gconstpointer" "v_boxed")
+ )
+)
+
+(define-function g_closure_get_type
+ (c-name "g_closure_get_type")
+ (return-type "GType")
+)
+
+(define-function g_value_get_type
+ (c-name "g_value_get_type")
+ (return-type "GType")
+)
+
+(define-function g_value_array_get_type
+ (c-name "g_value_array_get_type")
+ (return-type "GType")
+)
+
+(define-function g_date_get_type
+ (c-name "g_date_get_type")
+ (return-type "GType")
+)
+
+(define-function g_strv_get_type
+ (c-name "g_strv_get_type")
+ (return-type "GType")
+)
+
+(define-function g_gstring_get_type
+ (c-name "g_gstring_get_type")
+ (return-type "GType")
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/gclosure.h
+
+(define-function g_cclosure_new
+ (c-name "g_cclosure_new")
+ (is-constructor-of "GCclosure")
+ (return-type "GClosure*")
+ (parameters
+ '("GCallback" "callback_func")
+ '("gpointer" "user_data")
+ '("GClosureNotify" "destroy_data")
+ )
+)
+
+(define-function g_cclosure_new_swap
+ (c-name "g_cclosure_new_swap")
+ (return-type "GClosure*")
+ (parameters
+ '("GCallback" "callback_func")
+ '("gpointer" "user_data")
+ '("GClosureNotify" "destroy_data")
+ )
+)
+
+(define-function g_signal_type_cclosure_new
+ (c-name "g_signal_type_cclosure_new")
+ (is-constructor-of "GSignalTypeCclosure")
+ (return-type "GClosure*")
+ (parameters
+ '("GType" "itype")
+ '("guint" "struct_offset")
+ )
+)
+
+(define-method ref
+ (of-object "GClosure")
+ (c-name "g_closure_ref")
+ (return-type "GClosure*")
+)
+
+(define-method sink
+ (of-object "GClosure")
+ (c-name "g_closure_sink")
+ (return-type "none")
+)
+
+(define-method unref
+ (of-object "GClosure")
+ (c-name "g_closure_unref")
+ (return-type "none")
+)
+
+(define-function g_closure_new_simple
+ (c-name "g_closure_new_simple")
+ (return-type "GClosure*")
+ (parameters
+ '("guint" "sizeof_closure")
+ '("gpointer" "data")
+ )
+)
+
+(define-method add_finalize_notifier
+ (of-object "GClosure")
+ (c-name "g_closure_add_finalize_notifier")
+ (return-type "none")
+ (parameters
+ '("gpointer" "notify_data")
+ '("GClosureNotify" "notify_func")
+ )
+)
+
+(define-method remove_finalize_notifier
+ (of-object "GClosure")
+ (c-name "g_closure_remove_finalize_notifier")
+ (return-type "none")
+ (parameters
+ '("gpointer" "notify_data")
+ '("GClosureNotify" "notify_func")
+ )
+)
+
+(define-method add_invalidate_notifier
+ (of-object "GClosure")
+ (c-name "g_closure_add_invalidate_notifier")
+ (return-type "none")
+ (parameters
+ '("gpointer" "notify_data")
+ '("GClosureNotify" "notify_func")
+ )
+)
+
+(define-method remove_invalidate_notifier
+ (of-object "GClosure")
+ (c-name "g_closure_remove_invalidate_notifier")
+ (return-type "none")
+ (parameters
+ '("gpointer" "notify_data")
+ '("GClosureNotify" "notify_func")
+ )
+)
+
+(define-method add_marshal_guards
+ (of-object "GClosure")
+ (c-name "g_closure_add_marshal_guards")
+ (return-type "none")
+ (parameters
+ '("gpointer" "pre_marshal_data")
+ '("GClosureNotify" "pre_marshal_notify")
+ '("gpointer" "post_marshal_data")
+ '("GClosureNotify" "post_marshal_notify")
+ )
+)
+
+(define-method set_marshal
+ (of-object "GClosure")
+ (c-name "g_closure_set_marshal")
+ (return-type "none")
+ (parameters
+ '("GClosureMarshal" "marshal")
+ )
+)
+
+(define-method set_meta_marshal
+ (of-object "GClosure")
+ (c-name "g_closure_set_meta_marshal")
+ (return-type "none")
+ (parameters
+ '("gpointer" "marshal_data")
+ '("GClosureMarshal" "meta_marshal")
+ )
+)
+
+(define-method invalidate
+ (of-object "GClosure")
+ (c-name "g_closure_invalidate")
+ (return-type "none")
+)
+
+(define-method invoke
+ (of-object "GClosure")
+ (c-name "g_closure_invoke")
+ (return-type "none")
+ (parameters
+ '("GValue*" "return_value")
+ '("guint" "n_param_values")
+ '("const-GValue*" "param_values")
+ '("gpointer" "invocation_hint")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/genums.h
+
+(define-function g_enum_get_value
+ (c-name "g_enum_get_value")
+ (return-type "GEnumValue*")
+ (parameters
+ '("GEnumClass*" "enum_class")
+ '("gint" "value")
+ )
+)
+
+(define-function g_enum_get_value_by_name
+ (c-name "g_enum_get_value_by_name")
+ (return-type "GEnumValue*")
+ (parameters
+ '("GEnumClass*" "enum_class")
+ '("const-gchar*" "name")
+ )
+)
+
+(define-function g_enum_get_value_by_nick
+ (c-name "g_enum_get_value_by_nick")
+ (return-type "GEnumValue*")
+ (parameters
+ '("GEnumClass*" "enum_class")
+ '("const-gchar*" "nick")
+ )
+)
+
+(define-function g_flags_get_first_value
+ (c-name "g_flags_get_first_value")
+ (return-type "GFlagsValue*")
+ (parameters
+ '("GFlagsClass*" "flags_class")
+ '("guint" "value")
+ )
+)
+
+(define-function g_flags_get_value_by_name
+ (c-name "g_flags_get_value_by_name")
+ (return-type "GFlagsValue*")
+ (parameters
+ '("GFlagsClass*" "flags_class")
+ '("const-gchar*" "name")
+ )
+)
+
+(define-function g_flags_get_value_by_nick
+ (c-name "g_flags_get_value_by_nick")
+ (return-type "GFlagsValue*")
+ (parameters
+ '("GFlagsClass*" "flags_class")
+ '("const-gchar*" "nick")
+ )
+)
+
+(define-method set_enum
+ (of-object "GValue")
+ (c-name "g_value_set_enum")
+ (return-type "none")
+ (parameters
+ '("gint" "v_enum")
+ )
+)
+
+(define-method get_enum
+ (of-object "GValue")
+ (c-name "g_value_get_enum")
+ (return-type "gint")
+)
+
+(define-method set_flags
+ (of-object "GValue")
+ (c-name "g_value_set_flags")
+ (return-type "none")
+ (parameters
+ '("guint" "v_flags")
+ )
+)
+
+(define-method get_flags
+ (of-object "GValue")
+ (c-name "g_value_get_flags")
+ (return-type "guint")
+)
+
+(define-function g_enum_register_static
+ (c-name "g_enum_register_static")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-GEnumValue*" "const_static_values")
+ )
+)
+
+(define-function g_flags_register_static
+ (c-name "g_flags_register_static")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-GFlagsValue*" "const_static_values")
+ )
+)
+
+(define-function g_enum_complete_type_info
+ (c-name "g_enum_complete_type_info")
+ (return-type "none")
+ (parameters
+ '("GType" "g_enum_type")
+ '("GTypeInfo*" "info")
+ '("const-GEnumValue*" "const_values")
+ )
+)
+
+(define-function g_flags_complete_type_info
+ (c-name "g_flags_complete_type_info")
+ (return-type "none")
+ (parameters
+ '("GType" "g_flags_type")
+ '("GTypeInfo*" "info")
+ '("const-GFlagsValue*" "const_values")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/gmarshal.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/gobjectalias.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/gobject.h
+
+(define-method install_property
+ (of-object "GObjectClass")
+ (c-name "g_object_class_install_property")
+ (return-type "none")
+ (parameters
+ '("guint" "property_id")
+ '("GParamSpec*" "pspec")
+ )
+)
+
+(define-method find_property
+ (of-object "GObjectClass")
+ (c-name "g_object_class_find_property")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "property_name")
+ )
+)
+
+(define-method list_properties
+ (of-object "GObjectClass")
+ (c-name "g_object_class_list_properties")
+ (return-type "GParamSpec**")
+ (parameters
+ '("guint*" "n_properties")
+ )
+)
+
+(define-method override_property
+ (of-object "GObjectClass")
+ (c-name "g_object_class_override_property")
+ (return-type "none")
+ (parameters
+ '("guint" "property_id")
+ '("const-gchar*" "name")
+ )
+)
+
+(define-function g_object_interface_install_property
+ (c-name "g_object_interface_install_property")
+ (return-type "none")
+ (parameters
+ '("gpointer" "g_iface")
+ '("GParamSpec*" "pspec")
+ )
+)
+
+(define-function g_object_interface_find_property
+ (c-name "g_object_interface_find_property")
+ (return-type "GParamSpec*")
+ (parameters
+ '("gpointer" "g_iface")
+ '("const-gchar*" "property_name")
+ )
+)
+
+(define-function g_object_interface_list_properties
+ (c-name "g_object_interface_list_properties")
+ (return-type "GParamSpec**")
+ (parameters
+ '("gpointer" "g_iface")
+ '("guint*" "n_properties_p")
+ )
+)
+
+(define-function g_object_new
+ (c-name "g_object_new")
+ (return-type "gpointer")
+ (parameters
+ '("GType" "object_type")
+ '("const-gchar*" "first_property_name")
+ )
+ (varargs #t)
+)
+
+(define-function g_object_newv
+ (c-name "g_object_newv")
+ (return-type "gpointer")
+ (parameters
+ '("GType" "object_type")
+ '("guint" "n_parameters")
+ '("GParameter*" "parameters")
+ )
+)
+
+(define-function g_object_new_valist
+ (c-name "g_object_new_valist")
+ (return-type "GObject*")
+ (parameters
+ '("GType" "object_type")
+ '("const-gchar*" "first_property_name")
+ '("va_list" "var_args")
+ )
+)
+
+(define-function g_object_set
+ (c-name "g_object_set")
+ (return-type "none")
+ (parameters
+ '("gpointer" "object")
+ '("const-gchar*" "first_property_name")
+ )
+ (varargs #t)
+)
+
+(define-function g_object_get
+ (c-name "g_object_get")
+ (return-type "none")
+ (parameters
+ '("gpointer" "object")
+ '("const-gchar*" "first_property_name")
+ )
+ (varargs #t)
+)
+
+(define-function g_object_connect
+ (c-name "g_object_connect")
+ (return-type "gpointer")
+ (parameters
+ '("gpointer" "object")
+ '("const-gchar*" "signal_spec")
+ )
+ (varargs #t)
+)
+
+(define-function g_object_disconnect
+ (c-name "g_object_disconnect")
+ (return-type "none")
+ (parameters
+ '("gpointer" "object")
+ '("const-gchar*" "signal_spec")
+ )
+ (varargs #t)
+)
+
+(define-method set_valist
+ (of-object "GObject")
+ (c-name "g_object_set_valist")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "first_property_name")
+ '("va_list" "var_args")
+ )
+)
+
+(define-method get_valist
+ (of-object "GObject")
+ (c-name "g_object_get_valist")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "first_property_name")
+ '("va_list" "var_args")
+ )
+)
+
+(define-method set_property
+ (of-object "GObject")
+ (c-name "g_object_set_property")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "property_name")
+ '("const-GValue*" "value")
+ )
+)
+
+(define-method get_property
+ (of-object "GObject")
+ (c-name "g_object_get_property")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "property_name")
+ '("GValue*" "value")
+ )
+)
+
+(define-method freeze_notify
+ (of-object "GObject")
+ (c-name "g_object_freeze_notify")
+ (return-type "none")
+)
+
+(define-method notify
+ (of-object "GObject")
+ (c-name "g_object_notify")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "property_name")
+ )
+)
+
+(define-method thaw_notify
+ (of-object "GObject")
+ (c-name "g_object_thaw_notify")
+ (return-type "none")
+)
+
+(define-function g_object_ref
+ (c-name "g_object_ref")
+ (return-type "gpointer")
+ (parameters
+ '("gpointer" "object")
+ )
+)
+
+(define-function g_object_unref
+ (c-name "g_object_unref")
+ (return-type "none")
+ (parameters
+ '("gpointer" "object")
+ )
+)
+
+(define-method weak_ref
+ (of-object "GObject")
+ (c-name "g_object_weak_ref")
+ (return-type "none")
+ (parameters
+ '("GWeakNotify" "notify")
+ '("gpointer" "data")
+ )
+)
+
+(define-method weak_unref
+ (of-object "GObject")
+ (c-name "g_object_weak_unref")
+ (return-type "none")
+ (parameters
+ '("GWeakNotify" "notify")
+ '("gpointer" "data")
+ )
+)
+
+(define-method add_weak_pointer
+ (of-object "GObject")
+ (c-name "g_object_add_weak_pointer")
+ (return-type "none")
+ (parameters
+ '("gpointer*" "weak_pointer_location")
+ )
+)
+
+(define-method remove_weak_pointer
+ (of-object "GObject")
+ (c-name "g_object_remove_weak_pointer")
+ (return-type "none")
+ (parameters
+ '("gpointer*" "weak_pointer_location")
+ )
+)
+
+(define-method add_toggle_ref
+ (of-object "GObject")
+ (c-name "g_object_add_toggle_ref")
+ (return-type "none")
+ (parameters
+ '("GToggleNotify" "notify")
+ '("gpointer" "data")
+ )
+)
+
+(define-method remove_toggle_ref
+ (of-object "GObject")
+ (c-name "g_object_remove_toggle_ref")
+ (return-type "none")
+ (parameters
+ '("GToggleNotify" "notify")
+ '("gpointer" "data")
+ )
+)
+
+(define-method get_qdata
+ (of-object "GObject")
+ (c-name "g_object_get_qdata")
+ (return-type "gpointer")
+ (parameters
+ '("GQuark" "quark")
+ )
+)
+
+(define-method set_qdata
+ (of-object "GObject")
+ (c-name "g_object_set_qdata")
+ (return-type "none")
+ (parameters
+ '("GQuark" "quark")
+ '("gpointer" "data")
+ )
+)
+
+(define-method set_qdata_full
+ (of-object "GObject")
+ (c-name "g_object_set_qdata_full")
+ (return-type "none")
+ (parameters
+ '("GQuark" "quark")
+ '("gpointer" "data")
+ '("GDestroyNotify" "destroy")
+ )
+)
+
+(define-method steal_qdata
+ (of-object "GObject")
+ (c-name "g_object_steal_qdata")
+ (return-type "gpointer")
+ (parameters
+ '("GQuark" "quark")
+ )
+)
+
+(define-method get_data
+ (of-object "GObject")
+ (c-name "g_object_get_data")
+ (return-type "gpointer")
+ (parameters
+ '("const-gchar*" "key")
+ )
+)
+
+(define-method set_data
+ (of-object "GObject")
+ (c-name "g_object_set_data")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "key")
+ '("gpointer" "data")
+ )
+)
+
+(define-method set_data_full
+ (of-object "GObject")
+ (c-name "g_object_set_data_full")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "key")
+ '("gpointer" "data")
+ '("GDestroyNotify" "destroy")
+ )
+)
+
+(define-method steal_data
+ (of-object "GObject")
+ (c-name "g_object_steal_data")
+ (return-type "gpointer")
+ (parameters
+ '("const-gchar*" "key")
+ )
+)
+
+(define-method watch_closure
+ (of-object "GObject")
+ (c-name "g_object_watch_closure")
+ (return-type "none")
+ (parameters
+ '("GClosure*" "closure")
+ )
+)
+
+(define-function g_cclosure_new_object
+ (c-name "g_cclosure_new_object")
+ (return-type "GClosure*")
+ (parameters
+ '("GCallback" "callback_func")
+ '("GObject*" "object")
+ )
+)
+
+(define-function g_cclosure_new_object_swap
+ (c-name "g_cclosure_new_object_swap")
+ (return-type "GClosure*")
+ (parameters
+ '("GCallback" "callback_func")
+ '("GObject*" "object")
+ )
+)
+
+(define-function g_closure_new_object
+ (c-name "g_closure_new_object")
+ (return-type "GClosure*")
+ (parameters
+ '("guint" "sizeof_closure")
+ '("GObject*" "object")
+ )
+)
+
+(define-method set_object
+ (of-object "GValue")
+ (c-name "g_value_set_object")
+ (return-type "none")
+ (parameters
+ '("gpointer" "v_object")
+ )
+)
+
+(define-method get_object
+ (of-object "GValue")
+ (c-name "g_value_get_object")
+ (return-type "gpointer")
+)
+
+(define-method dup_object
+ (of-object "GValue")
+ (c-name "g_value_dup_object")
+ (return-type "GObject*")
+)
+
+(define-function g_signal_connect_object
+ (c-name "g_signal_connect_object")
+ (return-type "gulong")
+ (parameters
+ '("gpointer" "instance")
+ '("const-gchar*" "detailed_signal")
+ '("GCallback" "c_handler")
+ '("gpointer" "gobject")
+ '("GConnectFlags" "connect_flags")
+ )
+)
+
+(define-method run_dispose
+ (of-object "GObject")
+ (c-name "g_object_run_dispose")
+ (return-type "none")
+)
+
+(define-method take_object
+ (of-object "GValue")
+ (c-name "g_value_take_object")
+ (return-type "none")
+ (parameters
+ '("gpointer" "v_object")
+ )
+)
+
+(define-method set_object_take_ownership
+ (of-object "GValue")
+ (c-name "g_value_set_object_take_ownership")
+ (return-type "none")
+ (parameters
+ '("gpointer" "v_object")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/gparam.h
+
+(define-method ref
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_ref")
+ (return-type "GParamSpec*")
+)
+
+(define-method unref
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_unref")
+ (return-type "none")
+)
+
+(define-method sink
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_sink")
+ (return-type "none")
+)
+
+(define-method get_qdata
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_get_qdata")
+ (return-type "gpointer")
+ (parameters
+ '("GQuark" "quark")
+ )
+)
+
+(define-method set_qdata
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_set_qdata")
+ (return-type "none")
+ (parameters
+ '("GQuark" "quark")
+ '("gpointer" "data")
+ )
+)
+
+(define-method set_qdata_full
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_set_qdata_full")
+ (return-type "none")
+ (parameters
+ '("GQuark" "quark")
+ '("gpointer" "data")
+ '("GDestroyNotify" "destroy")
+ )
+)
+
+(define-method steal_qdata
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_steal_qdata")
+ (return-type "gpointer")
+ (parameters
+ '("GQuark" "quark")
+ )
+)
+
+(define-method get_redirect_target
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_get_redirect_target")
+ (return-type "GParamSpec*")
+)
+
+(define-function g_param_value_set_default
+ (c-name "g_param_value_set_default")
+ (return-type "none")
+ (parameters
+ '("GParamSpec*" "pspec")
+ '("GValue*" "value")
+ )
+)
+
+(define-function g_param_value_defaults
+ (c-name "g_param_value_defaults")
+ (return-type "gboolean")
+ (parameters
+ '("GParamSpec*" "pspec")
+ '("GValue*" "value")
+ )
+)
+
+(define-function g_param_value_validate
+ (c-name "g_param_value_validate")
+ (return-type "gboolean")
+ (parameters
+ '("GParamSpec*" "pspec")
+ '("GValue*" "value")
+ )
+)
+
+(define-function g_param_value_convert
+ (c-name "g_param_value_convert")
+ (return-type "gboolean")
+ (parameters
+ '("GParamSpec*" "pspec")
+ '("const-GValue*" "src_value")
+ '("GValue*" "dest_value")
+ '("gboolean" "strict_validation")
+ )
+)
+
+(define-function g_param_values_cmp
+ (c-name "g_param_values_cmp")
+ (return-type "gint")
+ (parameters
+ '("GParamSpec*" "pspec")
+ '("const-GValue*" "value1")
+ '("const-GValue*" "value2")
+ )
+)
+
+(define-method get_name
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_get_name")
+ (return-type "const-gchar*")
+)
+
+(define-method get_nick
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_get_nick")
+ (return-type "const-gchar*")
+)
+
+(define-method get_blurb
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_get_blurb")
+ (return-type "const-gchar*")
+)
+
+(define-method set_param
+ (of-object "GValue")
+ (c-name "g_value_set_param")
+ (return-type "none")
+ (parameters
+ '("GParamSpec*" "param")
+ )
+)
+
+(define-method get_param
+ (of-object "GValue")
+ (c-name "g_value_get_param")
+ (return-type "GParamSpec*")
+)
+
+(define-method dup_param
+ (of-object "GValue")
+ (c-name "g_value_dup_param")
+ (return-type "GParamSpec*")
+)
+
+(define-method take_param
+ (of-object "GValue")
+ (c-name "g_value_take_param")
+ (return-type "none")
+ (parameters
+ '("GParamSpec*" "param")
+ )
+)
+
+(define-method set_param_take_ownership
+ (of-object "GValue")
+ (c-name "g_value_set_param_take_ownership")
+ (return-type "none")
+ (parameters
+ '("GParamSpec*" "param")
+ )
+)
+
+(define-function g_param_type_register_static
+ (c-name "g_param_type_register_static")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-GParamSpecTypeInfo*" "pspec_info")
+ )
+)
+
+(define-function g_param_spec_internal
+ (c-name "g_param_spec_internal")
+ (return-type "gpointer")
+ (parameters
+ '("GType" "param_type")
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_pool_new
+ (c-name "g_param_spec_pool_new")
+ (is-constructor-of "GParamSpecPool")
+ (return-type "GParamSpecPool*")
+ (parameters
+ '("gboolean" "type_prefixing")
+ )
+)
+
+(define-method insert
+ (of-object "GParamSpecPool")
+ (c-name "g_param_spec_pool_insert")
+ (return-type "none")
+ (parameters
+ '("GParamSpec*" "pspec")
+ '("GType" "owner_type")
+ )
+)
+
+(define-method remove
+ (of-object "GParamSpecPool")
+ (c-name "g_param_spec_pool_remove")
+ (return-type "none")
+ (parameters
+ '("GParamSpec*" "pspec")
+ )
+)
+
+(define-method lookup
+ (of-object "GParamSpecPool")
+ (c-name "g_param_spec_pool_lookup")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "param_name")
+ '("GType" "owner_type")
+ '("gboolean" "walk_ancestors")
+ )
+)
+
+(define-method list_owned
+ (of-object "GParamSpecPool")
+ (c-name "g_param_spec_pool_list_owned")
+ (return-type "GList*")
+ (parameters
+ '("GType" "owner_type")
+ )
+)
+
+(define-method list
+ (of-object "GParamSpecPool")
+ (c-name "g_param_spec_pool_list")
+ (return-type "GParamSpec**")
+ (parameters
+ '("GType" "owner_type")
+ '("guint*" "n_pspecs_p")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/gparamspecs.h
+
+(define-function g_param_spec_char
+ (c-name "g_param_spec_char")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("gint8" "minimum")
+ '("gint8" "maximum")
+ '("gint8" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_uchar
+ (c-name "g_param_spec_uchar")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("guint8" "minimum")
+ '("guint8" "maximum")
+ '("guint8" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_boolean
+ (c-name "g_param_spec_boolean")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("gboolean" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_int
+ (c-name "g_param_spec_int")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("gint" "minimum")
+ '("gint" "maximum")
+ '("gint" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_uint
+ (c-name "g_param_spec_uint")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("guint" "minimum")
+ '("guint" "maximum")
+ '("guint" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_long
+ (c-name "g_param_spec_long")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("glong" "minimum")
+ '("glong" "maximum")
+ '("glong" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_ulong
+ (c-name "g_param_spec_ulong")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("gulong" "minimum")
+ '("gulong" "maximum")
+ '("gulong" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_int64
+ (c-name "g_param_spec_int64")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("gint64" "minimum")
+ '("gint64" "maximum")
+ '("gint64" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_uint64
+ (c-name "g_param_spec_uint64")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("guint64" "minimum")
+ '("guint64" "maximum")
+ '("guint64" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_unichar
+ (c-name "g_param_spec_unichar")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("gunichar" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_enum
+ (c-name "g_param_spec_enum")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("GType" "enum_type")
+ '("gint" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_flags
+ (c-name "g_param_spec_flags")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("GType" "flags_type")
+ '("guint" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_float
+ (c-name "g_param_spec_float")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("gfloat" "minimum")
+ '("gfloat" "maximum")
+ '("gfloat" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_double
+ (c-name "g_param_spec_double")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("gdouble" "minimum")
+ '("gdouble" "maximum")
+ '("gdouble" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_string
+ (c-name "g_param_spec_string")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("const-gchar*" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_param
+ (c-name "g_param_spec_param")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("GType" "param_type")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_boxed
+ (c-name "g_param_spec_boxed")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("GType" "boxed_type")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_pointer
+ (c-name "g_param_spec_pointer")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_value_array
+ (c-name "g_param_spec_value_array")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("GParamSpec*" "element_spec")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_object
+ (c-name "g_param_spec_object")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("GType" "object_type")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_override
+ (c-name "g_param_spec_override")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("GParamSpec*" "overridden")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/gsignal.h
+
+(define-function g_signal_newv
+ (c-name "g_signal_newv")
+ (return-type "guint")
+ (parameters
+ '("const-gchar*" "signal_name")
+ '("GType" "itype")
+ '("GSignalFlags" "signal_flags")
+ '("GClosure*" "class_closure")
+ '("GSignalAccumulator" "accumulator")
+ '("gpointer" "accu_data")
+ '("GSignalCMarshaller" "c_marshaller")
+ '("GType" "return_type")
+ '("guint" "n_params")
+ '("GType*" "param_types")
+ )
+)
+
+(define-function g_signal_new_valist
+ (c-name "g_signal_new_valist")
+ (return-type "guint")
+ (parameters
+ '("const-gchar*" "signal_name")
+ '("GType" "itype")
+ '("GSignalFlags" "signal_flags")
+ '("GClosure*" "class_closure")
+ '("GSignalAccumulator" "accumulator")
+ '("gpointer" "accu_data")
+ '("GSignalCMarshaller" "c_marshaller")
+ '("GType" "return_type")
+ '("guint" "n_params")
+ '("va_list" "args")
+ )
+)
+
+(define-function g_signal_new
+ (c-name "g_signal_new")
+ (return-type "guint")
+ (parameters
+ '("const-gchar*" "signal_name")
+ '("GType" "itype")
+ '("GSignalFlags" "signal_flags")
+ '("guint" "class_offset")
+ '("GSignalAccumulator" "accumulator")
+ '("gpointer" "accu_data")
+ '("GSignalCMarshaller" "c_marshaller")
+ '("GType" "return_type")
+ '("guint" "n_params")
+ )
+ (varargs #t)
+)
+
+(define-function g_signal_emitv
+ (c-name "g_signal_emitv")
+ (return-type "none")
+ (parameters
+ '("const-GValue*" "instance_and_params")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ '("GValue*" "return_value")
+ )
+)
+
+(define-function g_signal_emit_valist
+ (c-name "g_signal_emit_valist")
+ (return-type "none")
+ (parameters
+ '("gpointer" "instance")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ '("va_list" "var_args")
+ )
+)
+
+(define-function g_signal_emit
+ (c-name "g_signal_emit")
+ (return-type "none")
+ (parameters
+ '("gpointer" "instance")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ )
+ (varargs #t)
+)
+
+(define-function g_signal_emit_by_name
+ (c-name "g_signal_emit_by_name")
+ (return-type "none")
+ (parameters
+ '("gpointer" "instance")
+ '("const-gchar*" "detailed_signal")
+ )
+ (varargs #t)
+)
+
+(define-function g_signal_lookup
+ (c-name "g_signal_lookup")
+ (return-type "guint")
+ (parameters
+ '("const-gchar*" "name")
+ '("GType" "itype")
+ )
+)
+
+(define-function g_signal_name
+ (c-name "g_signal_name")
+ (return-type "const-gchar*")
+ (parameters
+ '("guint" "signal_id")
+ )
+)
+
+(define-function g_signal_query
+ (c-name "g_signal_query")
+ (return-type "none")
+ (parameters
+ '("guint" "signal_id")
+ '("GSignalQuery*" "query")
+ )
+)
+
+(define-function g_signal_list_ids
+ (c-name "g_signal_list_ids")
+ (return-type "guint*")
+ (parameters
+ '("GType" "itype")
+ '("guint*" "n_ids")
+ )
+)
+
+(define-function g_signal_parse_name
+ (c-name "g_signal_parse_name")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "detailed_signal")
+ '("GType" "itype")
+ '("guint*" "signal_id_p")
+ '("GQuark*" "detail_p")
+ '("gboolean" "force_detail_quark")
+ )
+)
+
+(define-function g_signal_get_invocation_hint
+ (c-name "g_signal_get_invocation_hint")
+ (return-type "GSignalInvocationHint*")
+ (parameters
+ '("gpointer" "instance")
+ )
+)
+
+(define-function g_signal_stop_emission
+ (c-name "g_signal_stop_emission")
+ (return-type "none")
+ (parameters
+ '("gpointer" "instance")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ )
+)
+
+(define-function g_signal_stop_emission_by_name
+ (c-name "g_signal_stop_emission_by_name")
+ (return-type "none")
+ (parameters
+ '("gpointer" "instance")
+ '("const-gchar*" "detailed_signal")
+ )
+)
+
+(define-function g_signal_add_emission_hook
+ (c-name "g_signal_add_emission_hook")
+ (return-type "gulong")
+ (parameters
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ '("GSignalEmissionHook" "hook_func")
+ '("gpointer" "hook_data")
+ '("GDestroyNotify" "data_destroy")
+ )
+)
+
+(define-function g_signal_remove_emission_hook
+ (c-name "g_signal_remove_emission_hook")
+ (return-type "none")
+ (parameters
+ '("guint" "signal_id")
+ '("gulong" "hook_id")
+ )
+)
+
+(define-function g_signal_has_handler_pending
+ (c-name "g_signal_has_handler_pending")
+ (return-type "gboolean")
+ (parameters
+ '("gpointer" "instance")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ '("gboolean" "may_be_blocked")
+ )
+)
+
+(define-function g_signal_connect_closure_by_id
+ (c-name "g_signal_connect_closure_by_id")
+ (return-type "gulong")
+ (parameters
+ '("gpointer" "instance")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ '("GClosure*" "closure")
+ '("gboolean" "after")
+ )
+)
+
+(define-function g_signal_connect_closure
+ (c-name "g_signal_connect_closure")
+ (return-type "gulong")
+ (parameters
+ '("gpointer" "instance")
+ '("const-gchar*" "detailed_signal")
+ '("GClosure*" "closure")
+ '("gboolean" "after")
+ )
+)
+
+(define-function g_signal_connect_data
+ (c-name "g_signal_connect_data")
+ (return-type "gulong")
+ (parameters
+ '("gpointer" "instance")
+ '("const-gchar*" "detailed_signal")
+ '("GCallback" "c_handler")
+ '("gpointer" "data")
+ '("GClosureNotify" "destroy_data")
+ '("GConnectFlags" "connect_flags")
+ )
+)
+
+(define-function g_signal_handler_block
+ (c-name "g_signal_handler_block")
+ (return-type "none")
+ (parameters
+ '("gpointer" "instance")
+ '("gulong" "handler_id")
+ )
+)
+
+(define-function g_signal_handler_unblock
+ (c-name "g_signal_handler_unblock")
+ (return-type "none")
+ (parameters
+ '("gpointer" "instance")
+ '("gulong" "handler_id")
+ )
+)
+
+(define-function g_signal_handler_disconnect
+ (c-name "g_signal_handler_disconnect")
+ (return-type "none")
+ (parameters
+ '("gpointer" "instance")
+ '("gulong" "handler_id")
+ )
+)
+
+(define-function g_signal_handler_is_connected
+ (c-name "g_signal_handler_is_connected")
+ (return-type "gboolean")
+ (parameters
+ '("gpointer" "instance")
+ '("gulong" "handler_id")
+ )
+)
+
+(define-function g_signal_handler_find
+ (c-name "g_signal_handler_find")
+ (return-type "gulong")
+ (parameters
+ '("gpointer" "instance")
+ '("GSignalMatchType" "mask")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ '("GClosure*" "closure")
+ '("gpointer" "func")
+ '("gpointer" "data")
+ )
+)
+
+(define-function g_signal_handlers_block_matched
+ (c-name "g_signal_handlers_block_matched")
+ (return-type "guint")
+ (parameters
+ '("gpointer" "instance")
+ '("GSignalMatchType" "mask")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ '("GClosure*" "closure")
+ '("gpointer" "func")
+ '("gpointer" "data")
+ )
+)
+
+(define-function g_signal_handlers_unblock_matched
+ (c-name "g_signal_handlers_unblock_matched")
+ (return-type "guint")
+ (parameters
+ '("gpointer" "instance")
+ '("GSignalMatchType" "mask")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ '("GClosure*" "closure")
+ '("gpointer" "func")
+ '("gpointer" "data")
+ )
+)
+
+(define-function g_signal_handlers_disconnect_matched
+ (c-name "g_signal_handlers_disconnect_matched")
+ (return-type "guint")
+ (parameters
+ '("gpointer" "instance")
+ '("GSignalMatchType" "mask")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ '("GClosure*" "closure")
+ '("gpointer" "func")
+ '("gpointer" "data")
+ )
+)
+
+(define-function g_signal_override_class_closure
+ (c-name "g_signal_override_class_closure")
+ (return-type "none")
+ (parameters
+ '("guint" "signal_id")
+ '("GType" "instance_type")
+ '("GClosure*" "class_closure")
+ )
+)
+
+(define-function g_signal_chain_from_overridden
+ (c-name "g_signal_chain_from_overridden")
+ (return-type "none")
+ (parameters
+ '("const-GValue*" "instance_and_params")
+ '("GValue*" "return_value")
+ )
+)
+
+(define-function g_signal_accumulator_true_handled
+ (c-name "g_signal_accumulator_true_handled")
+ (return-type "gboolean")
+ (parameters
+ '("GSignalInvocationHint*" "ihint")
+ '("GValue*" "return_accu")
+ '("const-GValue*" "handler_return")
+ '("gpointer" "dummy")
+ )
+)
+
+(define-function g_signal_handlers_destroy
+ (c-name "g_signal_handlers_destroy")
+ (return-type "none")
+ (parameters
+ '("gpointer" "instance")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/gsourceclosure.h
+
+(define-method set_closure
+ (of-object "GSource")
+ (c-name "g_source_set_closure")
+ (return-type "none")
+ (parameters
+ '("GClosure*" "closure")
+ )
+)
+
+(define-function g_io_channel_get_type
+ (c-name "g_io_channel_get_type")
+ (return-type "GType")
+)
+
+(define-function g_io_condition_get_type
+ (c-name "g_io_condition_get_type")
+ (return-type "GType")
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/gtype.h
+
+(define-function g_type_init
+ (c-name "g_type_init")
+ (return-type "none")
+)
+
+(define-function g_type_init_with_debug_flags
+ (c-name "g_type_init_with_debug_flags")
+ (return-type "none")
+ (parameters
+ '("GTypeDebugFlags" "debug_flags")
+ )
+)
+
+(define-method name
+ (of-object "GType")
+ (c-name "g_type_name")
+ (return-type "const-gchar*")
+)
+
+(define-method qname
+ (of-object "GType")
+ (c-name "g_type_qname")
+ (return-type "GQuark")
+)
+
+(define-function g_type_from_name
+ (c-name "g_type_from_name")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "name")
+ )
+)
+
+(define-method parent
+ (of-object "GType")
+ (c-name "g_type_parent")
+ (return-type "GType")
+)
+
+(define-method depth
+ (of-object "GType")
+ (c-name "g_type_depth")
+ (return-type "guint")
+)
+
+(define-method next_base
+ (of-object "GType")
+ (c-name "g_type_next_base")
+ (return-type "GType")
+ (parameters
+ '("GType" "root_type")
+ )
+)
+
+(define-method is_a
+ (of-object "GType")
+ (c-name "g_type_is_a")
+ (return-type "gboolean")
+ (parameters
+ '("GType" "is_a_type")
+ )
+)
+
+(define-method class_ref
+ (of-object "GType")
+ (c-name "g_type_class_ref")
+ (return-type "gpointer")
+)
+
+(define-method class_peek
+ (of-object "GType")
+ (c-name "g_type_class_peek")
+ (return-type "gpointer")
+)
+
+(define-method class_peek_static
+ (of-object "GType")
+ (c-name "g_type_class_peek_static")
+ (return-type "gpointer")
+)
+
+(define-function g_type_class_unref
+ (c-name "g_type_class_unref")
+ (return-type "none")
+ (parameters
+ '("gpointer" "g_class")
+ )
+)
+
+(define-function g_type_class_peek_parent
+ (c-name "g_type_class_peek_parent")
+ (return-type "gpointer")
+ (parameters
+ '("gpointer" "g_class")
+ )
+)
+
+(define-function g_type_interface_peek
+ (c-name "g_type_interface_peek")
+ (return-type "gpointer")
+ (parameters
+ '("gpointer" "instance_class")
+ '("GType" "iface_type")
+ )
+)
+
+(define-function g_type_interface_peek_parent
+ (c-name "g_type_interface_peek_parent")
+ (return-type "gpointer")
+ (parameters
+ '("gpointer" "g_iface")
+ )
+)
+
+(define-method default_interface_ref
+ (of-object "GType")
+ (c-name "g_type_default_interface_ref")
+ (return-type "gpointer")
+)
+
+(define-method default_interface_peek
+ (of-object "GType")
+ (c-name "g_type_default_interface_peek")
+ (return-type "gpointer")
+)
+
+(define-function g_type_default_interface_unref
+ (c-name "g_type_default_interface_unref")
+ (return-type "none")
+ (parameters
+ '("gpointer" "g_iface")
+ )
+)
+
+(define-method children
+ (of-object "GType")
+ (c-name "g_type_children")
+ (return-type "GType*")
+ (parameters
+ '("guint*" "n_children")
+ )
+)
+
+(define-method interfaces
+ (of-object "GType")
+ (c-name "g_type_interfaces")
+ (return-type "GType*")
+ (parameters
+ '("guint*" "n_interfaces")
+ )
+)
+
+(define-method set_qdata
+ (of-object "GType")
+ (c-name "g_type_set_qdata")
+ (return-type "none")
+ (parameters
+ '("GQuark" "quark")
+ '("gpointer" "data")
+ )
+)
+
+(define-method get_qdata
+ (of-object "GType")
+ (c-name "g_type_get_qdata")
+ (return-type "gpointer")
+ (parameters
+ '("GQuark" "quark")
+ )
+)
+
+(define-method query
+ (of-object "GType")
+ (c-name "g_type_query")
+ (return-type "none")
+ (parameters
+ '("GTypeQuery*" "query")
+ )
+)
+
+(define-method register_static
+ (of-object "GType")
+ (c-name "g_type_register_static")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "type_name")
+ '("const-GTypeInfo*" "info")
+ '("GTypeFlags" "flags")
+ )
+)
+
+(define-method register_dynamic
+ (of-object "GType")
+ (c-name "g_type_register_dynamic")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "type_name")
+ '("GTypePlugin*" "plugin")
+ '("GTypeFlags" "flags")
+ )
+)
+
+(define-method register_fundamental
+ (of-object "GType")
+ (c-name "g_type_register_fundamental")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "type_name")
+ '("const-GTypeInfo*" "info")
+ '("const-GTypeFundamentalInfo*" "finfo")
+ '("GTypeFlags" "flags")
+ )
+)
+
+(define-method add_interface_static
+ (of-object "GType")
+ (c-name "g_type_add_interface_static")
+ (return-type "none")
+ (parameters
+ '("GType" "interface_type")
+ '("const-GInterfaceInfo*" "info")
+ )
+)
+
+(define-method add_interface_dynamic
+ (of-object "GType")
+ (c-name "g_type_add_interface_dynamic")
+ (return-type "none")
+ (parameters
+ '("GType" "interface_type")
+ '("GTypePlugin*" "plugin")
+ )
+)
+
+(define-method interface_add_prerequisite
+ (of-object "GType")
+ (c-name "g_type_interface_add_prerequisite")
+ (return-type "none")
+ (parameters
+ '("GType" "prerequisite_type")
+ )
+)
+
+(define-method interface_prerequisites
+ (of-object "GType")
+ (c-name "g_type_interface_prerequisites")
+ (return-type "GType*")
+ (parameters
+ '("guint*" "n_prerequisites")
+ )
+)
+
+(define-function g_type_class_add_private
+ (c-name "g_type_class_add_private")
+ (return-type "none")
+ (parameters
+ '("gpointer" "g_class")
+ '("gsize" "private_size")
+ )
+)
+
+(define-method get_private
+ (of-object "GTypeInstance")
+ (c-name "g_type_instance_get_private")
+ (return-type "gpointer")
+ (parameters
+ '("GType" "private_type")
+ )
+)
+
+(define-method get_plugin
+ (of-object "GType")
+ (c-name "g_type_get_plugin")
+ (return-type "GTypePlugin*")
+)
+
+(define-method interface_get_plugin
+ (of-object "GType")
+ (c-name "g_type_interface_get_plugin")
+ (return-type "GTypePlugin*")
+ (parameters
+ '("GType" "interface_type")
+ )
+)
+
+(define-function g_type_fundamental_next
+ (c-name "g_type_fundamental_next")
+ (return-type "GType")
+)
+
+(define-method fundamental
+ (of-object "GType")
+ (c-name "g_type_fundamental")
+ (return-type "GType")
+)
+
+(define-method create_instance
+ (of-object "GType")
+ (c-name "g_type_create_instance")
+ (return-type "GTypeInstance*")
+)
+
+(define-function g_type_free_instance
+ (c-name "g_type_free_instance")
+ (return-type "none")
+ (parameters
+ '("GTypeInstance*" "instance")
+ )
+)
+
+(define-function g_type_add_class_cache_func
+ (c-name "g_type_add_class_cache_func")
+ (return-type "none")
+ (parameters
+ '("gpointer" "cache_data")
+ '("GTypeClassCacheFunc" "cache_func")
+ )
+)
+
+(define-function g_type_remove_class_cache_func
+ (c-name "g_type_remove_class_cache_func")
+ (return-type "none")
+ (parameters
+ '("gpointer" "cache_data")
+ '("GTypeClassCacheFunc" "cache_func")
+ )
+)
+
+(define-function g_type_class_unref_uncached
+ (c-name "g_type_class_unref_uncached")
+ (return-type "none")
+ (parameters
+ '("gpointer" "g_class")
+ )
+)
+
+(define-function g_type_add_interface_check
+ (c-name "g_type_add_interface_check")
+ (return-type "none")
+ (parameters
+ '("gpointer" "check_data")
+ '("GTypeInterfaceCheckFunc" "check_func")
+ )
+)
+
+(define-function g_type_remove_interface_check
+ (c-name "g_type_remove_interface_check")
+ (return-type "none")
+ (parameters
+ '("gpointer" "check_data")
+ '("GTypeInterfaceCheckFunc" "check_func")
+ )
+)
+
+(define-method value_table_peek
+ (of-object "GType")
+ (c-name "g_type_value_table_peek")
+ (return-type "GTypeValueTable*")
+)
+
+(define-function g_type_check_instance
+ (c-name "g_type_check_instance")
+ (return-type "gboolean")
+ (parameters
+ '("GTypeInstance*" "instance")
+ )
+)
+
+(define-function g_type_check_instance_cast
+ (c-name "g_type_check_instance_cast")
+ (return-type "GTypeInstance*")
+ (parameters
+ '("GTypeInstance*" "instance")
+ '("GType" "iface_type")
+ )
+)
+
+(define-function g_type_check_instance_is_a
+ (c-name "g_type_check_instance_is_a")
+ (return-type "gboolean")
+ (parameters
+ '("GTypeInstance*" "instance")
+ '("GType" "iface_type")
+ )
+)
+
+(define-function g_type_check_class_cast
+ (c-name "g_type_check_class_cast")
+ (return-type "GTypeClass*")
+ (parameters
+ '("GTypeClass*" "g_class")
+ '("GType" "is_a_type")
+ )
+)
+
+(define-function g_type_check_class_is_a
+ (c-name "g_type_check_class_is_a")
+ (return-type "gboolean")
+ (parameters
+ '("GTypeClass*" "g_class")
+ '("GType" "is_a_type")
+ )
+)
+
+(define-method check_is_value_type
+ (of-object "GType")
+ (c-name "g_type_check_is_value_type")
+ (return-type "gboolean")
+)
+
+(define-function g_type_check_value
+ (c-name "g_type_check_value")
+ (return-type "gboolean")
+ (parameters
+ '("GValue*" "value")
+ )
+)
+
+(define-function g_type_check_value_holds
+ (c-name "g_type_check_value_holds")
+ (return-type "gboolean")
+ (parameters
+ '("GValue*" "value")
+ '("GType" "type")
+ )
+)
+
+(define-method test_flags
+ (of-object "GType")
+ (c-name "g_type_test_flags")
+ (return-type "gboolean")
+ (parameters
+ '("guint" "flags")
+ )
+)
+
+(define-function g_type_name_from_instance
+ (c-name "g_type_name_from_instance")
+ (return-type "const-gchar*")
+ (parameters
+ '("GTypeInstance*" "instance")
+ )
+)
+
+(define-function g_type_name_from_class
+ (c-name "g_type_name_from_class")
+ (return-type "const-gchar*")
+ (parameters
+ '("GTypeClass*" "g_class")
+ )
+)
+
+(define-function g_value_c_init
+ (c-name "g_value_c_init")
+ (return-type "none")
+)
+
+(define-function g_value_types_init
+ (c-name "g_value_types_init")
+ (return-type "none")
+)
+
+(define-function g_enum_types_init
+ (c-name "g_enum_types_init")
+ (return-type "none")
+)
+
+(define-function g_param_type_init
+ (c-name "g_param_type_init")
+ (return-type "none")
+)
+
+(define-function g_boxed_type_init
+ (c-name "g_boxed_type_init")
+ (return-type "none")
+)
+
+(define-function g_object_type_init
+ (c-name "g_object_type_init")
+ (return-type "none")
+)
+
+(define-function g_param_spec_types_init
+ (c-name "g_param_spec_types_init")
+ (return-type "none")
+)
+
+(define-function g_value_transforms_init
+ (c-name "g_value_transforms_init")
+ (return-type "none")
+)
+
+(define-function g_signal_init
+ (c-name "g_signal_init")
+ (return-type "none")
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/gtypemodule.h
+
+(define-function g_type_module_get_type
+ (c-name "g_type_module_get_type")
+ (return-type "GType")
+)
+
+(define-method use
+ (of-object "GTypeModule")
+ (c-name "g_type_module_use")
+ (return-type "gboolean")
+)
+
+(define-method unuse
+ (of-object "GTypeModule")
+ (c-name "g_type_module_unuse")
+ (return-type "none")
+)
+
+(define-method set_name
+ (of-object "GTypeModule")
+ (c-name "g_type_module_set_name")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "name")
+ )
+)
+
+(define-method register_type
+ (of-object "GTypeModule")
+ (c-name "g_type_module_register_type")
+ (return-type "GType")
+ (parameters
+ '("GType" "parent_type")
+ '("const-gchar*" "type_name")
+ '("const-GTypeInfo*" "type_info")
+ '("GTypeFlags" "flags")
+ )
+)
+
+(define-method add_interface
+ (of-object "GTypeModule")
+ (c-name "g_type_module_add_interface")
+ (return-type "none")
+ (parameters
+ '("GType" "instance_type")
+ '("GType" "interface_type")
+ '("const-GInterfaceInfo*" "interface_info")
+ )
+)
+
+(define-method register_enum
+ (of-object "GTypeModule")
+ (c-name "g_type_module_register_enum")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-GEnumValue*" "const_static_values")
+ )
+)
+
+(define-method register_flags
+ (of-object "GTypeModule")
+ (c-name "g_type_module_register_flags")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-GFlagsValue*" "const_static_values")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/gtypeplugin.h
+
+(define-function g_type_plugin_get_type
+ (c-name "g_type_plugin_get_type")
+ (return-type "GType")
+)
+
+(define-method use
+ (of-object "GTypePlugin")
+ (c-name "g_type_plugin_use")
+ (return-type "none")
+)
+
+(define-method unuse
+ (of-object "GTypePlugin")
+ (c-name "g_type_plugin_unuse")
+ (return-type "none")
+)
+
+(define-method complete_type_info
+ (of-object "GTypePlugin")
+ (c-name "g_type_plugin_complete_type_info")
+ (return-type "none")
+ (parameters
+ '("GType" "g_type")
+ '("GTypeInfo*" "info")
+ '("GTypeValueTable*" "value_table")
+ )
+)
+
+(define-method complete_interface_info
+ (of-object "GTypePlugin")
+ (c-name "g_type_plugin_complete_interface_info")
+ (return-type "none")
+ (parameters
+ '("GType" "instance_type")
+ '("GType" "interface_type")
+ '("GInterfaceInfo*" "info")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/gvaluearray.h
+
+(define-method get_nth
+ (of-object "GValueArray")
+ (c-name "g_value_array_get_nth")
+ (return-type "GValue*")
+ (parameters
+ '("guint" "index_")
+ )
+)
+
+(define-function g_value_array_new
+ (c-name "g_value_array_new")
+ (is-constructor-of "GValueArray")
+ (return-type "GValueArray*")
+ (parameters
+ '("guint" "n_prealloced")
+ )
+)
+
+(define-method free
+ (of-object "GValueArray")
+ (c-name "g_value_array_free")
+ (return-type "none")
+)
+
+(define-method copy
+ (of-object "GValueArray")
+ (c-name "g_value_array_copy")
+ (return-type "GValueArray*")
+)
+
+(define-method prepend
+ (of-object "GValueArray")
+ (c-name "g_value_array_prepend")
+ (return-type "GValueArray*")
+ (parameters
+ '("const-GValue*" "value")
+ )
+)
+
+(define-method append
+ (of-object "GValueArray")
+ (c-name "g_value_array_append")
+ (return-type "GValueArray*")
+ (parameters
+ '("const-GValue*" "value")
+ )
+)
+
+(define-method insert
+ (of-object "GValueArray")
+ (c-name "g_value_array_insert")
+ (return-type "GValueArray*")
+ (parameters
+ '("guint" "index_")
+ '("const-GValue*" "value")
+ )
+)
+
+(define-method remove
+ (of-object "GValueArray")
+ (c-name "g_value_array_remove")
+ (return-type "GValueArray*")
+ (parameters
+ '("guint" "index_")
+ )
+)
+
+(define-method sort
+ (of-object "GValueArray")
+ (c-name "g_value_array_sort")
+ (return-type "GValueArray*")
+ (parameters
+ '("GCompareFunc" "compare_func")
+ )
+)
+
+(define-method sort_with_data
+ (of-object "GValueArray")
+ (c-name "g_value_array_sort_with_data")
+ (return-type "GValueArray*")
+ (parameters
+ '("GCompareDataFunc" "compare_func")
+ '("gpointer" "user_data")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/gvaluecollector.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/gvalue.h
+
+(define-method init
+ (of-object "GValue")
+ (c-name "g_value_init")
+ (return-type "GValue*")
+ (parameters
+ '("GType" "g_type")
+ )
+)
+
+(define-method copy
+ (of-object "GValue")
+ (c-name "g_value_copy")
+ (return-type "none")
+ (parameters
+ '("GValue*" "dest_value")
+ )
+)
+
+(define-method reset
+ (of-object "GValue")
+ (c-name "g_value_reset")
+ (return-type "GValue*")
+)
+
+(define-method unset
+ (of-object "GValue")
+ (c-name "g_value_unset")
+ (return-type "none")
+)
+
+(define-method set_instance
+ (of-object "GValue")
+ (c-name "g_value_set_instance")
+ (return-type "none")
+ (parameters
+ '("gpointer" "instance")
+ )
+)
+
+(define-method fits_pointer
+ (of-object "GValue")
+ (c-name "g_value_fits_pointer")
+ (return-type "gboolean")
+)
+
+(define-method peek_pointer
+ (of-object "GValue")
+ (c-name "g_value_peek_pointer")
+ (return-type "gpointer")
+)
+
+(define-function g_value_type_compatible
+ (c-name "g_value_type_compatible")
+ (return-type "gboolean")
+ (parameters
+ '("GType" "src_type")
+ '("GType" "dest_type")
+ )
+)
+
+(define-function g_value_type_transformable
+ (c-name "g_value_type_transformable")
+ (return-type "gboolean")
+ (parameters
+ '("GType" "src_type")
+ '("GType" "dest_type")
+ )
+)
+
+(define-method transform
+ (of-object "GValue")
+ (c-name "g_value_transform")
+ (return-type "gboolean")
+ (parameters
+ '("GValue*" "dest_value")
+ )
+)
+
+(define-function g_value_register_transform_func
+ (c-name "g_value_register_transform_func")
+ (return-type "none")
+ (parameters
+ '("GType" "src_type")
+ '("GType" "dest_type")
+ '("GValueTransform" "transform_func")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/gvaluetypes.h
+
+(define-method set_char
+ (of-object "GValue")
+ (c-name "g_value_set_char")
+ (return-type "none")
+ (parameters
+ '("gchar" "v_char")
+ )
+)
+
+(define-method get_char
+ (of-object "GValue")
+ (c-name "g_value_get_char")
+ (return-type "gchar")
+)
+
+(define-method set_uchar
+ (of-object "GValue")
+ (c-name "g_value_set_uchar")
+ (return-type "none")
+ (parameters
+ '("guchar" "v_uchar")
+ )
+)
+
+(define-method get_uchar
+ (of-object "GValue")
+ (c-name "g_value_get_uchar")
+ (return-type "guchar")
+)
+
+(define-method set_boolean
+ (of-object "GValue")
+ (c-name "g_value_set_boolean")
+ (return-type "none")
+ (parameters
+ '("gboolean" "v_boolean")
+ )
+)
+
+(define-method get_boolean
+ (of-object "GValue")
+ (c-name "g_value_get_boolean")
+ (return-type "gboolean")
+)
+
+(define-method set_int
+ (of-object "GValue")
+ (c-name "g_value_set_int")
+ (return-type "none")
+ (parameters
+ '("gint" "v_int")
+ )
+)
+
+(define-method get_int
+ (of-object "GValue")
+ (c-name "g_value_get_int")
+ (return-type "gint")
+)
+
+(define-method set_uint
+ (of-object "GValue")
+ (c-name "g_value_set_uint")
+ (return-type "none")
+ (parameters
+ '("guint" "v_uint")
+ )
+)
+
+(define-method get_uint
+ (of-object "GValue")
+ (c-name "g_value_get_uint")
+ (return-type "guint")
+)
+
+(define-method set_long
+ (of-object "GValue")
+ (c-name "g_value_set_long")
+ (return-type "none")
+ (parameters
+ '("glong" "v_long")
+ )
+)
+
+(define-method get_long
+ (of-object "GValue")
+ (c-name "g_value_get_long")
+ (return-type "glong")
+)
+
+(define-method set_ulong
+ (of-object "GValue")
+ (c-name "g_value_set_ulong")
+ (return-type "none")
+ (parameters
+ '("gulong" "v_ulong")
+ )
+)
+
+(define-method get_ulong
+ (of-object "GValue")
+ (c-name "g_value_get_ulong")
+ (return-type "gulong")
+)
+
+(define-method set_int64
+ (of-object "GValue")
+ (c-name "g_value_set_int64")
+ (return-type "none")
+ (parameters
+ '("gint64" "v_int64")
+ )
+)
+
+(define-method get_int64
+ (of-object "GValue")
+ (c-name "g_value_get_int64")
+ (return-type "gint64")
+)
+
+(define-method set_uint64
+ (of-object "GValue")
+ (c-name "g_value_set_uint64")
+ (return-type "none")
+ (parameters
+ '("guint64" "v_uint64")
+ )
+)
+
+(define-method get_uint64
+ (of-object "GValue")
+ (c-name "g_value_get_uint64")
+ (return-type "guint64")
+)
+
+(define-method set_float
+ (of-object "GValue")
+ (c-name "g_value_set_float")
+ (return-type "none")
+ (parameters
+ '("gfloat" "v_float")
+ )
+)
+
+(define-method get_float
+ (of-object "GValue")
+ (c-name "g_value_get_float")
+ (return-type "gfloat")
+)
+
+(define-method set_double
+ (of-object "GValue")
+ (c-name "g_value_set_double")
+ (return-type "none")
+ (parameters
+ '("gdouble" "v_double")
+ )
+)
+
+(define-method get_double
+ (of-object "GValue")
+ (c-name "g_value_get_double")
+ (return-type "gdouble")
+)
+
+(define-method set_string
+ (of-object "GValue")
+ (c-name "g_value_set_string")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "v_string")
+ )
+)
+
+(define-method set_static_string
+ (of-object "GValue")
+ (c-name "g_value_set_static_string")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "v_string")
+ )
+)
+
+(define-method get_string
+ (of-object "GValue")
+ (c-name "g_value_get_string")
+ (return-type "const-gchar*")
+)
+
+(define-method dup_string
+ (of-object "GValue")
+ (c-name "g_value_dup_string")
+ (return-type "gchar*")
+)
+
+(define-method set_pointer
+ (of-object "GValue")
+ (c-name "g_value_set_pointer")
+ (return-type "none")
+ (parameters
+ '("gpointer" "v_pointer")
+ )
+)
+
+(define-method get_pointer
+ (of-object "GValue")
+ (c-name "g_value_get_pointer")
+ (return-type "gpointer")
+)
+
+(define-function g_pointer_type_register_static
+ (c-name "g_pointer_type_register_static")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "name")
+ )
+)
+
+(define-function g_strdup_value_contents
+ (c-name "g_strdup_value_contents")
+ (return-type "gchar*")
+ (parameters
+ '("const-GValue*" "value")
+ )
+)
+
+(define-method take_string
+ (of-object "GValue")
+ (c-name "g_value_take_string")
+ (return-type "none")
+ (parameters
+ '("gchar*" "v_string")
+ )
+)
+
+(define-method set_string_take_ownership
+ (of-object "GValue")
+ (c-name "g_value_set_string_take_ownership")
+ (return-type "none")
+ (parameters
+ '("gchar*" "v_string")
+ )
+)
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gobject/stamp-gmarshal.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gmodule/gmoduleconf.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gmodule/gmodule.h
+
+(define-function g_module_supported
+ (c-name "g_module_supported")
+ (return-type "gboolean")
+)
+
+(define-function g_module_open
+ (c-name "g_module_open")
+ (return-type "GModule*")
+ (parameters
+ '("const-gchar*" "file_name")
+ '("GModuleFlags" "flags")
+ )
+)
+
+(define-method close
+ (of-object "GModule")
+ (c-name "g_module_close")
+ (return-type "gboolean")
+)
+
+(define-method make_resident
+ (of-object "GModule")
+ (c-name "g_module_make_resident")
+ (return-type "none")
+)
+
+(define-function g_module_error
+ (c-name "g_module_error")
+ (return-type "const-gchar*")
+)
+
+(define-method symbol
+ (of-object "GModule")
+ (c-name "g_module_symbol")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "symbol_name")
+ '("gpointer*" "symbol")
+ )
+)
+
+(define-method name
+ (of-object "GModule")
+ (c-name "g_module_name")
+ (return-type "const-gchar*")
+)
+
+(define-function g_module_build_path
+ (c-name "g_module_build_path")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "directory")
+ '("const-gchar*" "module_name")
+ )
+)
+
+
diff --git a/libs/glibmm2/glib/src/gmodule_enums.defs b/libs/glibmm2/glib/src/gmodule_enums.defs
new file mode 100644
index 0000000000..16b781bd3e
--- /dev/null
+++ b/libs/glibmm2/glib/src/gmodule_enums.defs
@@ -0,0 +1,12 @@
+;; From /home/murrayc/cvs/gnome212/glib/gmodule/gmodule.h
+
+(define-flags-extended ModuleFlags
+ (in-module "G")
+ (c-name "GModuleFlags")
+ (values
+ '("lazy" "G_MODULE_BIND_LAZY" "1 << 0")
+ '("local" "G_MODULE_BIND_LOCAL" "1 << 1")
+ '("mask" "G_MODULE_BIND_MASK" "0x03")
+ )
+)
+
diff --git a/libs/glibmm2/glib/src/gmodule_functions.defs b/libs/glibmm2/glib/src/gmodule_functions.defs
new file mode 100644
index 0000000000..220ab5148a
--- /dev/null
+++ b/libs/glibmm2/glib/src/gmodule_functions.defs
@@ -0,0 +1,79 @@
+;; -*- scheme -*-
+; object definitions ...
+;; Enumerations and flags ...
+
+(define-flags Flags
+ (in-module "GModule")
+ (c-name "GModuleFlags")
+ (gtype-id "G_TYPE_MODULE_FLAGS")
+ (values
+ '("lazy" "G_MODULE_BIND_LAZY")
+ '("local" "G_MODULE_BIND_LOCAL")
+ '("mask" "G_MODULE_BIND_MASK")
+ )
+)
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gmodule/gmoduleconf.h
+
+
+
+;; From /home/murrayc/cvs/gnome212/glib/gmodule/gmodule.h
+
+(define-function g_module_supported
+ (c-name "g_module_supported")
+ (return-type "gboolean")
+)
+
+(define-function g_module_open
+ (c-name "g_module_open")
+ (return-type "GModule*")
+ (parameters
+ '("const-gchar*" "file_name")
+ '("GModuleFlags" "flags")
+ )
+)
+
+(define-method close
+ (of-object "GModule")
+ (c-name "g_module_close")
+ (return-type "gboolean")
+)
+
+(define-method make_resident
+ (of-object "GModule")
+ (c-name "g_module_make_resident")
+ (return-type "none")
+)
+
+(define-function g_module_error
+ (c-name "g_module_error")
+ (return-type "const-gchar*")
+)
+
+(define-method symbol
+ (of-object "GModule")
+ (c-name "g_module_symbol")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "symbol_name")
+ '("gpointer*" "symbol")
+ )
+)
+
+(define-method name
+ (of-object "GModule")
+ (c-name "g_module_name")
+ (return-type "const-gchar*")
+)
+
+(define-function g_module_build_path
+ (c-name "g_module_build_path")
+ (return-type "gchar*")
+ (parameters
+ '("const-gchar*" "directory")
+ '("const-gchar*" "module_name")
+ )
+)
+
+
diff --git a/libs/glibmm2/glib/src/gobject.defs b/libs/glibmm2/glib/src/gobject.defs
new file mode 100644
index 0000000000..0c9f4b99ed
--- /dev/null
+++ b/libs/glibmm2/glib/src/gobject.defs
@@ -0,0 +1,3 @@
+(include gobject_functions.defs)
+(include gobject_enums.defs)
+
diff --git a/libs/glibmm2/glib/src/gobject_enums.defs b/libs/glibmm2/glib/src/gobject_enums.defs
new file mode 100644
index 0000000000..d234bdb395
--- /dev/null
+++ b/libs/glibmm2/glib/src/gobject_enums.defs
@@ -0,0 +1,80 @@
+;; From gobject/gparam.h
+
+(define-flags-extended ParamFlags
+ (in-module "G")
+ (c-name "GParamFlags")
+ (values
+ '("readable" "G_PARAM_READABLE" "1 << 0")
+ '("writable" "G_PARAM_WRITABLE" "1 << 1")
+ '("construct" "G_PARAM_CONSTRUCT" "1 << 2")
+ '("construct-only" "G_PARAM_CONSTRUCT_ONLY" "1 << 3")
+ '("lax-validation" "G_PARAM_LAX_VALIDATION" "1 << 4")
+ '("private" "G_PARAM_PRIVATE" "1 << 5")
+ )
+)
+
+;; From gobject/gsignal.h
+
+(define-flags-extended SignalFlags
+ (in-module "G")
+ (c-name "GSignalFlags")
+ (values
+ '("run-first" "G_SIGNAL_RUN_FIRST" "1 << 0")
+ '("run-last" "G_SIGNAL_RUN_LAST" "1 << 1")
+ '("run-cleanup" "G_SIGNAL_RUN_CLEANUP" "1 << 2")
+ '("no-recurse" "G_SIGNAL_NO_RECURSE" "1 << 3")
+ '("detailed" "G_SIGNAL_DETAILED" "1 << 4")
+ '("action" "G_SIGNAL_ACTION" "1 << 5")
+ '("no-hooks" "G_SIGNAL_NO_HOOKS" "1 << 6")
+ )
+)
+
+(define-flags-extended ConnectFlags
+ (in-module "G")
+ (c-name "GConnectFlags")
+ (values
+ '("after" "G_CONNECT_AFTER" "1 << 0")
+ '("swapped" "G_CONNECT_SWAPPED" "1 << 1")
+ )
+)
+
+(define-flags-extended SignalMatchType
+ (in-module "G")
+ (c-name "GSignalMatchType")
+ (values
+ '("id" "G_SIGNAL_MATCH_ID" "1 << 0")
+ '("detail" "G_SIGNAL_MATCH_DETAIL" "1 << 1")
+ '("closure" "G_SIGNAL_MATCH_CLOSURE" "1 << 2")
+ '("func" "G_SIGNAL_MATCH_FUNC" "1 << 3")
+ '("data" "G_SIGNAL_MATCH_DATA" "1 << 4")
+ '("unblocked" "G_SIGNAL_MATCH_UNBLOCKED" "1 << 5")
+ )
+)
+
+;; From gobject/gtype.h
+
+(define-flags-extended TypeDebugFlags
+ (in-module "G")
+ (c-name "GTypeDebugFlags")
+ (values
+ '("none" "G_TYPE_DEBUG_NONE" "0")
+ '("objects" "G_TYPE_DEBUG_OBJECTS" "1 << 0")
+ '("signals" "G_TYPE_DEBUG_SIGNALS" "1 << 1")
+ '("mask" "G_TYPE_DEBUG_MASK" "0x03")
+ )
+)
+
+(define-enum-extended TypeFundamentalFlags
+ (in-module "G")
+ (c-name "GTypeFundamentalFlags")
+ (values
+ )
+)
+
+(define-enum-extended TypeFlags
+ (in-module "G")
+ (c-name "GTypeFlags")
+ (values
+ )
+)
+
diff --git a/libs/glibmm2/glib/src/gobject_functions.defs b/libs/glibmm2/glib/src/gobject_functions.defs
new file mode 100644
index 0000000000..f06327cace
--- /dev/null
+++ b/libs/glibmm2/glib/src/gobject_functions.defs
@@ -0,0 +1,2608 @@
+;; -*- scheme -*-
+; object definitions ...
+(define-object TypeModule
+ (in-module "G")
+ (parent "GObject")
+ (c-name "GTypeModule")
+ (gtype-id "G_TYPE_TYPE_MODULE")
+)
+
+;; Enumerations and flags ...
+
+(define-flags ParamFlags
+ (in-module "G")
+ (c-name "GParamFlags")
+ (gtype-id "G_TYPE_PARAM_FLAGS")
+ (values
+ '("readable" "G_PARAM_READABLE")
+ '("writable" "G_PARAM_WRITABLE")
+ '("construct" "G_PARAM_CONSTRUCT")
+ '("construct-only" "G_PARAM_CONSTRUCT_ONLY")
+ '("lax-validation" "G_PARAM_LAX_VALIDATION")
+ '("private" "G_PARAM_PRIVATE")
+ )
+)
+
+(define-flags SignalFlags
+ (in-module "G")
+ (c-name "GSignalFlags")
+ (gtype-id "G_TYPE_SIGNAL_FLAGS")
+ (values
+ '("run-first" "G_SIGNAL_RUN_FIRST")
+ '("run-last" "G_SIGNAL_RUN_LAST")
+ '("run-cleanup" "G_SIGNAL_RUN_CLEANUP")
+ '("no-recurse" "G_SIGNAL_NO_RECURSE")
+ '("detailed" "G_SIGNAL_DETAILED")
+ '("action" "G_SIGNAL_ACTION")
+ '("no-hooks" "G_SIGNAL_NO_HOOKS")
+ )
+)
+
+(define-flags ConnectFlags
+ (in-module "G")
+ (c-name "GConnectFlags")
+ (gtype-id "G_TYPE_CONNECT_FLAGS")
+ (values
+ '("after" "G_CONNECT_AFTER")
+ '("swapped" "G_CONNECT_SWAPPED")
+ )
+)
+
+(define-flags SignalMatchType
+ (in-module "G")
+ (c-name "GSignalMatchType")
+ (gtype-id "G_TYPE_SIGNAL_MATCH_TYPE")
+ (values
+ '("id" "G_SIGNAL_MATCH_ID")
+ '("detail" "G_SIGNAL_MATCH_DETAIL")
+ '("closure" "G_SIGNAL_MATCH_CLOSURE")
+ '("func" "G_SIGNAL_MATCH_FUNC")
+ '("data" "G_SIGNAL_MATCH_DATA")
+ '("unblocked" "G_SIGNAL_MATCH_UNBLOCKED")
+ )
+)
+
+(define-flags TypeDebugFlags
+ (in-module "G")
+ (c-name "GTypeDebugFlags")
+ (gtype-id "G_TYPE_TYPE_DEBUG_FLAGS")
+ (values
+ '("none" "G_TYPE_DEBUG_NONE")
+ '("objects" "G_TYPE_DEBUG_OBJECTS")
+ '("signals" "G_TYPE_DEBUG_SIGNALS")
+ '("mask" "G_TYPE_DEBUG_MASK")
+ )
+)
+
+(define-flags TypeFundamentalFlags
+ (in-module "G")
+ (c-name "GTypeFundamentalFlags")
+ (gtype-id "G_TYPE_TYPE_FUNDAMENTAL_FLAGS")
+ (values
+ '("classed" "G_TYPE_FLAG_CLASSED")
+ '("instantiatable" "G_TYPE_FLAG_INSTANTIATABLE")
+ '("derivable" "G_TYPE_FLAG_DERIVABLE")
+ '("deep-derivable" "G_TYPE_FLAG_DEEP_DERIVABLE")
+ )
+)
+
+(define-flags TypeFlags
+ (in-module "G")
+ (c-name "GTypeFlags")
+ (gtype-id "G_TYPE_TYPE_FLAGS")
+ (values
+ '("abstract" "G_TYPE_FLAG_ABSTRACT")
+ '("value-abstract" "G_TYPE_FLAG_VALUE_ABSTRACT")
+ )
+)
+
+
+;; From gobject/gboxed.h
+
+(define-function g_boxed_free
+ (c-name "g_boxed_free")
+ (return-type "none")
+ (parameters
+ '("GType" "boxed_type")
+ '("gpointer" "boxed")
+ )
+)
+
+(define-method set_boxed
+ (of-object "GValue")
+ (c-name "g_value_set_boxed")
+ (return-type "none")
+ (parameters
+ '("gconstpointer" "v_boxed")
+ )
+)
+
+(define-method set_static_boxed
+ (of-object "GValue")
+ (c-name "g_value_set_static_boxed")
+ (return-type "none")
+ (parameters
+ '("gconstpointer" "v_boxed")
+ )
+)
+
+(define-method get_boxed
+ (of-object "GValue")
+ (c-name "g_value_get_boxed")
+ (return-type "gpointer")
+)
+
+(define-method dup_boxed
+ (of-object "GValue")
+ (c-name "g_value_dup_boxed")
+ (return-type "gpointer")
+)
+
+(define-function g_boxed_type_register_static
+ (c-name "g_boxed_type_register_static")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "name")
+ '("GBoxedCopyFunc" "boxed_copy")
+ '("GBoxedFreeFunc" "boxed_free")
+ )
+)
+
+(define-method set_boxed_take_ownership
+ (of-object "GValue")
+ (c-name "g_value_set_boxed_take_ownership")
+ (return-type "none")
+ (parameters
+ '("gconstpointer" "v_boxed")
+ )
+)
+
+(define-function g_closure_get_type
+ (c-name "g_closure_get_type")
+ (return-type "GType")
+)
+
+(define-function g_value_get_type
+ (c-name "g_value_get_type")
+ (return-type "GType")
+)
+
+(define-function g_value_array_get_type
+ (c-name "g_value_array_get_type")
+ (return-type "GType")
+)
+
+(define-function g_gstring_get_type
+ (c-name "g_gstring_get_type")
+ (return-type "GType")
+)
+
+
+
+;; From gobject/gclosure.h
+
+(define-function g_cclosure_new
+ (c-name "g_cclosure_new")
+ (return-type "GClosure*")
+ (parameters
+ '("GCallback" "callback_func")
+ '("gpointer" "user_data")
+ '("GClosureNotify" "destroy_data")
+ )
+)
+
+(define-function g_cclosure_new_swap
+ (c-name "g_cclosure_new_swap")
+ (return-type "GClosure*")
+ (parameters
+ '("GCallback" "callback_func")
+ '("gpointer" "user_data")
+ '("GClosureNotify" "destroy_data")
+ )
+)
+
+(define-function g_signal_type_cclosure_new
+ (c-name "g_signal_type_cclosure_new")
+ (return-type "GClosure*")
+ (parameters
+ '("GType" "itype")
+ '("guint" "struct_offset")
+ )
+)
+
+(define-method ref
+ (of-object "GClosure")
+ (c-name "g_closure_ref")
+ (return-type "GClosure*")
+)
+
+(define-method sink
+ (of-object "GClosure")
+ (c-name "g_closure_sink")
+ (return-type "none")
+)
+
+(define-method unref
+ (of-object "GClosure")
+ (c-name "g_closure_unref")
+ (return-type "none")
+)
+
+(define-function g_closure_new_simple
+ (c-name "g_closure_new_simple")
+ (return-type "GClosure*")
+ (parameters
+ '("guint" "sizeof_closure")
+ '("gpointer" "data")
+ )
+)
+
+(define-method add_finalize_notifier
+ (of-object "GClosure")
+ (c-name "g_closure_add_finalize_notifier")
+ (return-type "none")
+ (parameters
+ '("gpointer" "notify_data")
+ '("GClosureNotify" "notify_func")
+ )
+)
+
+(define-method remove_finalize_notifier
+ (of-object "GClosure")
+ (c-name "g_closure_remove_finalize_notifier")
+ (return-type "none")
+ (parameters
+ '("gpointer" "notify_data")
+ '("GClosureNotify" "notify_func")
+ )
+)
+
+(define-method add_invalidate_notifier
+ (of-object "GClosure")
+ (c-name "g_closure_add_invalidate_notifier")
+ (return-type "none")
+ (parameters
+ '("gpointer" "notify_data")
+ '("GClosureNotify" "notify_func")
+ )
+)
+
+(define-method remove_invalidate_notifier
+ (of-object "GClosure")
+ (c-name "g_closure_remove_invalidate_notifier")
+ (return-type "none")
+ (parameters
+ '("gpointer" "notify_data")
+ '("GClosureNotify" "notify_func")
+ )
+)
+
+(define-method add_marshal_guards
+ (of-object "GClosure")
+ (c-name "g_closure_add_marshal_guards")
+ (return-type "none")
+ (parameters
+ '("gpointer" "pre_marshal_data")
+ '("GClosureNotify" "pre_marshal_notify")
+ '("gpointer" "post_marshal_data")
+ '("GClosureNotify" "post_marshal_notify")
+ )
+)
+
+(define-method set_marshal
+ (of-object "GClosure")
+ (c-name "g_closure_set_marshal")
+ (return-type "none")
+ (parameters
+ '("GClosureMarshal" "marshal")
+ )
+)
+
+(define-method set_meta_marshal
+ (of-object "GClosure")
+ (c-name "g_closure_set_meta_marshal")
+ (return-type "none")
+ (parameters
+ '("gpointer" "marshal_data")
+ '("GClosureMarshal" "meta_marshal")
+ )
+)
+
+(define-method invalidate
+ (of-object "GClosure")
+ (c-name "g_closure_invalidate")
+ (return-type "none")
+)
+
+(define-method invoke
+ (of-object "GClosure")
+ (c-name "g_closure_invoke")
+ (return-type "none")
+ (parameters
+ '("GValue*" "return_value")
+ '("guint" "n_param_values")
+ '("const-GValue*" "param_values")
+ '("gpointer" "invocation_hint")
+ )
+)
+
+
+
+;; From gobject/genums.h
+
+(define-function g_enum_get_value
+ (c-name "g_enum_get_value")
+ (return-type "GEnumValue*")
+ (parameters
+ '("GEnumClass*" "enum_class")
+ '("gint" "value")
+ )
+)
+
+(define-function g_enum_get_value_by_name
+ (c-name "g_enum_get_value_by_name")
+ (return-type "GEnumValue*")
+ (parameters
+ '("GEnumClass*" "enum_class")
+ '("const-gchar*" "name")
+ )
+)
+
+(define-function g_enum_get_value_by_nick
+ (c-name "g_enum_get_value_by_nick")
+ (return-type "GEnumValue*")
+ (parameters
+ '("GEnumClass*" "enum_class")
+ '("const-gchar*" "nick")
+ )
+)
+
+(define-function g_flags_get_first_value
+ (c-name "g_flags_get_first_value")
+ (return-type "GFlagsValue*")
+ (parameters
+ '("GFlagsClass*" "flags_class")
+ '("guint" "value")
+ )
+)
+
+(define-function g_flags_get_value_by_name
+ (c-name "g_flags_get_value_by_name")
+ (return-type "GFlagsValue*")
+ (parameters
+ '("GFlagsClass*" "flags_class")
+ '("const-gchar*" "name")
+ )
+)
+
+(define-function g_flags_get_value_by_nick
+ (c-name "g_flags_get_value_by_nick")
+ (return-type "GFlagsValue*")
+ (parameters
+ '("GFlagsClass*" "flags_class")
+ '("const-gchar*" "nick")
+ )
+)
+
+(define-method set_enum
+ (of-object "GValue")
+ (c-name "g_value_set_enum")
+ (return-type "none")
+ (parameters
+ '("gint" "v_enum")
+ )
+)
+
+(define-method get_enum
+ (of-object "GValue")
+ (c-name "g_value_get_enum")
+ (return-type "gint")
+)
+
+(define-method set_flags
+ (of-object "GValue")
+ (c-name "g_value_set_flags")
+ (return-type "none")
+ (parameters
+ '("guint" "v_flags")
+ )
+)
+
+(define-method get_flags
+ (of-object "GValue")
+ (c-name "g_value_get_flags")
+ (return-type "guint")
+)
+
+(define-function g_enum_register_static
+ (c-name "g_enum_register_static")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-GEnumValue*" "const_static_values")
+ )
+)
+
+(define-function g_flags_register_static
+ (c-name "g_flags_register_static")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-GFlagsValue*" "const_static_values")
+ )
+)
+
+(define-function g_enum_complete_type_info
+ (c-name "g_enum_complete_type_info")
+ (return-type "none")
+ (parameters
+ '("GType" "g_enum_type")
+ '("GTypeInfo*" "info")
+ '("const-GEnumValue*" "const_values")
+ )
+)
+
+(define-function g_flags_complete_type_info
+ (c-name "g_flags_complete_type_info")
+ (return-type "none")
+ (parameters
+ '("GType" "g_flags_type")
+ '("GTypeInfo*" "info")
+ '("const-GFlagsValue*" "const_values")
+ )
+)
+
+
+
+;; From gobject/gmarshal.h
+
+
+
+;; From gobject/gobject.h
+
+(define-method install_property
+ (of-object "GObjectClass")
+ (c-name "g_object_class_install_property")
+ (return-type "none")
+ (parameters
+ '("guint" "property_id")
+ '("GParamSpec*" "pspec")
+ )
+)
+
+(define-method find_property
+ (of-object "GObjectClass")
+ (c-name "g_object_class_find_property")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "property_name")
+ )
+)
+
+(define-function g_object_new
+ (c-name "g_object_new")
+ (return-type "gpointer")
+ (parameters
+ '("GType" "object_type")
+ '("const-gchar*" "first_property_name")
+ )
+ (varargs #t)
+)
+
+(define-function g_object_newv
+ (c-name "g_object_newv")
+ (return-type "gpointer")
+ (parameters
+ '("GType" "object_type")
+ '("guint" "n_parameters")
+ '("GParameter*" "parameters")
+ )
+)
+
+(define-function g_object_new_valist
+ (c-name "g_object_new_valist")
+ (return-type "GObject*")
+ (parameters
+ '("GType" "object_type")
+ '("const-gchar*" "first_property_name")
+ '("va_list" "var_args")
+ )
+)
+
+(define-function g_object_set
+ (c-name "g_object_set")
+ (return-type "none")
+ (parameters
+ '("gpointer" "object")
+ '("const-gchar*" "first_property_name")
+ )
+ (varargs #t)
+)
+
+(define-function g_object_get
+ (c-name "g_object_get")
+ (return-type "none")
+ (parameters
+ '("gpointer" "object")
+ '("const-gchar*" "first_property_name")
+ )
+ (varargs #t)
+)
+
+(define-function g_object_connect
+ (c-name "g_object_connect")
+ (return-type "gpointer")
+ (parameters
+ '("gpointer" "object")
+ '("const-gchar*" "signal_spec")
+ )
+ (varargs #t)
+)
+
+(define-function g_object_disconnect
+ (c-name "g_object_disconnect")
+ (return-type "none")
+ (parameters
+ '("gpointer" "object")
+ '("const-gchar*" "signal_spec")
+ )
+ (varargs #t)
+)
+
+(define-method set_valist
+ (of-object "GObject")
+ (c-name "g_object_set_valist")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "first_property_name")
+ '("va_list" "var_args")
+ )
+)
+
+(define-method get_valist
+ (of-object "GObject")
+ (c-name "g_object_get_valist")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "first_property_name")
+ '("va_list" "var_args")
+ )
+)
+
+(define-method set_property
+ (of-object "GObject")
+ (c-name "g_object_set_property")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "property_name")
+ '("const-GValue*" "value")
+ )
+)
+
+(define-method get_property
+ (of-object "GObject")
+ (c-name "g_object_get_property")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "property_name")
+ '("GValue*" "value")
+ )
+)
+
+(define-method freeze_notify
+ (of-object "GObject")
+ (c-name "g_object_freeze_notify")
+ (return-type "none")
+)
+
+(define-method notify
+ (of-object "GObject")
+ (c-name "g_object_notify")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "property_name")
+ )
+)
+
+(define-method thaw_notify
+ (of-object "GObject")
+ (c-name "g_object_thaw_notify")
+ (return-type "none")
+)
+
+(define-function g_object_ref
+ (c-name "g_object_ref")
+ (return-type "gpointer")
+ (parameters
+ '("gpointer" "object")
+ )
+)
+
+(define-function g_object_unref
+ (c-name "g_object_unref")
+ (return-type "none")
+ (parameters
+ '("gpointer" "object")
+ )
+)
+
+(define-method weak_ref
+ (of-object "GObject")
+ (c-name "g_object_weak_ref")
+ (return-type "none")
+ (parameters
+ '("GWeakNotify" "notify")
+ '("gpointer" "data")
+ )
+)
+
+(define-method weak_unref
+ (of-object "GObject")
+ (c-name "g_object_weak_unref")
+ (return-type "none")
+ (parameters
+ '("GWeakNotify" "notify")
+ '("gpointer" "data")
+ )
+)
+
+(define-method add_weak_pointer
+ (of-object "GObject")
+ (c-name "g_object_add_weak_pointer")
+ (return-type "none")
+ (parameters
+ '("gpointer*" "weak_pointer_location")
+ )
+)
+
+(define-method remove_weak_pointer
+ (of-object "GObject")
+ (c-name "g_object_remove_weak_pointer")
+ (return-type "none")
+ (parameters
+ '("gpointer*" "weak_pointer_location")
+ )
+)
+
+(define-method get_qdata
+ (of-object "GObject")
+ (c-name "g_object_get_qdata")
+ (return-type "gpointer")
+ (parameters
+ '("GQuark" "quark")
+ )
+)
+
+(define-method set_qdata
+ (of-object "GObject")
+ (c-name "g_object_set_qdata")
+ (return-type "none")
+ (parameters
+ '("GQuark" "quark")
+ '("gpointer" "data")
+ )
+)
+
+(define-method set_qdata_full
+ (of-object "GObject")
+ (c-name "g_object_set_qdata_full")
+ (return-type "none")
+ (parameters
+ '("GQuark" "quark")
+ '("gpointer" "data")
+ '("GDestroyNotify" "destroy")
+ )
+)
+
+(define-method steal_qdata
+ (of-object "GObject")
+ (c-name "g_object_steal_qdata")
+ (return-type "gpointer")
+ (parameters
+ '("GQuark" "quark")
+ )
+)
+
+(define-method get_data
+ (of-object "GObject")
+ (c-name "g_object_get_data")
+ (return-type "gpointer")
+ (parameters
+ '("const-gchar*" "key")
+ )
+)
+
+(define-method set_data
+ (of-object "GObject")
+ (c-name "g_object_set_data")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "key")
+ '("gpointer" "data")
+ )
+)
+
+(define-method set_data_full
+ (of-object "GObject")
+ (c-name "g_object_set_data_full")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "key")
+ '("gpointer" "data")
+ '("GDestroyNotify" "destroy")
+ )
+)
+
+(define-method steal_data
+ (of-object "GObject")
+ (c-name "g_object_steal_data")
+ (return-type "gpointer")
+ (parameters
+ '("const-gchar*" "key")
+ )
+)
+
+(define-method watch_closure
+ (of-object "GObject")
+ (c-name "g_object_watch_closure")
+ (return-type "none")
+ (parameters
+ '("GClosure*" "closure")
+ )
+)
+
+(define-function g_cclosure_new_object
+ (c-name "g_cclosure_new_object")
+ (return-type "GClosure*")
+ (parameters
+ '("GCallback" "callback_func")
+ '("GObject*" "object")
+ )
+)
+
+(define-function g_cclosure_new_object_swap
+ (c-name "g_cclosure_new_object_swap")
+ (return-type "GClosure*")
+ (parameters
+ '("GCallback" "callback_func")
+ '("GObject*" "object")
+ )
+)
+
+(define-function g_closure_new_object
+ (c-name "g_closure_new_object")
+ (return-type "GClosure*")
+ (parameters
+ '("guint" "sizeof_closure")
+ '("GObject*" "object")
+ )
+)
+
+(define-method set_object
+ (of-object "GValue")
+ (c-name "g_value_set_object")
+ (return-type "none")
+ (parameters
+ '("gpointer" "v_object")
+ )
+)
+
+(define-method get_object
+ (of-object "GValue")
+ (c-name "g_value_get_object")
+ (return-type "gpointer")
+)
+
+(define-method dup_object
+ (of-object "GValue")
+ (c-name "g_value_dup_object")
+ (return-type "GObject*")
+)
+
+(define-function g_signal_connect_object
+ (c-name "g_signal_connect_object")
+ (return-type "gulong")
+ (parameters
+ '("gpointer" "instance")
+ '("const-gchar*" "detailed_signal")
+ '("GCallback" "c_handler")
+ '("gpointer" "gobject")
+ '("GConnectFlags" "connect_flags")
+ )
+)
+
+(define-method run_dispose
+ (of-object "GObject")
+ (c-name "g_object_run_dispose")
+ (return-type "none")
+)
+
+(define-method set_object_take_ownership
+ (of-object "GValue")
+ (c-name "g_value_set_object_take_ownership")
+ (return-type "none")
+ (parameters
+ '("gpointer" "v_object")
+ )
+)
+
+
+
+;; From gobject/gparam.h
+
+(define-method ref
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_ref")
+ (return-type "GParamSpec*")
+)
+
+(define-method unref
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_unref")
+ (return-type "none")
+)
+
+(define-method sink
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_sink")
+ (return-type "none")
+)
+
+(define-method get_qdata
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_get_qdata")
+ (return-type "gpointer")
+ (parameters
+ '("GQuark" "quark")
+ )
+)
+
+(define-method set_qdata
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_set_qdata")
+ (return-type "none")
+ (parameters
+ '("GQuark" "quark")
+ '("gpointer" "data")
+ )
+)
+
+(define-method set_qdata_full
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_set_qdata_full")
+ (return-type "none")
+ (parameters
+ '("GQuark" "quark")
+ '("gpointer" "data")
+ '("GDestroyNotify" "destroy")
+ )
+)
+
+(define-method steal_qdata
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_steal_qdata")
+ (return-type "gpointer")
+ (parameters
+ '("GQuark" "quark")
+ )
+)
+
+(define-function g_param_value_set_default
+ (c-name "g_param_value_set_default")
+ (return-type "none")
+ (parameters
+ '("GParamSpec*" "pspec")
+ '("GValue*" "value")
+ )
+)
+
+(define-function g_param_value_defaults
+ (c-name "g_param_value_defaults")
+ (return-type "gboolean")
+ (parameters
+ '("GParamSpec*" "pspec")
+ '("GValue*" "value")
+ )
+)
+
+(define-function g_param_value_validate
+ (c-name "g_param_value_validate")
+ (return-type "gboolean")
+ (parameters
+ '("GParamSpec*" "pspec")
+ '("GValue*" "value")
+ )
+)
+
+(define-function g_param_value_convert
+ (c-name "g_param_value_convert")
+ (return-type "gboolean")
+ (parameters
+ '("GParamSpec*" "pspec")
+ '("const-GValue*" "src_value")
+ '("GValue*" "dest_value")
+ '("gboolean" "strict_validation")
+ )
+)
+
+(define-function g_param_values_cmp
+ (c-name "g_param_values_cmp")
+ (return-type "gint")
+ (parameters
+ '("GParamSpec*" "pspec")
+ '("const-GValue*" "value1")
+ '("const-GValue*" "value2")
+ )
+)
+
+(define-method get_name
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_get_name")
+ (return-type "const-gchar*")
+)
+
+(define-method get_nick
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_get_nick")
+ (return-type "const-gchar*")
+)
+
+(define-method get_blurb
+ (of-object "GParamSpec")
+ (c-name "g_param_spec_get_blurb")
+ (return-type "const-gchar*")
+)
+
+(define-method set_param
+ (of-object "GValue")
+ (c-name "g_value_set_param")
+ (return-type "none")
+ (parameters
+ '("GParamSpec*" "param")
+ )
+)
+
+(define-method get_param
+ (of-object "GValue")
+ (c-name "g_value_get_param")
+ (return-type "GParamSpec*")
+)
+
+(define-method dup_param
+ (of-object "GValue")
+ (c-name "g_value_dup_param")
+ (return-type "GParamSpec*")
+)
+
+(define-method set_param_take_ownership
+ (of-object "GValue")
+ (c-name "g_value_set_param_take_ownership")
+ (return-type "none")
+ (parameters
+ '("GParamSpec*" "param")
+ )
+)
+
+(define-function g_param_type_register_static
+ (c-name "g_param_type_register_static")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-GParamSpecTypeInfo*" "pspec_info")
+ )
+)
+
+(define-function _g_param_type_register_static_constant
+ (c-name "_g_param_type_register_static_constant")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-GParamSpecTypeInfo*" "pspec_info")
+ '("GType" "opt_type")
+ )
+)
+
+(define-function g_param_spec_internal
+ (c-name "g_param_spec_internal")
+ (return-type "gpointer")
+ (parameters
+ '("GType" "param_type")
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_pool_new
+ (c-name "g_param_spec_pool_new")
+ (return-type "GParamSpecPool*")
+ (parameters
+ '("gboolean" "type_prefixing")
+ )
+)
+
+(define-method insert
+ (of-object "GParamSpecPool")
+ (c-name "g_param_spec_pool_insert")
+ (return-type "none")
+ (parameters
+ '("GParamSpec*" "pspec")
+ '("GType" "owner_type")
+ )
+)
+
+(define-method remove
+ (of-object "GParamSpecPool")
+ (c-name "g_param_spec_pool_remove")
+ (return-type "none")
+ (parameters
+ '("GParamSpec*" "pspec")
+ )
+)
+
+(define-method lookup
+ (of-object "GParamSpecPool")
+ (c-name "g_param_spec_pool_lookup")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "param_name")
+ '("GType" "owner_type")
+ '("gboolean" "walk_ancestors")
+ )
+)
+
+(define-method list_owned
+ (of-object "GParamSpecPool")
+ (c-name "g_param_spec_pool_list_owned")
+ (return-type "GList*")
+ (parameters
+ '("GType" "owner_type")
+ )
+)
+
+(define-method list
+ (of-object "GParamSpecPool")
+ (c-name "g_param_spec_pool_list")
+ (return-type "GParamSpec**")
+ (parameters
+ '("GType" "owner_type")
+ '("guint*" "n_pspecs_p")
+ )
+)
+
+
+
+;; From gobject/gparamspecs.h
+
+(define-function g_param_spec_char
+ (c-name "g_param_spec_char")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("gint8" "minimum")
+ '("gint8" "maximum")
+ '("gint8" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_uchar
+ (c-name "g_param_spec_uchar")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("guint8" "minimum")
+ '("guint8" "maximum")
+ '("guint8" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_boolean
+ (c-name "g_param_spec_boolean")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("gboolean" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_int
+ (c-name "g_param_spec_int")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("gint" "minimum")
+ '("gint" "maximum")
+ '("gint" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_uint
+ (c-name "g_param_spec_uint")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("guint" "minimum")
+ '("guint" "maximum")
+ '("guint" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_long
+ (c-name "g_param_spec_long")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("glong" "minimum")
+ '("glong" "maximum")
+ '("glong" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_ulong
+ (c-name "g_param_spec_ulong")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("gulong" "minimum")
+ '("gulong" "maximum")
+ '("gulong" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_int64
+ (c-name "g_param_spec_int64")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("gint64" "minimum")
+ '("gint64" "maximum")
+ '("gint64" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_uint64
+ (c-name "g_param_spec_uint64")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("guint64" "minimum")
+ '("guint64" "maximum")
+ '("guint64" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_unichar
+ (c-name "g_param_spec_unichar")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("gunichar" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_enum
+ (c-name "g_param_spec_enum")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("GType" "enum_type")
+ '("gint" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_flags
+ (c-name "g_param_spec_flags")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("GType" "flags_type")
+ '("guint" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_float
+ (c-name "g_param_spec_float")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("gfloat" "minimum")
+ '("gfloat" "maximum")
+ '("gfloat" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_double
+ (c-name "g_param_spec_double")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("gdouble" "minimum")
+ '("gdouble" "maximum")
+ '("gdouble" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_string
+ (c-name "g_param_spec_string")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("const-gchar*" "default_value")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_param
+ (c-name "g_param_spec_param")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("GType" "param_type")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_boxed
+ (c-name "g_param_spec_boxed")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("GType" "boxed_type")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_pointer
+ (c-name "g_param_spec_pointer")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_value_array
+ (c-name "g_param_spec_value_array")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("GParamSpec*" "element_spec")
+ '("GParamFlags" "flags")
+ )
+)
+
+(define-function g_param_spec_object
+ (c-name "g_param_spec_object")
+ (return-type "GParamSpec*")
+ (parameters
+ '("const-gchar*" "name")
+ '("const-gchar*" "nick")
+ '("const-gchar*" "blurb")
+ '("GType" "object_type")
+ '("GParamFlags" "flags")
+ )
+)
+
+
+
+;; From gobject/gsignal.h
+
+(define-function g_signal_newv
+ (c-name "g_signal_newv")
+ (return-type "guint")
+ (parameters
+ '("const-gchar*" "signal_name")
+ '("GType" "itype")
+ '("GSignalFlags" "signal_flags")
+ '("GClosure*" "class_closure")
+ '("GSignalAccumulator" "accumulator")
+ '("gpointer" "accu_data")
+ '("GSignalCMarshaller" "c_marshaller")
+ '("GType" "return_type")
+ '("guint" "n_params")
+ '("GType*" "param_types")
+ )
+)
+
+(define-function g_signal_new_valist
+ (c-name "g_signal_new_valist")
+ (return-type "guint")
+ (parameters
+ '("const-gchar*" "signal_name")
+ '("GType" "itype")
+ '("GSignalFlags" "signal_flags")
+ '("GClosure*" "class_closure")
+ '("GSignalAccumulator" "accumulator")
+ '("gpointer" "accu_data")
+ '("GSignalCMarshaller" "c_marshaller")
+ '("GType" "return_type")
+ '("guint" "n_params")
+ '("va_list" "args")
+ )
+)
+
+(define-function g_signal_new
+ (c-name "g_signal_new")
+ (return-type "guint")
+ (parameters
+ '("const-gchar*" "signal_name")
+ '("GType" "itype")
+ '("GSignalFlags" "signal_flags")
+ '("guint" "class_offset")
+ '("GSignalAccumulator" "accumulator")
+ '("gpointer" "accu_data")
+ '("GSignalCMarshaller" "c_marshaller")
+ '("GType" "return_type")
+ '("guint" "n_params")
+ )
+ (varargs #t)
+)
+
+(define-function g_signal_emitv
+ (c-name "g_signal_emitv")
+ (return-type "none")
+ (parameters
+ '("const-GValue*" "instance_and_params")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ '("GValue*" "return_value")
+ )
+)
+
+(define-function g_signal_emit_valist
+ (c-name "g_signal_emit_valist")
+ (return-type "none")
+ (parameters
+ '("gpointer" "instance")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ '("va_list" "var_args")
+ )
+)
+
+(define-function g_signal_emit
+ (c-name "g_signal_emit")
+ (return-type "none")
+ (parameters
+ '("gpointer" "instance")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ )
+ (varargs #t)
+)
+
+(define-function g_signal_emit_by_name
+ (c-name "g_signal_emit_by_name")
+ (return-type "none")
+ (parameters
+ '("gpointer" "instance")
+ '("const-gchar*" "detailed_signal")
+ )
+ (varargs #t)
+)
+
+(define-function g_signal_lookup
+ (c-name "g_signal_lookup")
+ (return-type "guint")
+ (parameters
+ '("const-gchar*" "name")
+ '("GType" "itype")
+ )
+)
+
+(define-function g_signal_name
+ (c-name "g_signal_name")
+ (return-type "const-gchar*")
+ (parameters
+ '("guint" "signal_id")
+ )
+)
+
+(define-function g_signal_query
+ (c-name "g_signal_query")
+ (return-type "none")
+ (parameters
+ '("guint" "signal_id")
+ '("GSignalQuery*" "query")
+ )
+)
+
+(define-function g_signal_list_ids
+ (c-name "g_signal_list_ids")
+ (return-type "guint*")
+ (parameters
+ '("GType" "itype")
+ '("guint*" "n_ids")
+ )
+)
+
+(define-function g_signal_parse_name
+ (c-name "g_signal_parse_name")
+ (return-type "gboolean")
+ (parameters
+ '("const-gchar*" "detailed_signal")
+ '("GType" "itype")
+ '("guint*" "signal_id_p")
+ '("GQuark*" "detail_p")
+ '("gboolean" "force_detail_quark")
+ )
+)
+
+(define-function g_signal_get_invocation_hint
+ (c-name "g_signal_get_invocation_hint")
+ (return-type "GSignalInvocationHint*")
+ (parameters
+ '("gpointer" "instance")
+ )
+)
+
+(define-function g_signal_stop_emission
+ (c-name "g_signal_stop_emission")
+ (return-type "none")
+ (parameters
+ '("gpointer" "instance")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ )
+)
+
+(define-function g_signal_stop_emission_by_name
+ (c-name "g_signal_stop_emission_by_name")
+ (return-type "none")
+ (parameters
+ '("gpointer" "instance")
+ '("const-gchar*" "detailed_signal")
+ )
+)
+
+(define-function g_signal_add_emission_hook
+ (c-name "g_signal_add_emission_hook")
+ (return-type "gulong")
+ (parameters
+ '("guint" "signal_id")
+ '("GQuark" "quark")
+ '("GSignalEmissionHook" "hook_func")
+ '("gpointer" "hook_data")
+ '("GDestroyNotify" "data_destroy")
+ )
+)
+
+(define-function g_signal_remove_emission_hook
+ (c-name "g_signal_remove_emission_hook")
+ (return-type "none")
+ (parameters
+ '("guint" "signal_id")
+ '("gulong" "hook_id")
+ )
+)
+
+(define-function g_signal_has_handler_pending
+ (c-name "g_signal_has_handler_pending")
+ (return-type "gboolean")
+ (parameters
+ '("gpointer" "instance")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ '("gboolean" "may_be_blocked")
+ )
+)
+
+(define-function g_signal_connect_closure_by_id
+ (c-name "g_signal_connect_closure_by_id")
+ (return-type "gulong")
+ (parameters
+ '("gpointer" "instance")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ '("GClosure*" "closure")
+ '("gboolean" "after")
+ )
+)
+
+(define-function g_signal_connect_closure
+ (c-name "g_signal_connect_closure")
+ (return-type "gulong")
+ (parameters
+ '("gpointer" "instance")
+ '("const-gchar*" "detailed_signal")
+ '("GClosure*" "closure")
+ '("gboolean" "after")
+ )
+)
+
+(define-function g_signal_connect_data
+ (c-name "g_signal_connect_data")
+ (return-type "gulong")
+ (parameters
+ '("gpointer" "instance")
+ '("const-gchar*" "detailed_signal")
+ '("GCallback" "c_handler")
+ '("gpointer" "data")
+ '("GClosureNotify" "destroy_data")
+ '("GConnectFlags" "connect_flags")
+ )
+)
+
+(define-function g_signal_handler_block
+ (c-name "g_signal_handler_block")
+ (return-type "none")
+ (parameters
+ '("gpointer" "instance")
+ '("gulong" "handler_id")
+ )
+)
+
+(define-function g_signal_handler_unblock
+ (c-name "g_signal_handler_unblock")
+ (return-type "none")
+ (parameters
+ '("gpointer" "instance")
+ '("gulong" "handler_id")
+ )
+)
+
+(define-function g_signal_handler_disconnect
+ (c-name "g_signal_handler_disconnect")
+ (return-type "none")
+ (parameters
+ '("gpointer" "instance")
+ '("gulong" "handler_id")
+ )
+)
+
+(define-function g_signal_handler_is_connected
+ (c-name "g_signal_handler_is_connected")
+ (return-type "gboolean")
+ (parameters
+ '("gpointer" "instance")
+ '("gulong" "handler_id")
+ )
+)
+
+(define-function g_signal_handler_find
+ (c-name "g_signal_handler_find")
+ (return-type "gulong")
+ (parameters
+ '("gpointer" "instance")
+ '("GSignalMatchType" "mask")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ '("GClosure*" "closure")
+ '("gpointer" "func")
+ '("gpointer" "data")
+ )
+)
+
+(define-function g_signal_handlers_block_matched
+ (c-name "g_signal_handlers_block_matched")
+ (return-type "guint")
+ (parameters
+ '("gpointer" "instance")
+ '("GSignalMatchType" "mask")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ '("GClosure*" "closure")
+ '("gpointer" "func")
+ '("gpointer" "data")
+ )
+)
+
+(define-function g_signal_handlers_unblock_matched
+ (c-name "g_signal_handlers_unblock_matched")
+ (return-type "guint")
+ (parameters
+ '("gpointer" "instance")
+ '("GSignalMatchType" "mask")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ '("GClosure*" "closure")
+ '("gpointer" "func")
+ '("gpointer" "data")
+ )
+)
+
+(define-function g_signal_handlers_disconnect_matched
+ (c-name "g_signal_handlers_disconnect_matched")
+ (return-type "guint")
+ (parameters
+ '("gpointer" "instance")
+ '("GSignalMatchType" "mask")
+ '("guint" "signal_id")
+ '("GQuark" "detail")
+ '("GClosure*" "closure")
+ '("gpointer" "func")
+ '("gpointer" "data")
+ )
+)
+
+(define-function g_signal_override_class_closure
+ (c-name "g_signal_override_class_closure")
+ (return-type "none")
+ (parameters
+ '("guint" "signal_id")
+ '("GType" "instance_type")
+ '("GClosure*" "class_closure")
+ )
+)
+
+(define-function g_signal_chain_from_overridden
+ (c-name "g_signal_chain_from_overridden")
+ (return-type "none")
+ (parameters
+ '("const-GValue*" "instance_and_params")
+ '("GValue*" "return_value")
+ )
+)
+
+(define-function _g_signals_destroy
+ (c-name "_g_signals_destroy")
+ (return-type "none")
+ (parameters
+ '("GType" "itype")
+ )
+)
+
+
+
+;; From gobject/gsourceclosure.h
+
+(define-function g_io_channel_get_type
+ (c-name "g_io_channel_get_type")
+ (return-type "GType")
+)
+
+(define-function g_io_condition_get_type
+ (c-name "g_io_condition_get_type")
+ (return-type "GType")
+)
+
+
+
+;; From gobject/gtype.h
+
+(define-function g_type_init
+ (c-name "g_type_init")
+ (return-type "none")
+)
+
+(define-function g_type_init_with_debug_flags
+ (c-name "g_type_init_with_debug_flags")
+ (return-type "none")
+ (parameters
+ '("GTypeDebugFlags" "debug_flags")
+ )
+)
+
+(define-method name
+ (of-object "GType")
+ (c-name "g_type_name")
+ (return-type "const-gchar*")
+)
+
+(define-method qname
+ (of-object "GType")
+ (c-name "g_type_qname")
+ (return-type "GQuark")
+)
+
+(define-function g_type_from_name
+ (c-name "g_type_from_name")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "name")
+ )
+)
+
+(define-method parent
+ (of-object "GType")
+ (c-name "g_type_parent")
+ (return-type "GType")
+)
+
+(define-method depth
+ (of-object "GType")
+ (c-name "g_type_depth")
+ (return-type "guint")
+)
+
+(define-method next_base
+ (of-object "GType")
+ (c-name "g_type_next_base")
+ (return-type "GType")
+ (parameters
+ '("GType" "root_type")
+ )
+)
+
+(define-method is_a
+ (of-object "GType")
+ (c-name "g_type_is_a")
+ (return-type "gboolean")
+ (parameters
+ '("GType" "is_a_type")
+ )
+)
+
+(define-method class_ref
+ (of-object "GType")
+ (c-name "g_type_class_ref")
+ (return-type "gpointer")
+)
+
+(define-method class_peek
+ (of-object "GType")
+ (c-name "g_type_class_peek")
+ (return-type "gpointer")
+)
+
+(define-function g_type_class_unref
+ (c-name "g_type_class_unref")
+ (return-type "none")
+ (parameters
+ '("gpointer" "g_class")
+ )
+)
+
+(define-function g_type_class_peek_parent
+ (c-name "g_type_class_peek_parent")
+ (return-type "gpointer")
+ (parameters
+ '("gpointer" "g_class")
+ )
+)
+
+(define-function g_type_interface_peek
+ (c-name "g_type_interface_peek")
+ (return-type "gpointer")
+ (parameters
+ '("gpointer" "instance_class")
+ '("GType" "iface_type")
+ )
+)
+
+(define-function g_type_interface_peek_parent
+ (c-name "g_type_interface_peek_parent")
+ (return-type "gpointer")
+ (parameters
+ '("gpointer" "g_iface")
+ )
+)
+
+(define-method children
+ (of-object "GType")
+ (c-name "g_type_children")
+ (return-type "GType*")
+ (parameters
+ '("guint*" "n_children")
+ )
+)
+
+(define-method interfaces
+ (of-object "GType")
+ (c-name "g_type_interfaces")
+ (return-type "GType*")
+ (parameters
+ '("guint*" "n_interfaces")
+ )
+)
+
+(define-method set_qdata
+ (of-object "GType")
+ (c-name "g_type_set_qdata")
+ (return-type "none")
+ (parameters
+ '("GQuark" "quark")
+ '("gpointer" "data")
+ )
+)
+
+(define-method get_qdata
+ (of-object "GType")
+ (c-name "g_type_get_qdata")
+ (return-type "gpointer")
+ (parameters
+ '("GQuark" "quark")
+ )
+)
+
+(define-method query
+ (of-object "GType")
+ (c-name "g_type_query")
+ (return-type "none")
+ (parameters
+ '("GTypeQuery*" "query")
+ )
+)
+
+(define-method register_static
+ (of-object "GType")
+ (c-name "g_type_register_static")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "type_name")
+ '("const-GTypeInfo*" "info")
+ '("GTypeFlags" "flags")
+ )
+)
+
+(define-method register_dynamic
+ (of-object "GType")
+ (c-name "g_type_register_dynamic")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "type_name")
+ '("GTypePlugin*" "plugin")
+ '("GTypeFlags" "flags")
+ )
+)
+
+(define-method register_fundamental
+ (of-object "GType")
+ (c-name "g_type_register_fundamental")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "type_name")
+ '("const-GTypeInfo*" "info")
+ '("const-GTypeFundamentalInfo*" "finfo")
+ '("GTypeFlags" "flags")
+ )
+)
+
+(define-method add_interface_static
+ (of-object "GType")
+ (c-name "g_type_add_interface_static")
+ (return-type "none")
+ (parameters
+ '("GType" "interface_type")
+ '("const-GInterfaceInfo*" "info")
+ )
+)
+
+(define-method add_interface_dynamic
+ (of-object "GType")
+ (c-name "g_type_add_interface_dynamic")
+ (return-type "none")
+ (parameters
+ '("GType" "interface_type")
+ '("GTypePlugin*" "plugin")
+ )
+)
+
+(define-method interface_add_prerequisite
+ (of-object "GType")
+ (c-name "g_type_interface_add_prerequisite")
+ (return-type "none")
+ (parameters
+ '("GType" "prerequisite_type")
+ )
+)
+
+(define-method get_plugin
+ (of-object "GType")
+ (c-name "g_type_get_plugin")
+ (return-type "GTypePlugin*")
+)
+
+(define-method interface_get_plugin
+ (of-object "GType")
+ (c-name "g_type_interface_get_plugin")
+ (return-type "GTypePlugin*")
+ (parameters
+ '("GType" "implementation_type")
+ )
+)
+
+(define-function g_type_fundamental_next
+ (c-name "g_type_fundamental_next")
+ (return-type "GType")
+)
+
+(define-method fundamental
+ (of-object "GType")
+ (c-name "g_type_fundamental")
+ (return-type "GType")
+)
+
+(define-method create_instance
+ (of-object "GType")
+ (c-name "g_type_create_instance")
+ (return-type "GTypeInstance*")
+)
+
+(define-function g_type_free_instance
+ (c-name "g_type_free_instance")
+ (return-type "none")
+ (parameters
+ '("GTypeInstance*" "instance")
+ )
+)
+
+(define-function g_type_add_class_cache_func
+ (c-name "g_type_add_class_cache_func")
+ (return-type "none")
+ (parameters
+ '("gpointer" "cache_data")
+ '("GTypeClassCacheFunc" "cache_func")
+ )
+)
+
+(define-function g_type_remove_class_cache_func
+ (c-name "g_type_remove_class_cache_func")
+ (return-type "none")
+ (parameters
+ '("gpointer" "cache_data")
+ '("GTypeClassCacheFunc" "cache_func")
+ )
+)
+
+(define-function g_type_class_unref_uncached
+ (c-name "g_type_class_unref_uncached")
+ (return-type "none")
+ (parameters
+ '("gpointer" "g_class")
+ )
+)
+
+(define-method value_table_peek
+ (of-object "GType")
+ (c-name "g_type_value_table_peek")
+ (return-type "GTypeValueTable*")
+)
+
+(define-function g_type_check_instance
+ (c-name "g_type_check_instance")
+ (return-type "gboolean")
+ (parameters
+ '("GTypeInstance*" "instance")
+ )
+)
+
+(define-function g_type_check_instance_cast
+ (c-name "g_type_check_instance_cast")
+ (return-type "GTypeInstance*")
+ (parameters
+ '("GTypeInstance*" "instance")
+ '("GType" "iface_type")
+ )
+)
+
+(define-function g_type_check_instance_is_a
+ (c-name "g_type_check_instance_is_a")
+ (return-type "gboolean")
+ (parameters
+ '("GTypeInstance*" "instance")
+ '("GType" "iface_type")
+ )
+)
+
+(define-function g_type_check_class_cast
+ (c-name "g_type_check_class_cast")
+ (return-type "GTypeClass*")
+ (parameters
+ '("GTypeClass*" "g_class")
+ '("GType" "is_a_type")
+ )
+)
+
+(define-function g_type_check_class_is_a
+ (c-name "g_type_check_class_is_a")
+ (return-type "gboolean")
+ (parameters
+ '("GTypeClass*" "g_class")
+ '("GType" "is_a_type")
+ )
+)
+
+(define-method check_is_value_type
+ (of-object "GType")
+ (c-name "g_type_check_is_value_type")
+ (return-type "gboolean")
+)
+
+(define-function g_type_check_value
+ (c-name "g_type_check_value")
+ (return-type "gboolean")
+ (parameters
+ '("GValue*" "value")
+ )
+)
+
+(define-function g_type_check_value_holds
+ (c-name "g_type_check_value_holds")
+ (return-type "gboolean")
+ (parameters
+ '("GValue*" "value")
+ '("GType" "type")
+ )
+)
+
+(define-method test_flags
+ (of-object "GType")
+ (c-name "g_type_test_flags")
+ (return-type "gboolean")
+ (parameters
+ '("guint" "flags")
+ )
+)
+
+(define-function g_type_name_from_instance
+ (c-name "g_type_name_from_instance")
+ (return-type "const-gchar*")
+ (parameters
+ '("GTypeInstance*" "instance")
+ )
+)
+
+(define-function g_type_name_from_class
+ (c-name "g_type_name_from_class")
+ (return-type "const-gchar*")
+ (parameters
+ '("GTypeClass*" "g_class")
+ )
+)
+
+
+
+;; From gobject/gtypemodule.h
+
+(define-function g_type_module_get_type
+ (c-name "g_type_module_get_type")
+ (return-type "GType")
+)
+
+(define-method use
+ (of-object "GTypeModule")
+ (c-name "g_type_module_use")
+ (return-type "gboolean")
+)
+
+(define-method unuse
+ (of-object "GTypeModule")
+ (c-name "g_type_module_unuse")
+ (return-type "none")
+)
+
+(define-method set_name
+ (of-object "GTypeModule")
+ (c-name "g_type_module_set_name")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "name")
+ )
+)
+
+(define-method register_type
+ (of-object "GTypeModule")
+ (c-name "g_type_module_register_type")
+ (return-type "GType")
+ (parameters
+ '("GType" "parent_type")
+ '("const-gchar*" "type_name")
+ '("const-GTypeInfo*" "type_info")
+ '("GTypeFlags" "flags")
+ )
+)
+
+(define-method add_interface
+ (of-object "GTypeModule")
+ (c-name "g_type_module_add_interface")
+ (return-type "none")
+ (parameters
+ '("GType" "instance_type")
+ '("GType" "interface_type")
+ '("const-GInterfaceInfo*" "interface_info")
+ )
+)
+
+
+
+;; From gobject/gtypeplugin.h
+
+(define-function g_type_plugin_get_type
+ (c-name "g_type_plugin_get_type")
+ (return-type "GType")
+)
+
+(define-method use
+ (of-object "GTypePlugin")
+ (c-name "g_type_plugin_use")
+ (return-type "none")
+)
+
+(define-method unuse
+ (of-object "GTypePlugin")
+ (c-name "g_type_plugin_unuse")
+ (return-type "none")
+)
+
+(define-method complete_type_info
+ (of-object "GTypePlugin")
+ (c-name "g_type_plugin_complete_type_info")
+ (return-type "none")
+ (parameters
+ '("GType" "g_type")
+ '("GTypeInfo*" "info")
+ '("GTypeValueTable*" "value_table")
+ )
+)
+
+(define-method complete_interface_info
+ (of-object "GTypePlugin")
+ (c-name "g_type_plugin_complete_interface_info")
+ (return-type "none")
+ (parameters
+ '("GType" "interface_type")
+ '("GType" "instance_type")
+ '("GInterfaceInfo*" "info")
+ )
+)
+
+
+
+;; From gobject/gvaluearray.h
+
+(define-method get_nth
+ (of-object "GValueArray")
+ (c-name "g_value_array_get_nth")
+ (return-type "GValue*")
+ (parameters
+ '("guint" "index")
+ )
+)
+
+(define-function g_value_array_new
+ (c-name "g_value_array_new")
+ (return-type "GValueArray*")
+ (parameters
+ '("guint" "n_prealloced")
+ )
+)
+
+(define-method free
+ (of-object "GValueArray")
+ (c-name "g_value_array_free")
+ (return-type "none")
+)
+
+(define-method copy
+ (of-object "GValueArray")
+ (c-name "g_value_array_copy")
+ (return-type "GValueArray*")
+)
+
+(define-method prepend
+ (of-object "GValueArray")
+ (c-name "g_value_array_prepend")
+ (return-type "GValueArray*")
+ (parameters
+ '("const-GValue*" "value")
+ )
+)
+
+(define-method append
+ (of-object "GValueArray")
+ (c-name "g_value_array_append")
+ (return-type "GValueArray*")
+ (parameters
+ '("const-GValue*" "value")
+ )
+)
+
+(define-method insert
+ (of-object "GValueArray")
+ (c-name "g_value_array_insert")
+ (return-type "GValueArray*")
+ (parameters
+ '("guint" "index")
+ '("const-GValue*" "value")
+ )
+)
+
+(define-method remove
+ (of-object "GValueArray")
+ (c-name "g_value_array_remove")
+ (return-type "GValueArray*")
+ (parameters
+ '("guint" "index")
+ )
+)
+
+(define-method sort
+ (of-object "GValueArray")
+ (c-name "g_value_array_sort")
+ (return-type "GValueArray*")
+ (parameters
+ '("GCompareFunc" "compare_func")
+ )
+)
+
+(define-method sort_with_data
+ (of-object "GValueArray")
+ (c-name "g_value_array_sort_with_data")
+ (return-type "GValueArray*")
+ (parameters
+ '("GCompareDataFunc" "compare_func")
+ '("gpointer" "user_data")
+ )
+)
+
+
+
+;; From gobject/gvaluecollector.h
+
+
+
+;; From gobject/gvalue.h
+
+(define-method init
+ (of-object "GValue")
+ (c-name "g_value_init")
+ (return-type "GValue*")
+ (parameters
+ '("GType" "g_type")
+ )
+)
+
+(define-method copy
+ (of-object "GValue")
+ (c-name "g_value_copy")
+ (return-type "none")
+ (parameters
+ '("GValue*" "dest_value")
+ )
+)
+
+(define-method reset
+ (of-object "GValue")
+ (c-name "g_value_reset")
+ (return-type "GValue*")
+)
+
+(define-method unset
+ (of-object "GValue")
+ (c-name "g_value_unset")
+ (return-type "none")
+)
+
+(define-method set_instance
+ (of-object "GValue")
+ (c-name "g_value_set_instance")
+ (return-type "none")
+ (parameters
+ '("gpointer" "instance")
+ )
+)
+
+(define-method fits_pointer
+ (of-object "GValue")
+ (c-name "g_value_fits_pointer")
+ (return-type "gboolean")
+)
+
+(define-method peek_pointer
+ (of-object "GValue")
+ (c-name "g_value_peek_pointer")
+ (return-type "gpointer")
+)
+
+(define-function g_value_type_compatible
+ (c-name "g_value_type_compatible")
+ (return-type "gboolean")
+ (parameters
+ '("GType" "src_type")
+ '("GType" "dest_type")
+ )
+)
+
+(define-function g_value_type_transformable
+ (c-name "g_value_type_transformable")
+ (return-type "gboolean")
+ (parameters
+ '("GType" "src_type")
+ '("GType" "dest_type")
+ )
+)
+
+(define-method transform
+ (of-object "GValue")
+ (c-name "g_value_transform")
+ (return-type "gboolean")
+ (parameters
+ '("GValue*" "dest_value")
+ )
+)
+
+(define-function g_value_register_transform_func
+ (c-name "g_value_register_transform_func")
+ (return-type "none")
+ (parameters
+ '("GType" "src_type")
+ '("GType" "dest_type")
+ '("GValueTransform" "transform_func")
+ )
+)
+
+
+
+;; From gobject/gvaluetypes.h
+
+(define-method get_char
+ (of-object "GValue")
+ (c-name "g_value_get_char")
+ (return-type "gchar")
+)
+
+(define-method set_uchar
+ (of-object "GValue")
+ (c-name "g_value_set_uchar")
+ (return-type "none")
+ (parameters
+ '("guchar" "v_uchar")
+ )
+)
+
+(define-method get_uchar
+ (of-object "GValue")
+ (c-name "g_value_get_uchar")
+ (return-type "guchar")
+)
+
+(define-method set_boolean
+ (of-object "GValue")
+ (c-name "g_value_set_boolean")
+ (return-type "none")
+ (parameters
+ '("gboolean" "v_boolean")
+ )
+)
+
+(define-method get_boolean
+ (of-object "GValue")
+ (c-name "g_value_get_boolean")
+ (return-type "gboolean")
+)
+
+(define-method set_int
+ (of-object "GValue")
+ (c-name "g_value_set_int")
+ (return-type "none")
+ (parameters
+ '("gint" "v_int")
+ )
+)
+
+(define-method get_int
+ (of-object "GValue")
+ (c-name "g_value_get_int")
+ (return-type "gint")
+)
+
+(define-method set_uint
+ (of-object "GValue")
+ (c-name "g_value_set_uint")
+ (return-type "none")
+ (parameters
+ '("guint" "v_uint")
+ )
+)
+
+(define-method get_uint
+ (of-object "GValue")
+ (c-name "g_value_get_uint")
+ (return-type "guint")
+)
+
+(define-method set_long
+ (of-object "GValue")
+ (c-name "g_value_set_long")
+ (return-type "none")
+ (parameters
+ '("glong" "v_long")
+ )
+)
+
+(define-method get_long
+ (of-object "GValue")
+ (c-name "g_value_get_long")
+ (return-type "glong")
+)
+
+(define-method set_ulong
+ (of-object "GValue")
+ (c-name "g_value_set_ulong")
+ (return-type "none")
+ (parameters
+ '("gulong" "v_ulong")
+ )
+)
+
+(define-method get_ulong
+ (of-object "GValue")
+ (c-name "g_value_get_ulong")
+ (return-type "gulong")
+)
+
+(define-method set_int64
+ (of-object "GValue")
+ (c-name "g_value_set_int64")
+ (return-type "none")
+ (parameters
+ '("gint64" "v_int64")
+ )
+)
+
+(define-method get_int64
+ (of-object "GValue")
+ (c-name "g_value_get_int64")
+ (return-type "gint64")
+)
+
+(define-method set_uint64
+ (of-object "GValue")
+ (c-name "g_value_set_uint64")
+ (return-type "none")
+ (parameters
+ '("guint64" "v_uint64")
+ )
+)
+
+(define-method get_uint64
+ (of-object "GValue")
+ (c-name "g_value_get_uint64")
+ (return-type "guint64")
+)
+
+(define-method set_float
+ (of-object "GValue")
+ (c-name "g_value_set_float")
+ (return-type "none")
+ (parameters
+ '("gfloat" "v_float")
+ )
+)
+
+(define-method get_float
+ (of-object "GValue")
+ (c-name "g_value_get_float")
+ (return-type "gfloat")
+)
+
+(define-method set_double
+ (of-object "GValue")
+ (c-name "g_value_set_double")
+ (return-type "none")
+ (parameters
+ '("gdouble" "v_double")
+ )
+)
+
+(define-method get_double
+ (of-object "GValue")
+ (c-name "g_value_get_double")
+ (return-type "gdouble")
+)
+
+(define-method set_string
+ (of-object "GValue")
+ (c-name "g_value_set_string")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "v_string")
+ )
+)
+
+(define-method set_static_string
+ (of-object "GValue")
+ (c-name "g_value_set_static_string")
+ (return-type "none")
+ (parameters
+ '("const-gchar*" "v_string")
+ )
+)
+
+(define-method get_string
+ (of-object "GValue")
+ (c-name "g_value_get_string")
+ (return-type "const-gchar*")
+)
+
+(define-method dup_string
+ (of-object "GValue")
+ (c-name "g_value_dup_string")
+ (return-type "gchar*")
+)
+
+(define-method set_pointer
+ (of-object "GValue")
+ (c-name "g_value_set_pointer")
+ (return-type "none")
+ (parameters
+ '("gpointer" "v_pointer")
+ )
+)
+
+(define-method get_pointer
+ (of-object "GValue")
+ (c-name "g_value_get_pointer")
+ (return-type "gpointer")
+)
+
+(define-function g_pointer_type_register_static
+ (c-name "g_pointer_type_register_static")
+ (return-type "GType")
+ (parameters
+ '("const-gchar*" "name")
+ )
+)
+
+(define-function g_strdup_value_contents
+ (c-name "g_strdup_value_contents")
+ (return-type "gchar*")
+ (parameters
+ '("const-GValue*" "value")
+ )
+)
+
+(define-method set_string_take_ownership
+ (of-object "GValue")
+ (c-name "g_value_set_string_take_ownership")
+ (return-type "none")
+ (parameters
+ '("gchar*" "v_string")
+ )
+)
+
+
diff --git a/libs/glibmm2/glib/src/iochannel.ccg b/libs/glibmm2/glib/src/iochannel.ccg
new file mode 100644
index 0000000000..8763fd1123
--- /dev/null
+++ b/libs/glibmm2/glib/src/iochannel.ccg
@@ -0,0 +1,640 @@
+// -*- c++ -*-
+/* $Id: iochannel.ccg,v 1.6 2006/10/04 12:04:09 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/exceptionhandler.h>
+#include <glibmm/iochannel.h>
+#include <glibmm/utility.h>
+#include <glibmm/main.h>
+#include <glib.h>
+
+
+namespace
+{
+
+// Glib::IOChannel reference counting issues:
+//
+// Normally, you'd expect that the C++ object stays around as long as the
+// C instance does. Also Glib::wrap() usually returns always the same C++
+// wrapper object for a single C instance.
+//
+// Unfortunately it isn't possible to implement these features if we didn't
+// create the underlying GIOChannel. That is, when wrapping existing
+// GIOChannel instances such as returned by e.g. g_io_channel_unix_new() or
+// g_io_channel_new_file(). Neither is there a way to hook up a wrapper
+// object in an existing GIOChannel, nor exists any destroy notification.
+//
+// So that means: If the IOChannel is implemented in C++ -- that is, our
+// GlibmmIOChannel backend is used -- we use the GIOChannel reference
+// counting mechanism. If the IOChannel backend is unknown, then the
+// wrapper instance holds always exactly one reference to the GIOChannel.
+// The wrapper object itself is then managed via our own refcounting
+// mechanism. To do that a utility class ForeignIOChannel is introduced to
+// override reference() and unreference().
+
+class ForeignIOChannel : public Glib::IOChannel
+{
+public:
+ ForeignIOChannel(GIOChannel* gobject, bool take_copy)
+ : Glib::IOChannel(gobject, take_copy), ref_count_(0) {}
+
+ virtual void reference() const;
+ virtual void unreference() const;
+
+private:
+ mutable int ref_count_;
+};
+
+void ForeignIOChannel::reference() const
+{
+ ++ref_count_;
+}
+
+void ForeignIOChannel::unreference() const
+{
+ if (!(--ref_count_)) delete this;
+}
+
+} // anonymous namespace
+
+
+namespace Glib
+{
+
+class GlibmmIOChannel
+{
+public:
+ GIOChannel base;
+ Glib::IOChannel* wrapper;
+
+ static const GIOFuncs vfunc_table;
+
+ static GIOStatus io_read(GIOChannel* channel, char* buf, gsize count,
+ gsize* bytes_read, GError** err);
+
+ static GIOStatus io_write(GIOChannel* channel, const char* buf, gsize count,
+ gsize* bytes_written, GError** err);
+
+ static GIOStatus io_seek (GIOChannel* channel, gint64 offset, GSeekType type, GError** err);
+ static GIOStatus io_close(GIOChannel* channel, GError** err);
+
+ static GSource* io_create_watch(GIOChannel* channel, GIOCondition condition);
+ static void io_free(GIOChannel* channel);
+
+ static GIOStatus io_set_flags(GIOChannel* channel, GIOFlags flags, GError** err);
+ static GIOFlags io_get_flags(GIOChannel* channel);
+};
+
+// static
+const GIOFuncs GlibmmIOChannel::vfunc_table =
+{
+ &GlibmmIOChannel::io_read,
+ &GlibmmIOChannel::io_write,
+ &GlibmmIOChannel::io_seek,
+ &GlibmmIOChannel::io_close,
+ &GlibmmIOChannel::io_create_watch,
+ &GlibmmIOChannel::io_free,
+ &GlibmmIOChannel::io_set_flags,
+ &GlibmmIOChannel::io_get_flags,
+};
+
+
+/**** GLib::IOChannel ******************************************************/
+
+/* Construct a custom C++-implemented IOChannel. GlibmmIOChannel is an
+ * extended GIOChannel struct which allows us to hook up a pointer to this
+ * persistent wrapper instance.
+ */
+IOChannel::IOChannel()
+:
+ gobject_ (static_cast<GIOChannel*>(g_malloc(sizeof(GlibmmIOChannel))))
+{
+ g_io_channel_init(gobject_);
+ gobject_->funcs = const_cast<GIOFuncs*>(&GlibmmIOChannel::vfunc_table);
+
+ reinterpret_cast<GlibmmIOChannel*>(gobject_)->wrapper = this;
+}
+
+/* Construct an IOChannel wrapper for an already created GIOChannel.
+ * See the comment at the top of this file for an explanation of the
+ * problems with this approach.
+ */
+IOChannel::IOChannel(GIOChannel* gobject, bool take_copy)
+:
+ gobject_ (gobject)
+{
+ // This ctor should never be called for GlibmmIOChannel instances.
+ g_assert(gobject != 0);
+ g_assert(gobject->funcs != &GlibmmIOChannel::vfunc_table);
+
+ if(take_copy)
+ g_io_channel_ref(gobject_);
+}
+
+IOChannel::~IOChannel()
+{
+ if(gobject_)
+ {
+ // Check whether this IOChannel is implemented in C++, i.e. whether it
+ // uses our GlibmmIOChannel forwarding backend. Normally, this will never
+ // be true because the wrapper should only be deleted in the io_free()
+ // callback, which clears gobject_ before deleting. But in case the ctor
+ // of a derived class threw an exception the GIOChannel must be destroyed
+ // prematurely.
+ //
+ if(gobject_->funcs == &GlibmmIOChannel::vfunc_table)
+ {
+ // Disconnect the wrapper object so that it won't be deleted twice.
+ reinterpret_cast<GlibmmIOChannel*>(gobject_)->wrapper = 0;
+ }
+
+ GIOChannel *const tmp_gobject = gobject_;
+ gobject_ = 0;
+
+ g_io_channel_unref(tmp_gobject);
+ }
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+Glib::RefPtr<IOChannel> IOChannel::create_from_file(const std::string& filename, const std::string& mode)
+#else
+Glib::RefPtr<IOChannel> IOChannel::create_from_file(const std::string& filename, const std::string& mode, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+ GIOChannel *const channel = g_io_channel_new_file(filename.c_str(), mode.c_str(), &gerror);
+
+ if(gerror)
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ Glib::Error::throw_exception(gerror);
+ #else
+ error = Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+ return Glib::wrap(channel, false);
+}
+
+Glib::RefPtr<IOChannel> IOChannel::create_from_fd(int fd)
+{
+ return Glib::wrap(g_io_channel_unix_new(fd), false);
+}
+
+#ifdef G_OS_WIN32
+
+Glib::RefPtr<IOChannel> IOChannel::create_from_win32_fd(int fd)
+{
+ return Glib::wrap(g_io_channel_win32_new_fd(fd), false);
+}
+
+Glib::RefPtr<IOChannel> IOChannel::create_from_win32_socket(int socket)
+{
+ return Glib::wrap(g_io_channel_win32_new_socket(socket), false);
+}
+
+#endif /* G_OS_WIN32 */
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+IOStatus IOChannel::write(const Glib::ustring& str)
+#else
+IOStatus IOChannel::write(const Glib::ustring& str, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ gsize bytes_written = 0;
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ return write(str.data(), str.bytes(), bytes_written);
+#else
+ return write(str.data(), str.bytes(), bytes_written, error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+IOStatus IOChannel::read_line(Glib::ustring& line)
+#else
+IOStatus IOChannel::read_line(Glib::ustring& line, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ Glib::ScopedPtr<char> buf;
+ GError* gerror = 0;
+ gsize bytes = 0;
+
+ const GIOStatus status = g_io_channel_read_line(gobj(), buf.addr(), &bytes, 0, &gerror);
+
+ if(gerror)
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ Glib::Error::throw_exception(gerror);
+ #else
+ error = Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+ if(buf.get())
+ line.assign(buf.get(), buf.get() + bytes);
+ else
+ line.erase();
+
+ return (IOStatus) status;
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+IOStatus IOChannel::read_to_end(Glib::ustring& str)
+#else
+IOStatus IOChannel::read_to_end(Glib::ustring& str, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ Glib::ScopedPtr<char> buf;
+ GError* gerror = 0;
+ gsize bytes = 0;
+
+ const GIOStatus status = g_io_channel_read_to_end(gobj(), buf.addr(), &bytes, &gerror);
+
+ if(gerror)
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ Glib::Error::throw_exception(gerror);
+ #else
+ error = Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+ if(buf.get())
+ str.assign(buf.get(), buf.get() + bytes);
+ else
+ str.erase();
+
+ return (IOStatus) status;
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+IOStatus IOChannel::read(Glib::ustring& str, gsize count)
+#else
+IOStatus IOChannel::read(Glib::ustring& str, gsize count, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ Glib::ScopedPtr<char> buf (g_new(char, count));
+ GError* gerror = 0;
+ gsize bytes = 0;
+
+ const GIOStatus status = g_io_channel_read_chars(gobj(), buf.get(), count, &bytes, &gerror);
+
+ if(gerror)
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ Glib::Error::throw_exception(gerror);
+ #else
+ error = Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+ if(buf.get())
+ str.assign(buf.get(), buf.get() + bytes);
+ else
+ str.erase();
+
+ return (IOStatus) status;
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+IOStatus IOChannel::set_encoding(const std::string& encoding)
+#else
+IOStatus IOChannel::set_encoding(const std::string& encoding, std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+{
+ GError* gerror = 0;
+
+ const GIOStatus status = g_io_channel_set_encoding(
+ gobj(), (encoding.empty()) ? 0 : encoding.c_str(), &gerror);
+
+ if(gerror)
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ Glib::Error::throw_exception(gerror);
+ #else
+ error = Glib::Error::throw_exception(gerror);
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+ return (IOStatus) status;
+}
+
+std::string IOChannel::get_encoding() const
+{
+ const char *const encoding = g_io_channel_get_encoding(gobject_);
+ return (encoding) ? std::string(encoding) : std::string();
+}
+
+void IOChannel::set_line_term(const std::string& term)
+{
+ if(term.empty())
+ g_io_channel_set_line_term(gobj(), 0, 0);
+ else
+ g_io_channel_set_line_term(gobj(), term.data(), term.size());
+}
+
+std::string IOChannel::get_line_term() const
+{
+ int len = 0;
+ const char *const term = g_io_channel_get_line_term(gobject_, &len);
+
+ return (term) ? std::string(term, len) : std::string();
+}
+
+Glib::RefPtr<IOSource> IOChannel::create_watch(IOCondition condition)
+{
+ // The corresponding unreference() takes place in the dtor
+ // of the Glib::RefPtr<IOChannel> object below.
+ reference();
+ return IOSource::create(Glib::RefPtr<IOChannel>(this), condition);
+}
+
+IOStatus IOChannel::read_vfunc(char*, gsize, gsize&)
+{
+ g_assert_not_reached();
+ return IO_STATUS_ERROR;
+}
+
+IOStatus IOChannel::write_vfunc(const char*, gsize, gsize&)
+{
+ g_assert_not_reached();
+ return IO_STATUS_ERROR;
+}
+
+IOStatus IOChannel::seek_vfunc(gint64, SeekType)
+{
+ g_assert_not_reached();
+ return IO_STATUS_ERROR;
+}
+
+IOStatus IOChannel::close_vfunc()
+{
+ g_assert_not_reached();
+ return IO_STATUS_ERROR;
+}
+
+Glib::RefPtr<Glib::Source> IOChannel::create_watch_vfunc(IOCondition)
+{
+ g_assert_not_reached();
+ return Glib::RefPtr<Glib::Source>();
+}
+
+IOStatus IOChannel::set_flags_vfunc(IOFlags)
+{
+ g_assert_not_reached();
+ return IO_STATUS_ERROR;
+}
+
+IOFlags IOChannel::get_flags_vfunc()
+{
+ g_assert_not_reached();
+ return IOFlags(0);
+}
+
+void IOChannel::reference() const
+{
+ g_io_channel_ref(gobject_);
+}
+
+void IOChannel::unreference() const
+{
+ g_io_channel_unref(gobject_);
+}
+
+Glib::RefPtr<IOChannel> wrap(GIOChannel* gobject, bool take_copy)
+{
+ IOChannel* cpp_object = 0;
+
+ if(gobject)
+ {
+ if(gobject->funcs == &GlibmmIOChannel::vfunc_table)
+ {
+ cpp_object = reinterpret_cast<GlibmmIOChannel*>(gobject)->wrapper;
+
+ if(take_copy && cpp_object)
+ cpp_object->reference();
+ }
+ else
+ {
+ cpp_object = new ForeignIOChannel(gobject, take_copy);
+ cpp_object->reference(); // the refcount is initially 0
+ }
+ }
+
+ return Glib::RefPtr<IOChannel>(cpp_object);
+}
+
+
+/**** Glib::GlibmmIOChannel ************************************************/
+
+// static
+GIOStatus GlibmmIOChannel::io_read(GIOChannel* channel, char* buf, gsize count,
+ gsize* bytes_read, GError** err)
+{
+ if(!&err) err = err; //Avoid an unused parameter warning when GLIBMM_EXCEPTIONS_ENABLED is used.
+
+ IOChannel *const wrapper = reinterpret_cast<GlibmmIOChannel*>(channel)->wrapper;
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ return (GIOStatus) wrapper->read_vfunc(buf, count, *bytes_read);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(Glib::Error& error)
+ {
+ error.propagate(err);
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return G_IO_STATUS_ERROR;
+}
+
+// static
+GIOStatus GlibmmIOChannel::io_write(GIOChannel* channel, const char* buf, gsize count,
+ gsize* bytes_written, GError** err)
+{
+ if(!&err) err = err; //Avoid an unused parameter warning when GLIBMM_EXCEPTIONS_ENABLED is used.
+
+ IOChannel *const wrapper = reinterpret_cast<GlibmmIOChannel*>(channel)->wrapper;
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ return (GIOStatus) wrapper->write_vfunc(buf, count, *bytes_written);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(Glib::Error& error)
+ {
+ error.propagate(err);
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return G_IO_STATUS_ERROR;
+}
+
+// static
+GIOStatus GlibmmIOChannel::io_seek(GIOChannel* channel, gint64 offset, GSeekType type, GError** err)
+{
+ if(!&err) err = err; //Avoid an unused parameter warning when GLIBMM_EXCEPTIONS_ENABLED is used.
+
+ IOChannel *const wrapper = reinterpret_cast<GlibmmIOChannel*>(channel)->wrapper;
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ return (GIOStatus) wrapper->seek_vfunc(offset, (SeekType) type);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(Glib::Error& error)
+ {
+ error.propagate(err);
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return G_IO_STATUS_ERROR;
+}
+
+// static
+GIOStatus GlibmmIOChannel::io_close(GIOChannel* channel, GError** err)
+{
+ if(!&err) err = err; //Avoid an unused parameter warning when GLIBMM_EXCEPTIONS_ENABLED is used.
+
+ IOChannel *const wrapper = reinterpret_cast<GlibmmIOChannel*>(channel)->wrapper;
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ return (GIOStatus) wrapper->close_vfunc();
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(Glib::Error& error)
+ {
+ error.propagate(err);
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+
+ return G_IO_STATUS_ERROR;
+}
+
+// static
+GSource* GlibmmIOChannel::io_create_watch(GIOChannel* channel, GIOCondition condition)
+{
+ IOChannel *const wrapper = reinterpret_cast<GlibmmIOChannel*>(channel)->wrapper;
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ const Glib::RefPtr<Source> source = wrapper->create_watch_vfunc((IOCondition) condition);
+ return (source) ? source->gobj_copy() : 0;
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return 0;
+}
+
+// static
+void GlibmmIOChannel::io_free(GIOChannel* channel)
+{
+ if(IOChannel *const wrapper = reinterpret_cast<GlibmmIOChannel*>(channel)->wrapper)
+ {
+ wrapper->gobject_ = 0;
+ delete wrapper;
+ }
+
+ g_free(channel);
+}
+
+// static
+GIOStatus GlibmmIOChannel::io_set_flags(GIOChannel* channel, GIOFlags flags, GError** err)
+{
+ if(!&err) err = err; //Avoid an unused parameter warning when GLIBMM_EXCEPTIONS_ENABLED is used.
+
+ IOChannel *const wrapper = reinterpret_cast<GlibmmIOChannel*>(channel)->wrapper;
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ return (GIOStatus) wrapper->set_flags_vfunc((IOFlags) flags);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(Glib::Error& error)
+ {
+ error.propagate(err);
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return G_IO_STATUS_ERROR;
+}
+
+// static
+GIOFlags GlibmmIOChannel::io_get_flags(GIOChannel* channel)
+{
+ IOChannel *const wrapper = reinterpret_cast<GlibmmIOChannel*>(channel)->wrapper;
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ return (GIOFlags) wrapper->get_flags_vfunc();
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ return GIOFlags(0);
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/iochannel.hg b/libs/glibmm2/glib/src/iochannel.hg
new file mode 100644
index 0000000000..38bdf3f776
--- /dev/null
+++ b/libs/glibmm2/glib/src/iochannel.hg
@@ -0,0 +1,476 @@
+// -*- c++ -*-
+/* $Id: iochannel.hg,v 1.8 2006/05/12 08:08:44 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+_DEFS(glibmm,glib)
+
+#include <glibmm/error.h>
+#include <glibmm/main.h>
+#include <glibmm/refptr.h>
+#include <glibmm/ustring.h>
+#include <glib/gtypes.h>
+
+#include <string>
+#include <glibmmconfig.h>
+
+GLIBMM_USING_STD(string)
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GIOChannel GIOChannel; }
+#endif
+
+
+namespace Glib
+{
+
+class Source;
+class IOSource;
+
+_WRAP_ENUM(SeekType, GSeekType, NO_GTYPE, s#^SEEK_#SEEK_TYPE_#)
+_WRAP_ENUM(IOStatus, GIOStatus, NO_GTYPE)
+_WRAP_ENUM(IOFlags, GIOFlags, NO_GTYPE)
+
+/** Exception class for IOChannel errors.
+ */
+_WRAP_GERROR(IOChannelError, GIOChannelError, G_IO_CHANNEL_ERROR, NO_GTYPE,
+ s#^INVAL$#INVALID_ARGUMENT#,
+ s#^ISDIR$#IS_DIRECTORY#,
+ s#^PIPE$#BROKEN_PIPE#,
+ s#^NOSPC$#NO_SPACE_LEFT#,
+ s#^NXIO$#NO_SUCH_DEVICE#,
+ s#^ACCES$#ACCESS_DENIED#,
+ s#^FBIG$#FILE_TOO_BIG#,
+ s#^IO$#IO_ERROR#,
+ s#^OVERFLOW$#OVERFLOWN#)
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+class GlibmmIOChannel;
+#endif
+
+/** IOChannel aims to provide portable I/O support for files, pipes
+ * and sockets, and to integrate them with the GLib main event loop.
+ *
+ * Note that IOChannels implement an automatic implicit character set
+ * conversion to the data stream, and usually will not pass by default
+ * binary data unchanged. To set the encoding of the channel, use e.g.
+ * set_encoding("ISO-8859-15"). To set the channel to no encoding, use
+ * set_encoding() without any arguments.
+ *
+ * You can create an IOChannel with one of the static create methods, or
+ * implement one yourself, in which case you have to 1)&nbsp;override all
+ * _vfunc() members. 2)&nbsp;set the GIOChannel flags in your constructor.
+ *
+ * @note This feature of being able to implement a custom Glib::IOChannel is
+ * deprecated in glibmm&nbsp;2.2. The vfunc interface has not yet stabilized
+ * enough to allow that -- the C++ wrapper went in by pure accident. Besides,
+ * it isn't terribly useful either. Thus please refrain from overriding any
+ * IOChannel vfuncs.
+ */
+class IOChannel : public sigc::trackable
+{
+ _CLASS_GENERIC(IOChannel, GIOChannel)
+
+ dnl // We can't support get_fd() properly because it is impossible
+ dnl // to detect the specific GIOChannel type at runtime.
+ _IGNORE(g_io_channel_unix_get_fd, g_io_channel_win32_get_fd)
+
+ dnl // deprecated or internal
+ _IGNORE(g_io_channel_seek, g_io_channel_close, g_io_channel_read,
+ g_io_channel_write, g_io_channel_win32_make_pollfd)
+
+public:
+ virtual ~IOChannel();
+
+ /** Open a file @a filename as an I/O channel using mode @a mode.
+ * This channel will be closed when the last reference to it is dropped,
+ * so there is no need to call close() (though doing so will not cause
+ * problems, as long as no attempt is made to access the channel after
+ * it is closed).
+ * @param filename The name of the file to open.
+ * @param mode One of <tt>"r"</tt>, <tt>"w"</tt>, <tt>"a"</tt>,
+ * <tt>"r+"</tt>, <tt>"w+"</tt>, <tt>"a+"</tt>. These have the
+ * same meaning as in <tt>fopen()</tt>.
+ * @return An IOChannel for the opened file.
+ * @throw Glib::FileError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ static Glib::RefPtr<IOChannel> create_from_file(const std::string& filename, const std::string& mode);
+#else
+ static Glib::RefPtr<IOChannel> create_from_file(const std::string& filename, const std::string& mode, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+ _IGNORE(g_io_channel_new_file)
+
+ /** Creates an I/O channel from a file descriptor.
+ * On Unix, IOChannels created with this function work for any file
+ * descriptor or socket.
+ *
+ * On Win32, this can be used either for files opened with the MSVCRT (the
+ * Microsoft run-time C library) <tt>_open()</tt> or <tt>_pipe()</tt>,
+ * including file descriptors 0, 1 and 2 (corresponding to <tt>stdin</tt>,
+ * <tt>stdout</tt> and <tt>stderr</tt>), or for Winsock <tt>SOCKET</tt>s. If
+ * the parameter is a legal file descriptor, it is assumed to be such,
+ * otherwise it should be a <tt>SOCKET</tt>. This relies on <tt>SOCKET</tt>s
+ * and file descriptors not overlapping. If you want to be certain, call
+ * either create_from_win32_fd() or create_from_win32_socket() instead as
+ * appropriate.
+ *
+ * The term file descriptor as used in the context of Win32 refers to the
+ * emulated Unix-like file descriptors MSVCRT provides. The native
+ * corresponding concept is file <tt>HANDLE</tt>. There isn't as of yet
+ * a way to get IOChannels for Win32 file <tt>HANDLE</tt>s.
+ */
+ static Glib::RefPtr<IOChannel> create_from_fd(int fd);
+ _IGNORE(g_io_channel_unix_new)
+
+/* defined(DOXYGEN_SHOULD_SKIP_THIS) actually does the opposite of what it looks like... */
+#if defined(G_OS_WIN32) || defined(DOXYGEN_SHOULD_SKIP_THIS)
+
+ /** Create an I/O channel for C runtime (emulated Unix-like) file descriptors.
+ * After calling add_watch() on a I/O channel returned by this function, you
+ * shouldn't call read() on the file descriptor. This is because adding
+ * polling for a file descriptor is implemented on Win32 by starting a thread
+ * that sits blocked in a <tt>%read()</tt> from the file descriptor most of
+ * the time. All reads from the file descriptor should be done by this
+ * internal GLib thread. Your code should call only IOChannel::read().
+ */
+ static Glib::RefPtr<IOChannel> create_from_win32_fd(int fd);
+ _IGNORE(g_io_channel_win32_new_fd)
+
+ /** Create an I/O channel for a winsock socket. The parameter should be a
+ * <tt>SOCKET</tt>. Contrary to I/O channels for file descriptors (on Win32),
+ * you can use normal <tt>recv()</tt> or <tt>recvfrom()</tt> on sockets even
+ * if GLib is polling them.
+ */
+ static Glib::RefPtr<IOChannel> create_from_win32_socket(int socket);
+ _IGNORE(g_io_channel_win32_new_socket)
+
+#endif /* defined(G_OS_WIN32) || defined(DOXYGEN_SHOULD_SKIP_THIS) */
+
+ /** Read a single UCS-4 character.
+ * @retval unichar The Unicode character.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+ _WRAP_METHOD(IOStatus read(gunichar& unichar), g_io_channel_read_unichar, errthrow)
+
+ /** Read a character sequence into memory.
+ * @param buf A buffer to read data into.
+ * @param count The size of the buffer in bytes. Note that the buffer may
+ * not be complelely filled even if there is data in the buffer if the
+ * remaining data is not a complete character.
+ * @retval bytes_read The number of bytes read. This may be zero even on
+ * success if @a count < 6 and the channel's encoding is not <tt>""</tt>.
+ * This indicates that the next UTF-8 character is too wide for the buffer.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+ _WRAP_METHOD(IOStatus read(char* buf, gsize count, gsize& bytes_read),
+ g_io_channel_read_chars, errthrow)
+
+ /** Read a maximum of @a count bytes into @a str.
+ * @param count The maximum number of bytes to read.
+ * @retval str The characters that have been read.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ IOStatus read(Glib::ustring& str, gsize count);
+#else
+ IOStatus read(Glib::ustring& str, gsize count, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ /** Read a whole line.
+ * Reads until the line separator is found, which is included
+ * in the result string.
+ * @retval line The line that was read.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ IOStatus read_line(Glib::ustring& line);
+#else
+ IOStatus read_line(Glib::ustring& line, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+ _IGNORE(g_io_channel_read_line, g_io_channel_read_line_string)
+
+ /** Reads all the remaining data from the file.
+ * @retval str The resulting string.
+ * @return Glib::IO_STATUS_NORMAL on success. This function never
+ * returns Glib::IO_STATUS_EOF.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ IOStatus read_to_end(Glib::ustring& str);
+#else
+ IOStatus read_to_end(Glib::ustring& str, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+ _IGNORE(g_io_channel_read_to_end)
+
+ /** Write a string to the I/O channel.
+ * Note that this method does not return the number of characters written.
+ * If the channel is blocking and the returned value is
+ * Glib::IO_STATUS_NORMAL, the whole string was written.
+ * @param str the string to write.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ IOStatus write(const Glib::ustring& str);
+#else
+ IOStatus write(const Glib::ustring& str, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ /** Write a memory area of @a count bytes to the I/O channel.
+ * @param buf The start of the memory area.
+ * @param count The number of bytes to write.
+ * @retval bytes_written The number of bytes written to the channel.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+ _WRAP_METHOD(IOStatus write(const char* buf, gssize count, gsize& bytes_written),
+ g_io_channel_write_chars, errthrow)
+
+ /** Write a single UCS-4 character to the I/O channel.
+ * @param unichar The character to write.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+ _WRAP_METHOD(IOStatus write(gunichar unichar), g_io_channel_write_unichar, errthrow)
+
+ /** Seek the I/O channel to a specific position.
+ * @param offset The offset in bytes from the position specified by @a type.
+ * @param type A SeekType. The type Glib::SEEK_TYPE_CUR is only allowed in
+ * those cases where a call to set_encoding() is allowed. See the
+ * documentation for set_encoding() for details.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+ _WRAP_METHOD(IOStatus seek(gint64 offset, SeekType type = SEEK_TYPE_SET),
+ g_io_channel_seek_position, errthrow)
+
+ /** Flush the buffers of the I/O channel.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ * @throw Glib::ConvertError
+ */
+ _WRAP_METHOD(IOStatus flush(), g_io_channel_flush, errthrow)
+
+ /** Close the I/O channel.
+ * Any pending data to be written will be flushed if @a flush is <tt>true</tt>.
+ * The channel will not be freed until the last reference is dropped.
+ * Accessing the channel after closing it is considered an error.
+ * @param flush Whether to flush() pending data before closing the channel.
+ * @return The status of the operation.
+ * @throw Glib::IOChannelError
+ */
+ _WRAP_METHOD(IOStatus close(bool flush = true), g_io_channel_shutdown, errthrow)
+
+ /** Get the IOChannel internal buffer size.
+ * @return The buffer size.
+ */
+ _WRAP_METHOD(gsize get_buffer_size() const, g_io_channel_get_buffer_size)
+
+ /** Set the internal IOChannel buffer size.
+ * @param size The buffer size the IOChannel should use.
+ */
+ _WRAP_METHOD(void set_buffer_size(gsize size), g_io_channel_set_buffer_size)
+
+ /** Get the current flags for a IOChannel, including read-only
+ * flags such as Glib::IO_FLAG_IS_READABLE.
+ *
+ * The values of the flags Glib::IO_FLAG_IS_READABLE and
+ * Glib::IO_FLAG_IS_WRITEABLE are cached for internal use by the channel when
+ * it is created. If they should change at some later point (e.g. partial
+ * shutdown of a socket with the UNIX <tt>shutdown()</tt> function), the user
+ * should immediately call get_flags() to update the internal values of these
+ * flags.
+ * @return Bitwise combination of the flags set on the channel.
+ */
+ _WRAP_METHOD(IOFlags get_flags() const, g_io_channel_get_flags)
+
+ /** Set flags on the IOChannel.
+ * @param flags Bitwise combination of the flags to set.
+ * @return The operation result code.
+ * @throw Glib::IOChannelError
+ */
+ _WRAP_METHOD(IOStatus set_flags(IOFlags flags), g_io_channel_set_flags, errthrow)
+
+ /** Set the buffering status of the I/O channel.
+ * The buffering state can only be set if the channel's encoding is
+ * <tt>""</tt>. For any other encoding, the channel must be buffered.
+ *
+ * A buffered channel can only be set unbuffered if the channel's internal
+ * buffers have been flushed. Newly created channels or channels which have
+ * returned Glib::IO_STATUS_EOF not require such a flush. For write-only
+ * channels, a call to flush() is sufficient. For all other channels, the
+ * buffers may be flushed by a call to seek(). This includes the possibility
+ * of seeking with seek type Glib::SEEK_TYPE_CUR and an offset of zero. Note
+ * that this means that socket-based channels cannot be set unbuffered once
+ * they have had data read from them.
+ *
+ * The default state of the channel is buffered.
+ *
+ * @param buffered Whether to set the channel buffered or unbuffered.
+ */
+ _WRAP_METHOD(void set_buffered(bool buffered), g_io_channel_set_buffered)
+
+ /** Get the buffering status of the I/O channel.
+ * @return The buffering status of the channel.
+ */
+ _WRAP_METHOD(bool get_buffered() const, g_io_channel_get_buffered)
+
+ /** Returns an IOCondition depending on whether there is data to be
+ * read/space to write data in the internal buffers in the I/O channel.
+ * Only the flags Glib::IO_IN and Glib::IO_OUT may be set.
+ * @return Bitwise combination of Glib::IOCondition flags.
+ */
+ _WRAP_METHOD(IOCondition get_buffer_condition() const, g_io_channel_get_buffer_condition)
+
+ /** Returns whether the file/socket/whatever associated with the I/O channel
+ * will be closed when the channel receives its final unref and is destroyed.
+ * The default value of this is <tt>true</tt> for channels created by
+ * create_from_file(), and <tt>false</tt> for all other channels.
+ * @return Whether the channel will be closed on the final unref of the
+ * IOChannel object.
+ */
+ _WRAP_METHOD(bool get_close_on_unref() const, g_io_channel_get_close_on_unref)
+
+ /** Setting this flag to <tt>true</tt> for a channel you have already closed
+ * can cause problems.
+ * @param do_close Whether to close the channel on the final unref of the
+ * IOChannel object. The default value of this is <tt>true</tt> for channels
+ * created by create_from_file(), and <tt>false</tt> for all other channels.
+ */
+ _WRAP_METHOD(void set_close_on_unref(bool do_close), g_io_channel_set_close_on_unref)
+
+ /** Sets the encoding for the input/output of the channel.
+ * The internal encoding is always UTF-8. The default encoding for the
+ * external file is UTF-8. The encoding <tt>""</tt> is safe to use with
+ * binary data.
+ *
+ * The encoding can only be set if one of the following conditions
+ * is true:
+ *
+ * -# The channel was just created, and has not been written to or read from
+ * yet.
+ * -# The channel is write-only.
+ * -# The channel is a file, and the file pointer was just repositioned by a
+ * call to seek_position(). (This flushes all the internal buffers.)
+ * -# The current encoding is <tt>""</tt> or UTF-8.
+ * -# One of the read methods has just returned Glib::IO_STATUS_EOF (or, in
+ * the case of read_to_end(), Glib::IO_STATUS_NORMAL).
+ * -# The read() method has returned Glib::IO_STATUS_AGAIN or thrown
+ * a Glib::Error exception. This may be useful in the case of
+ * ConvertError::ILLEGAL_SEQUENCE. Returning one of these statuses
+ * from read_line() or read_to_end() does <em>not</em> guarantee that
+ * the encoding can be changed.
+ *
+ * Channels which do not meet one of the above conditions cannot call
+ * seek_position() with a seek type of Glib::SEEK_TYPE_CUR and, if they
+ * are "seekable", cannot call write() after calling one of the API
+ * "read" methods.
+ *
+ * @param encoding The encoding name, or <tt>""</tt> for binary.
+ * @return Glib::IO_STATUS_NORMAL if the encoding was successfully set.
+ * @throw Glib::IOChannelError
+ */
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ IOStatus set_encoding(const std::string& encoding = std::string());
+#else
+ IOStatus set_encoding(const std::string& encoding, std::auto_ptr<Glib::Error>& error);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+ _IGNORE(g_io_channel_set_encoding)
+
+ /** Get the encoding of the I/O channel.
+ * @return The current encoding of the channel.
+ */
+ std::string get_encoding() const;
+ _IGNORE(g_io_channel_get_encoding)
+
+ void set_line_term(const std::string& term = std::string());
+ _IGNORE(g_io_channel_set_line_term)
+
+ std::string get_line_term() const;
+ _IGNORE(g_io_channel_get_line_term)
+
+ /** Creates an IOSource object.
+ * Create a slot from a function to be called when condition is met
+ * for the channel with sigc::ptr_fun() or sigc::mem_fun() and pass
+ * it into the connect() function of the returned IOSource object.
+ * Polling of the channel will start when you attach a MainContext
+ * object to the returned IOSource object using its attach() function.
+ *
+ * Glib::signal_io().connect() is a simpler interface to the same
+ * functionality, for the case where you want to add the source to the
+ * default main context.
+ * @param condition The condition to watch for.
+ * @return An IOSource object that can be polled from a MainContext's event loop.
+ */
+ Glib::RefPtr<IOSource> create_watch(IOCondition condition);
+ _IGNORE(g_io_channel_create_watch)
+
+ virtual void reference() const;
+ virtual void unreference() const;
+ _IGNORE(g_io_channel_ref, g_io_channel_unref)
+
+ GIOChannel* gobj() { return gobject_; }
+ const GIOChannel* gobj() const { return gobject_; }
+
+protected:
+ GIOChannel* gobject_;
+
+ /** Constructor that should be used by derived classes.
+ * Use this constructor if you want to inherit from IOChannel.
+ * It will set up a GIOChannel that will call the vfuncs of your
+ * class even if it is being used from C code, and it will keep
+ * a reference to the C++ code while the GIOChannel exists.
+ */
+ IOChannel();
+ _IGNORE(g_io_channel_init)
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ IOChannel(GIOChannel* gobject, bool take_copy);
+#endif
+
+ virtual IOStatus read_vfunc(char* buf, gsize count, gsize& bytes_read);
+ virtual IOStatus write_vfunc(const char* buf, gsize count, gsize& bytes_written);
+ virtual IOStatus seek_vfunc(gint64 offset, SeekType type);
+ virtual IOStatus close_vfunc();
+ virtual IOStatus set_flags_vfunc(IOFlags flags);
+ virtual IOFlags get_flags_vfunc();
+ virtual Glib::RefPtr<Glib::Source> create_watch_vfunc(IOCondition cond);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ friend class Glib::GlibmmIOChannel;
+#endif
+};
+
+Glib::RefPtr<IOChannel> wrap(GIOChannel* gobject, bool take_copy = false);
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/keyfile.ccg b/libs/glibmm2/glib/src/keyfile.ccg
new file mode 100644
index 0000000000..a47c53bef6
--- /dev/null
+++ b/libs/glibmm2/glib/src/keyfile.ccg
@@ -0,0 +1,201 @@
+/* Copyright 2006 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+namespace Glib
+{
+
+/**** Glib::KeyFile ********************************************************/
+
+KeyFile::KeyFile()
+{
+ gobject_ = g_key_file_new();
+ owns_gobject_ = true;
+}
+
+KeyFile::KeyFile(GKeyFile* castitem, bool takes_ownership)
+{
+ gobject_ = castitem;
+ owns_gobject_ = takes_ownership;
+}
+
+KeyFile::~KeyFile()
+{
+ if (owns_gobject_)
+ g_key_file_free(gobject_);
+}
+
+bool KeyFile::load_from_data(const Glib::ustring& data, KeyFileFlags flags)
+{
+ GError *error = 0;
+ bool retvalue = g_key_file_load_from_data(gobj(), data.c_str(), data.bytes(), ((GKeyFileFlags)(flags)), &(error));
+ if(error) :: Glib::Error::throw_exception(error);
+ return retvalue;
+}
+
+bool KeyFile::load_from_data_dirs(const std::string& file, std::string& full_path, KeyFileFlags flags)
+{
+ GError *error = 0;
+ char *full_path_c;
+ bool retvalue = g_key_file_load_from_data_dirs(gobj(), file.c_str(), &full_path_c, ((GKeyFileFlags)(flags)), &(error));
+ full_path = Glib::convert_return_gchar_ptr_to_ustring(full_path_c);
+ if(error) :: Glib::Error::throw_exception(error);
+ return retvalue;
+}
+
+Glib::ustring KeyFile::to_data()
+{
+ GError *error = 0;
+ gsize size;
+ Glib::ustring retvalue = Glib::convert_return_gchar_ptr_to_ustring(g_key_file_to_data(gobj(), &size, &error));
+ if(error) :: Glib::Error::throw_exception(error);
+ return retvalue;
+}
+
+Glib::ArrayHandle<Glib::ustring> KeyFile::get_groups() const
+{
+ gchar** group_names = 0;
+ gsize number_of_groups = 0;
+ group_names = g_key_file_get_groups(const_cast<GKeyFile*>(gobj()), &number_of_groups);
+ return Glib::ArrayHandle<Glib::ustring>(group_names, number_of_groups, Glib::OWNERSHIP_DEEP);
+}
+
+Glib::ArrayHandle<Glib::ustring> KeyFile::get_keys(const Glib::ustring& group_name) const
+{
+ gchar** key_names = 0;
+ gsize number_of_keys = 0;
+ GError* error = 0;
+ key_names = g_key_file_get_keys(const_cast<GKeyFile*>(gobj()), group_name.c_str(), &number_of_keys, &error);
+ if(error)
+ Glib::Error::throw_exception(error);
+ return Glib::ArrayHandle<Glib::ustring>(key_names, number_of_keys, Glib::OWNERSHIP_DEEP);
+}
+
+Glib::ustring KeyFile::get_locale_string(const Glib::ustring& group_name, const Glib::ustring& key) const
+{
+ GError *error = 0;
+ Glib::ustring retvalue = Glib::convert_return_gchar_ptr_to_ustring(g_key_file_get_locale_string(const_cast<GKeyFile*>(gobj()), group_name.c_str(), key.c_str(), 0, &(error)));
+ if(error) ::Glib::Error::throw_exception(error);
+ return retvalue;
+}
+
+int KeyFile::get_integer(const Glib::ustring& key) const
+{
+ GError *error = 0;
+ int retvalue = g_key_file_get_integer(const_cast<GKeyFile*>(gobj()), 0, key.c_str(), &(error));
+ if(error) ::Glib::Error::throw_exception(error);
+ return retvalue;
+}
+
+Glib::ArrayHandle<Glib::ustring> KeyFile::get_string_list(const Glib::ustring& group_name, const Glib::ustring& key) const
+{
+ gchar** string_list = 0;
+ gsize length_of_list = 0;
+ GError* error = 0;
+ string_list = g_key_file_get_string_list(const_cast<GKeyFile*>(gobj()), group_name.c_str(), key.c_str(), &length_of_list, &error);
+ if(error)
+ Glib::Error::throw_exception(error);
+ return Glib::ArrayHandle<Glib::ustring>(string_list, length_of_list, Glib::OWNERSHIP_DEEP);
+}
+
+Glib::ArrayHandle<Glib::ustring> KeyFile::get_locale_string_list(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& locale) const
+{
+ gchar** string_list = 0;
+ gsize length_of_list = 0;
+ GError* error = 0;
+ string_list = g_key_file_get_locale_string_list(const_cast<GKeyFile*>(gobj()), group_name.c_str(), key.c_str(), locale.c_str(), &length_of_list, &error);
+ if(error)
+ Glib::Error::throw_exception(error);
+ return Glib::ArrayHandle<Glib::ustring>(string_list, length_of_list, Glib::OWNERSHIP_DEEP);
+}
+
+Glib::ArrayHandle<bool> KeyFile::get_boolean_list(const Glib::ustring& group_name, const Glib::ustring& key) const
+{
+ gboolean* bool_list = 0;
+ gsize length_of_list = 0;
+ GError* error = 0;
+ bool_list = g_key_file_get_boolean_list(const_cast<GKeyFile*>(gobj()), group_name.c_str(), key.c_str(), &length_of_list, &error);
+ if(error)
+ Glib::Error::throw_exception(error);
+ return Glib::ArrayHandle<bool>(&bool_list, length_of_list, Glib::OWNERSHIP_DEEP);
+}
+
+Glib::ArrayHandle<int> KeyFile::get_integer_list(const Glib::ustring& group_name, const Glib::ustring& key) const
+{
+ gint* integer_list = 0;
+ gsize length_of_list = 0;
+ GError* error = 0;
+ integer_list = g_key_file_get_integer_list(const_cast<GKeyFile*>(gobj()), group_name.c_str(), key.c_str(), &length_of_list, &error);
+ if(error)
+ Glib::Error::throw_exception(error);
+ return Glib::ArrayHandle<int>(integer_list, length_of_list, Glib::OWNERSHIP_DEEP);
+}
+
+void KeyFile::set_string_list(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ArrayHandle<Glib::ustring>& list)
+{
+ gsize length_of_list = list.size();
+ g_key_file_set_string_list(gobj(), group_name.c_str(), key.c_str(), list.data(), length_of_list);
+}
+
+void KeyFile::set_locale_string_list(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& locale, const Glib::ArrayHandle<Glib::ustring>& list)
+{
+ gsize length_of_list = list.size();
+ g_key_file_set_locale_string_list(gobj(), group_name.c_str(), key.c_str(), locale.c_str(), list.data(), length_of_list);
+}
+
+void KeyFile::set_integer_list(const Glib::ustring& group_name, const Glib::ustring& key, Glib::ArrayHandle<int>& list)
+{
+ gsize length_of_list = list.size();
+ g_key_file_set_integer_list(gobj(), group_name.c_str(), key.c_str(), const_cast<int*>(list.data()), length_of_list);
+}
+
+void KeyFile::set_boolean_list(const Glib::ustring& group_name, const Glib::ustring& key, Glib::ArrayHandle<bool>& list)
+{
+ gsize length_of_list = list.size();
+ g_key_file_set_boolean_list(gobj(), group_name.c_str(), key.c_str(), *(list.data()), length_of_list);
+}
+
+Glib::ustring KeyFile::get_comment() const
+{
+ GError *error = 0;
+ Glib::ustring retvalue = Glib::convert_return_gchar_ptr_to_ustring(g_key_file_get_comment(const_cast<GKeyFile*>(gobj()), 0, 0, &(error)));
+ if(error) ::Glib::Error::throw_exception(error);
+ return retvalue;
+}
+
+Glib::ustring KeyFile::get_comment(const Glib::ustring& group_name) const
+{
+ GError *error = 0;
+ Glib::ustring retvalue = Glib::convert_return_gchar_ptr_to_ustring(g_key_file_get_comment(const_cast<GKeyFile*>(gobj()), group_name.c_str(), 0, &(error)));
+ if(error) ::Glib::Error::throw_exception(error);
+ return retvalue;
+}
+
+void KeyFile::set_comment(const Glib::ustring& comment)
+{
+ GError *error = 0;
+ g_key_file_set_comment(gobj(), 0, 0, comment.c_str(), &(error));
+ if(error) ::Glib::Error::throw_exception(error);
+}
+
+void KeyFile::set_comment(const Glib::ustring& group_name, const Glib::ustring& comment)
+{
+ GError *error = 0;
+ g_key_file_set_comment(gobj(), group_name.c_str(), 0, comment.c_str(), &(error));
+ if(error) ::Glib::Error::throw_exception(error);
+}
+
+}
diff --git a/libs/glibmm2/glib/src/keyfile.hg b/libs/glibmm2/glib/src/keyfile.hg
new file mode 100644
index 0000000000..8dd1c5d78a
--- /dev/null
+++ b/libs/glibmm2/glib/src/keyfile.hg
@@ -0,0 +1,278 @@
+/* Copyright(C) 2006 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or(at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+_DEFS(glibmm,glib)
+
+#include <glibmm/ustring.h>
+#include <glibmm/arrayhandle.h>
+#include <glibmm/error.h>
+#include <glibmm/utility.h>
+#include <glib/gkeyfile.h>
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GKeyFile GKeyFile; }
+#endif
+
+namespace Glib
+{
+
+ _WRAP_ENUM(KeyFileFlags, GKeyFileFlags, NO_GTYPE)
+
+ /** Exception class for KeyFile errors.
+ */
+ _WRAP_GERROR(KeyFileError, GKeyFileError, G_KEY_FILE_ERROR, NO_GTYPE)
+
+class KeyFile
+{
+ _CLASS_GENERIC(KeyFile, GKeyFile)
+public:
+
+ /** Creates a new, empty KeyFile object.
+ */
+ KeyFile();
+
+ /** Destructor
+ */
+ ~KeyFile();
+ _IGNORE(g_key_file_free)
+
+ /** Creates a glibmm KeyFile wrapper for a GKeyFile object.
+ * Note, when using this that when the wrapper is deleted,
+ * it will not automatically deleted the GKeyFile unless you
+ * set the delete_c_instance boolean to true.
+ * @param castitem The C instance to wrap
+ * @param delete_c_instance If the C instance should be deleted when
+ * the wrapper is deleted.
+ */
+ KeyFile(GKeyFile* castitem, bool takes_ownership = false);
+
+public:
+
+ _WRAP_METHOD(bool load_from_file(const std::string& filename, KeyFileFlags flags = Glib::KEY_FILE_NONE), g_key_file_load_from_file, errthrow)
+
+ /** Loads a KeyFile from memory
+ * @param data The data to use as a KeyFile
+ * @param flags Bitwise combination of the flags to use for the KeyFile
+ * @return true if the KeyFile was successfully loaded, false otherwise
+ * @throw Glib::KeyFileError
+ */
+
+ bool load_from_data(const Glib::ustring& data, KeyFileFlags flags = Glib::KEY_FILE_NONE);
+ _IGNORE(g_key_file_load_from_data)
+
+ /** Looks for a KeyFile named @a file in the paths returned from
+ * g_get_user_data_dir() and g_get_system_data_dirs() and loads them
+ * into the keyfile object, placing the full path to the file in
+ * @a full_path.
+ * @param file The file to search for
+ * @param full_path Return location for a string containing the full path of the file
+ * @param flags Bitwise combination of the flags to use for the KeyFile
+ * @return true if the KeyFile was successfully loaded, false otherwise
+ * @throw Glib::KeyFileError
+ * @throw Glib::FileError
+ */
+ bool load_from_data_dirs(const std::string& file, std::string& full_path, KeyFileFlags flags = Glib::KEY_FILE_NONE);
+ _IGNORE(g_key_file_load_from_data_dirs)
+
+ /** Outputs the KeyFile as a string
+ * @return A string object holding the contents of KeyFile
+ */
+ Glib::ustring to_data();
+ _IGNORE(g_key_file_to_data)
+
+ _WRAP_METHOD(Glib::ustring get_start_group() const, g_key_file_get_start_group)
+
+ /** Gets a list of all groups in the KeyFile
+ * @returns A list containing the names of the groups
+ */
+ Glib::ArrayHandle<Glib::ustring> get_groups() const;
+ _IGNORE(g_key_file_get_groups)
+
+ /** Gets a list of all keys from the group @a group_name.
+ * @param group_name The name of a group
+ * @returns A list containing the names of the keys in @a group_name
+ */
+ Glib::ArrayHandle<Glib::ustring> get_keys(const Glib::ustring& group_name) const;
+ _IGNORE(g_key_file_get_keys)
+
+ _WRAP_METHOD(bool has_group(const Glib::ustring& group_name) const, g_key_file_has_group)
+ _WRAP_METHOD(bool has_key(const Glib::ustring& group_name, const Glib::ustring& key) const, g_key_file_has_key, errthrow)
+
+ _WRAP_METHOD(Glib::ustring get_value(const Glib::ustring& group_name, const Glib::ustring& key) const, g_key_file_get_value, errthrow)
+ _WRAP_METHOD(Glib::ustring get_string(const Glib::ustring& group_name, const Glib::ustring& key) const, g_key_file_get_string, errthrow)
+
+ /** Gets the value associated with @a key under @a group_name translated
+ * into the current locale.
+ */
+ Glib::ustring get_locale_string(const Glib::ustring& group_name, const Glib::ustring& key) const;
+
+ _WRAP_METHOD(Glib::ustring get_locale_string(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& locale) const, g_key_file_get_locale_string, errthrow)
+ _WRAP_METHOD(bool get_boolean(const Glib::ustring& group_name, const Glib::ustring& key) const, g_key_file_get_boolean, errthrow)
+
+ /** Gets the value in the first group, under @a key, interpreting it as
+ * an integer.
+ * @param key The name of the key
+ * @return The value of @a key as an integer
+ * @throws Glib::KeyFileError
+ */
+ int get_integer(const Glib::ustring& key) const;
+
+ _WRAP_METHOD(int get_integer(const Glib::ustring& group_name, const Glib::ustring& key) const, g_key_file_get_integer, errthrow)
+
+ /** Returns the values associated with @a key under @a group_name
+ * @param group_name The name of a group
+ * @param key The name of a key
+ * @return A list containing the values requested
+ * @throws Glib::KeyFileError
+ */
+ Glib::ArrayHandle<Glib::ustring> get_string_list(const Glib::ustring& group_name, const Glib::ustring& key) const;
+ _IGNORE(g_key_file_get_string_list)
+
+ /** Returns the values associated with @a key under @a group_name
+ * translated into the current locale, if available.
+ * @param group_name The name of a group
+ * @param key The name of a key
+ * @return A list containing the values requested
+ * @throws Glib::KeyFileError
+ */
+ Glib::ArrayHandle<Glib::ustring> get_locale_string_list(const Glib::ustring& group_name, const Glib::ustring& key) const;
+
+ /** Returns the values associated with @a key under @a group_name
+ * translated into @a locale, if available.
+ * @param group_name The name of a group
+ * @param key The name of a key
+ * @param locale The name of a locale
+ * @return A list containing the values requested
+ * @throws Glib::KeyFileError
+ */
+ Glib::ArrayHandle<Glib::ustring> get_locale_string_list(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& locale) const;
+ _IGNORE(g_key_file_get_locale_string_list)
+
+ /** Returns the values associated with @a key under @a group_name
+ * @param group_name The name of a group
+ * @param key The name of a key
+ * @return A list of booleans
+ * @throws Glib::KeyFileError
+ */
+ Glib::ArrayHandle<bool> get_boolean_list(const Glib::ustring& group_name, const Glib::ustring& key) const;
+ _IGNORE(g_key_file_get_boolean_list)
+
+ /** Returns the values associated with @a key under @a group_name
+ * @param group_name The name of a group
+ * @param key The name of a key
+ * @return A list of integers
+ * @throws Glib::KeyFileError
+ */
+ Glib::ArrayHandle<int> get_integer_list(const Glib::ustring& group_name, const Glib::ustring& key) const;
+ _IGNORE(g_key_file_get_integer_list)
+
+ /** Get comment from top of file
+ * @return The comment
+ */
+ Glib::ustring get_comment() const;
+
+ /** Get comment from above a group
+ * @param group_name The group
+ * @return The comment
+ */
+ Glib::ustring get_comment(const Glib::ustring& group_name) const;
+
+ _WRAP_METHOD(Glib::ustring get_comment(const Glib::ustring& group_name, const Glib::ustring& key) const, g_key_file_get_comment, errthrow)
+
+ _WRAP_METHOD(void set_list_separator(gchar separator), g_key_file_set_list_separator)
+ _WRAP_METHOD(void set_value(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& value), g_key_file_set_value)
+ _WRAP_METHOD(void set_string(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& string), g_key_file_set_string)
+ _WRAP_METHOD(void set_locale_string(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& locale, const Glib::ustring& string), g_key_file_set_locale_string)
+ _WRAP_METHOD(void set_boolean(const Glib::ustring& group_name, const Glib::ustring& key, bool value), g_key_file_set_boolean)
+ _WRAP_METHOD(void set_integer(const Glib::ustring& group_name, const Glib::ustring& key, int value), g_key_file_set_integer)
+
+ /** Sets a list of string values for @a key under @a group_name. If
+ * key cannot be found it is created. If @a group_name cannot be found
+ * it is created.
+ * @param group_name The name of a group
+ * @param key The name of a key
+ * @param list A list holding objects of type Glib::ustring
+ */
+ void set_string_list(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ArrayHandle<Glib::ustring>& list);
+ _IGNORE(g_key_file_set_string_list)
+
+ /** Sets a list of string values for the @a key under @a group_name and marks
+ * them as being for @a locale. If the @a key or @a group_name cannot be
+ * found, they are created.
+ * @param group_name The name of a group
+ * @param key The name of a key
+ * @param locale A locale
+ * @param list A list holding objects of type Glib::ustring
+ */
+ void set_locale_string_list(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& locale, const Glib::ArrayHandle<Glib::ustring>& list);
+ _IGNORE(g_key_file_set_locale_string_list)
+
+ /** Sets a list of booleans for the @a key under @a group_name.
+ * If either the @a key or @a group_name cannot be found they are created
+ * @param group_name The name of a group
+ * @param key The name of a key
+ * @param list A list holding object of type bool
+ */
+ void set_boolean_list(const Glib::ustring& group_name, const Glib::ustring& key, Glib::ArrayHandle<bool>& list);
+ _IGNORE(g_key_file_set_boolean_list)
+
+ /** Sets a list of integers for the @a key under @a group_name.
+ * If either the @a key or @a group_name cannot be found they are created
+ * @param group_name The name of a group
+ * @param key The name of a key
+ * @param list A list holding object of type int
+ */
+ void set_integer_list(const Glib::ustring& group_name, const Glib::ustring& key, Glib::ArrayHandle<int>& list);
+ _IGNORE(g_key_file_set_integer_list)
+
+ /** Places @a comment at the start of the file, before the first group.
+ * @param comment The Comment
+ */
+ void set_comment(const Glib::ustring& comment);
+
+ /** Places @a comment above @a group_name.
+ * @param group_name The Group the comment should be above
+ * @param comment The comment
+ */
+ void set_comment(const Glib::ustring& group_name, const Glib::ustring& comment);
+
+ /** Places a comment above @a key from @a group_name.
+ * @param key Key comment should be above
+ * @param group_name Group comment is in
+ * @param comment The comment
+ */
+ _WRAP_METHOD(void set_comment(const Glib::ustring& group_name, const Glib::ustring& key, const Glib::ustring& comment), g_key_file_set_comment, errthrow)
+
+ _WRAP_METHOD(void remove_comment(const Glib::ustring& group_name, const Glib::ustring& key), g_key_file_remove_comment, errthrow)
+ _WRAP_METHOD(void remove_key(const Glib::ustring& group_name, const Glib::ustring& key), g_key_file_remove_key, errthrow)
+ _WRAP_METHOD(void remove_group(const Glib::ustring& group_name), g_key_file_remove_group, errthrow)
+
+ GKeyFile* gobj() { return gobject_; }
+ const GKeyFile* gobj() const { return gobject_; }
+
+protected:
+ GKeyFile* gobject_;
+ bool owns_gobject_;
+
+private:
+ // noncopyable
+ KeyFile(const KeyFile&);
+ KeyFile& operator=(const KeyFile&);
+};
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/markup.ccg b/libs/glibmm2/glib/src/markup.ccg
new file mode 100644
index 0000000000..8e9103b7a5
--- /dev/null
+++ b/libs/glibmm2/glib/src/markup.ccg
@@ -0,0 +1,346 @@
+// -*- c++ -*-
+/* $Id: markup.ccg,v 1.5 2006/10/04 12:04:09 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/markup.h>
+#include <glibmm/exceptionhandler.h>
+#include <glibmm/utility.h>
+#include <glib.h>
+
+
+namespace Glib
+{
+
+namespace Markup
+{
+
+Glib::ustring escape_text(const Glib::ustring& text)
+{
+ const Glib::ScopedPtr<char> buf (g_markup_escape_text(text.data(), text.bytes()));
+ return Glib::ustring(buf.get());
+}
+
+
+/**** Glib::Markup::AttributeKeyLess ***************************************/
+
+bool AttributeKeyLess::operator()(const Glib::ustring& lhs, const Glib::ustring& rhs) const
+{
+ return (lhs.raw() < rhs.raw());
+}
+
+
+/**** Glib::Markup::ParserCallbacks ****************************************/
+
+class ParserCallbacks
+{
+public:
+ static const GMarkupParser vfunc_table;
+
+ static void start_element(GMarkupParseContext* context,
+ const char* element_name,
+ const char** attribute_names,
+ const char** attribute_values,
+ void* user_data,
+ GError** error);
+
+ static void end_element(GMarkupParseContext* context,
+ const char* element_name,
+ void* user_data,
+ GError** error);
+
+ static void text(GMarkupParseContext* context,
+ const char* text,
+ gsize text_len,
+ void* user_data,
+ GError** error);
+
+ static void passthrough(GMarkupParseContext* context,
+ const char* passthrough_text,
+ gsize text_len,
+ void* user_data,
+ GError** error);
+
+ static void error(GMarkupParseContext* context,
+ GError* error,
+ void* user_data);
+};
+
+
+const GMarkupParser ParserCallbacks::vfunc_table =
+{
+ &ParserCallbacks::start_element,
+ &ParserCallbacks::end_element,
+ &ParserCallbacks::text,
+ &ParserCallbacks::passthrough,
+ &ParserCallbacks::error,
+};
+
+void ParserCallbacks::start_element(GMarkupParseContext* context,
+ const char* element_name,
+ const char** attribute_names,
+ const char** attribute_values,
+ void* user_data,
+ GError** error)
+{
+ if(!&error) error = error; //Avoid an unused parameter warning when GLIBMM_EXCEPTIONS_ENABLED is used.
+
+ ParseContext& cpp_context = *static_cast<ParseContext*>(user_data);
+ g_return_if_fail(context == cpp_context.gobj());
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ Parser::AttributeMap attributes;
+
+ if(attribute_names && attribute_values)
+ {
+ const char *const * pname = attribute_names;
+ const char *const * pvalue = attribute_values;
+
+ for(; *pname && *pvalue; ++pname, ++pvalue)
+ attributes.insert(Parser::AttributeMap::value_type(*pname, *pvalue));
+
+ g_return_if_fail(*pname == 0 && *pvalue == 0);
+ }
+
+ cpp_context.get_parser()->on_start_element(cpp_context, element_name, attributes);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(MarkupError& err)
+ {
+ err.propagate(error);
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+}
+
+void ParserCallbacks::end_element(GMarkupParseContext* context,
+ const char* element_name,
+ void* user_data,
+ GError** error)
+{
+ if(!&error) error = error; //Avoid an unused parameter warning when GLIBMM_EXCEPTIONS_ENABLED is used.
+
+ ParseContext& cpp_context = *static_cast<ParseContext*>(user_data);
+ g_return_if_fail(context == cpp_context.gobj());
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ cpp_context.get_parser()->on_end_element(cpp_context, element_name);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(MarkupError& err)
+ {
+ err.propagate(error);
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+}
+
+void ParserCallbacks::text(GMarkupParseContext* context,
+ const char* text,
+ gsize text_len,
+ void* user_data,
+ GError** error)
+{
+ if(!&error) error = error; //Avoid an unused parameter warning when GLIBMM_EXCEPTIONS_ENABLED is used.
+
+ ParseContext& cpp_context = *static_cast<ParseContext*>(user_data);
+ g_return_if_fail(context == cpp_context.gobj());
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ cpp_context.get_parser()->on_text(cpp_context, Glib::ustring(text, text + text_len));
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(MarkupError& err)
+ {
+ err.propagate(error);
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+}
+
+void ParserCallbacks::passthrough(GMarkupParseContext* context,
+ const char* passthrough_text,
+ gsize text_len,
+ void* user_data,
+ GError** error)
+{
+ if(!&error) error = error; //Avoid an unused parameter warning when GLIBMM_EXCEPTIONS_ENABLED is used.
+
+ ParseContext& cpp_context = *static_cast<ParseContext*>(user_data);
+ g_return_if_fail(context == cpp_context.gobj());
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ cpp_context.get_parser()->on_passthrough(
+ cpp_context, Glib::ustring(passthrough_text, passthrough_text + text_len));
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(MarkupError& err)
+ {
+ err.propagate(error);
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+}
+
+void ParserCallbacks::error(GMarkupParseContext* context,
+ GError* error,
+ void* user_data)
+{
+ ParseContext& cpp_context = *static_cast<ParseContext*>(user_data);
+
+ g_return_if_fail(context == cpp_context.gobj());
+ g_return_if_fail(error->domain == G_MARKUP_ERROR);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ cpp_context.get_parser()->on_error(cpp_context, MarkupError(g_error_copy(error)));
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+}
+
+
+/**** Glib::Markup::Parser *************************************************/
+
+Parser::Parser()
+{}
+
+Parser::~Parser()
+{}
+
+void Parser::on_start_element(ParseContext&, const Glib::ustring&, const Parser::AttributeMap&)
+{}
+
+void Parser::on_end_element(ParseContext&, const Glib::ustring&)
+{}
+
+void Parser::on_text(ParseContext&, const Glib::ustring&)
+{}
+
+void Parser::on_passthrough(ParseContext&, const Glib::ustring&)
+{}
+
+void Parser::on_error(ParseContext&, const MarkupError&)
+{}
+
+
+/**** Glib::Markup::ParseContext *******************************************/
+
+ParseContext::ParseContext(Parser& parser, ParseFlags flags)
+:
+ parser_ (&parser),
+ gobject_ (g_markup_parse_context_new(&ParserCallbacks::vfunc_table, (GMarkupParseFlags) flags,
+ this, &ParseContext::destroy_notify_callback))
+{}
+
+ParseContext::~ParseContext()
+{
+ parser_ = 0;
+ g_markup_parse_context_free(gobject_);
+}
+
+void ParseContext::parse(const Glib::ustring& text)
+{
+ GError* error = 0;
+ g_markup_parse_context_parse(gobject_, text.data(), text.bytes(), &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+void ParseContext::parse(const char* text_begin, const char* text_end)
+{
+ GError* error = 0;
+ g_markup_parse_context_parse(gobject_, text_begin, text_end - text_begin, &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+void ParseContext::end_parse()
+{
+ GError* error = 0;
+ g_markup_parse_context_end_parse(gobject_, &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+Glib::ustring ParseContext::get_element() const
+{
+ const char *const element_name = g_markup_parse_context_get_element(gobject_);
+ return (element_name) ? Glib::ustring(element_name) : Glib::ustring();
+}
+
+int ParseContext::get_line_number() const
+{
+ int line_number = 0;
+ g_markup_parse_context_get_position(gobject_, &line_number, 0);
+ return line_number;
+}
+
+int ParseContext::get_char_number() const
+{
+ int char_number = 0;
+ g_markup_parse_context_get_position(gobject_, 0, &char_number);
+ return char_number;
+}
+
+// static
+void ParseContext::destroy_notify_callback(void* data)
+{
+ ParseContext *const self = static_cast<ParseContext*>(data);
+
+ // Detect premature destruction.
+ g_return_if_fail(self->parser_ == 0);
+}
+
+} // namespace Markup
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/markup.hg b/libs/glibmm2/glib/src/markup.hg
new file mode 100644
index 0000000000..d43bd1442d
--- /dev/null
+++ b/libs/glibmm2/glib/src/markup.hg
@@ -0,0 +1,346 @@
+/* $Id: markup.hg,v 1.5 2005/01/21 12:48:05 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+_DEFS(glibmm,glib)
+
+#include <glibmm/error.h>
+#include <sigc++/sigc++.h>
+
+#include <map>
+#include <glibmmconfig.h>
+
+GLIBMM_USING_STD(map)
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GMarkupParseContext GMarkupParseContext; }
+#endif
+
+
+namespace Glib
+{
+
+/** @defgroup Markup Simple XML Subset Parser
+ *
+ * The Glib::Markup parser is intended to parse a simple markup format that's a
+ * subset of XML. This is a small, efficient, easy-to-use parser. It should not
+ * be used if you expect to interoperate with other applications generating
+ * full-scale XML. However, it's very useful for application data files, config
+ * files, etc. where you know your application will be the only one writing the
+ * file. Full-scale XML parsers should be able to parse the subset used by
+ * Glib::Markup parser, so you can easily migrate to full-scale XML at a later
+ * time if the need arises.
+ *
+ * Glib::Markup is not guaranteed to signal an error on all invalid XML;
+ * the parser may accept documents that an XML parser would not. However,
+ * invalid XML documents are not considered valid Glib::Markup documents.
+ *
+ * @par Simplifications to XML include:
+ *
+ * - Only UTF-8 encoding is allowed.
+ * - No user-defined entities.
+ * - Processing instructions, comments and the doctype declaration are "passed
+ * through" but are not interpreted in any way.
+ * - No DTD or validation.
+ *
+ * @par The markup format does support:
+ *
+ * - Elements
+ * - Attributes
+ * - 5 standard entities: <tt>\&amp; \&lt; \&gt; \&quot; \&apos;</tt>
+ * - Character references
+ * - Sections marked as <tt>CDATA</tt>
+ *
+ * @{
+ */
+
+/** %Exception class for markup parsing errors.
+ */
+_WRAP_GERROR(MarkupError, GMarkupError, G_MARKUP_ERROR, NO_GTYPE)
+
+/*! @var MarkupError::Code MarkupError::BAD_UTF8
+ * Text being parsed was not valid UTF-8.
+ */
+/*! @var MarkupError::Code MarkupError::EMPTY
+ * Document contained nothing, or only whitespace.
+ */
+/*! @var MarkupError::Code MarkupError::PARSE
+ * Document was ill-formed.
+ */
+/*! @var MarkupError::Code MarkupError::UNKNOWN_ELEMENT
+ * This error should be set by Glib::Markup::Parser virtual methods;
+ * element wasn't known.
+ */
+/*! @var MarkupError::Code MarkupError::UNKNOWN_ATTRIBUTE
+ * This error should be set by Glib::Markup::Parser virtual methods;
+ * attribute wasn't known.
+ */
+/*! @var MarkupError::Code MarkupError::INVALID_CONTENT
+ * This error should be set by Glib::Markup::Parser virtual methods;
+ * something was wrong with contents of the document, e.g. invalid attribute value.
+ */
+
+/** @} group Markup */
+
+
+namespace Markup
+{
+
+class ParseContext;
+
+/** @ingroup Markup */
+typedef Glib::MarkupError Error;
+
+
+/** Escapes text so that the markup parser will parse it verbatim.
+ * Less than, greater than, ampersand, etc. are replaced with the corresponding
+ * entities. This function would typically be used when writing out a file to
+ * be parsed with the markup parser.
+ * @ingroup Markup
+ * @param text Some valid UTF-8 text.
+ * @return Escaped text.
+ */
+Glib::ustring escape_text(const Glib::ustring& text);
+
+
+/** There are no flags right now. Pass <tt>Glib::Markup::ParseFlags(0)</tt> for
+ * the flags argument to all functions (this should be the default argument
+ * anyway).
+ */
+_WRAP_ENUM(ParseFlags, GMarkupParseFlags, NO_GTYPE, s#^MARKUP_##)
+
+/*! @var Markup::ParseFlags DO_NOT_USE_THIS_UNSUPPORTED_FLAG
+ * Flag you should not use.
+ */
+
+
+/** Binary predicate used by Markup::Parser::AttributeMap.
+ * @ingroup Markup
+ * Unlike <tt>operator<(const ustring& lhs, const ustring& rhs)</tt>
+ * which would be used by the default <tt>std::less<></tt> predicate,
+ * the AttributeKeyLess predicate is locale-independent. This is both
+ * more correct and much more efficient.
+ */
+class AttributeKeyLess
+{
+public:
+ typedef Glib::ustring first_argument_type;
+ typedef Glib::ustring second_argument_type;
+ typedef bool result_type;
+
+ bool operator()(const Glib::ustring& lhs, const Glib::ustring& rhs) const;
+};
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+class ParserCallbacks;
+#endif
+
+/** The abstract markup parser base class.
+ * @ingroup Markup
+ * To implement a parser for your markup format, derive from
+ * Glib::Markup::Parser and implement the virtual methods.
+ *
+ * You don't have to override all of the virtual methods. If a particular
+ * method is not implement the data passed to it will be ignored. Except for
+ * the error method, any of these callbacks can throw an error exception; in
+ * particular the MarkupError::UNKNOWN_ELEMENT,
+ * MarkupError::UNKNOWN_ATTRIBUTE, and MarkupError::INVALID_CONTENT errors
+ * are intended to be thrown from these overridden methods. If you throw an
+ * error from a method, Glib::Markup::ParseContext::parse() will report that
+ * error back to its caller.
+ */
+class Parser : public sigc::trackable
+{
+public:
+ typedef std::map<Glib::ustring, Glib::ustring, Glib::Markup::AttributeKeyLess> AttributeMap;
+
+ virtual ~Parser() = 0;
+
+protected:
+ /** Constructs a Parser object.
+ * Note that Markup::Parser is an abstract class which can't be instantiated
+ * directly. To implement the parser for your markup format, derive from
+ * Markup::Parser and implement the virtual methods.
+ */
+ Parser();
+
+ /** Called for open tags <tt>\<foo bar="baz"\></tt>.
+ * This virtual method is invoked when the opening tag of an element is seen.
+ * @param context The Markup::ParseContext object the parsed data belongs to.
+ * @param element_name The name of the element.
+ * @param attributes A map of attribute name/value pairs.
+ * @throw Glib::MarkupError An exception <em>you</em> should throw if
+ * something went wrong, for instance if an unknown attribute name was
+ * encountered. In particular the MarkupError::UNKNOWN_ELEMENT,
+ * MarkupError::UNKNOWN_ATTRIBUTE, and MarkupError::INVALID_CONTENT
+ * errors are intended to be thrown from user-implemented methods.
+ */
+ virtual void on_start_element(ParseContext& context,
+ const Glib::ustring& element_name,
+ const AttributeMap& attributes);
+
+ /** Called for close tags <tt>\</foo\></tt>.
+ * This virtual method is invoked when the closing tag of an element is seen.
+ * @param context The Markup::ParseContext object the parsed data belongs to.
+ * @param element_name The name of the element.
+ * @throw Glib::MarkupError An exception <em>you</em> should throw if
+ * something went wrong, for instance if an unknown attribute name was
+ * encountered. In particular the MarkupError::UNKNOWN_ELEMENT,
+ * MarkupError::UNKNOWN_ATTRIBUTE, and MarkupError::INVALID_CONTENT
+ * errors are intended to be thrown from user-implemented methods.
+ */
+ virtual void on_end_element(ParseContext& context, const Glib::ustring& element_name);
+
+ /** Called for character data.
+ * This virtual method is invoked when some text is seen (text is always
+ * inside an element).
+ * @param context The Markup::ParseContext object the parsed data belongs to.
+ * @param text The parsed text in UTF-8 encoding.
+ * @throw Glib::MarkupError An exception <em>you</em> should throw if
+ * something went wrong, for instance if an unknown attribute name was
+ * encountered. In particular the MarkupError::UNKNOWN_ELEMENT,
+ * MarkupError::UNKNOWN_ATTRIBUTE, and MarkupError::INVALID_CONTENT
+ * errors are intended to be thrown from user-implemented methods.
+ */
+ virtual void on_text(ParseContext& context, const Glib::ustring& text);
+
+ /** Called for strings that should be re-saved verbatim in this same
+ * position, but are not otherwise interpretable.
+ * This virtual method is invoked for comments, processing instructions and
+ * doctype declarations; if you're re-writing the parsed document, write the
+ * passthrough text back out in the same position.
+ * @param context The Markup::ParseContext object the parsed data belongs to.
+ * @param passthrough_text The text that should be passed through.
+ * @throw Glib::MarkupError An exception <em>you</em> should throw if
+ * something went wrong, for instance if an unknown attribute name was
+ * encountered. In particular the MarkupError::UNKNOWN_ELEMENT,
+ * MarkupError::UNKNOWN_ATTRIBUTE, and MarkupError::INVALID_CONTENT
+ * errors are intended to be thrown from user-implemented methods.
+ */
+ virtual void on_passthrough(ParseContext& context, const Glib::ustring& passthrough_text);
+
+ /** Called on error, including one thrown by an overridden virtual method.
+ * @param context The Markup::ParseContext object the parsed data belongs to.
+ * @param error A MarkupError object with detailed information about the error.
+ */
+ virtual void on_error(ParseContext& context, const MarkupError& error);
+
+private:
+ // noncopyable
+ Parser(const Parser&);
+ Parser& operator=(const Parser&);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ friend class Glib::Markup::ParserCallbacks;
+#endif
+};
+
+
+/** A parse context is used to parse marked-up documents.
+ * @ingroup Markup
+ * You can feed any number of documents into a context, as long as no errors
+ * occur; once an error occurs, the parse context can't continue to parse text
+ * (you have to destroy it and create a new parse context).
+ */
+class ParseContext : public sigc::trackable
+{
+public:
+ /** Creates a new parse context.
+ * @param parser A Markup::Parser instance.
+ * @param flags Bitwise combination of Markup::ParseFlags.
+ */
+ explicit ParseContext(Parser& parser, ParseFlags flags = ParseFlags(0));
+ virtual ~ParseContext();
+
+ /** Feed some data to the ParseContext.
+ * The data need not be valid UTF-8; an error will be signalled if it's
+ * invalid. The data need not be an entire document; you can feed a document
+ * into the parser incrementally, via multiple calls to this function.
+ * Typically, as you receive data from a network connection or file, you feed
+ * each received chunk of data into this function, aborting the process if an
+ * error occurs. Once an error is reported, no further data may be fed to the
+ * ParseContext; all errors are fatal.
+ * @param text Chunk of text to parse.
+ * @throw Glib::MarkupError
+ */
+ void parse(const Glib::ustring& text);
+
+ /** Feed some data to the ParseContext.
+ * The data need not be valid UTF-8; an error will be signalled if it's
+ * invalid. The data need not be an entire document; you can feed a document
+ * into the parser incrementally, via multiple calls to this function.
+ * Typically, as you receive data from a network connection or file, you feed
+ * each received chunk of data into this function, aborting the process if an
+ * error occurs. Once an error is reported, no further data may be fed to the
+ * ParseContext; all errors are fatal.
+ * @param text_begin Begin of chunk of text to parse.
+ * @param text_end End of chunk of text to parse.
+ * @throw Glib::MarkupError
+ */
+ void parse(const char* text_begin, const char* text_end);
+
+ /** Signals to the ParseContext that all data has been fed into the parse
+ * context with parse(). This method reports an error if the document isn't
+ * complete, for example if elements are still open.
+ * @throw Glib::MarkupError
+ */
+ void end_parse();
+
+ /** Retrieves the name of the currently open element.
+ * @return The name of the currently open element, or <tt>""</tt>.
+ */
+ Glib::ustring get_element() const;
+
+ /** Retrieves the current line number.
+ * Intended for use in error messages; there are no strict semantics for what
+ * constitutes the "current" line number other than "the best number we could
+ * come up with for error messages."
+ */
+ int get_line_number() const;
+
+ /** Retrieves the number of the current character on the current line.
+ * Intended for use in error messages; there are no strict semantics for what
+ * constitutes the "current" character number other than "the best number we
+ * could come up with for error messages."
+ */
+ int get_char_number() const;
+
+ Parser* get_parser() { return parser_; }
+ const Parser* get_parser() const { return parser_; }
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GMarkupParseContext* gobj() { return gobject_; }
+ const GMarkupParseContext* gobj() const { return gobject_; }
+#endif
+
+private:
+ Markup::Parser* parser_;
+ GMarkupParseContext* gobject_;
+
+ // noncopyable
+ ParseContext(const ParseContext&);
+ ParseContext& operator=(const ParseContext&);
+
+ static void destroy_notify_callback(void* data);
+};
+
+} // namespace Markup
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/module.ccg b/libs/glibmm2/glib/src/module.ccg
new file mode 100644
index 0000000000..a57217ea92
--- /dev/null
+++ b/libs/glibmm2/glib/src/module.ccg
@@ -0,0 +1,44 @@
+// -*- c++ -*-
+/* $Id: module.ccg,v 1.2 2004/04/09 14:49:44 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/utility.h>
+#include <gmodule.h>
+
+namespace Glib
+{
+
+Module::Module(const std::string& file_name, ModuleFlags flags)
+:
+ gobject_ (g_module_open(file_name.c_str(), (GModuleFlags) flags))
+{}
+
+Module::~Module()
+{
+ if(gobject_)
+ g_module_close(gobject_);
+}
+
+Module::operator bool() const
+{
+ return (gobject_ != 0);
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/module.hg b/libs/glibmm2/glib/src/module.hg
new file mode 100644
index 0000000000..cace12a728
--- /dev/null
+++ b/libs/glibmm2/glib/src/module.hg
@@ -0,0 +1,153 @@
+/* $Id: module.hg,v 1.5 2004/04/09 14:49:44 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+_DEFS(glibmm,glib)
+
+#include <glibmmconfig.h>
+#include <string>
+
+GLIBMM_USING_STD(string)
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GModule GModule; }
+#endif
+
+
+namespace Glib
+{
+
+_WRAP_ENUM(ModuleFlags, GModuleFlags, NO_GTYPE)
+
+//TODO: Replace get_last_error() with exceptions?
+//Provide operator()?
+
+/** Dynamic Loading of Modules
+ * These functions provide a portable way to dynamically load object
+ * files (commonly known as 'plug-ins'). The current implementation
+ * supports all systems that provide an implementation of dlopen()
+ * (e.g. Linux/Sun), as well as HP-UX via its shl_load() mechanism,
+ * and Windows platforms via DLLs.
+ */
+class Module
+{
+ _CLASS_GENERIC(Module, GModule)
+ _IGNORE(g_module_open, g_module_close)
+
+public:
+
+ /** Opens a module.
+ *
+ * First of all it tries to open file_name as a module. If that
+ * fails and file_name has the ".la"-suffix (and is a libtool
+ * archive) it tries to open the corresponding module. If that fails
+ * and it doesn't have the proper module suffix for the platform
+ * (G_MODULE_SUFFIX), this suffix will be appended and the
+ * corresponding module will be opended. If that fails and file_name
+ * doesn't have the ".la"-suffix, this suffix is appended and
+ * it tries to open the corresponding module.
+ *
+ * Use operator bool() to see whether the operation succeeded. For instance,
+ * @code
+ * Glib::Module module("plugins/helloworld");
+ * if(module)
+ * {
+ * void* func = 0;
+ * bool found = get_symbol("some_function", func);
+ * }
+ * @endcode
+ *
+ * @param file_name The library filename to open
+ * @param flags Flags to configure the load process
+ */
+ explicit Module(const std::string& file_name, ModuleFlags flags = ModuleFlags(0));
+
+ /** Close a module. The module will be removed from memory, unless
+ * <tt>make_resident</tt> has been called.
+ */
+ virtual ~Module();
+
+ /** Check whether the module was found.
+ */
+ operator bool() const;
+
+ /** Checks if modules are supported on the current platform.
+ * @returns true if available, false otherwise
+ */
+ _WRAP_METHOD(static bool get_supported(), g_module_supported)
+
+ /** Ensures that a module will never be unloaded. Any calls to the
+ * Glib::Module destructor will not unload the module.
+ */
+ _WRAP_METHOD(void make_resident(), g_module_make_resident)
+
+ /** Gets a string describing the last module error.
+ * @returns The error string
+ */
+ _WRAP_METHOD(static std::string get_last_error(), g_module_error)
+
+ /** Gets a symbol pointer from the module.
+ * @param symbol_name The name of the symbol to lookup
+ * @param symbol A pointer to set to the symbol
+ * @returns True if the symbol was found, false otherwise.
+ */
+ _WRAP_METHOD(bool get_symbol(const std::string& symbol_name, void*& symbol) const, g_module_symbol)
+
+ /** Get the name of the module.
+ * @returns The name of the module
+ */
+ _WRAP_METHOD(std::string get_name() const, g_module_name)
+
+ /** A portable way to build the filename of a module. The
+ * platform-specific prefix and suffix are added to the filename, if
+ * needed, and the result is added to the directory, using the
+ * correct separator character.
+ *
+ * The directory should specify the directory where the module can
+ * be found. It can be an empty string to indicate that the
+ * module is in a standard platform-specific directory, though this
+ * is not recommended since the wrong module may be found.
+ *
+ * For example, calling <tt>g_module_build_path()</tt> on a Linux
+ * system with a directory of <tt>/lib</tt> and a module_name of
+ * "mylibrary" will return <tt>/lib/libmylibrary.so</tt>. On a
+ * Windows system, using <tt>\\Windows</tt> as the directory it will
+ * return <tt>\\Windows\\mylibrary.dll</tt>.
+ *
+ * @param directory The directory the module is in
+ * @param module_name The name of the module
+ * @returns The system-specific filename of the module
+ */
+ // TODO: add an override which doesn't take a directory
+ // TODO: check what happens when directory is ""
+ _WRAP_METHOD(static std::string build_path(const std::string& directory, const std::string& module_name), g_module_build_path)
+
+ GModule* gobj() { return gobject_; }
+ const GModule* gobj() const { return gobject_; }
+
+protected:
+ GModule* gobject_;
+
+private:
+ // noncopyable
+ Module(const Module&);
+ Module& operator=(const Module&);
+};
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/optioncontext.ccg b/libs/glibmm2/glib/src/optioncontext.ccg
new file mode 100644
index 0000000000..ac7fe0f38a
--- /dev/null
+++ b/libs/glibmm2/glib/src/optioncontext.ccg
@@ -0,0 +1,74 @@
+// -*- c++ -*-
+/* $Id: optioncontext.ccg,v 1.4 2004/10/30 14:25:45 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/utility.h>
+#include <glib/goption.h>
+
+namespace Glib
+{
+
+
+OptionContext::OptionContext(const Glib::ustring& parameter_string)
+: gobject_( g_option_context_new(parameter_string.c_str()) ),
+ has_ownership_(true)
+{
+}
+
+OptionContext::OptionContext(GOptionContext* castitem, bool take_ownership)
+: gobject_(castitem),
+ has_ownership_(take_ownership)
+{
+}
+
+OptionContext::~OptionContext()
+{
+ if(has_ownership_)
+ g_option_context_free(gobj());
+
+ gobject_ = 0;
+}
+
+void OptionContext::add_group(OptionGroup& group)
+{
+ //Strangely, GObjectContext actually takes ownership of the GOptionGroup, deleting it later.
+ g_option_context_add_group(gobj(), (group).gobj_give_ownership());
+}
+
+void OptionContext::set_main_group(OptionGroup& group)
+{
+ //Strangely, GObjectContext actually takes ownership of the GOptionGroup, deleting it later.
+ g_option_context_set_main_group(gobj(), (group).gobj_give_ownership());
+}
+
+
+/*
+OptionGroup OptionContext::get_main_group() const
+{
+ const GOptionGroup* cobj = g_option_context_get_main_group(const_cast<GOptionContext*>( gobj()) );
+ OptionGroup cppObj(const_cast<GOptionGroup*>(cobj), true); // take_copy
+ return cppObj;
+}
+
+*/
+
+
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/optioncontext.hg b/libs/glibmm2/glib/src/optioncontext.hg
new file mode 100644
index 0000000000..5a217f23fa
--- /dev/null
+++ b/libs/glibmm2/glib/src/optioncontext.hg
@@ -0,0 +1,101 @@
+/* $Id: optioncontext.hg,v 1.6 2005/01/10 17:42:17 murrayc Exp $ */
+
+/* Copyright (C) 2004 The glibmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+_DEFS(glibmm,glib)
+
+#include <glibmm/optionentry.h>
+#include <glibmm/optiongroup.h>
+#include <glibmm/error.h>
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GOptionContext GOptionContext; }
+#endif
+
+
+namespace Glib
+{
+
+/** Exception class for options.
+ */
+_WRAP_GERROR(OptionError, GOptionError, G_OPTION_ERROR, NO_GTYPE)
+
+/** An OptionContext defines which options are accepted by the commandline option parser.
+ */
+class OptionContext
+{
+ _CLASS_GENERIC(OptionContext, GOptionContext)
+public:
+
+ /** Creates a new option context.
+ * @param parameter_string A string which is displayed in the first line of --help output, after programname [OPTION...]
+ */
+ explicit OptionContext(const Glib::ustring& parameter_string = Glib::ustring());
+
+ //Note that, unlike Glib::Wrap(), this would create a second C++ instance for the same C instance,
+ //so it should be used carefully. For instance you could not access data in a derived class via this second instance.
+ explicit OptionContext(GOptionContext* castitem, bool take_ownership = false);
+ virtual ~OptionContext();
+
+ _WRAP_METHOD(void set_help_enabled(bool help_enabled = true), g_option_context_set_help_enabled)
+ _WRAP_METHOD(bool get_help_enabled() const, g_option_context_get_help_enabled)
+ _WRAP_METHOD(void set_ignore_unknown_options(bool ignore_unknown = true), g_option_context_set_ignore_unknown_options)
+ _WRAP_METHOD(bool get_ignore_unknown_options() const, g_option_context_get_ignore_unknown_options)
+
+#m4 _CONVERSION(`char**&',`gchar***',`&($3)')
+ _WRAP_METHOD(bool parse(int& argc, char**& argv), g_option_context_parse, errthrow)
+
+ //g_option_context_add_main_entries(), just creates a group internally, adds them to it, and does a set_main_group()
+ //- a group without callbacks seems to do some simple default parsing.
+ _IGNORE(g_option_context_add_main_entries)
+
+ /** Adds an OptionGroup to the context, so that parsing with context will recognize the options in the group.
+ * Note that the group will not be copied, so it should exist for as long as the context exists.
+ *
+ * @param group The group to add.
+ */
+ void add_group(OptionGroup& group);
+ _IGNORE(g_option_context_add_group)
+
+ /** Sets an OptionGroup as the main group of the context. This has the same effect as calling add_group(), the only
+ * difference is that the options in the main group are treated differently when generating --help output.
+ * Note that the group will not be copied, so it should exist for as long as the context exists.
+ *
+ * @param group The group to add.
+ */
+ void set_main_group(OptionGroup& group);
+ _IGNORE(g_option_context_set_main_group)
+
+ //We don't need this (hopefully), and the memory management would be really awkward.
+ //OptionGroup& get_main_group();
+ //const OptionGroup& get_main_group() const;
+ _IGNORE(g_option_context_get_main_group)
+
+
+ GOptionContext* gobj() { return gobject_; }
+ const GOptionContext* gobj() const { return gobject_; }
+
+protected:
+
+ GOptionContext* gobject_;
+ bool has_ownership_;
+};
+
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/optionentry.ccg b/libs/glibmm2/glib/src/optionentry.ccg
new file mode 100644
index 0000000000..cd35a96e88
--- /dev/null
+++ b/libs/glibmm2/glib/src/optionentry.ccg
@@ -0,0 +1,79 @@
+// -*- c++ -*-
+/* $Id: optionentry.ccg,v 1.8 2006/03/08 12:23:03 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/utility.h>
+#include <glib/goption.h>
+#include <glib/gmem.h>
+
+namespace Glib
+{
+
+OptionEntry::OptionEntry()
+{
+ gobject_ = g_new0(GOptionEntry, 1);
+}
+
+OptionEntry::~OptionEntry()
+{
+ g_free(const_cast<char*>(gobject_->long_name));
+ g_free(const_cast<char*>(gobject_->description));
+ g_free(const_cast<char*>(gobject_->arg_description));
+ g_free(gobject_);
+}
+
+OptionEntry::OptionEntry(const OptionEntry& src)
+{
+ gobject_ = g_new0(GOptionEntry, 1);
+
+ operator=(src);
+}
+
+OptionEntry& OptionEntry::operator=(const OptionEntry& src)
+{
+ if(this != &src)
+ {
+ if(gobject_->long_name)
+ g_free(const_cast<char*>(gobject_->long_name));
+
+ gobject_->long_name = g_strdup(src.gobject_->long_name);
+
+ gobject_->short_name = src.gobject_->short_name; //It's just one char.
+
+ gobject_->flags = src.gobject_->flags;
+ gobject_->arg = src.gobject_->arg;
+ gobject_->arg_data = src.gobject_->arg_data; //Shared, because it's not owned by any instance of this class anyway.
+
+ if(gobject_->description)
+ g_free(const_cast<char*>(gobject_->description));
+
+ gobject_->description = g_strdup(src.gobject_->description);
+
+ if(gobject_->arg_description)
+ g_free(const_cast<char*>(gobject_->arg_description));
+
+ gobject_->arg_description = g_strdup(src.gobject_->arg_description);
+ }
+
+ return *this;
+}
+
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/optionentry.hg b/libs/glibmm2/glib/src/optionentry.hg
new file mode 100644
index 0000000000..8944898a82
--- /dev/null
+++ b/libs/glibmm2/glib/src/optionentry.hg
@@ -0,0 +1,96 @@
+/* $Id: optionentry.hg,v 1.11 2005/07/31 13:11:05 murrayc Exp $ */
+
+/* Copyright (C) 2004 The glibmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+_DEFS(glibmm,glib)
+
+#include <glibmm/ustring.h>
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GOptionEntry GOptionEntry; }
+#endif
+
+
+namespace Glib
+{
+
+/** An OptionEntry defines a single option. To have an effect, it must be added to an OptionGroup with
+ * OptionGroup::add_entry().
+ *
+ * The long name of an option can be used to specify it in a commandline as --long_name.
+ * Every option must have a long name. To resolve conflicts if multiple option groups contain the same long name, it is also
+ * possible to specify the option as --groupname-long_name.
+ *
+ * If an option has a short name, it can be specified as -short_name in a commandline.
+ *
+ * The description for the option is shown in the --help output.
+ *
+ * The arg_descripton is the placeholder to use for the extra argument parsed by the option in --help output.
+ */
+class OptionEntry
+{
+ _CLASS_GENERIC(OptionEntry, GOptionEntry)
+public:
+
+ //Copied from goption.h, instead of generated, so that we can put it inside the class.
+ enum Flags
+ {
+ FLAG_HIDDEN = 1 << 0,
+ FLAG_IN_MAIN = 1 << 1,
+ FLAG_REVERSE = 1 << 2,
+ FLAG_NO_ARG = 1 << 3,
+ FLAG_FILENAME = 1 << 4,
+ FLAG_OPTIONAL_ARG = 1 << 5,
+ FLAG_NOALIAS = 1 << 6
+ } GOptionFlags;
+
+ OptionEntry();
+ OptionEntry(const OptionEntry& src);
+ virtual ~OptionEntry();
+
+ OptionEntry& operator=(const OptionEntry& src);
+
+#m4 _CONVERSION(`Glib::ustring',`const gchar*',`g_strdup(($3).c_str())')
+
+ _MEMBER_GET(long_name, long_name, Glib::ustring, const char*)
+ _MEMBER_SET(long_name, long_name, Glib::ustring, const char*)
+
+ _MEMBER_GET(short_name, short_name, gchar, gchar)
+ _MEMBER_SET(short_name, short_name, gchar, gchar)
+
+ _MEMBER_GET(flags, flags, int, int)
+ _MEMBER_SET(flags, flags, int, int)
+
+ //TODO: G_OPTION_ARG_CALLBACK,
+
+ _MEMBER_GET(description, description, Glib::ustring, const char*)
+ _MEMBER_SET(description, description, Glib::ustring, const char*)
+
+ _MEMBER_GET(arg_description, arg_description, Glib::ustring, const char*)
+ _MEMBER_SET(arg_description, arg_description, Glib::ustring, const char*)
+
+ GOptionEntry* gobj() { return gobject_; }
+ const GOptionEntry* gobj() const { return gobject_; }
+
+protected:
+
+ GOptionEntry* gobject_;
+};
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/optiongroup.ccg b/libs/glibmm2/glib/src/optiongroup.ccg
new file mode 100644
index 0000000000..d98f2647c8
--- /dev/null
+++ b/libs/glibmm2/glib/src/optiongroup.ccg
@@ -0,0 +1,432 @@
+// -*- c++ -*-
+/* $Id: optiongroup.ccg,v 1.17 2006/01/28 12:09:22 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/optionentry.h>
+#include <glibmm/optioncontext.h>
+#include <glibmm/utility.h>
+//#include <glibmm/containers.h>
+#include <glib/goption.h>
+
+namespace Glib
+{
+
+namespace //anonymous
+{
+
+extern "C"
+{
+
+static gboolean g_callback_pre_parse(GOptionContext* context, GOptionGroup* /* group */, gpointer data, GError** /* TODO error */)
+{
+ OptionContext cppContext(context, false /* take_ownership */);
+ //OptionGroup cppGroup(group, true /* take_copy */); //Maybe this should be option_group.
+
+ OptionGroup* option_group = static_cast<OptionGroup*>(data);
+ if(option_group)
+ return option_group->on_pre_parse(cppContext, *option_group);
+ else
+ return false;
+}
+
+static gboolean g_callback_post_parse(GOptionContext* context, GOptionGroup* /* group */, gpointer data, GError** /* TODO error */)
+{
+ OptionContext cppContext(context, false /* take_ownership */);
+ //OptionGroup cppGroup(group, true /* take_copy */); //Maybe this should be option_group.
+
+ OptionGroup* option_group = static_cast<OptionGroup*>(data);
+ if(option_group)
+ {
+ return option_group->on_post_parse(cppContext, *option_group);
+ }
+ else
+ return false;
+}
+
+static void g_callback_error(GOptionContext* context, GOptionGroup* /* group */, gpointer data, GError** /* TODO error*/)
+{
+ OptionContext cppContext(context, false /* take_ownership */);
+ //OptionGroup cppGroup(group); //Maybe this should be option_group.
+
+ OptionGroup* option_group = static_cast<OptionGroup*>(data);
+ if(option_group)
+ return option_group->on_error(cppContext, *option_group);
+}
+
+} /* extern "C" */
+
+} //anonymous namespace
+
+
+OptionGroup::OptionGroup(const Glib::ustring& name, const Glib::ustring& description, const Glib::ustring& help_description)
+: gobject_( g_option_group_new(name.c_str(), description.c_str(), help_description.c_str(), this, 0 /* destroy_func */) ),
+ has_ownership_(true)
+{
+ //Connect callbacks, so that derived classes can override the virtual methods:
+ g_option_group_set_parse_hooks(gobj(), &g_callback_pre_parse, &g_callback_post_parse);
+ g_option_group_set_error_hook(gobj(), &g_callback_error);
+}
+
+OptionGroup::OptionGroup(GOptionGroup* castitem)
+: gobject_(castitem),
+ has_ownership_(true)
+{
+ //Always takes ownership - never takes copy.
+}
+
+
+OptionGroup::~OptionGroup()
+{
+ //Free any C types that were allocated during add_entry():
+ for(type_map_entries::iterator iter = map_entries_.begin(); iter != map_entries_.end(); ++iter)
+ {
+ CppOptionEntry& cpp_entry = iter->second;
+ cpp_entry.release_c_arg();
+ }
+
+ if(has_ownership_)
+ {
+ g_option_group_free(gobj());
+ gobject_ = 0;
+ }
+}
+
+void OptionGroup::add_entry(const OptionEntry& entry)
+{
+ //It does not copy the entry, so it needs to live as long as the group.
+
+ //g_option_group_add_entries takes an array, with the last item in the array having a null long_name.
+ //Hopefully this will be properly documented eventually - see bug #
+
+ //Create a temporary array, just so we can give the correct thing to g_option_group_add_entries:
+ GOptionEntry array[2];
+ array[0] = *(entry.gobj()); //Copy contents.
+ GLIBMM_INITIALIZE_STRUCT(array[1], GOptionEntry);
+
+ g_option_group_add_entries(gobj(), array);
+}
+
+void OptionGroup::add_entry(const OptionEntry& entry, bool& arg)
+{
+ add_entry_with_wrapper(entry, G_OPTION_ARG_NONE /* Actually a boolean on/off, depending on whether the argument name was given, without argument parameters. */, &arg);
+}
+
+void OptionGroup::add_entry(const OptionEntry& entry, int& arg)
+{
+ add_entry_with_wrapper(entry, G_OPTION_ARG_INT, &arg);
+}
+
+void OptionGroup::add_entry(const OptionEntry& entry, Glib::ustring& arg)
+{
+ add_entry_with_wrapper(entry, G_OPTION_ARG_STRING, &arg);
+}
+
+void OptionGroup::add_entry(const OptionEntry& entry, vecustrings& arg)
+{
+ add_entry_with_wrapper(entry, G_OPTION_ARG_STRING_ARRAY, &arg);
+}
+
+void OptionGroup::add_entry_filename(const OptionEntry& entry, std::string& arg)
+{
+ add_entry_with_wrapper(entry, G_OPTION_ARG_FILENAME, &arg);
+}
+
+void OptionGroup::add_entry_filename(const OptionEntry& entry, vecstrings& arg)
+{
+ add_entry_with_wrapper(entry, G_OPTION_ARG_FILENAME_ARRAY, &arg);
+}
+
+void OptionGroup::add_entry_with_wrapper(const OptionEntry& entry, GOptionArg arg_type, void* cpp_arg)
+{
+ const Glib::ustring name = entry.get_long_name();
+ type_map_entries::iterator iterFind = map_entries_.find(name);
+ if( iterFind == map_entries_.end() ) //If we have not added this entry already
+ {
+ CppOptionEntry cppEntry;
+ cppEntry.carg_type_ = arg_type;
+ cppEntry.allocate_c_arg();
+
+ cppEntry.cpparg_ = cpp_arg;
+
+ //Give the information to the C API:
+
+ cppEntry.entry_ = new OptionEntry(entry); //g_option_group_add_entry() does not take its own copy, so we must keep the instance alive. */
+ //cppEntry.entry_ is deleted in release_c_arg(), via the destructor.
+
+ cppEntry.entry_->gobj()->arg = arg_type;
+ cppEntry.entry_->gobj()->arg_data = cppEntry.carg_;
+
+ //Remember the C++/C mapping so that we can use it later:
+ map_entries_[name] = cppEntry;
+
+ add_entry(*(cppEntry.entry_));
+ }
+}
+
+
+bool OptionGroup::on_pre_parse(OptionContext& /* context */, OptionGroup& /* group */)
+{
+
+ return true;
+}
+
+bool OptionGroup::on_post_parse(OptionContext& /* context */, OptionGroup& /* group */)
+{
+ //Call this at the start of overrides.
+
+ //TODO: Maybe put this in the C callback:
+
+ //The C args have now been given values by GOption.
+ //Convert C values to C++ values:
+
+ for(type_map_entries::iterator iter = map_entries_.begin(); iter != map_entries_.end(); ++iter)
+ {
+ CppOptionEntry& cpp_entry = iter->second;
+ cpp_entry.convert_c_to_cpp();
+ }
+
+ return true;
+}
+
+void OptionGroup::on_error(OptionContext& /* context */, OptionGroup& /* group */)
+{
+}
+
+
+OptionGroup::CppOptionEntry::CppOptionEntry()
+: carg_type_(G_OPTION_ARG_NONE), carg_(0), cpparg_(0), entry_(0)
+{}
+
+void OptionGroup::CppOptionEntry::allocate_c_arg()
+{
+ //Create an instance of the appropriate C type.
+ //This will be destroyed in the OptionGroup destructor.
+ switch(carg_type_)
+ {
+ case G_OPTION_ARG_STRING: //The char* will be for UTF8 strins.
+ case G_OPTION_ARG_FILENAME: //The char* will be for strings in the current locale's encoding.
+ {
+ char** typed_arg = new char*;
+ *typed_arg = 0; //The C code will allocate a char* and put it here, for us to g_free() later.
+ carg_ = typed_arg;
+
+ break;
+ }
+ case G_OPTION_ARG_INT:
+ {
+ int* typed_arg = new int;
+ *typed_arg = 0;
+ carg_ = typed_arg;
+
+ break;
+ }
+ case G_OPTION_ARG_STRING_ARRAY:
+ case G_OPTION_ARG_FILENAME_ARRAY:
+ {
+ char*** typed_arg = new char**;
+ *typed_arg = 0;
+ carg_ = typed_arg;
+
+ break;
+ }
+ case G_OPTION_ARG_NONE: /* Actually a boolean. */
+ {
+ gboolean* typed_arg = new gboolean;
+ *typed_arg = 0;
+ carg_ = typed_arg;
+
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+}
+
+void OptionGroup::CppOptionEntry::release_c_arg()
+{
+ //Delete the instances that we created in allocate_c_arg().
+ //Notice that we delete the type that we created, but not the value to which it points.
+ if(carg_)
+ {
+ switch(carg_type_)
+ {
+ case G_OPTION_ARG_STRING:
+ case G_OPTION_ARG_FILENAME:
+ {
+ char** typed_arg = (char**)carg_;
+ g_free(*typed_arg); //Free the char* string at type_arg, which was allocated by the C code.
+ delete typed_arg; //Delete the char** that we allocated in allocate_c_arg;
+
+ break;
+ }
+ case G_OPTION_ARG_INT:
+ {
+ int* typed_arg = (int*)carg_;
+ delete typed_arg;
+
+ break;
+ }
+ case G_OPTION_ARG_STRING_ARRAY:
+ case G_OPTION_ARG_FILENAME_ARRAY:
+ {
+ delete (char**)carg_;
+ break;
+ }
+ case G_OPTION_ARG_NONE: /* Actually a boolean. */
+ {
+ gboolean* typed_arg = (gboolean*)carg_;
+ delete typed_arg;
+
+ break;
+ }
+ default:
+ {
+ /* TODO:
+ G_OPTION_ARG_CALLBACK,
+*/
+ break;
+ }
+ }
+
+ carg_ = 0;
+ }
+
+ if(entry_)
+ delete entry_;
+}
+
+void OptionGroup::CppOptionEntry::convert_c_to_cpp()
+{
+ switch(carg_type_)
+ {
+ case G_OPTION_ARG_STRING:
+ {
+ char** typed_arg = (char**)carg_;
+ Glib::ustring* typed_cpp_arg = (Glib::ustring*)cpparg_;
+ if(typed_arg && typed_cpp_arg)
+ {
+ char* pch = *typed_arg;
+ (*typed_cpp_arg) = Glib::convert_const_gchar_ptr_to_ustring(pch);
+
+ break;
+ }
+ }
+ case G_OPTION_ARG_FILENAME:
+ {
+ char** typed_arg = (char**)carg_;
+ std::string* typed_cpp_arg = (std::string*)cpparg_;
+ if(typed_arg && typed_cpp_arg)
+ {
+ char* pch = *typed_arg;
+ (*typed_cpp_arg) = Glib::convert_const_gchar_ptr_to_stdstring(pch);
+
+ break;
+ }
+ }
+ case G_OPTION_ARG_INT:
+ {
+ *((int*)cpparg_) = *((int*)carg_);
+ break;
+ }
+ case G_OPTION_ARG_STRING_ARRAY:
+ {
+ char*** typed_arg = (char***)carg_;
+ vecustrings* typed_cpp_arg = (vecustrings*)cpparg_;
+ if(typed_arg && typed_cpp_arg)
+ {
+ typed_cpp_arg->clear();
+
+ //The C array seems to be null-terminated.
+ //Glib::StringArrayHandle array_handle(*typed_arg, Glib::OWNERSHIP_NONE);
+
+ //The SUN Forte compiler complains about this:
+ // "optiongroup.cc", line 354: Error: Cannot assign Glib::ArrayHandle<Glib::ustring,
+ // Glib::Container_Helpers::TypeTraits<Glib::ustring>> to std::vector<Glib::ustring> without
+ // "std::vector<Glib::ustring>::operator=(const std::vector<Glib::ustring>&)";.
+ //
+ //(*typed_cpp_arg) = array_handle;
+ //
+ //And the Tru64 compiler does not even like us to instantiate the StringArrayHandle:
+ //
+ // cxx: Error: ../../glib/glibmm/containerhandle_shared.h, line 149: the operand
+ // of a pointer dynamic_cast must be a pointer to a complete class type
+ // return dynamic_cast<CppType>(Glib::wrap_auto(cobj, false /* take_copy */));
+
+ //for(Glib::StringArrayHandle::iterator iter = array_handle.begin(); iter != array_handle.end(); ++iter)
+ //{
+ // typed_cpp_arg->push_back(*iter);
+ //}
+
+ //So we do this:
+
+ char** char_array_next = *typed_arg;
+ while(char_array_next && *char_array_next)
+ {
+ typed_cpp_arg->push_back(*char_array_next);
+ ++char_array_next;
+ }
+ }
+
+ break;
+ }
+ case G_OPTION_ARG_FILENAME_ARRAY:
+ {
+ char*** typed_arg = (char***)carg_;
+ vecustrings* typed_cpp_arg = (vecustrings*)cpparg_;
+ if(typed_arg && typed_cpp_arg)
+ {
+ typed_cpp_arg->clear();
+
+ //See comments above about the SUN Forte and Tru64 compilers.
+
+ char** char_array_next = *typed_arg;
+ while(char_array_next && *char_array_next)
+ {
+ typed_cpp_arg->push_back(*char_array_next);
+ ++char_array_next;
+ }
+ }
+
+ break;
+ }
+ case G_OPTION_ARG_NONE: /* Actually a boolean. */
+ {
+ *((bool*)cpparg_) = *((gboolean*)carg_);
+ break;
+ }
+ default:
+ {
+ /* TODO:
+ G_OPTION_ARG_CALLBACK,
+ */
+ break;
+ }
+ }
+}
+
+GOptionGroup* OptionGroup::gobj_give_ownership()
+{
+ has_ownership_ = false;
+ return gobj();
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/optiongroup.hg b/libs/glibmm2/glib/src/optiongroup.hg
new file mode 100644
index 0000000000..5083d24053
--- /dev/null
+++ b/libs/glibmm2/glib/src/optiongroup.hg
@@ -0,0 +1,119 @@
+/* $Id: optiongroup.hg,v 1.10 2005/01/10 17:42:17 murrayc Exp $ */
+
+/* Copyright (C) 2004 The glibmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+_DEFS(glibmm,glib)
+
+#include <glibmm/ustring.h>
+#include <map>
+#include <vector>
+#include <glib/goption.h> //TODO: Try to hide this.
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _GOptionGroup GOptionGroup; }
+#endif //DOXYGEN_SHOULD_SKIP_THIS
+
+
+namespace Glib
+{
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+class OptionEntry;
+class OptionContext;
+#endif //DOXYGEN_SHOULD_SKIP_THIS
+
+/** An OptionGroup defines the options in a single group.
+ * Libraries which need to parse commandline options are expected to provide a function that allows their OptionGroups to
+ * be added to the application's OptionContext.
+ */
+class OptionGroup
+{
+ _CLASS_GENERIC(OptionGroup, GOptionGroup)
+public:
+ OptionGroup(const Glib::ustring& name, const Glib::ustring& description, const Glib::ustring& help_description = Glib::ustring());
+
+ /** This always takes ownership of the underlying GOptionGroup,
+ * so it is only useful with C functions that return newly-allocated GOptionGroups.
+ */
+ explicit OptionGroup(GOptionGroup* castitem);
+ _IGNORE(g_option_group_new)
+ virtual ~OptionGroup();
+ _IGNORE(g_option_group_free)
+
+
+ virtual bool on_pre_parse(OptionContext& context, OptionGroup& group);
+ virtual bool on_post_parse(OptionContext& context, OptionGroup& group);
+ virtual void on_error(OptionContext& context, OptionGroup& group);
+ _IGNORE(g_option_group_set_parse_hooks, g_option_group_set_error_hook)
+
+ void add_entry(const OptionEntry& entry);
+ _IGNORE(g_option_group_add_entries)
+
+
+ typedef std::vector<Glib::ustring> vecustrings;
+ typedef std::vector<std::string> vecstrings;
+
+ void add_entry(const OptionEntry& entry, bool& arg);
+ void add_entry(const OptionEntry& entry, int& arg);
+ void add_entry(const OptionEntry& entry, Glib::ustring& arg);
+ void add_entry_filename(const OptionEntry& entry, std::string& arg);
+ void add_entry(const OptionEntry& entry, vecustrings& arg);
+ void add_entry_filename(const OptionEntry& entry, vecstrings& arg);
+
+/* TODO:
+void g_option_group_set_translate_func (GOptionGroup *group,
+ GTranslateFunc func,
+ gpointer data,
+ GDestroyNotify destroy_notify);
+*/
+ _WRAP_METHOD(void set_translation_domain(const Glib::ustring& domain), g_option_group_set_translation_domain)
+
+ GOptionGroup* gobj() { return gobject_; }
+ const GOptionGroup* gobj() const { return gobject_; }
+ GOptionGroup* gobj_give_ownership();
+
+protected:
+
+ class CppOptionEntry
+ {
+ public:
+ CppOptionEntry();
+
+ void allocate_c_arg();
+ void convert_c_to_cpp();
+ void release_c_arg();
+
+ GOptionArg carg_type_;
+ void* carg_;
+ void* cpparg_;
+ OptionEntry* entry_;
+ };
+
+ void add_entry_with_wrapper(const OptionEntry& entry, GOptionArg arg_type, void* cpp_arg);
+
+ //Map of entry names to CppOptionEntry:
+ typedef std::map<Glib::ustring, CppOptionEntry> type_map_entries;
+ type_map_entries map_entries_;
+
+ GOptionGroup* gobject_;
+ bool has_ownership_; //Whether the gobject_ belongs to this C++ instance.
+};
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/shell.ccg b/libs/glibmm2/glib/src/shell.ccg
new file mode 100644
index 0000000000..d56563e077
--- /dev/null
+++ b/libs/glibmm2/glib/src/shell.ccg
@@ -0,0 +1,61 @@
+// -*- c++ -*-
+/* $Id: shell.ccg,v 1.1.1.1 2003/01/07 16:58:38 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/utility.h>
+
+
+namespace Glib
+{
+
+/**** shell utility functions **********************************************/
+
+Glib::ArrayHandle<std::string> shell_parse_argv(const std::string& command_line)
+{
+ char** argv = 0;
+ int argc = 0;
+ GError* error = 0;
+
+ g_shell_parse_argv(command_line.c_str(), &argc, &argv, &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+
+ return Glib::ArrayHandle<std::string>(argv, argc, Glib::OWNERSHIP_DEEP);
+}
+
+std::string shell_quote(const std::string& unquoted_string)
+{
+ const ScopedPtr<char> buf (g_shell_quote(unquoted_string.c_str()));
+ return std::string(buf.get());
+}
+
+std::string shell_unquote(const std::string& quoted_string)
+{
+ GError* error = 0;
+ char *const buf = g_shell_unquote(quoted_string.c_str(), &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+
+ return std::string(ScopedPtr<char>(buf).get());
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/shell.hg b/libs/glibmm2/glib/src/shell.hg
new file mode 100644
index 0000000000..7c6edf2a2a
--- /dev/null
+++ b/libs/glibmm2/glib/src/shell.hg
@@ -0,0 +1,96 @@
+/* $Id: shell.hg,v 1.2 2003/01/22 21:38:35 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+_DEFS(glibmm,glib)
+
+#include <glib/gshell.h>
+#include <string>
+
+#include <glibmm/arrayhandle.h>
+#include <glibmm/error.h>
+
+#include <glibmmconfig.h>
+GLIBMM_USING_STD(string)
+
+
+namespace Glib
+{
+
+/** @defgroup ShellUtils Shell-related Utilities
+ * Shell-like command line handling.
+ * @{
+ */
+
+/** Exception class for shell utility errors.
+ */
+_WRAP_GERROR(ShellError, GShellError, G_SHELL_ERROR, NO_GTYPE)
+
+
+/** Parses a command line into an argument vector, in much the same way the
+ * shell would, but without many of the expansions the shell would perform
+ * (variable expansion, globs, operators, filename expansion, etc.\ are not
+ * supported). The results are defined to be the same as those you would
+ * get from a UNIX98 /bin/sh, as long as the input contains none of the
+ * unsupported shell expansions. If the input does contain such expansions,
+ * they are passed through literally.
+ * @param command_line Command line to parse.
+ * @return Array of args (The generic ArrayHandle will be implicitly
+ * converted to any STL compatible container type).
+ * @throw Glib::ShellError
+ */
+Glib::ArrayHandle<std::string> shell_parse_argv(const std::string& command_line);
+
+/** Quotes a string so that the shell (/bin/sh) will interpret the quoted
+ * string to mean @a unquoted_string. If you pass a filename to the shell,
+ * for example, you should first quote it with this function. The quoting
+ * style used is undefined (single or double quotes may be used).
+ * @param unquoted_string A literal string.
+ * @return A quoted string.
+ */
+std::string shell_quote(const std::string& unquoted_string);
+
+/** Unquotes a string as the shell (/bin/sh) would. Only handles quotes; if
+ * a string contains file globs, arithmetic operators, variables, backticks,
+ * redirections, or other special-to-the-shell features, the result will be
+ * different from the result a real shell would produce (the variables,
+ * backticks, etc. will be passed through literally instead of being expanded).
+ * This function is guaranteed to succeed if applied to the result of
+ * shell_quote(). If it fails, it throws a Glib::ShellError exception. The
+ * @a quoted_string need not actually contain quoted or escaped text;
+ * shell_unquote() simply goes through the string and unquotes/unescapes
+ * anything that the shell would. Both single and double quotes are handled,
+ * as are escapes including escaped newlines.
+ *
+ * Shell quoting rules are a bit strange. Single quotes preserve the literal
+ * string exactly. Escape sequences are not allowed; not even <tt>\\'</tt> --
+ * if you want a <tt>'</tt> in the quoted text, you have to do something like
+ * <tt>'foo'\\''bar'</tt>. Double quotes allow <tt>$</tt>, <tt>`</tt>,
+ * <tt>"</tt>, <tt>\\</tt>, and newline to be escaped with backslash.
+ * Otherwise double quotes preserve things literally.
+ *
+ * @param quoted_string Shell-quoted string.
+ * @return An unquoted string.
+ * @throw Glib::ShellError
+ */
+std::string shell_unquote(const std::string& quoted_string);
+
+/** @} group ShellUtils */
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/signalproxy.h.m4 b/libs/glibmm2/glib/src/signalproxy.h.m4
new file mode 100644
index 0000000000..bf3d55baf9
--- /dev/null
+++ b/libs/glibmm2/glib/src/signalproxy.h.m4
@@ -0,0 +1,200 @@
+// -*- c++ -*-
+dnl
+dnl Glib SignalProxy Templates
+dnl
+dnl Copyright 2001 Free Software Foundation
+dnl Copyright 1999 Karl Nelson <kenelson@ece.ucdavis.edu>
+dnl
+dnl This library is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU Library General Public
+dnl License as published by the Free Software Foundation; either
+dnl version 2 of the License, or (at your option) any later version.
+dnl
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl Library General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU Library General Public
+dnl License along with this library; if not, write to the Free
+dnl Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+dnl
+dnl Ignore the next line
+/* This is a generated file, do not edit. Generated from __file__ */
+include(template.macros.m4)
+#ifndef __header__
+#define __header__
+
+extern "C"
+{
+ typedef void (*GCallback) (void);
+ typedef struct _GObject GObject;
+}
+
+#include <sigc++/sigc++.h>
+#include <glibmm/signalproxy_connectionnode.h>
+
+
+namespace Glib
+{
+
+// Forward declarations
+class ObjectBase;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+struct SignalProxyInfo
+{
+ const char* signal_name;
+ GCallback callback;
+ GCallback notify_callback;
+};
+
+#endif //DOXYGEN_SHOULD_SKIP_THIS
+
+// This base class is used by SignalProxyNormal and SignalProxyProperty.
+class SignalProxyBase
+{
+public:
+ SignalProxyBase(Glib::ObjectBase* obj);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ static inline sigc::slot_base* data_to_slot(void* data)
+ {
+ SignalProxyConnectionNode *const pConnectionNode = static_cast<SignalProxyConnectionNode*>(data);
+
+ // Return 0 if the connection is blocked.
+ return (!pConnectionNode->slot_.blocked()) ? &pConnectionNode->slot_ : 0;
+ }
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+protected:
+ ObjectBase* obj_;
+
+private:
+ SignalProxyBase& operator=(const SignalProxyBase&); // not implemented
+};
+
+
+// shared portion of a Signal
+/** The SignalProxy provides an API similar to sigc::signal that can be used to
+ * connect sigc::slots to glib signals.
+ *
+ * This holds the name of the glib signal and the object
+ * which might emit it. Actually, proxies are controlled by
+ * the template derivatives, which serve as gatekeepers for the
+ * types allowed on a particular signal.
+ *
+ */
+class SignalProxyNormal : public SignalProxyBase
+{
+public:
+ ~SignalProxyNormal();
+
+ /// stops the current signal emmision (not in libsigc++)
+ void emission_stop();
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ // This callback for SignalProxy0<void>
+ // is defined here to avoid code duplication.
+ static void slot0_void_callback(GObject*, void* data);
+#endif
+
+protected:
+
+ /** Create a proxy for a signal that can be emitted by @a obj.
+ * @param obj The object that can emit the signal.
+ * @param info Information about the signal, including its name, and the C callbacks that should be called by glib.
+ */
+ SignalProxyNormal(Glib::ObjectBase* obj, const SignalProxyInfo* info);
+
+ /** Connects a signal to a generic signal handler. This is called by connect() in derived SignalProxy classes.
+ *
+ * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::slot_base& connect_(const sigc::slot_base& slot, bool after);
+
+ /** Connects a signal to a signal handler without a return value.
+ * This is called by connect() in derived SignalProxy classes.
+ *
+ * By default, the signal handler will be called before the default signal handler,
+ * in which case any return value would be replaced anyway by that of the later signal handler.
+ *
+ * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::slot_base& connect_notify_(const sigc::slot_base& slot, bool after);
+
+private:
+ const SignalProxyInfo* info_;
+
+ //TODO: We could maybe replace both connect_ and connect_notify_ with this in future, because they don't do anything extra.
+ /** This is called by connect_ and connect_impl_.
+ */
+ sigc::slot_base& connect_impl_(GCallback callback, const sigc::slot_base& slot, bool after);
+
+ // no copy assignment
+ SignalProxyNormal& operator=(const SignalProxyNormal&);
+};
+
+
+dnl
+dnl GLIB_SIGNAL_PROXY([P1, P2, ...],return type)
+dnl
+define([GLIB_SIGNAL_PROXY],[dnl
+LINE(]__line__[)dnl
+
+/**** Glib::[SignalProxy]NUM($1) ***************************************************/
+
+/** Proxy for signals with NUM($1) arguments.
+ * Use the connect() method, with sigc::mem_fun() or sigc::ptr_fun() to connect signals to signal handlers.
+ */
+template <LIST(class R,ARG_CLASS($1))>
+class [SignalProxy]NUM($1) : public SignalProxyNormal
+{
+public:
+ typedef sigc::slot<LIST(R,ARG_TYPE($1))> SlotType;
+ typedef sigc::slot<LIST(void,ARG_TYPE($1))> VoidSlotType;
+
+ [SignalProxy]NUM($1)(ObjectBase* obj, const SignalProxyInfo* info)
+ : SignalProxyNormal(obj, info) {}
+
+ /** Connects a signal to a signal handler.
+ * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) );
+ *
+ * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::connection connect(const SlotType& slot, bool after = true)
+ { return sigc::connection(connect_(slot, after)); }
+
+ /** Connects a signal to a signal handler without a return value.
+ * By default, the signal handler will be called before the default signal handler,
+ * in which case any return value would be replaced anyway by that of the later signal handler.
+ *
+ * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) );
+ *
+ * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+ * @param after Whether this signal handler should be called before or after the default signal handler.
+ */
+ sigc::connection connect_notify(const VoidSlotType& slot, bool after = false)
+ { return sigc::connection(connect_notify_(slot, after)); }
+};
+])dnl
+
+dnl Template forms of SignalProxy
+
+GLIB_SIGNAL_PROXY(ARGS(P,0))
+GLIB_SIGNAL_PROXY(ARGS(P,1))
+GLIB_SIGNAL_PROXY(ARGS(P,2))
+GLIB_SIGNAL_PROXY(ARGS(P,3))
+GLIB_SIGNAL_PROXY(ARGS(P,4))
+GLIB_SIGNAL_PROXY(ARGS(P,5))
+GLIB_SIGNAL_PROXY(ARGS(P,6))
+
+} // namespace Glib
+
+
+#endif /* __header__ */
+
diff --git a/libs/glibmm2/glib/src/spawn.ccg b/libs/glibmm2/glib/src/spawn.ccg
new file mode 100644
index 0000000000..62655ec597
--- /dev/null
+++ b/libs/glibmm2/glib/src/spawn.ccg
@@ -0,0 +1,283 @@
+// -*- c++ -*-
+/* $Id: spawn.ccg,v 1.8 2006/05/12 08:08:44 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glib/gspawn.h>
+#include <glibmm/exceptionhandler.h>
+#include <glibmm/utility.h>
+
+
+namespace
+{
+
+extern "C"
+{
+
+/* Helper callback to invoke the actual sigc++ slot.
+ * We don't need to worry about (un)referencing, since the
+ * child process gets its own copy of the parent's memory anyway.
+ */
+static void child_setup_callback(void* user_data)
+{
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ (*reinterpret_cast<sigc::slot<void>*>(user_data))();
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+}
+
+static void copy_output_buf(std::string* dest, const char* buf)
+{
+ if(dest)
+ {
+ if(buf)
+ *dest = buf;
+ else
+ dest->erase();
+ }
+}
+
+} //extern "C"
+
+} //anonymous namespace
+
+
+namespace Glib
+{
+
+/**** process spawning functions *******************************************/
+
+void spawn_async_with_pipes(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ const Glib::ArrayHandle<std::string>& envp,
+ SpawnFlags flags,
+ const sigc::slot<void>& child_setup,
+ Pid* child_pid,
+ int* standard_input,
+ int* standard_output,
+ int* standard_error)
+{
+ const bool setup_slot = !child_setup.empty();
+ sigc::slot<void> child_setup_ = child_setup;
+ GError* error = 0;
+
+ g_spawn_async_with_pipes(
+ working_directory.c_str(),
+ const_cast<char**>(argv.data()),
+ const_cast<char**>(envp.data()),
+ static_cast<GSpawnFlags>(unsigned(flags)),
+ (setup_slot) ? &child_setup_callback : 0,
+ (setup_slot) ? &child_setup_ : 0,
+ child_pid,
+ standard_input, standard_output, standard_error,
+ &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+void spawn_async_with_pipes(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ SpawnFlags flags,
+ const sigc::slot<void>& child_setup,
+ Pid* child_pid,
+ int* standard_input,
+ int* standard_output,
+ int* standard_error)
+{
+ const bool setup_slot = !child_setup.empty();
+ sigc::slot<void> child_setup_ = child_setup;
+ GError* error = 0;
+
+ g_spawn_async_with_pipes(
+ working_directory.c_str(),
+ const_cast<char**>(argv.data()), 0,
+ static_cast<GSpawnFlags>(unsigned(flags)),
+ (setup_slot) ? &child_setup_callback : 0,
+ (setup_slot) ? &child_setup_ : 0,
+ child_pid,
+ standard_input, standard_output, standard_error,
+ &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+void spawn_async(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ const Glib::ArrayHandle<std::string>& envp,
+ SpawnFlags flags,
+ const sigc::slot<void>& child_setup,
+ Pid* child_pid)
+{
+ const bool setup_slot = !child_setup.empty();
+ sigc::slot<void> child_setup_ = child_setup;
+ GError* error = 0;
+
+ g_spawn_async(
+ working_directory.c_str(),
+ const_cast<char**>(argv.data()),
+ const_cast<char**>(envp.data()),
+ static_cast<GSpawnFlags>(unsigned(flags)),
+ (setup_slot) ? &child_setup_callback : 0,
+ (setup_slot) ? &child_setup_ : 0,
+ child_pid,
+ &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+void spawn_async(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ SpawnFlags flags,
+ const sigc::slot<void>& child_setup,
+ Pid* child_pid)
+{
+ const bool setup_slot = !child_setup.empty();
+ sigc::slot<void> child_setup_ = child_setup;
+ GError* error = 0;
+
+ g_spawn_async(
+ working_directory.c_str(),
+ const_cast<char**>(argv.data()), 0,
+ static_cast<GSpawnFlags>(unsigned(flags)),
+ (setup_slot) ? &child_setup_callback : 0,
+ (setup_slot) ? &child_setup_ : 0,
+ child_pid,
+ &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+void spawn_sync(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ const Glib::ArrayHandle<std::string>& envp,
+ SpawnFlags flags,
+ const sigc::slot<void>& child_setup,
+ std::string* standard_output,
+ std::string* standard_error,
+ int* exit_status)
+{
+ const bool setup_slot = !child_setup.empty();
+ sigc::slot<void> child_setup_ = child_setup;
+
+ Glib::ScopedPtr<char> buf_standard_output;
+ Glib::ScopedPtr<char> buf_standard_error;
+ GError* error = 0;
+
+ g_spawn_sync(
+ working_directory.c_str(),
+ const_cast<char**>(argv.data()),
+ const_cast<char**>(envp.data()),
+ static_cast<GSpawnFlags>(unsigned(flags)),
+ (setup_slot) ? &child_setup_callback : 0,
+ (setup_slot) ? &child_setup_ : 0,
+ (standard_output) ? buf_standard_output.addr() : 0,
+ (standard_error) ? buf_standard_error.addr() : 0,
+ exit_status,
+ &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+
+ copy_output_buf(standard_output, buf_standard_output.get());
+ copy_output_buf(standard_error, buf_standard_error.get());
+}
+
+void spawn_sync(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ SpawnFlags flags,
+ const sigc::slot<void>& child_setup,
+ std::string* standard_output,
+ std::string* standard_error,
+ int* exit_status)
+{
+ const bool setup_slot = !child_setup.empty();
+ sigc::slot<void> child_setup_ = child_setup;
+
+ Glib::ScopedPtr<char> buf_standard_output;
+ Glib::ScopedPtr<char> buf_standard_error;
+ GError* error = 0;
+
+ g_spawn_sync(
+ working_directory.c_str(),
+ const_cast<char**>(argv.data()), 0,
+ static_cast<GSpawnFlags>(unsigned(flags)),
+ (setup_slot) ? &child_setup_callback : 0,
+ (setup_slot) ? &child_setup_ : 0,
+ (standard_output) ? buf_standard_output.addr() : 0,
+ (standard_error) ? buf_standard_error.addr() : 0,
+ exit_status,
+ &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+
+ copy_output_buf(standard_output, buf_standard_output.get());
+ copy_output_buf(standard_error, buf_standard_error.get());
+}
+
+void spawn_command_line_async(const std::string& command_line)
+{
+ GError* error = 0;
+ g_spawn_command_line_async(command_line.c_str(), &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+}
+
+void spawn_command_line_sync(const std::string& command_line,
+ std::string* standard_output,
+ std::string* standard_error,
+ int* exit_status)
+{
+ Glib::ScopedPtr<char> buf_standard_output;
+ Glib::ScopedPtr<char> buf_standard_error;
+ GError* error = 0;
+
+ g_spawn_command_line_sync(
+ command_line.c_str(),
+ (standard_output) ? buf_standard_output.addr() : 0,
+ (standard_error) ? buf_standard_error.addr() : 0,
+ exit_status,
+ &error);
+
+ if(error)
+ Glib::Error::throw_exception(error);
+
+ copy_output_buf(standard_output, buf_standard_output.get());
+ copy_output_buf(standard_error, buf_standard_error.get());
+}
+
+void spawn_close_pid(Pid pid)
+{
+ g_spawn_close_pid(pid);
+}
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/spawn.hg b/libs/glibmm2/glib/src/spawn.hg
new file mode 100644
index 0000000000..89b08d0fe0
--- /dev/null
+++ b/libs/glibmm2/glib/src/spawn.hg
@@ -0,0 +1,109 @@
+/* $Id: spawn.hg,v 1.4 2004/03/02 23:29:57 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+_DEFS(glibmm,glib)
+
+#include <string>
+#include <sigc++/sigc++.h>
+#include <glibmm/arrayhandle.h>
+#include <glibmm/error.h>
+
+#include <glibmmconfig.h>
+GLIBMM_USING_STD(string)
+
+
+namespace Glib
+{
+
+typedef GPid Pid;
+
+_WRAP_ENUM(SpawnFlags, GSpawnFlags, NO_GTYPE)
+
+/** @defgroup Spawn Spawning Processes
+ * Process launching with fork()/exec().
+ * @{
+ */
+
+/** Exception class for errors occuring when spawning processes.
+ */
+_WRAP_GERROR(SpawnError, GSpawnError, G_SPAWN_ERROR, NO_GTYPE, s#^2BIG$#TOOBIG#)
+
+
+void spawn_async_with_pipes(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ const Glib::ArrayHandle<std::string>& envp,
+ SpawnFlags flags = SpawnFlags(0),
+ const sigc::slot<void>& child_setup = sigc::slot<void>(),
+ Pid* child_pid = 0,
+ int* standard_input = 0,
+ int* standard_output = 0,
+ int* standard_error = 0);
+
+void spawn_async_with_pipes(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ SpawnFlags flags = SpawnFlags(0),
+ const sigc::slot<void>& child_setup = sigc::slot<void>(),
+ Pid* child_pid = 0,
+ int* standard_input = 0,
+ int* standard_output = 0,
+ int* standard_error = 0);
+
+void spawn_async(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ const Glib::ArrayHandle<std::string>& envp,
+ SpawnFlags flags = SpawnFlags(0),
+ const sigc::slot<void>& child_setup = sigc::slot<void>(),
+ Pid* child_pid = 0);
+
+void spawn_async(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ SpawnFlags flags = SpawnFlags(0),
+ const sigc::slot<void>& child_setup = sigc::slot<void>(),
+ Pid* child_pid = 0);
+
+void spawn_sync(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ const Glib::ArrayHandle<std::string>& envp,
+ SpawnFlags flags = SpawnFlags(0),
+ const sigc::slot<void>& child_setup = sigc::slot<void>(),
+ std::string* standard_output = 0,
+ std::string* standard_error = 0,
+ int* exit_status = 0);
+
+void spawn_sync(const std::string& working_directory,
+ const Glib::ArrayHandle<std::string>& argv,
+ SpawnFlags flags = SpawnFlags(0),
+ const sigc::slot<void>& child_setup = sigc::slot<void>(),
+ std::string* standard_output = 0,
+ std::string* standard_error = 0,
+ int* exit_status = 0);
+
+void spawn_command_line_async(const std::string& command_line);
+
+void spawn_command_line_sync(const std::string& command_line,
+ std::string* standard_output = 0,
+ std::string* standard_error = 0,
+ int* exit_status = 0);
+
+void spawn_close_pid(Pid pid);
+
+/** @} group Spawn */
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/template.macros.m4 b/libs/glibmm2/glib/src/template.macros.m4
new file mode 100644
index 0000000000..38e7927bfc
--- /dev/null
+++ b/libs/glibmm2/glib/src/template.macros.m4
@@ -0,0 +1,229 @@
+dnl-----------------------------------------------------------------------
+dnl
+dnl Karls M4 macros for the signal system used by gtk--
+dnl
+dnl Copyright (C) 1998-2002 The gtkmm Development Team
+dnl
+dnl Currently maintained by Tero Pulkkinen. <terop@modeemi.cs.tut.fi>
+dnl
+dnl This library is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU Library General Public
+dnl License as published by the Free Software Foundation; either
+dnl version 2 of the License, or (at your option) any later version.
+dnl
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl Library General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU Library General Public
+dnl License along with this library; if not, write to the Free
+dnl Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+dnl
+dnl-----------------------------------------------------------------------
+dnl Recursion prevention. (Don't attempt to understand why this works!)
+changequote(, )dnl
+changequote([, ])dnl
+pushdef([DIVERSION],divnum)dnl
+divert(-1)dnl
+
+ifdef([__template_macros__],[],[
+define(__template_macros__)
+dnl-----------------------------------------------------------------------
+
+
+dnl
+dnl M4 macros for general sanity
+dnl
+
+dnl M4 Quotas are hard to work with, so use braces like autoconf
+dnl (which are matched by vi, emacs)
+changequote(, )
+changequote([, ])
+
+dnl
+dnl M4 comments conflict with compiler directives
+changecom(, )
+
+dnl BRACE(text) => [text]
+dnl When we want something to appear with braces
+define([BRACE],[[[$*]]])
+
+dnl
+dnl PROT(macro)
+dnl If a macro generates an output with commas we need to protect it
+dnl from being broken down and interpreted
+define([PROT],[[$*]])
+
+dnl
+dnl LOWER(string)
+dnl lowercase a string
+define([LOWER],[translit([$*],[ABCDEFGHIJKLMNOPQRSTUVWXYZ],[abcdefghijklmnopqrstuvwxyz])])
+
+dnl
+dnl UPPER(string)
+dnl uppercase a string
+define([UPPER],[translit([$*],[abcdefghijklmnopqrstuvwxyz],[ABCDEFGHIJKLMNOPQRSTUVWXYZ])])
+define([UPPER_SAFE],[translit([$*],[abcdefghijklmnopqrstuvwxyz.-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ__])])
+
+dnl
+dnl BASENAME(string)
+dnl extract the basename of a string
+define([BASENAME],[patsubst([$*],[^.*/],[])])
+
+dnl
+dnl M4NAME(string)
+dnl extract the basename of a string
+define([M4NAME],[patsubst(BASENAME([$*]),[\.m4$],[])])
+
+dnl NUM(arg,arg,...)
+dnl M4 defines $# very badly (empty list=1). So we need a better one
+define([NUM],[ifelse(len([$*]),0,0,[$#])])
+
+dnl
+dnl IF(cond,string1,string2)
+dnl places string1 if length (without spaces) of cond is zero,
+dnl else string2
+define([IF],[ifelse(len(PROT(translit([$1],[ ]))),0,[$3],[$2])])
+dnl define([IF],[ifelse(len(PROT(patsubst([$1],[ ]))),0,[$3],[$2])])
+
+dnl
+dnl minclude(filename)
+dnl This includes only the macros from a file but throws away the output.
+dnl Used to take the macros from a file without getting it extra output.
+define([minclude],[IF([$1],[dnl
+pushdef([CURRENT_DIVERSION],divnum)dnl
+divert(-1)
+include($1)
+divert(CURRENT_DIVERSION)dnl
+popdef([CURRENT_DIVERSION])dnl],[[minclude]])])
+
+dnl
+dnl makes the current filename into a string approprate for use as
+dnl C identified define. (Defaults to this library name)
+dnl
+dnl example: (filename test.hh.m4)
+dnl __header__ => SIGCXX_TEST_H
+dnl __header__(MYHEAD) => MYHEAD_TEST_H
+dnl define([__header__],[ifelse($1,,[SIGCXX],UPPER($1))[_]UPPER(patsubst(translit(BASENAME(__file__),[.-],[__]),[_m4],[]))])
+define([__header__],[ifelse($1,,[_GLIBMM],UPPER($1))[_]UPPER_SAFE(M4NAME(__file__))])
+
+dnl
+dnl Set of M4 macros for variable argument template building
+dnl
+
+dnl ARGS(name,number)
+dnl Builds a comma seperated protected list of numbered names
+dnl Use this as short hand to specify arguement names
+dnl
+dnl ARGS(arg,3) => ARG1,ARG2,ARG3
+define([_ARGS],[ifelse(eval($2<$3),0,[$1$2],[$1$2,_ARGS($1,eval($2+1),$3)])])
+define([ARGS],[ifelse(eval($2>0),1,[PROT(_ARGS(UPPER([$1]),1,$2))],[PROT])])
+
+dnl
+dnl LIST(string1,string2,...)
+dnl These are intended for making extended argument lists
+dnl parameters are in pairs, the first is output if the
+dnl 2nd is nonzero length, the process is then repeated
+dnl with the next set of arguments.
+dnl
+dnl Macro expansions that expand to result in commas must call
+dnl PROT to prevent permature expansion. ARG* macros do
+dnl this automatically. (If unsure, add braces until it stops
+dnl interpreting inter macros, remove one set of braces, if
+dnl still not right use PROT)
+dnl
+dnl (LIST is probably the most useful macro in the set.)
+define([LIST],[ifelse($#,0,,$#,1,[$1],[$1],,[LIST(shift($@))],[__LIST($@)])])
+define([__LIST],[ifelse($#,0,,$#,1,[$1],[$1[]ifelse([$2],,,[[,]])__LIST(shift($@))])])
+
+dnl
+dnl ARG_LOOP(macro_name,seperator,argument_list)
+dnl Very powerful macro for construction of list of variables
+dnl formated in specify ways. To use define a macro taking
+dnl one variable which is called the format. The second argument
+dnl is a seperator which will appear between each argument.
+dnl The rest is then interpreted as arguments to form the list.
+dnl
+dnl Example:
+dnl define([FOO],[foo([$1])])
+dnl ARG_LOOP([FOO],[[, ]],A,B,C)
+dnl
+dnl Gives: foo(A), foo(B), foo(C)
+dnl
+define([_ARG_LOOP],[dnl
+ifelse(NUM($*),0,,NUM($*),1,[dnl
+indir(LOOP_FORMAT,[$1])],[dnl
+indir(LOOP_FORMAT,[$1])[]LOOP_SEPERATOR[]_ARG_LOOP(shift($*))])])
+
+define([ARG_LOOP],[dnl
+pushdef([LOOP_FORMAT],[[$1]])dnl
+pushdef([LOOP_SEPERATOR],[$2])dnl
+_ARG_LOOP(shift(shift($*)))[]dnl
+popdef([LOOP_FORMAT])dnl
+popdef([LOOP_SEPERATOR])dnl
+])
+
+
+dnl
+dnl Define some useful formats for use with ARG_LOOP.
+define([FORMAT_ARG_CLASS],[class [$1]])
+define([FORMAT_ARG_BOTH],[[$1] LOWER([$1])])
+define([FORMAT_ARG_REF],[Type<[$1]>::ref LOWER([$1])])
+define([FORMAT_ARG_TYPE],[[$1]])
+define([FORMAT_ARG_NAME],[LOWER($1)])
+define([FORMAT_ARG_CBNAME],[LOWER($1)_])
+define([FORMAT_ARG_CBDECL],[[$1] LOWER([$1])_;])
+define([FORMAT_ARG_CBINIT],[LOWER([$1])_(LOWER([$1]))])
+
+
+dnl
+dnl The following functions generate various types of parameter lists
+dnl For parameter lists
+dnl ARG_CLASS([P1,P2]) -> class P1,class P2
+dnl ARG_BOTH([P1,P2]) -> P1 p1,P2 p2
+dnl ARG_TYPE([P1,P2]) -> P1,P2
+dnl ARG_NAME([P1,P2]) -> p1,p2
+dnl For callback lists
+dnl ARG_CBNAME([C1,C2]) -> c1_,c2_
+dnl ARG_CBINIT([C1,C2]) -> c1_(c1),c2_(c2)
+dnl ARG_CBDECL([C1,C2]) -> C1 c1_; C2 c2_;
+dnl
+define([ARG_CLASS],[PROT(ARG_LOOP([FORMAT_ARG_CLASS],[[,]],$*))])
+define([ARG_BOTH],[PROT(ARG_LOOP([FORMAT_ARG_BOTH],[[,]],$*))])
+define([ARG_REF],[PROT(ARG_LOOP([FORMAT_ARG_REF],[[,]],$*))])
+define([ARG_TYPE],[PROT([$*])])
+define([ARG_NAME],[PROT(LOWER($*))])
+define([ARG_CBNAME],[PROT(ARG_LOOP([FORMAT_ARG_CBNAME],[[,]],$*))])
+define([ARG_CBDECL],[PROT(ARG_LOOP([FORMAT_ARG_CBDECL],[ ],$*))])
+define([ARG_CBINIT],[PROT(ARG_LOOP([FORMAT_ARG_CBINIT],[[,]],$*))])
+
+
+dnl
+dnl T_DROP(string)
+dnl Removes unnecessary <> with empty templates
+dnl (occasionally useful)
+define([T_DROP],[ifelse([$1],<>,,[$*])])
+
+dnl
+dnl DROP(string,drop)
+dnl Removes unnecessary strings if they match drop
+dnl (occasionally useful)
+define([DROP],[ifelse([$1],[$2],,[$*])])
+
+dnl
+dnl LINE(linenum)
+dnl places a #line statement if __debug__ set
+dnl Use this at top of macro template and following
+dnl macros that contain newlines.
+dnl
+dnl example:
+dnl LINE(]__line__[)dnl
+define([LINE],[ifdef([__debug__],[#line $1 "]__file__["
+])])
+
+dnl-----------------------------------------------------------------------
+dnl End of recursion protection. Do not put anything below this line.
+])
+divert(DIVERSION)dnl
+popdef([DIVERSION])dnl
diff --git a/libs/glibmm2/glib/src/thread.ccg b/libs/glibmm2/glib/src/thread.ccg
new file mode 100644
index 0000000000..bfdefbf425
--- /dev/null
+++ b/libs/glibmm2/glib/src/thread.ccg
@@ -0,0 +1,371 @@
+// -*- c++ -*-
+/* $Id: thread.ccg,v 1.9 2006/05/12 08:08:44 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/exceptionhandler.h>
+#include <glib/gmessages.h>
+
+
+namespace
+{
+
+extern "C"
+{
+
+static void* call_thread_entry_slot(void* data)
+{
+ sigc::slot_base *const slot = reinterpret_cast<sigc::slot_base*>(data);
+
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ // Recreate the specific slot, and drop the reference obtained by create().
+ (*static_cast<sigc::slot<void>*>(slot))();
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(Glib::Thread::Exit&)
+ {
+ // Just exit from the thread. The Thread::Exit exception
+ // is our sane C++ replacement of g_thread_exit().
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ delete slot;
+ return 0;
+}
+
+} //extern "C"
+
+} // anonymous namespace
+
+
+namespace Glib
+{
+
+// internal
+void thread_init_impl()
+{
+ // Make sure the exception map is initialized before creating any thread.
+ Glib::Error::register_init();
+}
+
+
+/**** Glib::Thread *********************************************************/
+
+// static
+Thread* Thread::create(const sigc::slot<void>& slot, bool joinable)
+{
+ // Make a copy of slot on the heap
+ sigc::slot_base *const slot_copy = new sigc::slot<void>(slot);
+
+ GError* error = 0;
+
+ GThread *const thread = g_thread_create(
+ &call_thread_entry_slot, slot_copy, joinable, &error);
+
+ if(error)
+ {
+ delete slot_copy;
+ Glib::Error::throw_exception(error);
+ }
+
+ return reinterpret_cast<Thread*>(thread);
+}
+
+// static
+Thread* Thread::create(const sigc::slot<void>& slot, unsigned long stack_size,
+ bool joinable, bool bound, ThreadPriority priority)
+{
+ // Make a copy of slot on the heap
+ sigc::slot_base *const slot_copy = new sigc::slot<void>(slot);
+
+ GError* error = 0;
+
+ GThread *const thread = g_thread_create_full(
+ &call_thread_entry_slot, slot_copy, stack_size, joinable,
+ bound, (GThreadPriority) priority, &error);
+
+ if(error)
+ {
+ delete slot_copy;
+ Glib::Error::throw_exception(error);
+ }
+
+ return reinterpret_cast<Thread*>(thread);
+}
+
+// static
+Thread* Thread::self()
+{
+ return reinterpret_cast<Thread*>(g_thread_self());
+}
+
+bool Thread::joinable() const
+{
+ return gobject_.joinable;
+}
+
+void Thread::join()
+{
+ g_thread_join(&gobject_);
+}
+
+void Thread::set_priority(ThreadPriority priority)
+{
+ g_thread_set_priority(&gobject_, (GThreadPriority) priority);
+}
+
+ThreadPriority Thread::get_priority() const
+{
+ return (ThreadPriority) gobject_.priority;
+}
+
+// static
+void Thread::yield()
+{
+ g_thread_yield();
+}
+
+Thread* wrap(GThread* gobject)
+{
+ return reinterpret_cast<Thread*>(gobject);
+}
+
+
+/**** Glib::StaticMutex ****************************************************/
+
+void StaticMutex::lock()
+{
+ g_static_mutex_lock(&gobject_);
+}
+
+bool StaticMutex::trylock()
+{
+ return g_static_mutex_trylock(&gobject_);
+}
+
+void StaticMutex::unlock()
+{
+ g_static_mutex_unlock(&gobject_);
+}
+
+StaticMutex::operator Mutex&()
+{
+ // If GStaticMutex is implemented as struct (e.g. on Linux), its first struct
+ // member (runtime_mutex) is a GMutex pointer. If the gthread implementation
+ // is native (i.e. the vtable pointer passed to g_thread_init() was 0), then
+ // the runtime_mutex pointer is unused, and the rest of the GStaticMutex
+ // struct resembles the mutex data.
+ //
+ // On Win32, GStaticMutex is just a typedef to struct _GMutex*. Either way,
+ // the first sizeof(GMutex*) bytes of GStaticMutex always resemble a GMutex
+ // pointer. The gthread implementation relies on that, and we'll also do so.
+
+ GMutex*& runtime_mutex = reinterpret_cast<GMutex*&>(gobject_);
+
+ // Fortunately, it cannot hurt if we set this to the GMutex pointer returned
+ // by g_static_mutex_get_mutex(). Either we just overwrite it with the same
+ // value, or it was unused anyway. Doing that allows casting the pointer
+ // location to a Glib::Mutex reference (its only data member is a GMutex*).
+
+ runtime_mutex = g_static_mutex_get_mutex(&gobject_);
+
+ return reinterpret_cast<Mutex&>(runtime_mutex);
+}
+
+
+/**** Glib::Mutex **********************************************************/
+
+Mutex::Mutex()
+:
+ gobject_ (g_mutex_new())
+{}
+
+Mutex::~Mutex()
+{
+ g_mutex_free(gobject_);
+}
+
+void Mutex::lock()
+{
+ g_mutex_lock(gobject_);
+}
+
+bool Mutex::trylock()
+{
+ return g_mutex_trylock(gobject_);
+}
+
+void Mutex::unlock()
+{
+ g_mutex_unlock(gobject_);
+}
+
+
+/**** Glib::StaticRecMutex *************************************************/
+
+void StaticRecMutex::lock()
+{
+ g_static_rec_mutex_lock(&gobject_);
+}
+
+bool StaticRecMutex::trylock()
+{
+ return g_static_rec_mutex_trylock(&gobject_);
+}
+
+void StaticRecMutex::unlock()
+{
+ g_static_rec_mutex_unlock(&gobject_);
+}
+
+void StaticRecMutex::lock_full(unsigned int depth)
+{
+ g_static_rec_mutex_lock_full(&gobject_, depth);
+}
+
+unsigned int StaticRecMutex::unlock_full()
+{
+ return g_static_rec_mutex_unlock_full(&gobject_);
+}
+
+StaticRecMutex::operator RecMutex&()
+{
+ return static_cast<RecMutex&>(*this);
+}
+
+
+/**** Glib::RecMutex *******************************************************/
+
+RecMutex::RecMutex()
+{
+ g_static_rec_mutex_init(&gobject_);
+
+ // GLib doesn't have GRecMutex, only GStaticRecMutex. Force initialization
+ // of the mutex now, to mimic the behaviour of a (hypothetical) GRecMutex.
+ g_static_mutex_get_mutex(&gobject_.mutex);
+}
+
+RecMutex::~RecMutex()
+{
+ g_static_rec_mutex_free(&gobject_);
+}
+
+
+/**** Glib::StaticRWLock ***************************************************/
+
+void StaticRWLock::reader_lock()
+{
+ g_static_rw_lock_reader_lock(&gobject_);
+}
+
+bool StaticRWLock::reader_trylock()
+{
+ return g_static_rw_lock_reader_trylock(&gobject_);
+}
+
+void StaticRWLock::reader_unlock()
+{
+ g_static_rw_lock_reader_unlock(&gobject_);
+}
+
+void StaticRWLock::writer_lock()
+{
+ g_static_rw_lock_writer_lock(&gobject_);
+}
+
+bool StaticRWLock::writer_trylock()
+{
+ return g_static_rw_lock_writer_trylock(&gobject_);
+}
+
+void StaticRWLock::writer_unlock()
+{
+ g_static_rw_lock_writer_unlock(&gobject_);
+}
+
+StaticRWLock::operator RWLock&()
+{
+ return static_cast<RWLock&>(*this);
+}
+
+
+/**** Glib::RWLock *********************************************************/
+
+RWLock::RWLock()
+{
+ g_static_rw_lock_init(&gobject_);
+
+ // GLib doesn't have GRWLock, only GStaticRWLock. Force initialization
+ // of the mutex and the condition variables now, to mimic the behaviour
+ // of a (hypothetical) GRWLock.
+
+ if(g_static_mutex_get_mutex(&gobject_.mutex))
+ {
+ gobject_.read_cond = g_cond_new();
+ gobject_.write_cond = g_cond_new();
+ }
+}
+
+RWLock::~RWLock()
+{
+ g_static_rw_lock_free(&gobject_);
+}
+
+
+/**** Glib::Cond ***********************************************************/
+
+Cond::Cond()
+:
+ gobject_ (g_cond_new())
+{}
+
+Cond::~Cond()
+{
+ g_cond_free(gobject_);
+}
+
+void Cond::signal()
+{
+ g_cond_signal(gobject_);
+}
+
+void Cond::broadcast()
+{
+ g_cond_broadcast(gobject_);
+}
+
+void Cond::wait(Mutex& mutex)
+{
+ g_cond_wait(gobject_, mutex.gobj());
+}
+
+bool Cond::timed_wait(Mutex& mutex, const Glib::TimeVal& abs_time)
+{
+ return g_cond_timed_wait(gobject_, mutex.gobj(), const_cast<Glib::TimeVal*>(&abs_time));
+}
+
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/thread.hg b/libs/glibmm2/glib/src/thread.hg
new file mode 100644
index 0000000000..4289bdf8f8
--- /dev/null
+++ b/libs/glibmm2/glib/src/thread.hg
@@ -0,0 +1,1047 @@
+/* $Id: thread.hg,v 1.13 2005/01/21 12:48:05 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+_DEFS(glibmm,glib)
+
+#include <glib/gthread.h>
+#include <cstddef>
+
+#include <sigc++/sigc++.h>
+#include <glibmm/error.h>
+#include <glibmm/timeval.h>
+
+/* Shadow THREAD_PRIORITY_NORMAL macro (from winbase.h).
+ */
+#if defined(THREAD_PRIORITY_NORMAL) && !defined(GLIBMM_MACRO_SHADOW_THREAD_PRIORITY_NORMAL)
+enum { GLIBMM_MACRO_DEFINITION_THREAD_PRIORITY_NORMAL = THREAD_PRIORITY_NORMAL };
+#undef THREAD_PRIORITY_NORMAL
+enum { THREAD_PRIORITY_NORMAL = GLIBMM_MACRO_DEFINITION_THREAD_PRIORITY_NORMAL };
+#define THREAD_PRIORITY_NORMAL THREAD_PRIORITY_NORMAL
+#define GLIBMM_MACRO_SHADOW_THREAD_PRIORITY_NORMAL 1
+#endif
+
+
+/** Initializer macro for Glib::StaticMutex.
+ * @relates Glib::StaticMutex
+ * @hideinitializer
+ */
+#define GLIBMM_STATIC_MUTEX_INIT { G_STATIC_MUTEX_INIT }
+
+/** Initializer macro for Glib::StaticRecMutex.
+ * @relates Glib::StaticRecMutex
+ * @hideinitializer
+ */
+#define GLIBMM_STATIC_REC_MUTEX_INIT { G_STATIC_REC_MUTEX_INIT }
+
+/** Initializer macro for Glib::StaticRWLock.
+ * @relates Glib::StaticRWLock
+ * @hideinitializer
+ */
+#define GLIBMM_STATIC_RW_LOCK_INIT { G_STATIC_RW_LOCK_INIT }
+
+/** Initializer macro for Glib::StaticPrivate.
+ * @relates Glib::StaticPrivate
+ * @hideinitializer
+ */
+#define GLIBMM_STATIC_PRIVATE_INIT { G_STATIC_PRIVATE_INIT }
+
+
+namespace Glib
+{
+
+/** Specifies the priority of a thread.
+ * @note It is not guaranteed, that threads with different priorities really
+ * behave accordingly. On some systems (e.g. Linux) only <tt>root</tt> can
+ * increase priorities. On other systems (e.g. Solaris) there doesn't seem to
+ * be different scheduling for different priorities. All in all try to avoid
+ * being dependent on priorities.
+ */
+_WRAP_ENUM(ThreadPriority, GThreadPriority, NO_GTYPE)
+
+/*! @var ThreadPriority THREAD_PRIORITY_LOW
+ * A priority lower than normal.
+ */
+/*! @var ThreadPriority THREAD_PRIORITY_NORMAL
+ * The default priority.
+ */
+/*! @var ThreadPriority THREAD_PRIORITY_HIGH
+ * A priority higher than normal.
+ */
+/*! @var ThreadPriority THREAD_PRIORITY_URGENT
+ * The highest priority.
+ */
+
+
+/** @defgroup Threads Threads
+ * Thread abstraction; including threads, different mutexes,
+ * conditions and thread private data.
+ * @{
+ */
+
+enum NotLock { NOT_LOCK };
+enum TryLock { TRY_LOCK };
+
+/** Initializes the GLib thread system.
+ * Before you use a thread related function in glibmm, you should initialize
+ * the thread system. This is done by calling Glib::thread_init().
+ *
+ * @note You should only call thread_init() with a non-<tt>0</tt> parameter
+ * if you really know what you are doing.
+ *
+ * @note thread_init() must not be called directly or indirectly as
+ * a callback from glibmm. Also no mutexes may be currently locked while
+ * calling thread_init().
+ *
+ * thread_init() might only be called once. On the second call it will
+ * abort with an error. If you want to make sure that the thread system
+ * is initialized, you can do that too:
+ * @code
+ * if(!Glib::thread_supported()) Glib::thread_init();
+ * @endcode
+ * After that line either the thread system is initialized, or the program
+ * will abort if no thread system is available in GLib, i.e. either
+ * @c G_THREADS_ENABLED is not defined or @c G_THREADS_IMPL_NONE is defined.
+ *
+ * If no thread system is available and @a vtable is <tt>0</tt> or if not all
+ * elements of @a vtable are non-<tt>0</tt>, then thread_init() will abort.
+ *
+ * @note To use thread_init() in your program, you have to link with the
+ * libraries that the command <tt>pkg-config&nbsp;--libs&nbsp;gthread-2.0</tt>
+ * outputs. This is not the case for all the other thread related functions
+ * of glibmm. Those can be used without having to link with the thread
+ * libraries. (You @em have to link with <tt>gthread-2.0</tt> if you actually
+ * want to use threads in your application, though.)
+ *
+ * @param vtable A function table of type @c GThreadFunctions, that provides
+ * the entry points to the thread system to be used.
+ */
+inline void thread_init(GThreadFunctions* vtable = 0);
+
+/** Returns whether the thread system is initialized.
+ * @return @c true, if the thread system is initialized.
+ */
+inline bool thread_supported();
+
+
+class Mutex;
+class RecMutex;
+class RWLock;
+struct StaticMutex;
+struct StaticRecMutex;
+struct StaticRWLock;
+
+
+/** Exception class for thread-related errors.
+ */
+_WRAP_GERROR(ThreadError, GThreadError, G_THREAD_ERROR, NO_GTYPE)
+
+
+/** Represents a running thread.
+ * An instance of this class can only be obtained with create(), self(),
+ * or wrap(GThread*). It's not possible to delete a Thread object. If the
+ * thread is @em not joinable, its resources will be freed automatically
+ * when it exits. Otherwise, if the thread @em is joinable, you must call
+ * join() to avoid a memory leak.
+ *
+ * @note g_thread_exit() is not wrapped, because that function exits a thread
+ * without any cleanup. That's especially dangerous in C++ code, since the
+ * destructors of automatic objects won't be invoked. Instead, you can throw
+ * a Thread::Exit exception, which will be caught by the internal thread
+ * entry function.
+ *
+ * @note You might have noticed that the thread entry slot doesn't have the
+ * usual void* return value. If you want to return any data from your thread
+ * you can pass an additional output argument to the thread's entry slot.
+ */
+class Thread
+{
+public:
+ class Exit;
+
+ /** Creates a new thread with the priority <tt>THREAD_PRIORITY_NORMAL</tt>.
+ * If @a joinable is @c true, you can wait for this thread's termination by
+ * calling join(). Otherwise the thread will just disappear, when ready.
+ *
+ * The new thread executes the function or method @a slot points to. You can
+ * pass additional arguments using sigc::bind(). If the thread was created
+ * successfully, it is returned, otherwise a ThreadError exception is thrown.
+ *
+ * @param slot A slot to execute in the new thread.
+ * @param joinable Should this thread be joinable?
+ * @return The new Thread* on success.
+ * @throw Glib::ThreadError
+ */
+ static Thread* create(const sigc::slot<void>& slot, bool joinable);
+
+ /** Creates a new thread with the priority @a priority. The stack gets the
+ * size @a stack_size or the default value for the current platform, if
+ * @a stack_size is <tt>0</tt>.
+ *
+ * If @a joinable is @c true, you can wait for this thread's termination by
+ * calling join(). Otherwise the thread will just disappear, when ready.
+ * If @a bound is @c true, this thread will be scheduled in the system scope,
+ * otherwise the implementation is free to do scheduling in the process
+ * scope. The first variant is more expensive resource-wise, but generally
+ * faster. On some systems (e.g. Linux) all threads are bound.
+ *
+ * The new thread executes the function or method @a slot points to. You can
+ * pass additional arguments using sigc::bind(). If the thread was created
+ * successfully, it is returned.
+ *
+ * @note It is not guaranteed, that threads with different priorities really
+ * behave accordingly. On some systems (e.g. Linux) only root can increase
+ * priorities. On other systems (e.g. Solaris) there doesn't seem to be
+ * different scheduling for different priorities. All in all try to avoid
+ * being dependent on priorities. Use <tt>Glib::THREAD_PRIORITY_NORMAL</tt>
+ * here as a default.
+ *
+ * @note Only use the extended
+ * create(const sigc::slot<void>&, unsigned long, bool, bool, ThreadPriority)
+ * function, when you really can't use the simple
+ * create(const sigc::slot<void>&, bool)
+ * instead. The latter overload does not take @a stack_size, @a bound and
+ * @a priority as arguments, as they should only be used for cases, where
+ * it is inevitable.
+ *
+ * @param slot A slot to execute in the new thread.
+ * @param stack_size A stack size for the new thread, or <tt>0</tt>.
+ * @param joinable Should this thread be joinable?
+ * @param bound Should this thread be bound to a system thread?
+ * @param priority A priority for the thread.
+ * @return The new Thread* on success.
+ * @throw Glib::ThreadError
+ */
+ static Thread* create(const sigc::slot<void>& slot, unsigned long stack_size,
+ bool joinable, bool bound, ThreadPriority priority);
+
+ /** Returns the Thread* corresponding to the calling thread.
+ * @return The current thread.
+ */
+ static Thread* self();
+
+ /** Returns whether the thread is joinable.
+ * @return Whether the thread is joinable.
+ */
+ bool joinable() const;
+
+ /** Waits until the thread finishes.
+ * Waits until the thread finishes, i.e. the slot, as given to create(),
+ * returns or g_thread_exit() is called by the thread. (Calling
+ * g_thread_exit() in a C++ program should be avoided.) All resources of
+ * the thread including the Glib::Thread object are released. The thread
+ * must have been created with <tt>joinable&nbsp;=&nbsp;true</tt>.
+ */
+ void join();
+
+ /** Changes the priority of the thread to @a priority.
+ * @note It is not guaranteed, that threads with different priorities really
+ * behave accordingly. On some systems (e.g. Linux) only @c root can
+ * increase priorities. On other systems (e.g. Solaris) there doesn't seem
+ * to be different scheduling for different priorities. All in all try to
+ * avoid being dependent on priorities.
+ * @param priority A new priority for the thread.
+ */
+ void set_priority(ThreadPriority priority);
+
+ /** Returns the priority of the thread.
+ * @return The thread's priority.
+ */
+ ThreadPriority get_priority() const;
+
+ /** Gives way to other threads waiting to be scheduled.
+ * This function is often used as a method to make busy wait less evil. But
+ * in most cases, you will encounter, there are better methods to do that.
+ * So in general you shouldn't use this function.
+ */
+ static void yield();
+
+ GThread* gobj() { return &gobject_; }
+ const GThread* gobj() const { return &gobject_; }
+
+private:
+ GThread gobject_;
+
+ // Glib::Thread can neither be constructed nor deleted.
+ Thread();
+ void operator delete(void*, size_t);
+
+ // noncopyable
+ Thread(const Thread&);
+ Thread& operator=(const Thread&);
+};
+
+/** %Exception class used to exit from a thread.
+ * @code
+ * throw Glib::Thread::Exit();
+ * @endcode
+ * Write this if you want to exit from a thread created by Thread::create().
+ * Of course you must make sure not to catch Thread::Exit by accident, i.e.
+ * when using <tt>catch(...)</tt> somewhere in your code.
+ */
+class Thread::Exit
+{};
+
+/** @relates Glib::Thread */
+Thread* wrap(GThread* gobject);
+
+
+/** Like Glib::Mutex, but can be defined at compile time.
+ * Use @c GLIBMM_STATIC_MUTEX_INIT to initialize a StaticMutex:
+ * @code
+ * Glib::StaticMutex mutex = GLIBMM_STATIC_MUTEX_INIT;
+ * @endcode
+ * A StaticMutex can be used without calling Glib::thread_init(), it will
+ * silently do nothing then. That will also work when using the implicit
+ * conversion to Mutex&, thus you can safely use Mutex::Lock with a
+ * StaticMutex.
+ */
+struct StaticMutex
+{
+ void lock();
+ bool trylock();
+ void unlock();
+
+ operator Mutex&();
+
+ GStaticMutex* gobj() { return &gobject_; }
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ // Must be public to allow initialization at compile time.
+ GStaticMutex gobject_;
+#endif
+};
+
+/** Represents a mutex (mutual exclusion).
+ * It can be used to protect data against shared access. Try to use
+ * Mutex::Lock instead of calling lock() and unlock() directly&nbsp;--
+ * it will make your life much easier.
+ *
+ * @note Before creating a Glib::Mutex, Glib::thread_init() has to be called.
+ *
+ * @note Glib::Mutex is not recursive, i.e. a thread will deadlock, if it
+ * already has locked the mutex while calling lock(). Use Glib::RecMutex
+ * instead, if you need recursive mutexes.
+ */
+class Mutex
+{
+public:
+ class Lock;
+
+ Mutex();
+ ~Mutex();
+
+ /** Locks the mutex.
+ * If mutex is already locked by another thread, the current thread will
+ * block until mutex is unlocked by the other thread.
+ * @see Mutex::Lock
+ */
+ void lock();
+
+ /** Tries to lock the mutex.
+ * If the mutex is already locked by another thread, it immediately returns
+ * @c false. Otherwise it locks the mutex and returns @c true.
+ * @return Whether the mutex could be locked.
+ * @see Mutex::Lock
+ */
+ bool trylock();
+
+ /** Unlocks the mutex.
+ * If another thread is blocked in a lock() call for this mutex, it will be
+ * woken and can lock the mutex itself.
+ * @see Mutex::Lock
+ */
+ void unlock();
+
+ GMutex* gobj() { return gobject_; }
+
+private:
+ GMutex* gobject_;
+
+ // noncopyable
+ Mutex(const Mutex&);
+ Mutex& operator=(const Mutex&);
+};
+
+/** Utility class for exception-safe mutex locking.
+ * @par Usage example:
+ * @code
+ * {
+ * Glib::Mutex::Lock lock (mutex); // calls mutex.lock()
+ * do_something();
+ * } // the destructor calls mutex.unlock()
+ * @endcode
+ * As you can see, the compiler takes care of the unlocking. This is not
+ * only exception safe but also much less error-prone. You could even
+ * <tt>return</tt> while still holding the lock and it will be released
+ * properly.
+ */
+class Mutex::Lock
+{
+public:
+ explicit inline Lock(Mutex& mutex);
+ inline Lock(Mutex& mutex, NotLock);
+ inline Lock(Mutex& mutex, TryLock);
+ inline ~Lock();
+
+ inline void acquire();
+ inline bool try_acquire();
+ inline void release();
+ inline bool locked() const;
+
+private:
+ Mutex& mutex_;
+ bool locked_;
+
+ // noncopyable
+ Lock(const Mutex::Lock&);
+ Mutex::Lock& operator=(const Mutex::Lock&);
+};
+
+
+/** Like Glib::RecMutex, but can be defined at compile time.
+ * Use @c GLIBMM_STATIC_REC_MUTEX_INIT to initialize a StaticRecMutex:
+ * @code
+ * Glib::StaticRecMutex mutex = GLIBMM_STATIC_REC_MUTEX_INIT;
+ * @endcode
+ * A StaticRecMutex can be used without calling Glib::thread_init(), it will
+ * silently do nothing then. That will also work when using the implicit
+ * conversion to RecMutex&, thus you can safely use RecMutex::Lock with a
+ * StaticRecMutex.
+ */
+struct StaticRecMutex
+{
+ void lock();
+ bool trylock();
+ void unlock();
+
+ void lock_full(unsigned int depth);
+ unsigned int unlock_full();
+
+ operator RecMutex&();
+
+ GStaticRecMutex* gobj() { return &gobject_; }
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ // Must be public to allow initialization at compile time.
+ GStaticRecMutex gobject_;
+#endif
+};
+
+class RecMutex : public StaticRecMutex
+{
+public:
+ class Lock;
+
+ RecMutex();
+ ~RecMutex();
+
+private:
+ // noncopyable
+ RecMutex(const RecMutex&);
+ RecMutex& operator=(const RecMutex&);
+};
+
+/** Utility class for exception-safe locking of recursive mutexes.
+ */
+class RecMutex::Lock
+{
+public:
+ explicit inline Lock(RecMutex& mutex);
+ inline Lock(RecMutex& mutex, NotLock);
+ inline Lock(RecMutex& mutex, TryLock);
+ inline ~Lock();
+
+ inline void acquire();
+ inline bool try_acquire();
+ inline void release();
+ inline bool locked() const;
+
+private:
+ RecMutex& mutex_;
+ bool locked_;
+
+ // noncopyable
+ Lock(const RecMutex::Lock&);
+ RecMutex::Lock& operator=(const RecMutex::Lock&);
+};
+
+
+/** Like Glib::RWLock, but can be defined at compile time.
+ * Use @c GLIBMM_STATIC_RW_LOCK_INIT to initialize a StaticRWLock:
+ * @code
+ * Glib::StaticRWLock rw_lock = GLIBMM_STATIC_RW_LOCK_INIT;
+ * @endcode
+ * A StaticRWLock can be used without calling Glib::thread_init(), it will
+ * silently do nothing then. That will also work when using the implicit
+ * conversion to RWLock&, thus you can safely use RWLock::ReaderLock and
+ * RWLock::WriterLock with a StaticRWLock.
+ */
+struct StaticRWLock
+{
+ void reader_lock();
+ bool reader_trylock();
+ void reader_unlock();
+
+ void writer_lock();
+ bool writer_trylock();
+ void writer_unlock();
+
+ operator RWLock&();
+
+ GStaticRWLock* gobj() { return &gobject_; }
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ // Must be public to allow initialization at compile time.
+ GStaticRWLock gobject_;
+#endif
+};
+
+class RWLock : public StaticRWLock
+{
+public:
+ class ReaderLock;
+ class WriterLock;
+
+ RWLock();
+ ~RWLock();
+
+private:
+ // noncopyable
+ RWLock(const RWLock&);
+ RWLock& operator=(const RWLock&);
+};
+
+/** Utility class for exception-safe locking of read/write locks.
+ */
+class RWLock::ReaderLock
+{
+public:
+ explicit inline ReaderLock(RWLock& rwlock);
+ inline ReaderLock(RWLock& rwlock, NotLock);
+ inline ReaderLock(RWLock& rwlock, TryLock);
+ inline ~ReaderLock();
+
+ inline void acquire();
+ inline bool try_acquire();
+ inline void release();
+ inline bool locked() const;
+
+private:
+ RWLock& rwlock_;
+ bool locked_;
+
+ // noncopyable
+ ReaderLock(const RWLock::ReaderLock&);
+ RWLock::ReaderLock& operator=(const RWLock::ReaderLock&);
+};
+
+/** Utility class for exception-safe locking of read/write locks.
+ */
+class RWLock::WriterLock
+{
+public:
+ explicit inline WriterLock(RWLock& rwlock);
+ inline WriterLock(RWLock& rwlock, NotLock);
+ inline WriterLock(RWLock& rwlock, TryLock);
+ inline ~WriterLock();
+
+ inline void acquire();
+ inline bool try_acquire();
+ inline void release();
+ inline bool locked() const;
+
+private:
+ RWLock& rwlock_;
+ bool locked_;
+
+ // noncopyable
+ WriterLock(const RWLock::WriterLock&);
+ RWLock::WriterLock& operator=(const RWLock::WriterLock&);
+};
+
+/** An opaque data structure to represent a condition.
+ * A @a Cond is an object that threads can block on, if they find a certain
+ * condition to be false. If other threads change the state of this condition
+ * they can signal the @a Cond, such that the waiting thread is woken up.
+ * @par Usage example:
+ * @code
+ * Glib::Cond data_cond;
+ * Glib::Mutex data_mutex;
+ * void* current_data = NULL;
+ *
+ * void push_data (void* data)
+ * {
+ * data_mutex.lock();
+ * current_data = data;
+ * data_cond.signal();
+ * data_mutex.unlock();
+ * }
+ *
+ * void* pop_data ()
+ * {
+ * void* data;
+ *
+ * data_mutex.lock();
+ * while (!current_data)
+ * data_cond.wait(data_mutex);
+ * data = current_data;
+ * current_data = NULL;
+ * data_mutex.unlock();
+ * return data;
+ * }
+ * @endcode
+*/
+class Cond
+{
+public:
+ Cond();
+ ~Cond();
+
+ /** If threads are waiting for this @a Cond, exactly one of them is woken up.
+ * It is good practice to hold the same lock as the waiting thread, while calling
+ * this method, though not required.
+ *
+ * @note This method can also be used if @a Glib::thread_init() has not yet been
+ * called and will do nothing then.
+ */
+ void signal();
+
+ /** If threads are waiting for this @a Cond, all of them are woken up.
+ * It is good practice to hold the same lock as the waiting thread, while calling
+ * this method, though not required.
+ *
+ * @note This method can also be used if @a Glib::thread_init() has not yet been
+ * called and will do nothing then.
+ */
+ void broadcast();
+
+ /** Waits until this thread is woken up on this @a Cond.
+ * The mutex is unlocked before falling asleep and locked again before resuming.
+ *
+ * This method can also be used if @a Glib::thread_init() has not yet been
+ * called and will immediately return then.
+ *
+ * @param mutex a @a Mutex that is currently locked.
+ *
+ * @note It is important to use the @a wait() and @a timed_wait() methods
+ * only inside a loop, which checks for the condition to be true as it is not
+ * guaranteed that the waiting thread will find it fulfilled, even if the signaling
+ * thread left the condition in that state. This is because another thread can have
+ * altered the condition, before the waiting thread got the chance to be woken up,
+ * even if the condition itself is protected by a @a Mutex.
+ */
+ void wait(Mutex& mutex);
+
+ /** Waits until this thread is woken up on this @a Cond, but not longer than until the time, that is specified by @a abs_time.
+ * The mutex is unlocked before falling asleep and locked again before resuming.
+ *
+ * This function can also be used, if @a Glib::thread_init() has not yet been
+ * called and will immediately return @c true then.
+ *
+ * @param mutex a @a Mutex that is currently locked.
+ * @param abs_time a max time to wait.
+ *
+ * @note It is important to use the @a wait() and @a timed_wait() methods
+ * only inside a loop, which checks for the condition to be true as it is not
+ * guaranteed that the waiting thread will find it fulfilled, even if the signaling
+ * thread left the condition in that state. This is because another thread can have
+ * altered the condition, before the waiting thread got the chance to be woken up,
+ * even if the condition itself is protected by a @a Mutex.
+ */
+ bool timed_wait(Mutex& mutex, const Glib::TimeVal& abs_time);
+
+ GCond* gobj() { return gobject_; }
+
+private:
+ GCond* gobject_;
+
+ // noncopyable
+ Cond(const Cond&);
+ Cond& operator=(const Cond&);
+};
+
+
+template <class T>
+struct StaticPrivate
+{
+ typedef void (*DestroyNotifyFunc) (void*);
+
+ static void delete_ptr(void* data);
+
+ inline T* get();
+ inline void set(T* data, DestroyNotifyFunc notify_func = &StaticPrivate<T>::delete_ptr);
+
+ GStaticPrivate* gobj() { return &gobject_; }
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ // Must be public to allow initialization at compile time.
+ GStaticPrivate gobject_;
+#endif
+};
+
+template <class T>
+class Private
+{
+public:
+ typedef void (*DestructorFunc) (void*);
+
+ static void delete_ptr(void* data);
+
+ explicit inline Private(DestructorFunc destructor_func = &Private<T>::delete_ptr);
+ inline T* get();
+ inline void set(T* data);
+
+ GPrivate* gobj() { return gobject_; }
+
+private:
+ GPrivate* gobject_;
+
+ // noncopyable
+ Private(const Private<T>&);
+ Private<T>& operator=(const Private<T>&);
+};
+
+/** @} group Threads */
+
+/*! A glibmm thread example.
+ * @example thread/thread.cc
+ */
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+/***************************************************************************/
+/* inline implementation */
+/***************************************************************************/
+
+// internal
+void thread_init_impl();
+
+/* This function must be inline, to avoid an unnecessary dependency on
+ * libgthread even if the thread system is not used. libgthread might
+ * not even be available if GLib was compiled without thread support.
+ */
+inline
+void thread_init(GThreadFunctions* vtable)
+{
+ g_thread_init(vtable);
+ Glib::thread_init_impl();
+}
+
+inline
+bool thread_supported()
+{
+ //MSVC++ needs the != 0 to avoid an int -> bool cast warning.
+ return (g_thread_supported() != 0);
+}
+
+
+/**** Glib::Mutex::Lock ****************************************************/
+
+inline
+Mutex::Lock::Lock(Mutex& mutex)
+:
+ mutex_ (mutex),
+ locked_ (true)
+{
+ mutex_.lock();
+}
+
+inline
+Mutex::Lock::Lock(Mutex& mutex, NotLock)
+:
+ mutex_ (mutex),
+ locked_ (false)
+{}
+
+inline
+Mutex::Lock::Lock(Mutex& mutex, TryLock)
+:
+ mutex_ (mutex),
+ locked_ (mutex.trylock())
+{}
+
+inline
+Mutex::Lock::~Lock()
+{
+ if(locked_)
+ mutex_.unlock();
+}
+
+inline
+void Mutex::Lock::acquire()
+{
+ mutex_.lock();
+ locked_ = true;
+}
+
+inline
+bool Mutex::Lock::try_acquire()
+{
+ locked_ = mutex_.trylock();
+ return locked_;
+}
+
+inline
+void Mutex::Lock::release()
+{
+ mutex_.unlock();
+ locked_ = false;
+}
+
+inline
+bool Mutex::Lock::locked() const
+{
+ return locked_;
+}
+
+
+/**** Glib::RecMutex::Lock *************************************************/
+
+inline
+RecMutex::Lock::Lock(RecMutex& mutex)
+:
+ mutex_ (mutex),
+ locked_ (true)
+{
+ mutex_.lock();
+}
+
+inline
+RecMutex::Lock::Lock(RecMutex& mutex, NotLock)
+:
+ mutex_ (mutex),
+ locked_ (false)
+{}
+
+inline
+RecMutex::Lock::Lock(RecMutex& mutex, TryLock)
+:
+ mutex_ (mutex),
+ locked_ (mutex.trylock())
+{}
+
+inline
+RecMutex::Lock::~Lock()
+{
+ if(locked_)
+ mutex_.unlock();
+}
+
+inline
+void RecMutex::Lock::acquire()
+{
+ mutex_.lock();
+ locked_ = true;
+}
+
+inline
+bool RecMutex::Lock::try_acquire()
+{
+ locked_ = mutex_.trylock();
+ return locked_;
+}
+
+inline
+void RecMutex::Lock::release()
+{
+ mutex_.unlock();
+ locked_ = false;
+}
+
+inline
+bool RecMutex::Lock::locked() const
+{
+ return locked_;
+}
+
+
+/**** Glib::RWLock::ReaderLock *********************************************/
+
+inline
+RWLock::ReaderLock::ReaderLock(RWLock& rwlock)
+:
+ rwlock_ (rwlock),
+ locked_ (true)
+{
+ rwlock_.reader_lock();
+}
+
+inline
+RWLock::ReaderLock::ReaderLock(RWLock& rwlock, NotLock)
+:
+ rwlock_ (rwlock),
+ locked_ (false)
+{}
+
+inline
+RWLock::ReaderLock::ReaderLock(RWLock& rwlock, TryLock)
+:
+ rwlock_ (rwlock),
+ locked_ (rwlock.reader_trylock())
+{}
+
+inline
+RWLock::ReaderLock::~ReaderLock()
+{
+ if(locked_)
+ rwlock_.reader_unlock();
+}
+
+inline
+void RWLock::ReaderLock::acquire()
+{
+ rwlock_.reader_lock();
+ locked_ = true;
+}
+
+inline
+bool RWLock::ReaderLock::try_acquire()
+{
+ locked_ = rwlock_.reader_trylock();
+ return locked_;
+}
+
+inline
+void RWLock::ReaderLock::release()
+{
+ rwlock_.reader_unlock();
+ locked_ = false;
+}
+
+inline
+bool RWLock::ReaderLock::locked() const
+{
+ return locked_;
+}
+
+
+/**** Glib::RWLock::WriterLock *********************************************/
+
+inline
+RWLock::WriterLock::WriterLock(RWLock& rwlock)
+:
+ rwlock_ (rwlock),
+ locked_ (true)
+{
+ rwlock_.writer_lock();
+}
+
+inline
+RWLock::WriterLock::WriterLock(RWLock& rwlock, NotLock)
+:
+ rwlock_ (rwlock),
+ locked_ (false)
+{}
+
+inline
+RWLock::WriterLock::WriterLock(RWLock& rwlock, TryLock)
+:
+ rwlock_ (rwlock),
+ locked_ (rwlock.writer_trylock())
+{}
+
+inline
+RWLock::WriterLock::~WriterLock()
+{
+ if(locked_)
+ rwlock_.writer_unlock();
+}
+
+inline
+void RWLock::WriterLock::acquire()
+{
+ rwlock_.writer_lock();
+ locked_ = true;
+}
+
+inline
+bool RWLock::WriterLock::try_acquire()
+{
+ locked_ = rwlock_.writer_trylock();
+ return locked_;
+}
+
+inline
+void RWLock::WriterLock::release()
+{
+ rwlock_.writer_unlock();
+ locked_ = false;
+}
+
+inline
+bool RWLock::WriterLock::locked() const
+{
+ return locked_;
+}
+
+
+/**** Glib::StaticPrivate **************************************************/
+
+// static
+template <class T>
+void StaticPrivate<T>::delete_ptr(void* data)
+{
+ delete static_cast<T*>(data);
+}
+
+template <class T> inline
+T* StaticPrivate<T>::get()
+{
+ return static_cast<T*>(g_static_private_get(&gobject_));
+}
+
+template <class T> inline
+void StaticPrivate<T>::set(T* data, typename StaticPrivate<T>::DestroyNotifyFunc notify_func)
+{
+ g_static_private_set(&gobject_, data, notify_func);
+}
+
+
+/**** Glib::Private ********************************************************/
+
+// static
+template <class T>
+void Private<T>::delete_ptr(void* data)
+{
+ delete static_cast<T*>(data);
+}
+
+template <class T> inline
+Private<T>::Private(typename Private<T>::DestructorFunc destructor_func)
+:
+ gobject_ (g_private_new(destructor_func))
+{}
+
+template <class T> inline
+T* Private<T>::get()
+{
+ return static_cast<T*>(g_private_get(gobject_));
+}
+
+template <class T> inline
+void Private<T>::set(T* data)
+{
+ g_private_set(gobject_, data);
+}
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/unicode.ccg b/libs/glibmm2/glib/src/unicode.ccg
new file mode 100644
index 0000000000..89aa41261e
--- /dev/null
+++ b/libs/glibmm2/glib/src/unicode.ccg
@@ -0,0 +1,22 @@
+// -*- c++ -*-
+/* $Id: unicode.ccg,v 1.1.1.1 2003/01/07 16:58:42 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/unicode.h>
+
diff --git a/libs/glibmm2/glib/src/unicode.hg b/libs/glibmm2/glib/src/unicode.hg
new file mode 100644
index 0000000000..27424331c3
--- /dev/null
+++ b/libs/glibmm2/glib/src/unicode.hg
@@ -0,0 +1,147 @@
+/* $Id: unicode.hg,v 1.2 2003/08/20 10:31:23 murrayc Exp $ */
+
+/* Copyright (C) 2002 The gtkmm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+_DEFS(glibmm,glib)
+
+#m4begin
+_PUSH()
+
+// m4 helper macros to generate the character-class inline functions.
+
+m4_define(`_UNICHAR_FUNC',`dnl
+inline $1 $2(gunichar uc)
+ { return g_unichar_$2(uc); }
+`'dnl`'')
+
+//MSVC++ needs the != 0 to avoid an int -> bool cast warning.
+m4_define(`_UNICHAR_FUNC_BOOL',`dnl
+inline $1 $2(gunichar uc)
+ { return (g_unichar_$2(uc) != 0); }
+`'dnl`'')
+
+m4_define(`_ASCII_FUNC',`dnl
+inline $1 $2(char c)
+ { return g_ascii_$2(c); }
+`'dnl`'')
+
+_POP()
+#m4end
+
+#include <glib/gmacros.h>
+#include <glib/gstrfuncs.h>
+#include <glib/gunicode.h>
+
+// Not used, but we want to get rid of possible <ctype.h> macros.
+#include <cctype>
+
+#undef isalnum
+#undef isalpha
+#undef iscntrl
+#undef isdigit
+#undef isgraph
+#undef islower
+#undef isprint
+#undef ispunct
+#undef isspace
+#undef isupper
+#undef isxdigit
+#undef istitle
+#undef isdefined
+#undef iswide
+#undef toupper
+#undef tolower
+#undef totitle
+
+
+namespace Glib
+{
+
+_WRAP_ENUM(UnicodeType, GUnicodeType, NO_GTYPE)
+_WRAP_ENUM(UnicodeBreakType, GUnicodeBreakType, NO_GTYPE)
+_WRAP_ENUM(AsciiType, GAsciiType, NO_GTYPE)
+_WRAP_ENUM(NormalizeMode, GNormalizeMode, NO_GTYPE)
+
+/** @defgroup Unicode Unicode Manipulation
+ * Functions operating on Unicode characters and UTF-8 strings.
+ * @{
+ */
+
+namespace Unicode
+{
+
+_UNICHAR_FUNC_BOOL(bool, validate)
+_UNICHAR_FUNC_BOOL(bool, isalnum)
+_UNICHAR_FUNC_BOOL(bool, isalpha)
+_UNICHAR_FUNC_BOOL(bool, iscntrl)
+_UNICHAR_FUNC_BOOL(bool, isdigit)
+_UNICHAR_FUNC_BOOL(bool, isgraph)
+_UNICHAR_FUNC_BOOL(bool, islower)
+_UNICHAR_FUNC_BOOL(bool, isprint)
+_UNICHAR_FUNC_BOOL(bool, ispunct)
+_UNICHAR_FUNC_BOOL(bool, isspace)
+_UNICHAR_FUNC_BOOL(bool, isupper)
+_UNICHAR_FUNC_BOOL(bool, isxdigit)
+_UNICHAR_FUNC_BOOL(bool, istitle)
+_UNICHAR_FUNC_BOOL(bool, isdefined)
+_UNICHAR_FUNC_BOOL(bool, iswide)
+
+_UNICHAR_FUNC(gunichar, toupper)
+_UNICHAR_FUNC(gunichar, tolower)
+_UNICHAR_FUNC(gunichar, totitle)
+
+_UNICHAR_FUNC(int, digit_value)
+_UNICHAR_FUNC(int, xdigit_value)
+
+inline Glib::UnicodeType type(gunichar uc)
+ { return static_cast<Glib::UnicodeType>(static_cast<int>(g_unichar_type(uc))); }
+
+inline Glib::UnicodeBreakType break_type(gunichar uc)
+ { return static_cast<Glib::UnicodeBreakType>(static_cast<int>(g_unichar_break_type(uc))); }
+
+} // namespace Unicode
+
+
+namespace Ascii
+{
+
+_ASCII_FUNC(bool, isalnum)
+_ASCII_FUNC(bool, isalpha)
+_ASCII_FUNC(bool, iscntrl)
+_ASCII_FUNC(bool, isdigit)
+_ASCII_FUNC(bool, isgraph)
+_ASCII_FUNC(bool, islower)
+_ASCII_FUNC(bool, isprint)
+_ASCII_FUNC(bool, ispunct)
+_ASCII_FUNC(bool, isspace)
+_ASCII_FUNC(bool, isupper)
+_ASCII_FUNC(bool, isxdigit)
+
+_ASCII_FUNC(char, tolower)
+_ASCII_FUNC(char, toupper)
+
+_ASCII_FUNC(int, digit_value)
+_ASCII_FUNC(int, xdigit_value)
+
+} // namespace Ascii
+
+
+/** @} group Unicode */
+
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/value_basictypes.cc.m4 b/libs/glibmm2/glib/src/value_basictypes.cc.m4
new file mode 100644
index 0000000000..cdda8cee4b
--- /dev/null
+++ b/libs/glibmm2/glib/src/value_basictypes.cc.m4
@@ -0,0 +1,84 @@
+divert(-1)
+
+dnl $Id: value_basictypes.cc.m4,v 1.2 2006/11/22 11:13:29 murrayc Exp $
+
+dnl Glib::Value specializations for fundamental types
+dnl
+dnl Copyright 2002 The gtkmm Development Team
+dnl
+dnl This library is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU Library General Public
+dnl License as published by the Free Software Foundation; either
+dnl version 2 of the License, or (at your option) any later version.
+dnl
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl Library General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU Library General Public
+dnl License along with this library; if not, write to the Free
+dnl Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+include(template.macros.m4)
+
+dnl
+dnl GLIB_VALUE_BASIC(bool, boolean)
+dnl
+define([GLIB_VALUE_BASIC],[dnl
+LINE(]__line__[)dnl
+
+dnl Please ignore the format stuff. I was just tired and played a little.
+/**** Glib::Value<$1> translit(format([%]eval(57-len([$1]))[s],[****/]),[ ],[*])
+
+// static
+GType Value<$1>::value_type()
+{
+ return G_TYPE_[]UPPER($2);
+}
+
+void Value<$1>::set($1 data)
+{
+ g_value_set_$2(&gobject_, data);
+}
+
+$1 Value<$1>::get() const
+{
+ return g_value_get_$2(&gobject_);
+}
+
+GParamSpec* Value<$1>::create_param_spec(const Glib::ustring& name) const
+{
+ return g_param_spec_$2(
+ name.c_str(), 0, 0,ifelse($2,pointer,,[
+ ifelse($3,,,[$3, $4, ])[]g_value_get_$2(&gobject_),])
+ GParamFlags(G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
+])
+
+divert[]dnl
+// -*- c++ -*-
+// This is a generated file, do not edit. Generated from __file__
+
+#include <glibmm/value.h>
+
+namespace Glib
+{
+
+G_GNUC_EXTENSION typedef long long long_long;
+G_GNUC_EXTENSION typedef unsigned long long unsigned_long_long;
+
+GLIB_VALUE_BASIC(bool, boolean)
+GLIB_VALUE_BASIC(char, char, -128, 127)
+GLIB_VALUE_BASIC(unsigned char, uchar, 0, 255)
+GLIB_VALUE_BASIC(int, int, G_MININT, G_MAXINT)
+GLIB_VALUE_BASIC(unsigned int, uint, 0, G_MAXUINT)
+GLIB_VALUE_BASIC(long, long, G_MINLONG, G_MAXLONG)
+GLIB_VALUE_BASIC(unsigned long, ulong, 0, G_MAXULONG)
+GLIB_VALUE_BASIC(long_long, int64, G_GINT64_CONSTANT[](0x8000000000000000), G_GINT64_CONSTANT[](0x7fffffffffffffff))
+GLIB_VALUE_BASIC(unsigned_long_long, uint64, G_GINT64_CONSTANT[](0U), G_GINT64_CONSTANT[](0xffffffffffffffffU))
+GLIB_VALUE_BASIC(float, float, -G_MAXFLOAT, G_MAXFLOAT)
+GLIB_VALUE_BASIC(double, double, -G_MAXDOUBLE, G_MAXDOUBLE)
+GLIB_VALUE_BASIC(void*, pointer)
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/src/value_basictypes.h.m4 b/libs/glibmm2/glib/src/value_basictypes.h.m4
new file mode 100644
index 0000000000..ebfc9cdcd7
--- /dev/null
+++ b/libs/glibmm2/glib/src/value_basictypes.h.m4
@@ -0,0 +1,83 @@
+divert(-1)
+
+dnl $Id: value_basictypes.h.m4,v 1.1.1.1 2003/01/07 16:58:42 murrayc Exp $
+
+dnl Glib::Value specializations for fundamental types
+dnl
+dnl Copyright 2002 The gtkmm Development Team
+dnl
+dnl This library is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU Library General Public
+dnl License as published by the Free Software Foundation; either
+dnl version 2 of the License, or (at your option) any later version.
+dnl
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl Library General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU Library General Public
+dnl License along with this library; if not, write to the Free
+dnl Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+include(template.macros.m4)
+
+dnl
+dnl GLIB_VALUE_BASIC(bool, boolean)
+dnl
+define([GLIB_VALUE_BASIC],[dnl
+LINE(]__line__[)dnl
+
+/**
+ * @ingroup glibmmValue
+ */
+template <>
+class Value<$1> : public ValueBase
+{
+public:
+ typedef $1 CppType;
+ typedef g$2 CType;
+
+ static GType value_type() G_GNUC_CONST;
+
+ void set($1 data);
+ $1 get() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ GParamSpec* create_param_spec(const Glib::ustring& name) const;
+#endif
+};
+])
+
+divert[]dnl
+// -*- c++ -*-
+// This is a generated file, do not edit. Generated from __file__
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+#ifndef _GLIBMM_VALUE_H_INCLUDE_VALUE_BASICTYPES_H
+#error "glibmm/value_basictypes.h cannot be included directly"
+#endif
+#endif
+
+/* Suppress warnings about `long long' when GCC is in -pedantic mode.
+ */
+#if (__GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))
+#pragma GCC system_header
+#endif
+
+namespace Glib
+{
+GLIB_VALUE_BASIC(bool, boolean)
+GLIB_VALUE_BASIC(char, char)
+GLIB_VALUE_BASIC(unsigned char, uchar)
+GLIB_VALUE_BASIC(int, int)
+GLIB_VALUE_BASIC(unsigned int, uint)
+GLIB_VALUE_BASIC(long, long)
+GLIB_VALUE_BASIC(unsigned long, ulong)
+GLIB_VALUE_BASIC(long long, int64)
+GLIB_VALUE_BASIC(unsigned long long, uint64)
+GLIB_VALUE_BASIC(float, float)
+GLIB_VALUE_BASIC(double, double)
+GLIB_VALUE_BASIC(void*, pointer)
+} // namespace Glib
+
diff --git a/libs/glibmm2/glib/stamp-h2 b/libs/glibmm2/glib/stamp-h2
new file mode 100644
index 0000000000..96bf600f0d
--- /dev/null
+++ b/libs/glibmm2/glib/stamp-h2
@@ -0,0 +1 @@
+timestamp for glib/glibmmconfig.h
diff --git a/libs/glibmm2/libtool b/libs/glibmm2/libtool
new file mode 100644
index 0000000000..e803a508d0
--- /dev/null
+++ b/libs/glibmm2/libtool
@@ -0,0 +1,7520 @@
+#! /bin/bash
+
+# libtoolT - Provide generalized library-building support services.
+# Generated automatically by (GNU glibmm 2.13.3)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A sed program that does not truncate output.
+SED="/bin/sed"
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="/bin/sed -e 1s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# The names of the tagged configurations supported by this script.
+available_tags=" CXX"
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host houllier:
+
+# Shell to use when invoking shell scripts.
+SHELL="/bin/bash"
+
+# Whether or not to build shared libraries.
+build_libtool_libs=yes
+
+# Whether or not to build static libraries.
+build_old_libs=no
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=no
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=no
+
+# Whether or not to optimize for fast installation.
+fast_install=yes
+
+# The host system.
+host_alias=
+host=i686-pc-linux-gnu
+host_os=linux-gnu
+
+# The build system.
+build_alias=
+build=i686-pc-linux-gnu
+build_os=linux-gnu
+
+# An echo program that does not interpret backslashes.
+echo="echo"
+
+# The archiver.
+AR="ar"
+AR_FLAGS="cru"
+
+# A C compiler.
+LTCC="gcc"
+
+# LTCC compiler flags.
+LTCFLAGS="-g -O2"
+
+# A language-specific compiler.
+CC="gcc"
+
+# Is the compiler the GNU C compiler?
+with_gcc=yes
+
+# An ERE matcher.
+EGREP="grep -E"
+
+# The linker used to build libraries.
+LD="/usr/bin/ld"
+
+# Whether we need hard or soft links.
+LN_S="ln -s"
+
+# A BSD-compatible nm program.
+NM="/usr/bin/nm -B"
+
+# A symbol stripping program
+STRIP="strip"
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=file
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="dlltool"
+
+# Used on cygwin: object dumper.
+OBJDUMP="objdump"
+
+# Used on cygwin: assembler.
+AS="as"
+
+# The name of the directory that contains temporary libtool files.
+objdir=.libs
+
+# How to create reloadable object files.
+reload_flag=" -r"
+reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
+
+# How to pass a linker flag through the compiler.
+wl="-Wl,"
+
+# Object file suffix (normally "o").
+objext="o"
+
+# Old archive suffix (normally "a").
+libext="a"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='.so'
+
+# Executable file suffix (normally "").
+exeext=""
+
+# Additional compiler flags for building library objects.
+pic_flag=" -fPIC -DPIC"
+pic_mode=default
+
+# What is the maximum length of a command?
+max_cmd_len=32768
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o="yes"
+
+# Must we lock files when doing compilation?
+need_locks="no"
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=no
+
+# Do we need a version for libraries?
+need_version=no
+
+# Whether dlopen is supported.
+dlopen_support=unknown
+
+# Whether dlopen of programs is supported.
+dlopen_self=unknown
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=unknown
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag="-static"
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=" -fno-builtin"
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec="\${wl}--export-dynamic"
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=""
+
+# Library versioning type.
+version_type=linux
+
+# Format of library name prefix.
+libname_spec="lib\$name"
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"
+
+# The coded name of the library, if different from the real name.
+soname_spec="\${libname}\${release}\${shared_ext}\$major"
+
+# Commands used to build and install an old-style archive.
+RANLIB="ranlib"
+old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib"
+old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
+old_postuninstall_cmds=""
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=""
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=""
+
+# Commands used to build and install a shared archive.
+archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
+archive_expsym_cmds="\$echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
+ cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
+ \$echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
+ \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
+postinstall_cmds=""
+postuninstall_cmds=""
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=""
+module_expsym_cmds=""
+
+# Commands to strip libraries.
+old_striplib="strip --strip-debug"
+striplib="strip --strip-unneeded"
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=""
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=""
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=""
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=""
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=""
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method="pass_all"
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd="\$MAGIC_CMD"
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=""
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=""
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=""
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'"
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (lt_ptr) \\&\\2},/p'"
+
+# This is the shared library runtime path variable.
+runpath_var=LD_RUN_PATH
+
+# This is the shared library path variable.
+shlibpath_var=LD_LIBRARY_PATH
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=no
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=immediate
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=yes
+
+# Flag to hardcode $libdir into a binary during linking.
+# This must work even if $libdir does not exist.
+hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir"
+
+# If ld is used when linking, flag to hardcode $libdir into
+# a binary during linking. This must work even if $libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=""
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=""
+
+# Set to yes if using DIR/libNAME during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=no
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=no
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=unsupported
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=no
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=unknown
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=" /usr/lib/gcc/i486-linux-gnu/4.1.2/ /usr/lib/gcc/i486-linux-gnu/4.1.2/ /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../i486-linux-gnu/lib/i486-linux-gnu/4.1.2/ /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../i486-linux-gnu/lib/ /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../i486-linux-gnu/4.1.2/ /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../ /lib/i486-linux-gnu/4.1.2/ /lib/ /usr/lib/i486-linux-gnu/4.1.2/ /usr/lib/"
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/lib "
+
+# Fix the shell variable $srcfile for the compiler.
+fix_srcfile_path=""
+
+# Set to yes if exported symbols are required.
+always_export_symbols=no
+
+# The commands to list exported symbols.
+export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=""
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+
+# Symbols that must always be exported.
+include_expsyms=""
+
+# ### END LIBTOOL CONFIG
+
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+basename="s,^.*/,,g"
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# The name of this program:
+progname=`echo "$progpath" | $SED $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5.22
+TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes.
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell, and then maybe $echo will work.
+ exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit $EXIT_SUCCESS
+fi
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ SP2NL='tr \040 \012'
+ NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ SP2NL='tr \100 \n'
+ NL2SP='tr \r\n \100\100'
+ ;;
+esac
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+ save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+ save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" $lt_nl"
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ $echo "$modename: not configured to build any kind of library" 1>&2
+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ exit $EXIT_FAILURE
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+duplicate_deps=no
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+
+#####################################
+# Shell function definitions:
+# This seems to be the best place for them
+
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible. If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+ my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+ if test "$run" = ":"; then
+ # Return a directory name, but don't create it in dry-run mode
+ my_tmpdir="${my_template}-$$"
+ else
+
+ # If mktemp works, use that first and foremost
+ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+ if test ! -d "$my_tmpdir"; then
+ # Failing that, at least try and use $RANDOM to avoid a race
+ my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+ save_mktempdir_umask=`umask`
+ umask 0077
+ $mkdir "$my_tmpdir"
+ umask $save_mktempdir_umask
+ fi
+
+ # If we're not in dry-run mode, bomb out on failure
+ test -d "$my_tmpdir" || {
+ $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
+ exit $EXIT_FAILURE
+ }
+ fi
+
+ $echo "X$my_tmpdir" | $Xsed
+}
+
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+func_win32_libid ()
+{
+ win32_libid_type="unknown"
+ win32_fileres=`file -L $1 2>/dev/null`
+ case $win32_fileres in
+ *ar\ archive\ import\ library*) # definitely import
+ win32_libid_type="x86 archive import"
+ ;;
+ *ar\ archive*) # could be an import, or static
+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+ win32_nmres=`eval $NM -f posix -A $1 | \
+ $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'`
+ case $win32_nmres in
+ import*) win32_libid_type="x86 archive import";;
+ *) win32_libid_type="x86 archive static";;
+ esac
+ fi
+ ;;
+ *DLL*)
+ win32_libid_type="x86 DLL"
+ ;;
+ *executable*) # but shell scripts are "executable" too...
+ case $win32_fileres in
+ *MS\ Windows\ PE\ Intel*)
+ win32_libid_type="x86 DLL"
+ ;;
+ esac
+ ;;
+ esac
+ $echo $win32_libid_type
+}
+
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ CC_quoted="$CC_quoted $arg"
+ done
+ case $@ in
+ # Blanks in the command may have been stripped by the calling shell,
+ # but not from the CC environment variable when configure was run.
+ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
+ # Blanks at the start of $base_compile will cause this to fail
+ # if we don't check for them as well.
+ *)
+ for z in $available_tags; do
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+ # Evaluate the configuration.
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+ CC_quoted=
+ for arg in $CC; do
+ # Double-quote args containing other shell metacharacters.
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ CC_quoted="$CC_quoted $arg"
+ done
+ case "$@ " in
+ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+ # The compiler in the base compile command matches
+ # the one in the tagged configuration.
+ # Assume this is the tagged configuration we want.
+ tagname=$z
+ break
+ ;;
+ esac
+ fi
+ done
+ # If $tagname still isn't set, then no tagged configuration
+ # was found and let the user know that the "--tag" command
+ # line option must be used.
+ if test -z "$tagname"; then
+ $echo "$modename: unable to infer tagged configuration"
+ $echo "$modename: specify a tag with \`--tag'" 1>&2
+ exit $EXIT_FAILURE
+# else
+# $echo "$modename: using $tagname tagged configuration"
+ fi
+ ;;
+ esac
+ fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+ f_ex_an_ar_dir="$1"; shift
+ f_ex_an_ar_oldlib="$1"
+
+ $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
+ $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
+ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
+ exit $EXIT_FAILURE
+ fi
+}
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+ my_gentop="$1"; shift
+ my_oldlibs=${1+"$@"}
+ my_oldobjs=""
+ my_xlib=""
+ my_xabs=""
+ my_xdir=""
+ my_status=""
+
+ $show "${rm}r $my_gentop"
+ $run ${rm}r "$my_gentop"
+ $show "$mkdir $my_gentop"
+ $run $mkdir "$my_gentop"
+ my_status=$?
+ if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
+ exit $my_status
+ fi
+
+ for my_xlib in $my_oldlibs; do
+ # Extract the objects.
+ case $my_xlib in
+ [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+ *) my_xabs=`pwd`"/$my_xlib" ;;
+ esac
+ my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+ my_xdir="$my_gentop/$my_xlib"
+
+ $show "${rm}r $my_xdir"
+ $run ${rm}r "$my_xdir"
+ $show "$mkdir $my_xdir"
+ $run $mkdir "$my_xdir"
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
+ exit $exit_status
+ fi
+ case $host in
+ *-darwin*)
+ $show "Extracting $my_xabs"
+ # Do not bother doing anything if just a dry run
+ if test -z "$run"; then
+ darwin_orig_dir=`pwd`
+ cd $my_xdir || exit $?
+ darwin_archive=$my_xabs
+ darwin_curdir=`pwd`
+ darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
+ darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
+ if test -n "$darwin_arches"; then
+ darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
+ darwin_arch=
+ $show "$darwin_base_archive has multiple architectures $darwin_arches"
+ for darwin_arch in $darwin_arches ; do
+ mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+ cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+ cd "$darwin_curdir"
+ $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+ done # $darwin_arches
+ ## Okay now we have a bunch of thin objects, gotta fatten them up :)
+ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
+ darwin_file=
+ darwin_files=
+ for darwin_file in $darwin_filelist; do
+ darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+ lipo -create -output "$darwin_file" $darwin_files
+ done # $darwin_filelist
+ ${rm}r unfat-$$
+ cd "$darwin_orig_dir"
+ else
+ cd "$darwin_orig_dir"
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ fi # $darwin_arches
+ fi # $run
+ ;;
+ *)
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ ;;
+ esac
+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+ done
+ func_extract_archives_result="$my_oldobjs"
+}
+# End of Shell function definitions
+#####################################
+
+# Darwin sucks
+eval std_shrext=\"$shrext_cmds\"
+
+disable_libs=no
+
+# Parse our command line options once, thoroughly.
+while test "$#" -gt 0
+do
+ arg="$1"
+ shift
+
+ case $arg in
+ -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) optarg= ;;
+ esac
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ execute_dlfiles)
+ execute_dlfiles="$execute_dlfiles $arg"
+ ;;
+ tag)
+ tagname="$arg"
+ preserve_args="${preserve_args}=$arg"
+
+ # Check whether tagname contains only valid characters
+ case $tagname in
+ *[!-_A-Za-z0-9,/]*)
+ $echo "$progname: invalid tag name: $tagname" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $tagname in
+ CC)
+ # Don't test for the "default" C tag, as we know, it's there, but
+ # not specially marked.
+ ;;
+ *)
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
+ taglist="$taglist $tagname"
+ # Evaluate the configuration.
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
+ else
+ $echo "$progname: ignoring unknown tag $tagname" 1>&2
+ fi
+ ;;
+ esac
+ ;;
+ *)
+ eval "$prev=\$arg"
+ ;;
+ esac
+
+ prev=
+ prevopt=
+ continue
+ fi
+
+ # Have we seen a non-optional argument yet?
+ case $arg in
+ --help)
+ show_help=yes
+ ;;
+
+ --version)
+ $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+ $echo
+ $echo "Copyright (C) 2005 Free Software Foundation, Inc."
+ $echo "This is free software; see the source for copying conditions. There is NO"
+ $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+ exit $?
+ ;;
+
+ --config)
+ ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
+ # Now print the configurations for the tags.
+ for tagname in $taglist; do
+ ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+ done
+ exit $?
+ ;;
+
+ --debug)
+ $echo "$progname: enabling shell trace mode"
+ set -x
+ preserve_args="$preserve_args $arg"
+ ;;
+
+ --dry-run | -n)
+ run=:
+ ;;
+
+ --features)
+ $echo "host: $host"
+ if test "$build_libtool_libs" = yes; then
+ $echo "enable shared libraries"
+ else
+ $echo "disable shared libraries"
+ fi
+ if test "$build_old_libs" = yes; then
+ $echo "enable static libraries"
+ else
+ $echo "disable static libraries"
+ fi
+ exit $?
+ ;;
+
+ --finish) mode="finish" ;;
+
+ --mode) prevopt="--mode" prev=mode ;;
+ --mode=*) mode="$optarg" ;;
+
+ --preserve-dup-deps) duplicate_deps="yes" ;;
+
+ --quiet | --silent)
+ show=:
+ preserve_args="$preserve_args $arg"
+ ;;
+
+ --tag)
+ prevopt="--tag"
+ prev=tag
+ preserve_args="$preserve_args --tag"
+ ;;
+ --tag=*)
+ set tag "$optarg" ${1+"$@"}
+ shift
+ prev=tag
+ preserve_args="$preserve_args --tag"
+ ;;
+
+ -dlopen)
+ prevopt="-dlopen"
+ prev=execute_dlfiles
+ ;;
+
+ -*)
+ $echo "$modename: unrecognized option \`$arg'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+
+ *)
+ nonopt="$arg"
+ break
+ ;;
+ esac
+done
+
+if test -n "$prevopt"; then
+ $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+fi
+
+case $disable_libs in
+no)
+ ;;
+shared)
+ build_libtool_libs=no
+ build_old_libs=yes
+ ;;
+static)
+ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+ ;;
+esac
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end. This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+if test -z "$show_help"; then
+
+ # Infer the operation mode.
+ if test -z "$mode"; then
+ $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+ $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
+ case $nonopt in
+ *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+ mode=link
+ for arg
+ do
+ case $arg in
+ -c)
+ mode=compile
+ break
+ ;;
+ esac
+ done
+ ;;
+ *db | *dbx | *strace | *truss)
+ mode=execute
+ ;;
+ *install*|cp|mv)
+ mode=install
+ ;;
+ *rm)
+ mode=uninstall
+ ;;
+ *)
+ # If we have no mode, but dlfiles were specified, then do execute mode.
+ test -n "$execute_dlfiles" && mode=execute
+
+ # Just use the default operation mode.
+ if test -z "$mode"; then
+ if test -n "$nonopt"; then
+ $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+ else
+ $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+ fi
+ fi
+ ;;
+ esac
+ fi
+
+ # Only execute mode is allowed to have -dlopen flags.
+ if test -n "$execute_dlfiles" && test "$mode" != execute; then
+ $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Change the help message to a mode-specific one.
+ generic_help="$help"
+ help="Try \`$modename --help --mode=$mode' for more information."
+
+ # These modes are in order of execution frequency so that they run quickly.
+ case $mode in
+ # libtool compile mode
+ compile)
+ modename="$modename: compile"
+ # Get the compilation command and the source file.
+ base_compile=
+ srcfile="$nonopt" # always keep a non-empty value in "srcfile"
+ suppress_opt=yes
+ suppress_output=
+ arg_mode=normal
+ libobj=
+ later=
+
+ for arg
+ do
+ case $arg_mode in
+ arg )
+ # do not "continue". Instead, add this to base_compile
+ lastarg="$arg"
+ arg_mode=normal
+ ;;
+
+ target )
+ libobj="$arg"
+ arg_mode=normal
+ continue
+ ;;
+
+ normal )
+ # Accept any command-line options.
+ case $arg in
+ -o)
+ if test -n "$libobj" ; then
+ $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ arg_mode=target
+ continue
+ ;;
+
+ -static | -prefer-pic | -prefer-non-pic)
+ later="$later $arg"
+ continue
+ ;;
+
+ -no-suppress)
+ suppress_opt=no
+ continue
+ ;;
+
+ -Xcompiler)
+ arg_mode=arg # the next one goes into the "base_compile" arg list
+ continue # The current "srcfile" will either be retained or
+ ;; # replaced later. I would guess that would be a bug.
+
+ -Wc,*)
+ args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+ lastarg=
+ save_ifs="$IFS"; IFS=','
+ for arg in $args; do
+ IFS="$save_ifs"
+
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ lastarg="$lastarg $arg"
+ done
+ IFS="$save_ifs"
+ lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+ # Add the arguments to base_compile.
+ base_compile="$base_compile $lastarg"
+ continue
+ ;;
+
+ * )
+ # Accept the current argument as the source file.
+ # The previous "srcfile" becomes the current argument.
+ #
+ lastarg="$srcfile"
+ srcfile="$arg"
+ ;;
+ esac # case $arg
+ ;;
+ esac # case $arg_mode
+
+ # Aesthetically quote the previous argument.
+ lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+ case $lastarg in
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, and some SunOS ksh mistreat backslash-escaping
+ # in scan sets (worked around with variable expansion),
+ # and furthermore cannot handle '|' '&' '(' ')' in scan sets
+ # at all, so we specify them separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ lastarg="\"$lastarg\""
+ ;;
+ esac
+
+ base_compile="$base_compile $lastarg"
+ done # for arg
+
+ case $arg_mode in
+ arg)
+ $echo "$modename: you must specify an argument for -Xcompile"
+ exit $EXIT_FAILURE
+ ;;
+ target)
+ $echo "$modename: you must specify a target with \`-o'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ *)
+ # Get the name of the library object.
+ [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+ ;;
+ esac
+
+ # Recognize several different file suffixes.
+ # If the user specifies -o file.o, it is replaced with file.lo
+ xform='[cCFSifmso]'
+ case $libobj in
+ *.ada) xform=ada ;;
+ *.adb) xform=adb ;;
+ *.ads) xform=ads ;;
+ *.asm) xform=asm ;;
+ *.c++) xform=c++ ;;
+ *.cc) xform=cc ;;
+ *.ii) xform=ii ;;
+ *.class) xform=class ;;
+ *.cpp) xform=cpp ;;
+ *.cxx) xform=cxx ;;
+ *.f90) xform=f90 ;;
+ *.for) xform=for ;;
+ *.java) xform=java ;;
+ esac
+
+ libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+ case $libobj in
+ *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+ *)
+ $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ func_infer_tag $base_compile
+
+ for arg in $later; do
+ case $arg in
+ -static)
+ build_old_libs=yes
+ continue
+ ;;
+
+ -prefer-pic)
+ pic_mode=yes
+ continue
+ ;;
+
+ -prefer-non-pic)
+ pic_mode=no
+ continue
+ ;;
+ esac
+ done
+
+ qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
+ case $qlibobj in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qlibobj="\"$qlibobj\"" ;;
+ esac
+ test "X$libobj" != "X$qlibobj" \
+ && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \
+ && $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
+ objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+ xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$obj"; then
+ xdir=
+ else
+ xdir=$xdir/
+ fi
+ lobj=${xdir}$objdir/$objname
+
+ if test -z "$base_compile"; then
+ $echo "$modename: you must specify a compilation command" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Delete any leftover library objects.
+ if test "$build_old_libs" = yes; then
+ removelist="$obj $lobj $libobj ${libobj}T"
+ else
+ removelist="$lobj $libobj ${libobj}T"
+ fi
+
+ $run $rm $removelist
+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+
+ # On Cygwin there's no "real" PIC flag so we must build both object types
+ case $host_os in
+ cygwin* | mingw* | pw32* | os2*)
+ pic_mode=default
+ ;;
+ esac
+ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+ # non-PIC code in shared libraries is not supported
+ pic_mode=default
+ fi
+
+ # Calculate the filename of the output object if compiler does
+ # not support -o with -c
+ if test "$compiler_c_o" = no; then
+ output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+ lockfile="$output_obj.lock"
+ removelist="$removelist $output_obj $lockfile"
+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+ else
+ output_obj=
+ need_locks=no
+ lockfile=
+ fi
+
+ # Lock this critical section if it is needed
+ # We use this script file to make the link, it avoids creating a new file
+ if test "$need_locks" = yes; then
+ until $run ln "$progpath" "$lockfile" 2>/dev/null; do
+ $show "Waiting for $lockfile to be removed"
+ sleep 2
+ done
+ elif test "$need_locks" = warn; then
+ if test -f "$lockfile"; then
+ $echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+ $echo "$srcfile" > "$lockfile"
+ fi
+
+ if test -n "$fix_srcfile_path"; then
+ eval srcfile=\"$fix_srcfile_path\"
+ fi
+ qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
+ case $qsrcfile in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qsrcfile="\"$qsrcfile\"" ;;
+ esac
+
+ $run $rm "$libobj" "${libobj}T"
+
+ # Create a libtool object file (analogous to a ".la" file),
+ # but don't create it if we're doing a dry run.
+ test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+ # Only build a PIC object if we are building libtool libraries.
+ if test "$build_libtool_libs" = yes; then
+ # Without this assignment, base_compile gets emptied.
+ fbsd_hideous_sh_bug=$base_compile
+
+ if test "$pic_mode" != no; then
+ command="$base_compile $qsrcfile $pic_flag"
+ else
+ # Don't build PIC code
+ command="$base_compile $qsrcfile"
+ fi
+
+ if test ! -d "${xdir}$objdir"; then
+ $show "$mkdir ${xdir}$objdir"
+ $run $mkdir ${xdir}$objdir
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
+ exit $exit_status
+ fi
+ fi
+
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+ command="$command -o $lobj"
+ fi
+
+ $run $rm "$lobj" "$output_obj"
+
+ $show "$command"
+ if $run eval "$command"; then :
+ else
+ test -n "$output_obj" && $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed, then go on to compile the next one
+ if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+ $show "$mv $output_obj $lobj"
+ if $run $mv $output_obj $lobj; then :
+ else
+ error=$?
+ $run $rm $removelist
+ exit $error
+ fi
+ fi
+
+ # Append the name of the PIC object to the libtool object file.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+ # Allow error messages only from the first compilation.
+ if test "$suppress_opt" = yes; then
+ suppress_output=' >/dev/null 2>&1'
+ fi
+ else
+ # No PIC object so indicate it doesn't exist in the libtool
+ # object file.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+ fi
+
+ # Only build a position-dependent object if we build old libraries.
+ if test "$build_old_libs" = yes; then
+ if test "$pic_mode" != yes; then
+ # Don't build PIC code
+ command="$base_compile $qsrcfile"
+ else
+ command="$base_compile $qsrcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+ command="$command -o $obj"
+ fi
+
+ # Suppress compiler output if we already did a PIC compilation.
+ command="$command$suppress_output"
+ $run $rm "$obj" "$output_obj"
+ $show "$command"
+ if $run eval "$command"; then :
+ else
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed
+ if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+ $show "$mv $output_obj $obj"
+ if $run $mv $output_obj $obj; then :
+ else
+ error=$?
+ $run $rm $removelist
+ exit $error
+ fi
+ fi
+
+ # Append the name of the non-PIC object the libtool object file.
+ # Only append if the libtool object file exists.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+ else
+ # Append the name of the non-PIC object the libtool object file.
+ # Only append if the libtool object file exists.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+ fi
+
+ $run $mv "${libobj}T" "${libobj}"
+
+ # Unlock the critical section if it was locked
+ if test "$need_locks" != no; then
+ $run $rm "$lockfile"
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool link mode
+ link | relink)
+ modename="$modename: link"
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # It is impossible to link a dll without this setting, and
+ # we shouldn't force the makefile maintainer to figure out
+ # which system we are compiling for in order to pass an extra
+ # flag for every libtool invocation.
+ # allow_undefined=no
+
+ # FIXME: Unfortunately, there are problems with the above when trying
+ # to make a dll which has undefined symbols, in which case not
+ # even a static library is built. For now, we need to specify
+ # -no-undefined on the libtool link line when we can be certain
+ # that all symbols are satisfied, otherwise we get a static library.
+ allow_undefined=yes
+ ;;
+ *)
+ allow_undefined=yes
+ ;;
+ esac
+ libtool_args="$nonopt"
+ base_compile="$nonopt $@"
+ compile_command="$nonopt"
+ finalize_command="$nonopt"
+
+ compile_rpath=
+ finalize_rpath=
+ compile_shlibpath=
+ finalize_shlibpath=
+ convenience=
+ old_convenience=
+ deplibs=
+ old_deplibs=
+ compiler_flags=
+ linker_flags=
+ dllsearchpath=
+ lib_search_path=`pwd`
+ inst_prefix_dir=
+
+ avoid_version=no
+ dlfiles=
+ dlprefiles=
+ dlself=no
+ export_dynamic=no
+ export_symbols=
+ export_symbols_regex=
+ generated=
+ libobjs=
+ ltlibs=
+ module=no
+ no_install=no
+ objs=
+ non_pic_objects=
+ notinst_path= # paths that contain not-installed libtool libraries
+ precious_files_regex=
+ prefer_static_libs=no
+ preload=no
+ prev=
+ prevarg=
+ release=
+ rpath=
+ xrpath=
+ perm_rpath=
+ temp_rpath=
+ thread_safe=no
+ vinfo=
+ vinfo_number=no
+
+ func_infer_tag $base_compile
+
+ # We need to know -static, to get the right output filenames.
+ for arg
+ do
+ case $arg in
+ -all-static | -static)
+ if test "X$arg" = "X-all-static"; then
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+ fi
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ else
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=built
+ fi
+ build_libtool_libs=no
+ build_old_libs=yes
+ break
+ ;;
+ esac
+ done
+
+ # See if our shared archives depend on static archives.
+ test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+ # Go through the arguments, transforming them on the way.
+ while test "$#" -gt 0; do
+ arg="$1"
+ shift
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+ ;;
+ *) qarg=$arg ;;
+ esac
+ libtool_args="$libtool_args $qarg"
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ output)
+ compile_command="$compile_command @OUTPUT@"
+ finalize_command="$finalize_command @OUTPUT@"
+ ;;
+ esac
+
+ case $prev in
+ dlfiles|dlprefiles)
+ if test "$preload" = no; then
+ # Add the symbol object into the linking commands.
+ compile_command="$compile_command @SYMFILE@"
+ finalize_command="$finalize_command @SYMFILE@"
+ preload=yes
+ fi
+ case $arg in
+ *.la | *.lo) ;; # We handle these cases below.
+ force)
+ if test "$dlself" = no; then
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ self)
+ if test "$prev" = dlprefiles; then
+ dlself=yes
+ elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+ dlself=yes
+ else
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ *)
+ if test "$prev" = dlfiles; then
+ dlfiles="$dlfiles $arg"
+ else
+ dlprefiles="$dlprefiles $arg"
+ fi
+ prev=
+ continue
+ ;;
+ esac
+ ;;
+ expsyms)
+ export_symbols="$arg"
+ if test ! -f "$arg"; then
+ $echo "$modename: symbol file \`$arg' does not exist"
+ exit $EXIT_FAILURE
+ fi
+ prev=
+ continue
+ ;;
+ expsyms_regex)
+ export_symbols_regex="$arg"
+ prev=
+ continue
+ ;;
+ inst_prefix)
+ inst_prefix_dir="$arg"
+ prev=
+ continue
+ ;;
+ precious_regex)
+ precious_files_regex="$arg"
+ prev=
+ continue
+ ;;
+ release)
+ release="-$arg"
+ prev=
+ continue
+ ;;
+ objectlist)
+ if test -f "$arg"; then
+ save_arg=$arg
+ moreargs=
+ for fil in `cat $save_arg`
+ do
+# moreargs="$moreargs $fil"
+ arg=$fil
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ # If there is no directory component, then add one.
+ case $arg in
+ */* | *\\*) . $arg ;;
+ *) . ./$arg ;;
+ esac
+
+ if test -z "$pic_object" || \
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none && \
+ test "$non_pic_object" = none; then
+ $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ dlfiles="$dlfiles $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ libobjs="$libobjs $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if test -z "$run"; then
+ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+ exit $EXIT_FAILURE
+ else
+ # Dry-run case.
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+ libobjs="$libobjs $pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ fi
+ done
+ else
+ $echo "$modename: link input file \`$save_arg' does not exist"
+ exit $EXIT_FAILURE
+ fi
+ arg=$save_arg
+ prev=
+ continue
+ ;;
+ rpath | xrpath)
+ # We need an absolute path.
+ case $arg in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ $echo "$modename: only absolute run-paths are allowed" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ if test "$prev" = rpath; then
+ case "$rpath " in
+ *" $arg "*) ;;
+ *) rpath="$rpath $arg" ;;
+ esac
+ else
+ case "$xrpath " in
+ *" $arg "*) ;;
+ *) xrpath="$xrpath $arg" ;;
+ esac
+ fi
+ prev=
+ continue
+ ;;
+ xcompiler)
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ compile_command="$compile_command $qarg"
+ finalize_command="$finalize_command $qarg"
+ continue
+ ;;
+ xlinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $wl$qarg"
+ prev=
+ compile_command="$compile_command $wl$qarg"
+ finalize_command="$finalize_command $wl$qarg"
+ continue
+ ;;
+ xcclinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ compile_command="$compile_command $qarg"
+ finalize_command="$finalize_command $qarg"
+ continue
+ ;;
+ shrext)
+ shrext_cmds="$arg"
+ prev=
+ continue
+ ;;
+ darwin_framework|darwin_framework_skip)
+ test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ prev=
+ continue
+ ;;
+ *)
+ eval "$prev=\"\$arg\""
+ prev=
+ continue
+ ;;
+ esac
+ fi # test -n "$prev"
+
+ prevarg="$arg"
+
+ case $arg in
+ -all-static)
+ if test -n "$link_static_flag"; then
+ compile_command="$compile_command $link_static_flag"
+ finalize_command="$finalize_command $link_static_flag"
+ fi
+ continue
+ ;;
+
+ -allow-undefined)
+ # FIXME: remove this flag sometime in the future.
+ $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+ continue
+ ;;
+
+ -avoid-version)
+ avoid_version=yes
+ continue
+ ;;
+
+ -dlopen)
+ prev=dlfiles
+ continue
+ ;;
+
+ -dlpreopen)
+ prev=dlprefiles
+ continue
+ ;;
+
+ -export-dynamic)
+ export_dynamic=yes
+ continue
+ ;;
+
+ -export-symbols | -export-symbols-regex)
+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+ $echo "$modename: more than one -exported-symbols argument is not allowed"
+ exit $EXIT_FAILURE
+ fi
+ if test "X$arg" = "X-export-symbols"; then
+ prev=expsyms
+ else
+ prev=expsyms_regex
+ fi
+ continue
+ ;;
+
+ -framework|-arch|-isysroot)
+ case " $CC " in
+ *" ${arg} ${1} "* | *" ${arg} ${1} "*)
+ prev=darwin_framework_skip ;;
+ *) compiler_flags="$compiler_flags $arg"
+ prev=darwin_framework ;;
+ esac
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ continue
+ ;;
+
+ -inst-prefix-dir)
+ prev=inst_prefix
+ continue
+ ;;
+
+ # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+ # so, if we see these flags be careful not to treat them like -L
+ -L[A-Z][A-Z]*:*)
+ case $with_gcc/$host in
+ no/*-*-irix* | /*-*-irix*)
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ ;;
+ esac
+ continue
+ ;;
+
+ -L*)
+ dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+ absdir="$dir"
+ notinst_path="$notinst_path $dir"
+ fi
+ dir="$absdir"
+ ;;
+ esac
+ case "$deplibs " in
+ *" -L$dir "*) ;;
+ *)
+ deplibs="$deplibs -L$dir"
+ lib_search_path="$lib_search_path $dir"
+ ;;
+ esac
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$dir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$testbindir";;
+ esac
+ ;;
+ esac
+ continue
+ ;;
+
+ -l*)
+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
+ # These systems don't actually have a C or math library (as such)
+ continue
+ ;;
+ *-*-os2*)
+ # These systems don't actually have a C library (as such)
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc due to us having libc/libc_r.
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C and math libraries are in the System framework
+ deplibs="$deplibs -framework System"
+ continue
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ test "X$arg" = "X-lc" && continue
+ ;;
+ esac
+ elif test "X$arg" = "X-lc_r"; then
+ case $host in
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc_r directly, use -pthread flag.
+ continue
+ ;;
+ esac
+ fi
+ deplibs="$deplibs $arg"
+ continue
+ ;;
+
+ # Tru64 UNIX uses -model [arg] to determine the layout of C++
+ # classes, name mangling, and exception handling.
+ -model)
+ compile_command="$compile_command $arg"
+ compiler_flags="$compiler_flags $arg"
+ finalize_command="$finalize_command $arg"
+ prev=xcompiler
+ continue
+ ;;
+
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+ compiler_flags="$compiler_flags $arg"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ continue
+ ;;
+
+ -module)
+ module=yes
+ continue
+ ;;
+
+ # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+ # -r[0-9][0-9]* specifies the processor on the SGI compiler
+ # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+ # +DA*, +DD* enable 64-bit mode on the HP compiler
+ # -q* pass through compiler args for the IBM compiler
+ # -m* pass through architecture-specific compiler args for GCC
+ # -m*, -t[45]*, -txscale* pass through architecture-specific
+ # compiler args for GCC
+ # -pg pass through profiling flag for GCC
+ # @file GCC response files
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
+ -t[45]*|-txscale*|@*)
+
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ compiler_flags="$compiler_flags $arg"
+ continue
+ ;;
+
+ -shrext)
+ prev=shrext
+ continue
+ ;;
+
+ -no-fast-install)
+ fast_install=no
+ continue
+ ;;
+
+ -no-install)
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # The PATH hackery in wrapper scripts is required on Windows
+ # in order for the loader to find any dlls it needs.
+ $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+ $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+ fast_install=no
+ ;;
+ *) no_install=yes ;;
+ esac
+ continue
+ ;;
+
+ -no-undefined)
+ allow_undefined=no
+ continue
+ ;;
+
+ -objectlist)
+ prev=objectlist
+ continue
+ ;;
+
+ -o) prev=output ;;
+
+ -precious-files-regex)
+ prev=precious_regex
+ continue
+ ;;
+
+ -release)
+ prev=release
+ continue
+ ;;
+
+ -rpath)
+ prev=rpath
+ continue
+ ;;
+
+ -R)
+ prev=xrpath
+ continue
+ ;;
+
+ -R*)
+ dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ $echo "$modename: only absolute run-paths are allowed" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ continue
+ ;;
+
+ -static)
+ # The effects of -static are defined in a previous loop.
+ # We used to do the same as -all-static on platforms that
+ # didn't have a PIC flag, but the assumption that the effects
+ # would be equivalent was wrong. It would break on at least
+ # Digital Unix and AIX.
+ continue
+ ;;
+
+ -thread-safe)
+ thread_safe=yes
+ continue
+ ;;
+
+ -version-info)
+ prev=vinfo
+ continue
+ ;;
+ -version-number)
+ prev=vinfo
+ vinfo_number=yes
+ continue
+ ;;
+
+ -Wc,*)
+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ case $flag in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ flag="\"$flag\""
+ ;;
+ esac
+ arg="$arg $wl$flag"
+ compiler_flags="$compiler_flags $flag"
+ done
+ IFS="$save_ifs"
+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+ ;;
+
+ -Wl,*)
+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ case $flag in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ flag="\"$flag\""
+ ;;
+ esac
+ arg="$arg $wl$flag"
+ compiler_flags="$compiler_flags $wl$flag"
+ linker_flags="$linker_flags $flag"
+ done
+ IFS="$save_ifs"
+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+ ;;
+
+ -Xcompiler)
+ prev=xcompiler
+ continue
+ ;;
+
+ -Xlinker)
+ prev=xlinker
+ continue
+ ;;
+
+ -XCClinker)
+ prev=xcclinker
+ continue
+ ;;
+
+ # Some other compiler flag.
+ -* | +*)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ ;;
+
+ *.$objext)
+ # A standard object.
+ objs="$objs $arg"
+ ;;
+
+ *.lo)
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ # If there is no directory component, then add one.
+ case $arg in
+ */* | *\\*) . $arg ;;
+ *) . ./$arg ;;
+ esac
+
+ if test -z "$pic_object" || \
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none && \
+ test "$non_pic_object" = none; then
+ $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ dlfiles="$dlfiles $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ libobjs="$libobjs $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if test -z "$run"; then
+ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+ exit $EXIT_FAILURE
+ else
+ # Dry-run case.
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+ libobjs="$libobjs $pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ fi
+ ;;
+
+ *.$libext)
+ # An archive.
+ deplibs="$deplibs $arg"
+ old_deplibs="$old_deplibs $arg"
+ continue
+ ;;
+
+ *.la)
+ # A libtool-controlled library.
+
+ if test "$prev" = dlfiles; then
+ # This library was specified with -dlopen.
+ dlfiles="$dlfiles $arg"
+ prev=
+ elif test "$prev" = dlprefiles; then
+ # The library was specified with -dlpreopen.
+ dlprefiles="$dlprefiles $arg"
+ prev=
+ else
+ deplibs="$deplibs $arg"
+ fi
+ continue
+ ;;
+
+ # Some other compiler argument.
+ *)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ ;;
+ esac # arg
+
+ # Now actually substitute the argument into the commands.
+ if test -n "$arg"; then
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ fi
+ done # argument parsing loop
+
+ if test -n "$prev"; then
+ $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+ eval arg=\"$export_dynamic_flag_spec\"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ fi
+
+ oldlibs=
+ # calculate the name of the file, without its directory
+ outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+ libobjs_save="$libobjs"
+
+ if test -n "$shlibpath_var"; then
+ # get the directories listed in $shlibpath_var
+ eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+ else
+ shlib_search_path=
+ fi
+ eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+ output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$output_objdir" = "X$output"; then
+ output_objdir="$objdir"
+ else
+ output_objdir="$output_objdir/$objdir"
+ fi
+ # Create the object directory.
+ if test ! -d "$output_objdir"; then
+ $show "$mkdir $output_objdir"
+ $run $mkdir $output_objdir
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
+ exit $exit_status
+ fi
+ fi
+
+ # Determine the type of output
+ case $output in
+ "")
+ $echo "$modename: you must specify an output file" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ *.$libext) linkmode=oldlib ;;
+ *.lo | *.$objext) linkmode=obj ;;
+ *.la) linkmode=lib ;;
+ *) linkmode=prog ;; # Anything else should be a program.
+ esac
+
+ case $host in
+ *cygwin* | *mingw* | *pw32*)
+ # don't eliminate duplications in $postdeps and $predeps
+ duplicate_compiler_generated_deps=yes
+ ;;
+ *)
+ duplicate_compiler_generated_deps=$duplicate_deps
+ ;;
+ esac
+ specialdeplibs=
+
+ libs=
+ # Find all interdependent deplibs by searching for libraries
+ # that are linked more than once (e.g. -la -lb -la)
+ for deplib in $deplibs; do
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ libs="$libs $deplib"
+ done
+
+ if test "$linkmode" = lib; then
+ libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+ # Compute libraries that are listed more than once in $predeps
+ # $postdeps and mark them as special (i.e., whose duplicates are
+ # not to be eliminated).
+ pre_post_deps=
+ if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
+ for pre_post_dep in $predeps $postdeps; do
+ case "$pre_post_deps " in
+ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+ esac
+ pre_post_deps="$pre_post_deps $pre_post_dep"
+ done
+ fi
+ pre_post_deps=
+ fi
+
+ deplibs=
+ newdependency_libs=
+ newlib_search_path=
+ need_relink=no # whether we're linking any uninstalled libtool libraries
+ notinst_deplibs= # not-installed libtool libraries
+ case $linkmode in
+ lib)
+ passes="conv link"
+ for file in $dlfiles $dlprefiles; do
+ case $file in
+ *.la) ;;
+ *)
+ $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ done
+ ;;
+ prog)
+ compile_deplibs=
+ finalize_deplibs=
+ alldeplibs=no
+ newdlfiles=
+ newdlprefiles=
+ passes="conv scan dlopen dlpreopen link"
+ ;;
+ *) passes="conv"
+ ;;
+ esac
+ for pass in $passes; do
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan"; then
+ libs="$deplibs"
+ deplibs=
+ fi
+ if test "$linkmode" = prog; then
+ case $pass in
+ dlopen) libs="$dlfiles" ;;
+ dlpreopen) libs="$dlprefiles" ;;
+ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+ esac
+ fi
+ if test "$pass" = dlopen; then
+ # Collect dlpreopened libraries
+ save_deplibs="$deplibs"
+ deplibs=
+ fi
+ for deplib in $libs; do
+ lib=
+ found=no
+ case $deplib in
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ compiler_flags="$compiler_flags $deplib"
+ fi
+ continue
+ ;;
+ -l*)
+ if test "$linkmode" != lib && test "$linkmode" != prog; then
+ $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+ continue
+ fi
+ name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+ for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ for search_ext in .la $std_shrext .so .a; do
+ # Search the libtool library
+ lib="$searchdir/lib${name}${search_ext}"
+ if test -f "$lib"; then
+ if test "$search_ext" = ".la"; then
+ found=yes
+ else
+ found=no
+ fi
+ break 2
+ fi
+ done
+ done
+ if test "$found" != yes; then
+ # deplib doesn't seem to be a libtool library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ else # deplib is a libtool library
+ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+ # We need to do some special things here, and not later.
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $deplib "*)
+ if (${SED} -e '2q' $lib |
+ grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ library_names=
+ old_library=
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+ for l in $old_library $library_names; do
+ ll="$l"
+ done
+ if test "X$ll" = "X$old_library" ; then # only static version available
+ found=no
+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$ladir" = "X$lib" && ladir="."
+ lib=$ladir/$old_library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ fi
+ fi
+ ;;
+ *) ;;
+ esac
+ fi
+ fi
+ ;; # -l
+ -L*)
+ case $linkmode in
+ lib)
+ deplibs="$deplib $deplibs"
+ test "$pass" = conv && continue
+ newdependency_libs="$deplib $newdependency_libs"
+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ ;;
+ prog)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ if test "$pass" = scan; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ ;;
+ *)
+ $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+ ;;
+ esac # linkmode
+ continue
+ ;; # -L
+ -R*)
+ if test "$pass" = link; then
+ dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+ # Make sure the xrpath contains only unique directories.
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
+ ;;
+ *.la) lib="$deplib" ;;
+ *.$libext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ case $linkmode in
+ lib)
+ valid_a_lib=no
+ case $deplibs_check_method in
+ match_pattern*)
+ set dummy $deplibs_check_method
+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ if eval $echo \"$deplib\" 2>/dev/null \
+ | $SED 10q \
+ | $EGREP "$match_pattern_regex" > /dev/null; then
+ valid_a_lib=yes
+ fi
+ ;;
+ pass_all)
+ valid_a_lib=yes
+ ;;
+ esac
+ if test "$valid_a_lib" != yes; then
+ $echo
+ $echo "*** Warning: Trying to link with static lib archive $deplib."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have"
+ $echo "*** because the file extensions .$libext of this argument makes me believe"
+ $echo "*** that it is just a static archive that I should not used here."
+ else
+ $echo
+ $echo "*** Warning: Linking the shared library $output against the"
+ $echo "*** static library $deplib is not portable!"
+ deplibs="$deplib $deplibs"
+ fi
+ continue
+ ;;
+ prog)
+ if test "$pass" != link; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ continue
+ ;;
+ esac # linkmode
+ ;; # *.$libext
+ *.lo | *.$objext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ elif test "$linkmode" = prog; then
+ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+ # If there is no dlopen support or we're linking statically,
+ # we need to preload.
+ newdlprefiles="$newdlprefiles $deplib"
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ newdlfiles="$newdlfiles $deplib"
+ fi
+ fi
+ continue
+ ;;
+ %DEPLIBS%)
+ alldeplibs=yes
+ continue
+ ;;
+ esac # case $deplib
+ if test "$found" = yes || test -f "$lib"; then :
+ else
+ $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$ladir" = "X$lib" && ladir="."
+
+ dlname=
+ dlopen=
+ dlpreopen=
+ libdir=
+ library_names=
+ old_library=
+ # If the library was installed with an old release of libtool,
+ # it will not redefine variables installed, or shouldnotlink
+ installed=yes
+ shouldnotlink=no
+ avoidtemprpath=
+
+
+ # Read the .la file
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan" ||
+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+ test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+ test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+ fi
+
+ if test "$pass" = conv; then
+ # Only check for convenience libraries
+ deplibs="$lib $deplibs"
+ if test -z "$libdir"; then
+ if test -z "$old_library"; then
+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ # It is a libtool convenience library, so add in its objects.
+ convenience="$convenience $ladir/$objdir/$old_library"
+ old_convenience="$old_convenience $ladir/$objdir/$old_library"
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
+ $echo "$modename: \`$lib' is not a convenience library" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ continue
+ fi # $pass = conv
+
+
+ # Get the name of the library we link against.
+ linklib=
+ for l in $old_library $library_names; do
+ linklib="$l"
+ done
+ if test -z "$linklib"; then
+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # This library was specified with -dlopen.
+ if test "$pass" = dlopen; then
+ if test -z "$libdir"; then
+ $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test -z "$dlname" ||
+ test "$dlopen_support" != yes ||
+ test "$build_libtool_libs" = no; then
+ # If there is no dlname, no dlopen support or we're linking
+ # statically, we need to preload. We also need to preload any
+ # dependent libraries so libltdl's deplib preloader doesn't
+ # bomb out in the load deplibs phase.
+ dlprefiles="$dlprefiles $lib $dependency_libs"
+ else
+ newdlfiles="$newdlfiles $lib"
+ fi
+ continue
+ fi # $pass = dlopen
+
+ # We need an absolute path.
+ case $ladir in
+ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+ *)
+ abs_ladir=`cd "$ladir" && pwd`
+ if test -z "$abs_ladir"; then
+ $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+ $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+ abs_ladir="$ladir"
+ fi
+ ;;
+ esac
+ laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ $echo "$modename: warning: library \`$lib' was moved." 1>&2
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+ dir="$libdir"
+ absdir="$libdir"
+ fi
+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+ else
+ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ dir="$ladir"
+ absdir="$abs_ladir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ else
+ dir="$ladir/$objdir"
+ absdir="$abs_ladir/$objdir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ fi
+ fi # $installed = yes
+ name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+ # This library was specified with -dlpreopen.
+ if test "$pass" = dlpreopen; then
+ if test -z "$libdir"; then
+ $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ # Prefer using a static library (so that no silly _DYNAMIC symbols
+ # are required to link).
+ if test -n "$old_library"; then
+ newdlprefiles="$newdlprefiles $dir/$old_library"
+ # Otherwise, use the dlname, so that lt_dlopen finds it.
+ elif test -n "$dlname"; then
+ newdlprefiles="$newdlprefiles $dir/$dlname"
+ else
+ newdlprefiles="$newdlprefiles $dir/$linklib"
+ fi
+ fi # $pass = dlpreopen
+
+ if test -z "$libdir"; then
+ # Link the convenience library
+ if test "$linkmode" = lib; then
+ deplibs="$dir/$old_library $deplibs"
+ elif test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$dir/$old_library $compile_deplibs"
+ finalize_deplibs="$dir/$old_library $finalize_deplibs"
+ else
+ deplibs="$lib $deplibs" # used for prog,scan pass
+ fi
+ continue
+ fi
+
+
+ if test "$linkmode" = prog && test "$pass" != link; then
+ newlib_search_path="$newlib_search_path $ladir"
+ deplibs="$lib $deplibs"
+
+ linkalldeplibs=no
+ if test "$link_all_deplibs" != no || test -z "$library_names" ||
+ test "$build_libtool_libs" = no; then
+ linkalldeplibs=yes
+ fi
+
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+ esac
+ # Need to link against all dependency_libs?
+ if test "$linkalldeplibs" = yes; then
+ deplibs="$deplib $deplibs"
+ else
+ # Need to hardcode shared library paths
+ # or/and link against static libraries
+ newdependency_libs="$deplib $newdependency_libs"
+ fi
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done # for deplib
+ continue
+ fi # $linkmode = prog...
+
+ if test "$linkmode,$pass" = "prog,link"; then
+ if test -n "$library_names" &&
+ { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+ # We need to hardcode the library path
+ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+ # Make sure the rpath contains only unique directories.
+ case "$temp_rpath " in
+ *" $dir "*) ;;
+ *" $absdir "*) ;;
+ *) temp_rpath="$temp_rpath $absdir" ;;
+ esac
+ fi
+
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi # $linkmode,$pass = prog,link...
+
+ if test "$alldeplibs" = yes &&
+ { test "$deplibs_check_method" = pass_all ||
+ { test "$build_libtool_libs" = yes &&
+ test -n "$library_names"; }; }; then
+ # We only need to search for static libraries
+ continue
+ fi
+ fi
+
+ link_static=no # Whether the deplib will be linked statically
+ use_static_libs=$prefer_static_libs
+ if test "$use_static_libs" = built && test "$installed" = yes ; then
+ use_static_libs=no
+ fi
+ if test -n "$library_names" &&
+ { test "$use_static_libs" = no || test -z "$old_library"; }; then
+ if test "$installed" = no; then
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=yes
+ fi
+ # This is a shared library
+
+ # Warn about portability, can't link against -module's on
+ # some systems (darwin)
+ if test "$shouldnotlink" = yes && test "$pass" = link ; then
+ $echo
+ if test "$linkmode" = prog; then
+ $echo "*** Warning: Linking the executable $output against the loadable module"
+ else
+ $echo "*** Warning: Linking the shared library $output against the loadable module"
+ fi
+ $echo "*** $linklib is not portable!"
+ fi
+ if test "$linkmode" = lib &&
+ test "$hardcode_into_libs" = yes; then
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi
+
+ if test -n "$old_archive_from_expsyms_cmds"; then
+ # figure out the soname
+ set dummy $library_names
+ realname="$2"
+ shift; shift
+ libname=`eval \\$echo \"$libname_spec\"`
+ # use dlname if we got it. it's perfectly good, no?
+ if test -n "$dlname"; then
+ soname="$dlname"
+ elif test -n "$soname_spec"; then
+ # bleh windows
+ case $host in
+ *cygwin* | mingw*)
+ major=`expr $current - $age`
+ versuffix="-$major"
+ ;;
+ esac
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+
+ # Make a new name for the extract_expsyms_cmds to use
+ soroot="$soname"
+ soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
+ newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+ # If the library has no export list, then create one now
+ if test -f "$output_objdir/$soname-def"; then :
+ else
+ $show "extracting exported symbol list from \`$soname'"
+ save_ifs="$IFS"; IFS='~'
+ cmds=$extract_expsyms_cmds
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ # Create $newlib
+ if test -f "$output_objdir/$newlib"; then :; else
+ $show "generating import library for \`$soname'"
+ save_ifs="$IFS"; IFS='~'
+ cmds=$old_archive_from_expsyms_cmds
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+ # make sure the library variables are pointing to the new library
+ dir=$output_objdir
+ linklib=$newlib
+ fi # test -n "$old_archive_from_expsyms_cmds"
+
+ if test "$linkmode" = prog || test "$mode" != relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ lib_linked=yes
+ case $hardcode_action in
+ immediate | unsupported)
+ if test "$hardcode_direct" = no; then
+ add="$dir/$linklib"
+ case $host in
+ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+ *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+ *-*-unixware7*) add_dir="-L$dir" ;;
+ *-*-darwin* )
+ # if the lib is a module then we can not link against
+ # it, someone is ignoring the new warnings I added
+ if /usr/bin/file -L $add 2> /dev/null |
+ $EGREP ": [^:]* bundle" >/dev/null ; then
+ $echo "** Warning, lib $linklib is a module, not a shared library"
+ if test -z "$old_library" ; then
+ $echo
+ $echo "** And there doesn't seem to be a static archive available"
+ $echo "** The link will probably fail, sorry"
+ else
+ add="$dir/$old_library"
+ fi
+ fi
+ esac
+ elif test "$hardcode_minus_L" = no; then
+ case $host in
+ *-*-sunos*) add_shlibpath="$dir" ;;
+ esac
+ add_dir="-L$dir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = no; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ relink)
+ if test "$hardcode_direct" = yes; then
+ add="$dir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$dir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ *) lib_linked=no ;;
+ esac
+
+ if test "$lib_linked" != yes; then
+ $echo "$modename: configuration error: unsupported hardcode properties"
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$add_shlibpath"; then
+ case :$compile_shlibpath: in
+ *":$add_shlibpath:"*) ;;
+ *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+ esac
+ fi
+ if test "$linkmode" = prog; then
+ test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+ test -n "$add" && compile_deplibs="$add $compile_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ if test "$hardcode_direct" != yes && \
+ test "$hardcode_minus_L" != yes && \
+ test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ fi
+ fi
+ fi
+
+ if test "$linkmode" = prog || test "$mode" = relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ # Finalize command for both is simple: just hardcode it.
+ if test "$hardcode_direct" = yes; then
+ add="$libdir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$libdir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ add="-l$name"
+ elif test "$hardcode_automatic" = yes; then
+ if test -n "$inst_prefix_dir" &&
+ test -f "$inst_prefix_dir$libdir/$linklib" ; then
+ add="$inst_prefix_dir$libdir/$linklib"
+ else
+ add="$libdir/$linklib"
+ fi
+ else
+ # We cannot seem to hardcode it, guess we'll fake it.
+ add_dir="-L$libdir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ fi
+
+ if test "$linkmode" = prog; then
+ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+ test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ fi
+ fi
+ elif test "$linkmode" = prog; then
+ # Here we assume that one of hardcode_direct or hardcode_minus_L
+ # is not unsupported. This is valid on all known static and
+ # shared platforms.
+ if test "$hardcode_direct" != unsupported; then
+ test -n "$old_library" && linklib="$old_library"
+ compile_deplibs="$dir/$linklib $compile_deplibs"
+ finalize_deplibs="$dir/$linklib $finalize_deplibs"
+ else
+ compile_deplibs="-l$name -L$dir $compile_deplibs"
+ finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+ fi
+ elif test "$build_libtool_libs" = yes; then
+ # Not a shared library
+ if test "$deplibs_check_method" != pass_all; then
+ # We're trying link a shared library against a static one
+ # but the system doesn't support it.
+
+ # Just print a warning and add the library to dependency_libs so
+ # that the program can be linked against the static library.
+ $echo
+ $echo "*** Warning: This system can not link to static lib archive $lib."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have."
+ if test "$module" = yes; then
+ $echo "*** But as you try to build a module library, libtool will still create "
+ $echo "*** a static module, that should work as long as the dlopening application"
+ $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+ if test -z "$global_symbol_pipe"; then
+ $echo
+ $echo "*** However, this would only work if libtool was able to extract symbol"
+ $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ $echo "*** not find such a program. So, this module is probably useless."
+ $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+ fi
+ if test "$build_old_libs" = no; then
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ else
+ deplibs="$dir/$old_library $deplibs"
+ link_static=yes
+ fi
+ fi # link shared/static library?
+
+ if test "$linkmode" = lib; then
+ if test -n "$dependency_libs" &&
+ { test "$hardcode_into_libs" != yes ||
+ test "$build_old_libs" = yes ||
+ test "$link_static" = yes; }; then
+ # Extract -R from dependency_libs
+ temp_deplibs=
+ for libdir in $dependency_libs; do
+ case $libdir in
+ -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+ *) xrpath="$xrpath $temp_xrpath";;
+ esac;;
+ *) temp_deplibs="$temp_deplibs $libdir";;
+ esac
+ done
+ dependency_libs="$temp_deplibs"
+ fi
+
+ newlib_search_path="$newlib_search_path $absdir"
+ # Link against this library
+ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+ # ... and its dependency_libs
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ newdependency_libs="$deplib $newdependency_libs"
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+
+ if test "$link_all_deplibs" != no; then
+ # Add the search paths of all dependency libraries
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) path="$deplib" ;;
+ *.la)
+ dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$deplib" && dir="."
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+ absdir="$dir"
+ fi
+ ;;
+ esac
+ if grep "^installed=no" $deplib > /dev/null; then
+ path="$absdir/$objdir"
+ else
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test "$absdir" != "$libdir"; then
+ $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+ fi
+ path="$absdir"
+ fi
+ depdepl=
+ case $host in
+ *-*-darwin*)
+ # we do not want to link against static libs,
+ # but need to link against shared
+ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+ if test -n "$deplibrary_names" ; then
+ for tmp in $deplibrary_names ; do
+ depdepl=$tmp
+ done
+ if test -f "$path/$depdepl" ; then
+ depdepl="$path/$depdepl"
+ fi
+ # do not add paths which are already there
+ case " $newlib_search_path " in
+ *" $path "*) ;;
+ *) newlib_search_path="$newlib_search_path $path";;
+ esac
+ fi
+ path=""
+ ;;
+ *)
+ path="-L$path"
+ ;;
+ esac
+ ;;
+ -l*)
+ case $host in
+ *-*-darwin*)
+ # Again, we only want to link against shared libraries
+ eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+ for tmp in $newlib_search_path ; do
+ if test -f "$tmp/lib$tmp_libs.dylib" ; then
+ eval depdepl="$tmp/lib$tmp_libs.dylib"
+ break
+ fi
+ done
+ path=""
+ ;;
+ *) continue ;;
+ esac
+ ;;
+ *) continue ;;
+ esac
+ case " $deplibs " in
+ *" $path "*) ;;
+ *) deplibs="$path $deplibs" ;;
+ esac
+ case " $deplibs " in
+ *" $depdepl "*) ;;
+ *) deplibs="$depdepl $deplibs" ;;
+ esac
+ done
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+ done # for deplib in $libs
+ dependency_libs="$newdependency_libs"
+ if test "$pass" = dlpreopen; then
+ # Link the dlpreopened libraries before other libraries
+ for deplib in $save_deplibs; do
+ deplibs="$deplib $deplibs"
+ done
+ fi
+ if test "$pass" != dlopen; then
+ if test "$pass" != conv; then
+ # Make sure lib_search_path contains only unique directories.
+ lib_search_path=
+ for dir in $newlib_search_path; do
+ case "$lib_search_path " in
+ *" $dir "*) ;;
+ *) lib_search_path="$lib_search_path $dir" ;;
+ esac
+ done
+ newlib_search_path=
+ fi
+
+ if test "$linkmode,$pass" != "prog,link"; then
+ vars="deplibs"
+ else
+ vars="compile_deplibs finalize_deplibs"
+ fi
+ for var in $vars dependency_libs; do
+ # Add libraries to $var in reverse order
+ eval tmp_libs=\"\$$var\"
+ new_libs=
+ for deplib in $tmp_libs; do
+ # FIXME: Pedantically, this is the right thing to do, so
+ # that some nasty dependency loop isn't accidentally
+ # broken:
+ #new_libs="$deplib $new_libs"
+ # Pragmatically, this seems to cause very few problems in
+ # practice:
+ case $deplib in
+ -L*) new_libs="$deplib $new_libs" ;;
+ -R*) ;;
+ *)
+ # And here is the reason: when a library appears more
+ # than once as an explicit dependence of a library, or
+ # is implicitly linked in more than once by the
+ # compiler, it is considered special, and multiple
+ # occurrences thereof are not removed. Compare this
+ # with having the same library being listed as a
+ # dependency of multiple other libraries: in this case,
+ # we know (pedantically, we assume) the library does not
+ # need to be listed more than once, so we keep only the
+ # last copy. This is not always right, but it is rare
+ # enough that we require users that really mean to play
+ # such unportable linking tricks to link the library
+ # using -Wl,-lname, so that libtool does not consider it
+ # for duplicate removal.
+ case " $specialdeplibs " in
+ *" $deplib "*) new_libs="$deplib $new_libs" ;;
+ *)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$deplib $new_libs" ;;
+ esac
+ ;;
+ esac
+ ;;
+ esac
+ done
+ tmp_libs=
+ for deplib in $new_libs; do
+ case $deplib in
+ -L*)
+ case " $tmp_libs " in
+ *" $deplib "*) ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ done
+ eval $var=\"$tmp_libs\"
+ done # for var
+ fi
+ # Last step: remove runtime libs from dependency_libs
+ # (they stay in deplibs)
+ tmp_libs=
+ for i in $dependency_libs ; do
+ case " $predeps $postdeps $compiler_lib_search_path " in
+ *" $i "*)
+ i=""
+ ;;
+ esac
+ if test -n "$i" ; then
+ tmp_libs="$tmp_libs $i"
+ fi
+ done
+ dependency_libs=$tmp_libs
+ done # for pass
+ if test "$linkmode" = prog; then
+ dlfiles="$newdlfiles"
+ dlprefiles="$newdlprefiles"
+ fi
+
+ case $linkmode in
+ oldlib)
+ if test -n "$deplibs"; then
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+ fi
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$rpath"; then
+ $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$xrpath"; then
+ $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+ $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+ fi
+
+ # Now set the variables for building old libraries.
+ build_libtool_libs=no
+ oldlibs="$output"
+ objs="$objs$old_deplibs"
+ ;;
+
+ lib)
+ # Make sure we only generate libraries of the form `libNAME.la'.
+ case $outputname in
+ lib*)
+ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ ;;
+ *)
+ if test "$module" = no; then
+ $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test "$need_lib_prefix" != no; then
+ # Add the "lib" prefix for modules if required
+ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ else
+ libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+ fi
+ ;;
+ esac
+
+ if test -n "$objs"; then
+ if test "$deplibs_check_method" != pass_all; then
+ $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+ exit $EXIT_FAILURE
+ else
+ $echo
+ $echo "*** Warning: Linking the shared library $output against the non-libtool"
+ $echo "*** objects $objs is not portable!"
+ libobjs="$libobjs $objs"
+ fi
+ fi
+
+ if test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+ fi
+
+ set dummy $rpath
+ if test "$#" -gt 2; then
+ $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+ fi
+ install_libdir="$2"
+
+ oldlibs=
+ if test -z "$rpath"; then
+ if test "$build_libtool_libs" = yes; then
+ # Building a libtool convenience library.
+ # Some compilers have problems with a `.al' extension so
+ # convenience libraries should have the same extension an
+ # archive normally would.
+ oldlibs="$output_objdir/$libname.$libext $oldlibs"
+ build_libtool_libs=convenience
+ build_old_libs=yes
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+ fi
+ else
+
+ # Parse the version information argument.
+ save_ifs="$IFS"; IFS=':'
+ set dummy $vinfo 0 0 0
+ IFS="$save_ifs"
+
+ if test -n "$8"; then
+ $echo "$modename: too many parameters to \`-version-info'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # convert absolute version numbers to libtool ages
+ # this retains compatibility with .la files and attempts
+ # to make the code below a bit more comprehensible
+
+ case $vinfo_number in
+ yes)
+ number_major="$2"
+ number_minor="$3"
+ number_revision="$4"
+ #
+ # There are really only two kinds -- those that
+ # use the current revision as the major version
+ # and those that subtract age and use age as
+ # a minor version. But, then there is irix
+ # which has an extra 1 added just for fun
+ #
+ case $version_type in
+ darwin|linux|osf|windows)
+ current=`expr $number_major + $number_minor`
+ age="$number_minor"
+ revision="$number_revision"
+ ;;
+ freebsd-aout|freebsd-elf|sunos)
+ current="$number_major"
+ revision="$number_minor"
+ age="0"
+ ;;
+ irix|nonstopux)
+ current=`expr $number_major + $number_minor - 1`
+ age="$number_minor"
+ revision="$number_minor"
+ ;;
+ esac
+ ;;
+ no)
+ current="$2"
+ revision="$3"
+ age="$4"
+ ;;
+ esac
+
+ # Check that each of the things are valid numbers.
+ case $current in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $revision in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $age in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ if test "$age" -gt "$current"; then
+ $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Calculate the version variables.
+ major=
+ versuffix=
+ verstring=
+ case $version_type in
+ none) ;;
+
+ darwin)
+ # Like Linux, but with the current version available in
+ # verstring for coding it into the library header
+ major=.`expr $current - $age`
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+ minor_current=`expr $current + 1`
+ verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ ;;
+
+ freebsd-aout)
+ major=".$current"
+ versuffix=".$current.$revision";
+ ;;
+
+ freebsd-elf)
+ major=".$current"
+ versuffix=".$current";
+ ;;
+
+ irix | nonstopux)
+ major=`expr $current - $age + 1`
+
+ case $version_type in
+ nonstopux) verstring_prefix=nonstopux ;;
+ *) verstring_prefix=sgi ;;
+ esac
+ verstring="$verstring_prefix$major.$revision"
+
+ # Add in all the interfaces that we are compatible with.
+ loop=$revision
+ while test "$loop" -ne 0; do
+ iface=`expr $revision - $loop`
+ loop=`expr $loop - 1`
+ verstring="$verstring_prefix$major.$iface:$verstring"
+ done
+
+ # Before this point, $major must not contain `.'.
+ major=.$major
+ versuffix="$major.$revision"
+ ;;
+
+ linux)
+ major=.`expr $current - $age`
+ versuffix="$major.$age.$revision"
+ ;;
+
+ osf)
+ major=.`expr $current - $age`
+ versuffix=".$current.$age.$revision"
+ verstring="$current.$age.$revision"
+
+ # Add in all the interfaces that we are compatible with.
+ loop=$age
+ while test "$loop" -ne 0; do
+ iface=`expr $current - $loop`
+ loop=`expr $loop - 1`
+ verstring="$verstring:${iface}.0"
+ done
+
+ # Make executables depend on our current version.
+ verstring="$verstring:${current}.0"
+ ;;
+
+ sunos)
+ major=".$current"
+ versuffix=".$current.$revision"
+ ;;
+
+ windows)
+ # Use '-' rather than '.', since we only want one
+ # extension on DOS 8.3 filesystems.
+ major=`expr $current - $age`
+ versuffix="-$major"
+ ;;
+
+ *)
+ $echo "$modename: unknown library version type \`$version_type'" 1>&2
+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ # Clear the version info if we defaulted, and they specified a release.
+ if test -z "$vinfo" && test -n "$release"; then
+ major=
+ case $version_type in
+ darwin)
+ # we can't check for "0.0" in archive_cmds due to quoting
+ # problems, so we reset it completely
+ verstring=
+ ;;
+ *)
+ verstring="0.0"
+ ;;
+ esac
+ if test "$need_version" = no; then
+ versuffix=
+ else
+ versuffix=".0.0"
+ fi
+ fi
+
+ # Remove version info from name if versioning should be avoided
+ if test "$avoid_version" = yes && test "$need_version" = no; then
+ major=
+ versuffix=
+ verstring=""
+ fi
+
+ # Check to see if the archive will have undefined symbols.
+ if test "$allow_undefined" = yes; then
+ if test "$allow_undefined_flag" = unsupported; then
+ $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+ build_libtool_libs=no
+ build_old_libs=yes
+ fi
+ else
+ # Don't allow undefined symbols.
+ allow_undefined_flag="$no_undefined_flag"
+ fi
+ fi
+
+ if test "$mode" != relink; then
+ # Remove our outputs, but don't remove object files since they
+ # may have been created when compiling PIC objects.
+ removelist=
+ tempremovelist=`$echo "$output_objdir/*"`
+ for p in $tempremovelist; do
+ case $p in
+ *.$objext)
+ ;;
+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+ if test "X$precious_files_regex" != "X"; then
+ if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+ then
+ continue
+ fi
+ fi
+ removelist="$removelist $p"
+ ;;
+ *) ;;
+ esac
+ done
+ if test -n "$removelist"; then
+ $show "${rm}r $removelist"
+ $run ${rm}r $removelist
+ fi
+ fi
+
+ # Now set the variables for building old libraries.
+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+ oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+ # Transform .lo files to .o files.
+ oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+ fi
+
+ # Eliminate all temporary directories.
+ for path in $notinst_path; do
+ lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
+ deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+ dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
+ done
+
+ if test -n "$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ temp_xrpath=
+ for libdir in $xrpath; do
+ temp_xrpath="$temp_xrpath -R$libdir"
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir" ;;
+ esac
+ done
+ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+ dependency_libs="$temp_xrpath $dependency_libs"
+ fi
+ fi
+
+ # Make sure dlfiles contains only unique files that won't be dlpreopened
+ old_dlfiles="$dlfiles"
+ dlfiles=
+ for lib in $old_dlfiles; do
+ case " $dlprefiles $dlfiles " in
+ *" $lib "*) ;;
+ *) dlfiles="$dlfiles $lib" ;;
+ esac
+ done
+
+ # Make sure dlprefiles contains only unique files
+ old_dlprefiles="$dlprefiles"
+ dlprefiles=
+ for lib in $old_dlprefiles; do
+ case "$dlprefiles " in
+ *" $lib "*) ;;
+ *) dlprefiles="$dlprefiles $lib" ;;
+ esac
+ done
+
+ if test "$build_libtool_libs" = yes; then
+ if test -n "$rpath"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+ # these systems don't actually have a c library (as such)!
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C library is in the System framework
+ deplibs="$deplibs -framework System"
+ ;;
+ *-*-netbsd*)
+ # Don't link with libc until the a.out ld.so is fixed.
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc due to us having libc/libc_r.
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ ;;
+ *)
+ # Add libc to deplibs on all other systems if necessary.
+ if test "$build_libtool_need_lc" = "yes"; then
+ deplibs="$deplibs -lc"
+ fi
+ ;;
+ esac
+ fi
+
+ # Transform deplibs into only deplibs that can be linked in shared.
+ name_save=$name
+ libname_save=$libname
+ release_save=$release
+ versuffix_save=$versuffix
+ major_save=$major
+ # I'm not sure if I'm treating the release correctly. I think
+ # release should show up in the -l (ie -lgmp5) so we don't want to
+ # add it in twice. Is that correct?
+ release=""
+ versuffix=""
+ major=""
+ newdeplibs=
+ droppeddeps=no
+ case $deplibs_check_method in
+ pass_all)
+ # Don't check for shared/static. Everything works.
+ # This might be a little naive. We might want to check
+ # whether the library exists or not. But this is on
+ # osf3 & osf4 and I'm not really sure... Just
+ # implementing what was already the behavior.
+ newdeplibs=$deplibs
+ ;;
+ test_compile)
+ # This code stresses the "libraries are programs" paradigm to its
+ # limits. Maybe even breaks it. We compile a program, linking it
+ # against the deplibs as a proxy for the library. Then we can check
+ # whether they linked in statically or dynamically with ldd.
+ $rm conftest.c
+ cat > conftest.c <<EOF
+ int main() { return 0; }
+EOF
+ $rm conftest
+ $LTCC $LTCFLAGS -o conftest conftest.c $deplibs
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+ name=`expr $i : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" -ne "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ deplib_matches=`eval \\$echo \"$library_names_spec\"`
+ set dummy $deplib_matches
+ deplib_match=$2
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: dynamic linker does not accept needed library $i."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which I believe you do not have"
+ $echo "*** because a test_compile did reveal that the linker did not use it for"
+ $echo "*** its dynamic dependency list that programs get resolved with at runtime."
+ fi
+ fi
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ done
+ else
+ # Error occurred in the first compile. Let's try to salvage
+ # the situation: Compile a separate program for each library.
+ for i in $deplibs; do
+ name=`expr $i : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ $rm conftest
+ $LTCC $LTCFLAGS -o conftest conftest.c $i
+ # Did it work?
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ deplib_matches=`eval \\$echo \"$library_names_spec\"`
+ set dummy $deplib_matches
+ deplib_match=$2
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: dynamic linker does not accept needed library $i."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have"
+ $echo "*** because a test_compile did reveal that the linker did not use this one"
+ $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+ fi
+ fi
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning! Library $i is needed by this library but I was not able to"
+ $echo "*** make it link in! You will probably need to install it or some"
+ $echo "*** library that it depends on before this library will be fully"
+ $echo "*** functional. Installing it before continuing would be even better."
+ fi
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ done
+ fi
+ ;;
+ file_magic*)
+ set dummy $deplibs_check_method
+ file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+ name=`expr $a_deplib : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+ for potent_lib in $potential_libs; do
+ # Follow soft links.
+ if ls -lLd "$potent_lib" 2>/dev/null \
+ | grep " -> " >/dev/null; then
+ continue
+ fi
+ # The statement above tries to avoid entering an
+ # endless loop below, in case of cyclic links.
+ # We might still enter an endless loop, since a link
+ # loop can be closed while we follow links,
+ # but so what?
+ potlib="$potent_lib"
+ while test -h "$potlib" 2>/dev/null; do
+ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+ case $potliblink in
+ [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+ *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+ esac
+ done
+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+ | ${SED} 10q \
+ | $EGREP "$file_magic_regex" > /dev/null; then
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: linker path does not have real file for library $a_deplib."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have"
+ $echo "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib" ; then
+ $echo "*** with $libname but no candidates were found. (...for file magic test)"
+ else
+ $echo "*** with $libname and none of the candidates passed a file format test"
+ $echo "*** using a file magic. Last file checked: $potlib"
+ fi
+ fi
+ else
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ fi
+ done # Gone through all deplibs.
+ ;;
+ match_pattern*)
+ set dummy $deplibs_check_method
+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+ name=`expr $a_deplib : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test -n "$name" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+ for potent_lib in $potential_libs; do
+ potlib="$potent_lib" # see symlink-check above in file_magic test
+ if eval $echo \"$potent_lib\" 2>/dev/null \
+ | ${SED} 10q \
+ | $EGREP "$match_pattern_regex" > /dev/null; then
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: linker path does not have real file for library $a_deplib."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have"
+ $echo "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib" ; then
+ $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
+ else
+ $echo "*** with $libname and none of the candidates passed a file format test"
+ $echo "*** using a regex pattern. Last file checked: $potlib"
+ fi
+ fi
+ else
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ fi
+ done # Gone through all deplibs.
+ ;;
+ none | unknown | *)
+ newdeplibs=""
+ tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+ -e 's/ -[LR][^ ]*//g'`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ for i in $predeps $postdeps ; do
+ # can't use Xsed below, because $i might contain '/'
+ tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
+ done
+ fi
+ if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \
+ | grep . >/dev/null; then
+ $echo
+ if test "X$deplibs_check_method" = "Xnone"; then
+ $echo "*** Warning: inter-library dependencies are not supported in this platform."
+ else
+ $echo "*** Warning: inter-library dependencies are not known to be supported."
+ fi
+ $echo "*** All declared inter-library dependencies are being dropped."
+ droppeddeps=yes
+ fi
+ ;;
+ esac
+ versuffix=$versuffix_save
+ major=$major_save
+ release=$release_save
+ libname=$libname_save
+ name=$name_save
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+ newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ ;;
+ esac
+
+ if test "$droppeddeps" = yes; then
+ if test "$module" = yes; then
+ $echo
+ $echo "*** Warning: libtool could not satisfy all declared inter-library"
+ $echo "*** dependencies of module $libname. Therefore, libtool will create"
+ $echo "*** a static module, that should work as long as the dlopening"
+ $echo "*** application is linked with the -dlopen flag."
+ if test -z "$global_symbol_pipe"; then
+ $echo
+ $echo "*** However, this would only work if libtool was able to extract symbol"
+ $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ $echo "*** not find such a program. So, this module is probably useless."
+ $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+ fi
+ if test "$build_old_libs" = no; then
+ oldlibs="$output_objdir/$libname.$libext"
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ else
+ $echo "*** The inter-library dependencies that have been dropped here will be"
+ $echo "*** automatically added whenever a program is linked with this library"
+ $echo "*** or is declared to -dlopen it."
+
+ if test "$allow_undefined" = no; then
+ $echo
+ $echo "*** Since this library must not contain undefined symbols,"
+ $echo "*** because either the platform does not support them or"
+ $echo "*** it was explicitly requested with -no-undefined,"
+ $echo "*** libtool will only create a static version of it."
+ if test "$build_old_libs" = no; then
+ oldlibs="$output_objdir/$libname.$libext"
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ fi
+ fi
+ # Done checking deplibs!
+ deplibs=$newdeplibs
+ fi
+
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $deplibs " in
+ *" -L$path/$objdir "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ done
+ deplibs="$new_libs"
+
+
+ # All the library-specific variables (install_libdir is set above).
+ library_names=
+ old_library=
+ dlname=
+
+ # Test again, we may have decided not to build it any more
+ if test "$build_libtool_libs" = yes; then
+ if test "$hardcode_into_libs" = yes; then
+ # Hardcode the library paths
+ hardcode_libdirs=
+ dep_rpath=
+ rpath="$finalize_rpath"
+ test "$mode" != relink && rpath="$compile_rpath$rpath"
+ for libdir in $rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ dep_rpath="$dep_rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ if test -n "$hardcode_libdir_flag_spec_ld"; then
+ eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+ else
+ eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+ fi
+ fi
+ if test -n "$runpath_var" && test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+ fi
+ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+ fi
+
+ shlibpath="$finalize_shlibpath"
+ test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+ if test -n "$shlibpath"; then
+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+ fi
+
+ # Get the real and link names of the library.
+ eval shared_ext=\"$shrext_cmds\"
+ eval library_names=\"$library_names_spec\"
+ set dummy $library_names
+ realname="$2"
+ shift; shift
+
+ if test -n "$soname_spec"; then
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+ if test -z "$dlname"; then
+ dlname=$soname
+ fi
+
+ lib="$output_objdir/$realname"
+ linknames=
+ for link
+ do
+ linknames="$linknames $link"
+ done
+
+ # Use standard objects if they are pic
+ test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+ $show "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $run $rm $export_symbols
+ cmds=$export_symbols_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ if len=`expr "X$cmd" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ skipped_export=false
+ else
+ # The command line is too long to execute in one step.
+ $show "using reloadable object file for export list..."
+ skipped_export=:
+ # Break out early, otherwise skipped_export may be
+ # set to false by a later but shorter cmd.
+ break
+ fi
+ done
+ IFS="$save_ifs"
+ if test -n "$export_symbols_regex"; then
+ $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+ $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+ $run eval '$mv "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+ fi
+
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+ fi
+
+ tmp_deplibs=
+ for test_deplib in $deplibs; do
+ case " $convenience " in
+ *" $test_deplib "*) ;;
+ *)
+ tmp_deplibs="$tmp_deplibs $test_deplib"
+ ;;
+ esac
+ done
+ deplibs="$tmp_deplibs"
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ libobjs="$libobjs $func_extract_archives_result"
+ fi
+ fi
+
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ linker_flags="$linker_flags $flag"
+ fi
+
+ # Make a backup of the uninstalled library when relinking
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+ fi
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ eval test_cmds=\"$module_expsym_cmds\"
+ cmds=$module_expsym_cmds
+ else
+ eval test_cmds=\"$module_cmds\"
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ eval test_cmds=\"$archive_expsym_cmds\"
+ cmds=$archive_expsym_cmds
+ else
+ eval test_cmds=\"$archive_cmds\"
+ cmds=$archive_cmds
+ fi
+ fi
+
+ if test "X$skipped_export" != "X:" &&
+ len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ :
+ else
+ # The command line is too long to link in one step, link piecewise.
+ $echo "creating reloadable object files..."
+
+ # Save the value of $output and $libobjs because we want to
+ # use them later. If we have whole_archive_flag_spec, we
+ # want to use save_libobjs as it was before
+ # whole_archive_flag_spec was expanded, because we can't
+ # assume the linker understands whole_archive_flag_spec.
+ # This may have to be revisited, in case too many
+ # convenience libraries get linked in and end up exceeding
+ # the spec.
+ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ fi
+ save_output=$output
+ output_la=`$echo "X$output" | $Xsed -e "$basename"`
+
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+ test_cmds=
+ concat_cmds=
+ objlist=
+ delfiles=
+ last_robj=
+ k=1
+ output=$output_objdir/$output_la-${k}.$objext
+ # Loop over the list of objects to be linked.
+ for obj in $save_libobjs
+ do
+ eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+ if test "X$objlist" = X ||
+ { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$max_cmd_len"; }; then
+ objlist="$objlist $obj"
+ else
+ # The command $test_cmds is almost too long, add a
+ # command to the queue.
+ if test "$k" -eq 1 ; then
+ # The first file doesn't have a previous command to add.
+ eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+ else
+ # All subsequent reloadable object files will link in
+ # the last one created.
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+ fi
+ last_robj=$output_objdir/$output_la-${k}.$objext
+ k=`expr $k + 1`
+ output=$output_objdir/$output_la-${k}.$objext
+ objlist=$obj
+ len=1
+ fi
+ done
+ # Handle the remaining objects by creating one last
+ # reloadable object file. All subsequent reloadable object
+ # files will link in the last one created.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+
+ if ${skipped_export-false}; then
+ $show "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $run $rm $export_symbols
+ libobjs=$output
+ # Append the command to create the export file.
+ eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+ fi
+
+ # Set up a command to remove the reloadable object files
+ # after they are used.
+ i=0
+ while test "$i" -lt "$k"
+ do
+ i=`expr $i + 1`
+ delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
+ done
+
+ $echo "creating a temporary reloadable object file: $output"
+
+ # Loop through the commands generated above and execute them.
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $concat_cmds; do
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ libobjs=$output
+ # Restore the value of output.
+ output=$save_output
+
+ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ fi
+ # Expand the library linking commands again to reset the
+ # value of $libobjs for piecewise linking.
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ cmds=$module_expsym_cmds
+ else
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ cmds=$archive_expsym_cmds
+ else
+ cmds=$archive_cmds
+ fi
+ fi
+
+ # Append the command to remove the reloadable object files
+ # to the just-reset $cmds.
+ eval cmds=\"\$cmds~\$rm $delfiles\"
+ fi
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+
+ if test -n "$convenience"; then
+ if test -z "$whole_archive_flag_spec"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r "$gentop"
+ fi
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ # Create links to the real library.
+ for linkname in $linknames; do
+ if test "$realname" != "$linkname"; then
+ $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+ $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+ fi
+ done
+
+ # If -module or -export-dynamic was specified, set the dlname.
+ if test "$module" = yes || test "$export_dynamic" = yes; then
+ # On all known operating systems, these are identical.
+ dlname="$soname"
+ fi
+ fi
+ ;;
+
+ obj)
+ if test -n "$deplibs"; then
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+ fi
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$rpath"; then
+ $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$xrpath"; then
+ $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+ fi
+
+ case $output in
+ *.lo)
+ if test -n "$objs$old_deplibs"; then
+ $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ libobj="$output"
+ obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+ ;;
+ *)
+ libobj=
+ obj="$output"
+ ;;
+ esac
+
+ # Delete the old objects.
+ $run $rm $obj $libobj
+
+ # Objects from convenience libraries. This assumes
+ # single-version convenience libraries. Whenever we create
+ # different ones for PIC/non-PIC, this we'll have to duplicate
+ # the extraction.
+ reload_conv_objs=
+ gentop=
+ # reload_cmds runs $LD directly, so let us get rid of
+ # -Wl from whole_archive_flag_spec
+ wl=
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${obj}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ reload_conv_objs="$reload_objs $func_extract_archives_result"
+ fi
+ fi
+
+ # Create the old-style object.
+ reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+ output="$obj"
+ cmds=$reload_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ # Exit if we aren't doing a library object file.
+ if test -z "$libobj"; then
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$build_libtool_libs" != yes; then
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ # Create an invalid libtool object if no PIC, so that we don't
+ # accidentally link it into a program.
+ # $show "echo timestamp > $libobj"
+ # $run eval "echo timestamp > $libobj" || exit $?
+ exit $EXIT_SUCCESS
+ fi
+
+ if test -n "$pic_flag" || test "$pic_mode" != default; then
+ # Only do commands if we really have different PIC objects.
+ reload_objs="$libobjs $reload_conv_objs"
+ output="$libobj"
+ cmds=$reload_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ prog)
+ case $host in
+ *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+ esac
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+ fi
+
+ if test "$preload" = yes; then
+ if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+ test "$dlopen_self_static" = unknown; then
+ $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+ fi
+ fi
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+ compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ ;;
+ esac
+
+ case $host in
+ *darwin*)
+ # Don't allow lazy linking, it breaks C++ global constructors
+ if test "$tagname" = CXX ; then
+ compile_command="$compile_command ${wl}-bind_at_load"
+ finalize_command="$finalize_command ${wl}-bind_at_load"
+ fi
+ ;;
+ esac
+
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $compile_deplibs " in
+ *" -L$path/$objdir "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $compile_deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ done
+ compile_deplibs="$new_libs"
+
+
+ compile_command="$compile_command $compile_deplibs"
+ finalize_command="$finalize_command $finalize_deplibs"
+
+ if test -n "$rpath$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ for libdir in $rpath $xrpath; do
+ # This is the magic to use -rpath.
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir" ;;
+ esac
+ done
+ fi
+
+ # Now hardcode the library paths
+ rpath=
+ hardcode_libdirs=
+ for libdir in $compile_rpath $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$libdir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$testbindir";;
+ esac
+ ;;
+ esac
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ compile_rpath="$rpath"
+
+ rpath=
+ hardcode_libdirs=
+ for libdir in $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ finalize_rpath="$rpath"
+
+ if test -n "$libobjs" && test "$build_old_libs" = yes; then
+ # Transform all the library objects into standard objects.
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ fi
+
+ dlsyms=
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ if test -n "$NM" && test -n "$global_symbol_pipe"; then
+ dlsyms="${outputname}S.c"
+ else
+ $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+ fi
+ fi
+
+ if test -n "$dlsyms"; then
+ case $dlsyms in
+ "") ;;
+ *.c)
+ # Discover the nlist of each of the dlfiles.
+ nlist="$output_objdir/${outputname}.nm"
+
+ $show "$rm $nlist ${nlist}S ${nlist}T"
+ $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+ # Parse the name list into a source file.
+ $show "creating $output_objdir/$dlsyms"
+
+ test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+ if test "$dlself" = yes; then
+ $show "generating symbol list for \`$output'"
+
+ test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+ # Add our own program objects to the symbol list.
+ progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ for arg in $progfiles; do
+ $show "extracting global C symbols from \`$arg'"
+ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -n "$exclude_expsyms"; then
+ $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+ $run eval '$mv "$nlist"T "$nlist"'
+ fi
+
+ if test -n "$export_symbols_regex"; then
+ $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+ $run eval '$mv "$nlist"T "$nlist"'
+ fi
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ export_symbols="$output_objdir/$outputname.exp"
+ $run $rm $export_symbols
+ $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ case $host in
+ *cygwin* | *mingw* )
+ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ else
+ $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+ $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+ $run eval 'mv "$nlist"T "$nlist"'
+ case $host in
+ *cygwin* | *mingw* )
+ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ fi
+ fi
+
+ for arg in $dlprefiles; do
+ $show "extracting global C symbols from \`$arg'"
+ name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
+ $run eval '$echo ": $name " >> "$nlist"'
+ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -z "$run"; then
+ # Make sure we have at least an empty file.
+ test -f "$nlist" || : > "$nlist"
+
+ if test -n "$exclude_expsyms"; then
+ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+ $mv "$nlist"T "$nlist"
+ fi
+
+ # Try sorting and uniquifying the output.
+ if grep -v "^: " < "$nlist" |
+ if sort -k 3 </dev/null >/dev/null 2>&1; then
+ sort -k 3
+ else
+ sort +2
+ fi |
+ uniq > "$nlist"S; then
+ :
+ else
+ grep -v "^: " < "$nlist" > "$nlist"S
+ fi
+
+ if test -f "$nlist"S; then
+ eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+ else
+ $echo '/* NONE */' >> "$output_objdir/$dlsyms"
+ fi
+
+ $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+"
+
+ case $host in
+ *cygwin* | *mingw* )
+ $echo >> "$output_objdir/$dlsyms" "\
+/* DATA imports from DLLs on WIN32 can't be const, because
+ runtime relocations are performed -- see ld's documentation
+ on pseudo-relocs */
+struct {
+"
+ ;;
+ * )
+ $echo >> "$output_objdir/$dlsyms" "\
+const struct {
+"
+ ;;
+ esac
+
+
+ $echo >> "$output_objdir/$dlsyms" "\
+ const char *name;
+ lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+ $echo >> "$output_objdir/$dlsyms" "\
+ {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+ fi
+
+ pic_flag_for_symtable=
+ case $host in
+ # compiling the symbol table file with pic_flag works around
+ # a FreeBSD bug that causes programs to crash when -lm is
+ # linked before any other PIC object. But we must not use
+ # pic_flag when linking with -static. The problem exists in
+ # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+ *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+ case "$compile_command " in
+ *" -static "*) ;;
+ *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+ esac;;
+ *-*-hpux*)
+ case "$compile_command " in
+ *" -static "*) ;;
+ *) pic_flag_for_symtable=" $pic_flag";;
+ esac
+ esac
+
+ # Now compile the dynamic symbol file.
+ $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+ $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+ # Clean up the generated files.
+ $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+ $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+ # Transform the symbol file into the correct name.
+ case $host in
+ *cygwin* | *mingw* )
+ if test -f "$output_objdir/${outputname}.def" ; then
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+ else
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ fi
+ ;;
+ * )
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ ;;
+ esac
+ ;;
+ *)
+ $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ else
+ # We keep going just in case the user didn't refer to
+ # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
+ # really was required.
+
+ # Nullify the symbol file.
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+ fi
+
+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+ # Replace the output file specification.
+ compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ link_command="$compile_command$compile_rpath"
+
+ # We have no uninstalled library dependencies, so finalize right now.
+ $show "$link_command"
+ $run eval "$link_command"
+ exit_status=$?
+
+ # Delete the generated files.
+ if test -n "$dlsyms"; then
+ $show "$rm $output_objdir/${outputname}S.${objext}"
+ $run $rm "$output_objdir/${outputname}S.${objext}"
+ fi
+
+ exit $exit_status
+ fi
+
+ if test -n "$shlibpath_var"; then
+ # We should set the shlibpath_var
+ rpath=
+ for dir in $temp_rpath; do
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*)
+ # Absolute path.
+ rpath="$rpath$dir:"
+ ;;
+ *)
+ # Relative path: add a thisdir entry.
+ rpath="$rpath\$thisdir/$dir:"
+ ;;
+ esac
+ done
+ temp_rpath="$rpath"
+ fi
+
+ if test -n "$compile_shlibpath$finalize_shlibpath"; then
+ compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+ fi
+ if test -n "$finalize_shlibpath"; then
+ finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+ fi
+
+ compile_var=
+ finalize_var=
+ if test -n "$runpath_var"; then
+ if test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ if test -n "$finalize_perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $finalize_perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ fi
+
+ if test "$no_install" = yes; then
+ # We don't need to create a wrapper script.
+ link_command="$compile_var$compile_command$compile_rpath"
+ # Replace the output file specification.
+ link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ # Delete the old output file.
+ $run $rm $output
+ # Link the executable and exit
+ $show "$link_command"
+ $run eval "$link_command" || exit $?
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+ $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+ $echo "$modename: \`$output' will be relinked during installation" 1>&2
+ else
+ if test "$fast_install" != no; then
+ link_command="$finalize_var$compile_command$finalize_rpath"
+ if test "$fast_install" = yes; then
+ relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+ else
+ # fast_install is set to needless
+ relink_command=
+ fi
+ else
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
+ fi
+ fi
+
+ # Replace the output file specification.
+ link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+ # Delete the old output files.
+ $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+ $show "$link_command"
+ $run eval "$link_command" || exit $?
+
+ # Now create the wrapper script.
+ $show "creating $output"
+
+ # Quote the relink command for shipping.
+ if test -n "$relink_command"; then
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+ relink_command="$var=\"$var_value\"; export $var; $relink_command"
+ fi
+ done
+ relink_command="(cd `pwd`; $relink_command)"
+ relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Quote $echo for shipping.
+ if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
+ case $progpath in
+ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+ esac
+ qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+ else
+ qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Only actually do things if our run command is non-null.
+ if test -z "$run"; then
+ # win32 will think the script is a binary if it has
+ # a .exe suffix, so we strip it off here.
+ case $output in
+ *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+ esac
+ # test for cygwin because mv fails w/o .exe extensions
+ case $host in
+ *cygwin*)
+ exeext=.exe
+ outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+ *) exeext= ;;
+ esac
+ case $host in
+ *cygwin* | *mingw* )
+ output_name=`basename $output`
+ output_path=`dirname $output`
+ cwrappersource="$output_path/$objdir/lt-$output_name.c"
+ cwrapper="$output_path/$output_name.exe"
+ $rm $cwrappersource $cwrapper
+ trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+ cat > $cwrappersource <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+ Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+
+ The $output program cannot be directly executed until all the libtool
+ libraries that it depends on are installed.
+
+ This wrapper executable should never be moved out of the build directory.
+ If it is, it will not operate correctly.
+
+ Currently, it simply execs the wrapper *script* "/bin/sh $output",
+ but could eventually absorb all of the scripts functionality and
+ exec $objdir/$outputname directly.
+*/
+EOF
+ cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/stat.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+ defined (__OS2__)
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# ifndef DIR_SEPARATOR_2
+# define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+# define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+ if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+/* -DDEBUG is fairly common in CFLAGS. */
+#undef DEBUG
+#if defined DEBUGWRAPPER
+# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
+#else
+# define DEBUG(format, ...)
+#endif
+
+const char *program_name = NULL;
+
+void * xmalloc (size_t num);
+char * xstrdup (const char *string);
+const char * base_name (const char *name);
+char * find_executable(const char *wrapper);
+int check_executable(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+ char **newargz;
+ int i;
+
+ program_name = (char *) xstrdup (base_name (argv[0]));
+ DEBUG("(main) argv[0] : %s\n",argv[0]);
+ DEBUG("(main) program_name : %s\n",program_name);
+ newargz = XMALLOC(char *, argc+2);
+EOF
+
+ cat >> $cwrappersource <<EOF
+ newargz[0] = (char *) xstrdup("$SHELL");
+EOF
+
+ cat >> $cwrappersource <<"EOF"
+ newargz[1] = find_executable(argv[0]);
+ if (newargz[1] == NULL)
+ lt_fatal("Couldn't find %s", argv[0]);
+ DEBUG("(main) found exe at : %s\n",newargz[1]);
+ /* we know the script has the same name, without the .exe */
+ /* so make sure newargz[1] doesn't end in .exe */
+ strendzap(newargz[1],".exe");
+ for (i = 1; i < argc; i++)
+ newargz[i+1] = xstrdup(argv[i]);
+ newargz[argc+1] = NULL;
+
+ for (i=0; i<argc+1; i++)
+ {
+ DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
+ ;
+ }
+
+EOF
+
+ case $host_os in
+ mingw*)
+ cat >> $cwrappersource <<EOF
+ execv("$SHELL",(char const **)newargz);
+EOF
+ ;;
+ *)
+ cat >> $cwrappersource <<EOF
+ execv("$SHELL",newargz);
+EOF
+ ;;
+ esac
+
+ cat >> $cwrappersource <<"EOF"
+ return 127;
+}
+
+void *
+xmalloc (size_t num)
+{
+ void * p = (void *) malloc (num);
+ if (!p)
+ lt_fatal ("Memory exhausted");
+
+ return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+ return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
+;
+}
+
+const char *
+base_name (const char *name)
+{
+ const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ /* Skip over the disk name in MSDOS pathnames. */
+ if (isalpha ((unsigned char)name[0]) && name[1] == ':')
+ name += 2;
+#endif
+
+ for (base = name; *name; name++)
+ if (IS_DIR_SEPARATOR (*name))
+ base = name + 1;
+ return base;
+}
+
+int
+check_executable(const char * path)
+{
+ struct stat st;
+
+ DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
+ if ((!path) || (!*path))
+ return 0;
+
+ if ((stat (path, &st) >= 0) &&
+ (
+ /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
+#if defined (S_IXOTH)
+ ((st.st_mode & S_IXOTH) == S_IXOTH) ||
+#endif
+#if defined (S_IXGRP)
+ ((st.st_mode & S_IXGRP) == S_IXGRP) ||
+#endif
+ ((st.st_mode & S_IXUSR) == S_IXUSR))
+ )
+ return 1;
+ else
+ return 0;
+}
+
+/* Searches for the full path of the wrapper. Returns
+ newly allocated full path name if found, NULL otherwise */
+char *
+find_executable (const char* wrapper)
+{
+ int has_slash = 0;
+ const char* p;
+ const char* p_next;
+ /* static buffer for getcwd */
+ char tmp[LT_PATHMAX + 1];
+ int tmp_len;
+ char* concat_name;
+
+ DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
+
+ if ((wrapper == NULL) || (*wrapper == '\0'))
+ return NULL;
+
+ /* Absolute path? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ }
+ else
+ {
+#endif
+ if (IS_DIR_SEPARATOR (wrapper[0]))
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ }
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ }
+#endif
+
+ for (p = wrapper; *p; p++)
+ if (*p == '/')
+ {
+ has_slash = 1;
+ break;
+ }
+ if (!has_slash)
+ {
+ /* no slashes; search PATH */
+ const char* path = getenv ("PATH");
+ if (path != NULL)
+ {
+ for (p = path; *p; p = p_next)
+ {
+ const char* q;
+ size_t p_len;
+ for (q = p; *q; q++)
+ if (IS_PATH_SEPARATOR(*q))
+ break;
+ p_len = q - p;
+ p_next = (*q == '\0' ? q : q + 1);
+ if (p_len == 0)
+ {
+ /* empty path: current directory */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+ tmp_len = strlen(tmp);
+ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+ }
+ else
+ {
+ concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
+ memcpy (concat_name, p, p_len);
+ concat_name[p_len] = '/';
+ strcpy (concat_name + p_len + 1, wrapper);
+ }
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ }
+ }
+ /* not found in PATH; assume curdir */
+ }
+ /* Relative path | not found in path: prepend cwd */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+ tmp_len = strlen(tmp);
+ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ return NULL;
+}
+
+char *
+strendzap(char *str, const char *pat)
+{
+ size_t len, patlen;
+
+ assert(str != NULL);
+ assert(pat != NULL);
+
+ len = strlen(str);
+ patlen = strlen(pat);
+
+ if (patlen <= len)
+ {
+ str += len - patlen;
+ if (strcmp(str, pat) == 0)
+ *str = '\0';
+ }
+ return str;
+}
+
+static void
+lt_error_core (int exit_status, const char * mode,
+ const char * message, va_list ap)
+{
+ fprintf (stderr, "%s: %s: ", program_name, mode);
+ vfprintf (stderr, message, ap);
+ fprintf (stderr, ".\n");
+
+ if (exit_status >= 0)
+ exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+ va_list ap;
+ va_start (ap, message);
+ lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+ va_end (ap);
+}
+EOF
+ # we should really use a build-platform specific compiler
+ # here, but OTOH, the wrappers (shell script and this C one)
+ # are only useful if you want to execute the "real" binary.
+ # Since the "real" binary is built for $host, then this
+ # wrapper might as well be built for $host, too.
+ $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
+ ;;
+ esac
+ $rm $output
+ trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+ $echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+ # install mode needs the following variable:
+ notinst_deplibs='$notinst_deplibs'
+else
+ # When we are sourced in execute mode, \$file and \$echo are already set.
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ echo=\"$qecho\"
+ file=\"\$0\"
+ # Make sure echo works.
+ if test \"X\$1\" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+ elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+ # Yippee, \$echo works!
+ :
+ else
+ # Restart under the correct shell, and then maybe \$echo will work.
+ exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+ fi
+ fi\
+"
+ $echo >> $output "\
+
+ # Find the directory that this script lives in.
+ thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+ test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+ # Follow symbolic links until we get to the real thisdir.
+ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+ while test -n \"\$file\"; do
+ destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+ # If there was a directory component, then change thisdir.
+ if test \"x\$destdir\" != \"x\$file\"; then
+ case \"\$destdir\" in
+ [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+ *) thisdir=\"\$thisdir/\$destdir\" ;;
+ esac
+ fi
+
+ file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+ done
+
+ # Try to get the absolute directory name.
+ absdir=\`cd \"\$thisdir\" && pwd\`
+ test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+ if test "$fast_install" = yes; then
+ $echo >> $output "\
+ program=lt-'$outputname'$exeext
+ progdir=\"\$thisdir/$objdir\"
+
+ if test ! -f \"\$progdir/\$program\" || \\
+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+ test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+ file=\"\$\$-\$program\"
+
+ if test ! -d \"\$progdir\"; then
+ $mkdir \"\$progdir\"
+ else
+ $rm \"\$progdir/\$file\"
+ fi"
+
+ $echo >> $output "\
+
+ # relink executable if necessary
+ if test -n \"\$relink_command\"; then
+ if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+ else
+ $echo \"\$relink_command_output\" >&2
+ $rm \"\$progdir/\$file\"
+ exit $EXIT_FAILURE
+ fi
+ fi
+
+ $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+ { $rm \"\$progdir/\$program\";
+ $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+ $rm \"\$progdir/\$file\"
+ fi"
+ else
+ $echo >> $output "\
+ program='$outputname'
+ progdir=\"\$thisdir/$objdir\"
+"
+ fi
+
+ $echo >> $output "\
+
+ if test -f \"\$progdir/\$program\"; then"
+
+ # Export our shlibpath_var if we have one.
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ $echo >> $output "\
+ # Add our own library path to $shlibpath_var
+ $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+ # Some systems cannot cope with colon-terminated $shlibpath_var
+ # The second colon is a workaround for a bug in BeOS R4 sed
+ $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+ export $shlibpath_var
+"
+ fi
+
+ # fixup the dll searchpath if we need to.
+ if test -n "$dllsearchpath"; then
+ $echo >> $output "\
+ # Add the dll search path components to the executable PATH
+ PATH=$dllsearchpath:\$PATH
+"
+ fi
+
+ $echo >> $output "\
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ # Run the actual program with our arguments.
+"
+ case $host in
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2*)
+ $echo >> $output "\
+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+ ;;
+
+ *)
+ $echo >> $output "\
+ exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+ ;;
+ esac
+ $echo >> $output "\
+ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+ exit $EXIT_FAILURE
+ fi
+ else
+ # The program doesn't exist.
+ \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+ \$echo \"This script is just a wrapper for \$program.\" 1>&2
+ $echo \"See the $PACKAGE documentation for more information.\" 1>&2
+ exit $EXIT_FAILURE
+ fi
+fi\
+"
+ chmod +x $output
+ fi
+ exit $EXIT_SUCCESS
+ ;;
+ esac
+
+ # See if we need to build an old-fashioned archive.
+ for oldlib in $oldlibs; do
+
+ if test "$build_libtool_libs" = convenience; then
+ oldobjs="$libobjs_save"
+ addlibs="$convenience"
+ build_libtool_libs=no
+ else
+ if test "$build_libtool_libs" = module; then
+ oldobjs="$libobjs_save"
+ build_libtool_libs=no
+ else
+ oldobjs="$old_deplibs $non_pic_objects"
+ fi
+ addlibs="$old_convenience"
+ fi
+
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $addlibs
+ oldobjs="$oldobjs $func_extract_archives_result"
+ fi
+
+ # Do each command in the archive commands.
+ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+ cmds=$old_archive_from_new_cmds
+ else
+ # POSIX demands no paths to be encoded in archives. We have
+ # to avoid creating archives with duplicate basenames if we
+ # might have to extract them afterwards, e.g., when creating a
+ # static archive out of a convenience library, or when linking
+ # the entirety of a libtool archive into another (currently
+ # not supported by libtool).
+ if (for obj in $oldobjs
+ do
+ $echo "X$obj" | $Xsed -e 's%^.*/%%'
+ done | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $echo "copying selected object files to avoid basename conflicts..."
+
+ if test -z "$gentop"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ $show "${rm}r $gentop"
+ $run ${rm}r "$gentop"
+ $show "$mkdir $gentop"
+ $run $mkdir "$gentop"
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
+ exit $exit_status
+ fi
+ fi
+
+ save_oldobjs=$oldobjs
+ oldobjs=
+ counter=1
+ for obj in $save_oldobjs
+ do
+ objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+ case " $oldobjs " in
+ " ") oldobjs=$obj ;;
+ *[\ /]"$objbase "*)
+ while :; do
+ # Make sure we don't pick an alternate name that also
+ # overlaps.
+ newobj=lt$counter-$objbase
+ counter=`expr $counter + 1`
+ case " $oldobjs " in
+ *[\ /]"$newobj "*) ;;
+ *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+ esac
+ done
+ $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+ $run ln "$obj" "$gentop/$newobj" ||
+ $run cp "$obj" "$gentop/$newobj"
+ oldobjs="$oldobjs $gentop/$newobj"
+ ;;
+ *) oldobjs="$oldobjs $obj" ;;
+ esac
+ done
+ fi
+
+ eval cmds=\"$old_archive_cmds\"
+
+ if len=`expr "X$cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ cmds=$old_archive_cmds
+ else
+ # the command line is too long to link in one step, link in parts
+ $echo "using piecewise archive linking..."
+ save_RANLIB=$RANLIB
+ RANLIB=:
+ objlist=
+ concat_cmds=
+ save_oldobjs=$oldobjs
+
+ # Is there a better way of finding the last object in the list?
+ for obj in $save_oldobjs
+ do
+ last_oldobj=$obj
+ done
+ for obj in $save_oldobjs
+ do
+ oldobjs="$objlist $obj"
+ objlist="$objlist $obj"
+ eval test_cmds=\"$old_archive_cmds\"
+ if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$max_cmd_len"; then
+ :
+ else
+ # the above command should be used before it gets too long
+ oldobjs=$objlist
+ if test "$obj" = "$last_oldobj" ; then
+ RANLIB=$save_RANLIB
+ fi
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+ objlist=
+ fi
+ done
+ RANLIB=$save_RANLIB
+ oldobjs=$objlist
+ if test "X$oldobjs" = "X" ; then
+ eval cmds=\"\$concat_cmds\"
+ else
+ eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+ fi
+ fi
+ fi
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ eval cmd=\"$cmd\"
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ done
+
+ if test -n "$generated"; then
+ $show "${rm}r$generated"
+ $run ${rm}r$generated
+ fi
+
+ # Now create the libtool archive.
+ case $output in
+ *.la)
+ old_library=
+ test "$build_old_libs" = yes && old_library="$libname.$libext"
+ $show "creating $output"
+
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+ relink_command="$var=\"$var_value\"; export $var; $relink_command"
+ fi
+ done
+ # Quote the link command for shipping.
+ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+ relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ if test "$hardcode_automatic" = yes ; then
+ relink_command=
+ fi
+
+
+ # Only create the output if not a dry run.
+ if test -z "$run"; then
+ for installed in no yes; do
+ if test "$installed" = yes; then
+ if test -z "$install_libdir"; then
+ break
+ fi
+ output="$output_objdir/$outputname"i
+ # Replace all uninstalled libtool libraries with the installed ones
+ newdependency_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ *.la)
+ name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdependency_libs="$newdependency_libs $libdir/$name"
+ ;;
+ *) newdependency_libs="$newdependency_libs $deplib" ;;
+ esac
+ done
+ dependency_libs="$newdependency_libs"
+ newdlfiles=
+ for lib in $dlfiles; do
+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdlfiles="$newdlfiles $libdir/$name"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdlprefiles="$newdlprefiles $libdir/$name"
+ done
+ dlprefiles="$newdlprefiles"
+ else
+ newdlfiles=
+ for lib in $dlfiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlfiles="$newdlfiles $abs"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlprefiles="$newdlprefiles $abs"
+ done
+ dlprefiles="$newdlprefiles"
+ fi
+ $rm $output
+ # place dlname in correct position for cygwin
+ tdlname=$dlname
+ case $host,$output,$installed,$module,$dlname in
+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+ esac
+ $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+ if test "$installed" = no && test "$need_relink" = yes; then
+ $echo >> $output "\
+relink_command=\"$relink_command\""
+ fi
+ done
+ fi
+
+ # Do a symbolic link so that the libtool archive can be found in
+ # LD_LIBRARY_PATH before the program is installed.
+ $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+ $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+ ;;
+ esac
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool install mode
+ install)
+ modename="$modename: install"
+
+ # There may be an optional sh(1) argument at the beginning of
+ # install_prog (especially on Windows NT).
+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+ # Allow the use of GNU shtool's install command.
+ $echo "X$nonopt" | grep shtool > /dev/null; then
+ # Aesthetically quote it.
+ arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$arg "
+ arg="$1"
+ shift
+ else
+ install_prog=
+ arg=$nonopt
+ fi
+
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$install_prog$arg"
+
+ # We need to accept at least all the BSD install flags.
+ dest=
+ files=
+ opts=
+ prev=
+ install_type=
+ isdir=no
+ stripme=
+ for arg
+ do
+ if test -n "$dest"; then
+ files="$files $dest"
+ dest=$arg
+ continue
+ fi
+
+ case $arg in
+ -d) isdir=yes ;;
+ -f)
+ case " $install_prog " in
+ *[\\\ /]cp\ *) ;;
+ *) prev=$arg ;;
+ esac
+ ;;
+ -g | -m | -o) prev=$arg ;;
+ -s)
+ stripme=" -s"
+ continue
+ ;;
+ -*)
+ ;;
+ *)
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ prev=
+ else
+ dest=$arg
+ continue
+ fi
+ ;;
+ esac
+
+ # Aesthetically quote the argument.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$install_prog $arg"
+ done
+
+ if test -z "$install_prog"; then
+ $echo "$modename: you must specify an install program" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$prev"; then
+ $echo "$modename: the \`$prev' option requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -z "$files"; then
+ if test -z "$dest"; then
+ $echo "$modename: no file or destination specified" 1>&2
+ else
+ $echo "$modename: you must specify a destination" 1>&2
+ fi
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Strip any trailing slash from the destination.
+ dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+ # Check to see that the destination is a directory.
+ test -d "$dest" && isdir=yes
+ if test "$isdir" = yes; then
+ destdir="$dest"
+ destname=
+ else
+ destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$destdir" = "X$dest" && destdir=.
+ destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+ # Not a directory, so check to see that there is only one file specified.
+ set dummy $files
+ if test "$#" -gt 2; then
+ $echo "$modename: \`$dest' is not a directory" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ fi
+ case $destdir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ for file in $files; do
+ case $file in
+ *.lo) ;;
+ *)
+ $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic="$magic"
+
+ staticlibs=
+ future_libdirs=
+ current_libdirs=
+ for file in $files; do
+
+ # Do each installation.
+ case $file in
+ *.$libext)
+ # Do the static libraries later.
+ staticlibs="$staticlibs $file"
+ ;;
+
+ *.la)
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ library_names=
+ old_library=
+ relink_command=
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Add the libdir to current_libdirs if it is the destination.
+ if test "X$destdir" = "X$libdir"; then
+ case "$current_libdirs " in
+ *" $libdir "*) ;;
+ *) current_libdirs="$current_libdirs $libdir" ;;
+ esac
+ else
+ # Note the libdir as a future libdir.
+ case "$future_libdirs " in
+ *" $libdir "*) ;;
+ *) future_libdirs="$future_libdirs $libdir" ;;
+ esac
+ fi
+
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+ test "X$dir" = "X$file/" && dir=
+ dir="$dir$objdir"
+
+ if test -n "$relink_command"; then
+ # Determine the prefix the user has applied to our future dir.
+ inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
+
+ # Don't allow the user to place us outside of our expected
+ # location b/c this prevents finding dependent libraries that
+ # are installed to the same prefix.
+ # At present, this check doesn't affect windows .dll's that
+ # are installed into $libdir/../bin (currently, that works fine)
+ # but it's something to keep an eye on.
+ if test "$inst_prefix_dir" = "$destdir"; then
+ $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$inst_prefix_dir"; then
+ # Stick the inst_prefix_dir data into the link command.
+ relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+ else
+ relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+ fi
+
+ $echo "$modename: warning: relinking \`$file'" 1>&2
+ $show "$relink_command"
+ if $run eval "$relink_command"; then :
+ else
+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ fi
+
+ # See the names of the shared library.
+ set dummy $library_names
+ if test -n "$2"; then
+ realname="$2"
+ shift
+ shift
+
+ srcname="$realname"
+ test -n "$relink_command" && srcname="$realname"T
+
+ # Install the shared library and build the symlinks.
+ $show "$install_prog $dir/$srcname $destdir/$realname"
+ $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+ if test -n "$stripme" && test -n "$striplib"; then
+ $show "$striplib $destdir/$realname"
+ $run eval "$striplib $destdir/$realname" || exit $?
+ fi
+
+ if test "$#" -gt 0; then
+ # Delete the old symlinks, and create new ones.
+ # Try `ln -sf' first, because the `ln' binary might depend on
+ # the symlink we replace! Solaris /bin/ln does not understand -f,
+ # so we also need to try rm && ln -s.
+ for linkname
+ do
+ if test "$linkname" != "$realname"; then
+ $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+ $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+ fi
+ done
+ fi
+
+ # Do each command in the postinstall commands.
+ lib="$destdir/$realname"
+ cmds=$postinstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+ fi
+
+ # Install the pseudo-library for information purposes.
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ instname="$dir/$name"i
+ $show "$install_prog $instname $destdir/$name"
+ $run eval "$install_prog $instname $destdir/$name" || exit $?
+
+ # Maybe install the static library, too.
+ test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+ ;;
+
+ *.lo)
+ # Install (i.e. copy) a libtool object.
+
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ destfile="$destdir/$destfile"
+ fi
+
+ # Deduce the name of the destination old-style object file.
+ case $destfile in
+ *.lo)
+ staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+ ;;
+ *.$objext)
+ staticdest="$destfile"
+ destfile=
+ ;;
+ *)
+ $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ # Install the libtool object if requested.
+ if test -n "$destfile"; then
+ $show "$install_prog $file $destfile"
+ $run eval "$install_prog $file $destfile" || exit $?
+ fi
+
+ # Install the old object if enabled.
+ if test "$build_old_libs" = yes; then
+ # Deduce the name of the old-style object file.
+ staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+ $show "$install_prog $staticobj $staticdest"
+ $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+ fi
+ exit $EXIT_SUCCESS
+ ;;
+
+ *)
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ destfile="$destdir/$destfile"
+ fi
+
+ # If the file is missing, and there is a .exe on the end, strip it
+ # because it is most likely a libtool script we actually want to
+ # install
+ stripped_ext=""
+ case $file in
+ *.exe)
+ if test ! -f "$file"; then
+ file=`$echo $file|${SED} 's,.exe$,,'`
+ stripped_ext=".exe"
+ fi
+ ;;
+ esac
+
+ # Do a test to see if this is really a libtool program.
+ case $host in
+ *cygwin*|*mingw*)
+ wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
+ ;;
+ *)
+ wrapper=$file
+ ;;
+ esac
+ if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+ notinst_deplibs=
+ relink_command=
+
+ # Note that it is not necessary on cygwin/mingw to append a dot to
+ # foo even if both foo and FILE.exe exist: automatic-append-.exe
+ # behavior happens only for exec(3), not for open(2)! Also, sourcing
+ # `FILE.' does not work on cygwin managed mounts.
+ #
+ # If there is no directory component, then add one.
+ case $wrapper in
+ */* | *\\*) . ${wrapper} ;;
+ *) . ./${wrapper} ;;
+ esac
+
+ # Check the variables that should have been set.
+ if test -z "$notinst_deplibs"; then
+ $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ finalize=yes
+ for lib in $notinst_deplibs; do
+ # Check to see that each library is installed.
+ libdir=
+ if test -f "$lib"; then
+ # If there is no directory component, then add one.
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+ fi
+ libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+ if test -n "$libdir" && test ! -f "$libfile"; then
+ $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+ finalize=no
+ fi
+ done
+
+ relink_command=
+ # Note that it is not necessary on cygwin/mingw to append a dot to
+ # foo even if both foo and FILE.exe exist: automatic-append-.exe
+ # behavior happens only for exec(3), not for open(2)! Also, sourcing
+ # `FILE.' does not work on cygwin managed mounts.
+ #
+ # If there is no directory component, then add one.
+ case $wrapper in
+ */* | *\\*) . ${wrapper} ;;
+ *) . ./${wrapper} ;;
+ esac
+
+ outputname=
+ if test "$fast_install" = no && test -n "$relink_command"; then
+ if test "$finalize" = yes && test -z "$run"; then
+ tmpdir=`func_mktempdir`
+ file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+ outputname="$tmpdir/$file"
+ # Replace the output file specification.
+ relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+ $show "$relink_command"
+ if $run eval "$relink_command"; then :
+ else
+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+ ${rm}r "$tmpdir"
+ continue
+ fi
+ file="$outputname"
+ else
+ $echo "$modename: warning: cannot relink \`$file'" 1>&2
+ fi
+ else
+ # Install the binary that we compiled earlier.
+ file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+ fi
+ fi
+
+ # remove .exe since cygwin /usr/bin/install will append another
+ # one anyway
+ case $install_prog,$host in
+ */usr/bin/install*,*cygwin*)
+ case $file:$destfile in
+ *.exe:*.exe)
+ # this is ok
+ ;;
+ *.exe:*)
+ destfile=$destfile.exe
+ ;;
+ *:*.exe)
+ destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
+ ;;
+ esac
+ ;;
+ esac
+ $show "$install_prog$stripme $file $destfile"
+ $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+ test -n "$outputname" && ${rm}r "$tmpdir"
+ ;;
+ esac
+ done
+
+ for file in $staticlibs; do
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+ # Set up the ranlib parameters.
+ oldlib="$destdir/$name"
+
+ $show "$install_prog $file $oldlib"
+ $run eval "$install_prog \$file \$oldlib" || exit $?
+
+ if test -n "$stripme" && test -n "$old_striplib"; then
+ $show "$old_striplib $oldlib"
+ $run eval "$old_striplib $oldlib" || exit $?
+ fi
+
+ # Do each command in the postinstall commands.
+ cmds=$old_postinstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ done
+
+ if test -n "$future_libdirs"; then
+ $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+ fi
+
+ if test -n "$current_libdirs"; then
+ # Maybe just do a dry run.
+ test -n "$run" && current_libdirs=" -n$current_libdirs"
+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+ else
+ exit $EXIT_SUCCESS
+ fi
+ ;;
+
+ # libtool finish mode
+ finish)
+ modename="$modename: finish"
+ libdirs="$nonopt"
+ admincmds=
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ for dir
+ do
+ libdirs="$libdirs $dir"
+ done
+
+ for libdir in $libdirs; do
+ if test -n "$finish_cmds"; then
+ # Do each command in the finish commands.
+ cmds=$finish_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || admincmds="$admincmds
+ $cmd"
+ done
+ IFS="$save_ifs"
+ fi
+ if test -n "$finish_eval"; then
+ # Do the single finish_eval.
+ eval cmds=\"$finish_eval\"
+ $run eval "$cmds" || admincmds="$admincmds
+ $cmds"
+ fi
+ done
+ fi
+
+ # Exit here if they wanted silent mode.
+ test "$show" = : && exit $EXIT_SUCCESS
+
+ $echo "X----------------------------------------------------------------------" | $Xsed
+ $echo "Libraries have been installed in:"
+ for libdir in $libdirs; do
+ $echo " $libdir"
+ done
+ $echo
+ $echo "If you ever happen to want to link against installed libraries"
+ $echo "in a given directory, LIBDIR, you must either use libtool, and"
+ $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+ $echo "flag during linking and do at least one of the following:"
+ if test -n "$shlibpath_var"; then
+ $echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
+ $echo " during execution"
+ fi
+ if test -n "$runpath_var"; then
+ $echo " - add LIBDIR to the \`$runpath_var' environment variable"
+ $echo " during linking"
+ fi
+ if test -n "$hardcode_libdir_flag_spec"; then
+ libdir=LIBDIR
+ eval flag=\"$hardcode_libdir_flag_spec\"
+
+ $echo " - use the \`$flag' linker flag"
+ fi
+ if test -n "$admincmds"; then
+ $echo " - have your system administrator run these commands:$admincmds"
+ fi
+ if test -f /etc/ld.so.conf; then
+ $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+ fi
+ $echo
+ $echo "See any operating system documentation about shared libraries for"
+ $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+ $echo "X----------------------------------------------------------------------" | $Xsed
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool execute mode
+ execute)
+ modename="$modename: execute"
+
+ # The first argument is the command name.
+ cmd="$nonopt"
+ if test -z "$cmd"; then
+ $echo "$modename: you must specify a COMMAND" 1>&2
+ $echo "$help"
+ exit $EXIT_FAILURE
+ fi
+
+ # Handle -dlopen flags immediately.
+ for file in $execute_dlfiles; do
+ if test ! -f "$file"; then
+ $echo "$modename: \`$file' is not a file" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ dir=
+ case $file in
+ *.la)
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Read the libtool library.
+ dlname=
+ library_names=
+
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Skip this library if it cannot be dlopened.
+ if test -z "$dlname"; then
+ # Warn if it was a shared library.
+ test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+ continue
+ fi
+
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$file" && dir=.
+
+ if test -f "$dir/$objdir/$dlname"; then
+ dir="$dir/$objdir"
+ else
+ $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ ;;
+
+ *.lo)
+ # Just add the directory containing the .lo file.
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$file" && dir=.
+ ;;
+
+ *)
+ $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+ continue
+ ;;
+ esac
+
+ # Get the absolute pathname.
+ absdir=`cd "$dir" && pwd`
+ test -n "$absdir" && dir="$absdir"
+
+ # Now add the directory to shlibpath_var.
+ if eval "test -z \"\$$shlibpath_var\""; then
+ eval "$shlibpath_var=\"\$dir\""
+ else
+ eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+ fi
+ done
+
+ # This variable tells wrapper scripts just to set shlibpath_var
+ # rather than running their programs.
+ libtool_execute_magic="$magic"
+
+ # Check if any of the arguments is a wrapper script.
+ args=
+ for file
+ do
+ case $file in
+ -*) ;;
+ *)
+ # Do a test to see if this is really a libtool program.
+ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ fi
+ ;;
+ esac
+ # Quote arguments (to preserve shell metacharacters).
+ file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+ args="$args \"$file\""
+ done
+
+ if test -z "$run"; then
+ if test -n "$shlibpath_var"; then
+ # Export the shlibpath_var.
+ eval "export $shlibpath_var"
+ fi
+
+ # Restore saved environment variables
+ if test "${save_LC_ALL+set}" = set; then
+ LC_ALL="$save_LC_ALL"; export LC_ALL
+ fi
+ if test "${save_LANG+set}" = set; then
+ LANG="$save_LANG"; export LANG
+ fi
+
+ # Now prepare to actually exec the command.
+ exec_cmd="\$cmd$args"
+ else
+ # Display what would be done.
+ if test -n "$shlibpath_var"; then
+ eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+ $echo "export $shlibpath_var"
+ fi
+ $echo "$cmd$args"
+ exit $EXIT_SUCCESS
+ fi
+ ;;
+
+ # libtool clean and uninstall mode
+ clean | uninstall)
+ modename="$modename: $mode"
+ rm="$nonopt"
+ files=
+ rmforce=
+ exit_status=0
+
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic="$magic"
+
+ for arg
+ do
+ case $arg in
+ -f) rm="$rm $arg"; rmforce=yes ;;
+ -*) rm="$rm $arg" ;;
+ *) files="$files $arg" ;;
+ esac
+ done
+
+ if test -z "$rm"; then
+ $echo "$modename: you must specify an RM program" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ rmdirs=
+
+ origobjdir="$objdir"
+ for file in $files; do
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$dir" = "X$file"; then
+ dir=.
+ objdir="$origobjdir"
+ else
+ objdir="$dir/$origobjdir"
+ fi
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ test "$mode" = uninstall && objdir="$dir"
+
+ # Remember objdir for removal later, being careful to avoid duplicates
+ if test "$mode" = clean; then
+ case " $rmdirs " in
+ *" $objdir "*) ;;
+ *) rmdirs="$rmdirs $objdir" ;;
+ esac
+ fi
+
+ # Don't error if the file doesn't exist and rm -f was used.
+ if (test -L "$file") >/dev/null 2>&1 \
+ || (test -h "$file") >/dev/null 2>&1 \
+ || test -f "$file"; then
+ :
+ elif test -d "$file"; then
+ exit_status=1
+ continue
+ elif test "$rmforce" = yes; then
+ continue
+ fi
+
+ rmfiles="$file"
+
+ case $name in
+ *.la)
+ # Possibly a libtool archive, so verify it.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ . $dir/$name
+
+ # Delete the libtool libraries and symlinks.
+ for n in $library_names; do
+ rmfiles="$rmfiles $objdir/$n"
+ done
+ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+
+ case "$mode" in
+ clean)
+ case " $library_names " in
+ # " " in the beginning catches empty $dlname
+ *" $dlname "*) ;;
+ *) rmfiles="$rmfiles $objdir/$dlname" ;;
+ esac
+ test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+ ;;
+ uninstall)
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+ cmds=$postuninstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd"
+ if test "$?" -ne 0 && test "$rmforce" != yes; then
+ exit_status=1
+ fi
+ done
+ IFS="$save_ifs"
+ fi
+
+ if test -n "$old_library"; then
+ # Do each command in the old_postuninstall commands.
+ cmds=$old_postuninstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd"
+ if test "$?" -ne 0 && test "$rmforce" != yes; then
+ exit_status=1
+ fi
+ done
+ IFS="$save_ifs"
+ fi
+ # FIXME: should reinstall the best remaining shared library.
+ ;;
+ esac
+ fi
+ ;;
+
+ *.lo)
+ # Possibly a libtool object, so verify it.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+ # Read the .lo file
+ . $dir/$name
+
+ # Add PIC object to the list of files to remove.
+ if test -n "$pic_object" \
+ && test "$pic_object" != none; then
+ rmfiles="$rmfiles $dir/$pic_object"
+ fi
+
+ # Add non-PIC object to the list of files to remove.
+ if test -n "$non_pic_object" \
+ && test "$non_pic_object" != none; then
+ rmfiles="$rmfiles $dir/$non_pic_object"
+ fi
+ fi
+ ;;
+
+ *)
+ if test "$mode" = clean ; then
+ noexename=$name
+ case $file in
+ *.exe)
+ file=`$echo $file|${SED} 's,.exe$,,'`
+ noexename=`$echo $name|${SED} 's,.exe$,,'`
+ # $file with .exe has already been added to rmfiles,
+ # add $file without .exe
+ rmfiles="$rmfiles $file"
+ ;;
+ esac
+ # Do a test to see if this is a libtool program.
+ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ relink_command=
+ . $dir/$noexename
+
+ # note $name still contains .exe if it was in $file originally
+ # as does the version of $file that was added into $rmfiles
+ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+ if test "$fast_install" = yes && test -n "$relink_command"; then
+ rmfiles="$rmfiles $objdir/lt-$name"
+ fi
+ if test "X$noexename" != "X$name" ; then
+ rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ $show "$rm $rmfiles"
+ $run $rm $rmfiles || exit_status=1
+ done
+ objdir="$origobjdir"
+
+ # Try to remove the ${objdir}s in the directories where we deleted files
+ for dir in $rmdirs; do
+ if test -d "$dir"; then
+ $show "rmdir $dir"
+ $run rmdir $dir >/dev/null 2>&1
+ fi
+ done
+
+ exit $exit_status
+ ;;
+
+ "")
+ $echo "$modename: you must specify a MODE" 1>&2
+ $echo "$generic_help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ if test -z "$exec_cmd"; then
+ $echo "$modename: invalid operation mode \`$mode'" 1>&2
+ $echo "$generic_help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+ eval exec $exec_cmd
+ exit $EXIT_FAILURE
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+ --config show all configuration variables
+ --debug enable verbose shell tracing
+-n, --dry-run display commands without modifying any files
+ --features display basic configuration information and exit
+ --finish same as \`--mode=finish'
+ --help display this help message and exit
+ --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
+ --quiet same as \`--silent'
+ --silent don't print informational messages
+ --tag=TAG use configuration variables from tag TAG
+ --version print version information
+
+MODE must be one of the following:
+
+ clean remove files from the build directory
+ compile compile a source file into a libtool object
+ execute automatically set library path, then run a program
+ finish complete the installation of libtool libraries
+ install install libraries or executables
+ link create a library or an executable
+ uninstall remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE.
+
+Report bugs to <bug-libtool@gnu.org>."
+ exit $EXIT_SUCCESS
+ ;;
+
+clean)
+ $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+ ;;
+
+compile)
+ $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+ -o OUTPUT-FILE set the output file name to OUTPUT-FILE
+ -prefer-pic try to building PIC objects only
+ -prefer-non-pic try to building non-PIC objects only
+ -static always build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+ ;;
+
+execute)
+ $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+ -dlopen FILE add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+ ;;
+
+finish)
+ $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges. Use
+the \`--dry-run' option if you just want to see what would be executed."
+ ;;
+
+install)
+ $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command. The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+ ;;
+
+link)
+ $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+ -all-static do not do any dynamic linking at all
+ -avoid-version do not add a version suffix if possible
+ -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
+ -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
+ -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+ -export-symbols SYMFILE
+ try to export only the symbols listed in SYMFILE
+ -export-symbols-regex REGEX
+ try to export only the symbols matching REGEX
+ -LLIBDIR search LIBDIR for required installed libraries
+ -lNAME OUTPUT-FILE requires the installed library libNAME
+ -module build a library that can dlopened
+ -no-fast-install disable the fast-install mode
+ -no-install link a not-installable executable
+ -no-undefined declare that a library does not refer to external symbols
+ -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
+ -objectlist FILE Use a list of object files found in FILE to specify objects
+ -precious-files-regex REGEX
+ don't remove output files matching REGEX
+ -release RELEASE specify package release information
+ -rpath LIBDIR the created library will eventually be installed in LIBDIR
+ -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
+ -static do not do any dynamic linking of libtool libraries
+ -version-info CURRENT[:REVISION[:AGE]]
+ specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename. Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+ ;;
+
+uninstall)
+ $echo \
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+ ;;
+
+*)
+ $echo "$modename: invalid operation mode \`$mode'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+esac
+
+$echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit $?
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries. Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them. This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration. But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+disable_libs=shared
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+disable_libs=static
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
+# ### BEGIN LIBTOOL TAG CONFIG: CXX
+
+# Libtool was configured on host houllier:
+
+# Shell to use when invoking shell scripts.
+SHELL="/bin/bash"
+
+# Whether or not to build shared libraries.
+build_libtool_libs=yes
+
+# Whether or not to build static libraries.
+build_old_libs=no
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=no
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=no
+
+# Whether or not to optimize for fast installation.
+fast_install=yes
+
+# The host system.
+host_alias=
+host=i686-pc-linux-gnu
+host_os=linux-gnu
+
+# The build system.
+build_alias=
+build=i686-pc-linux-gnu
+build_os=linux-gnu
+
+# An echo program that does not interpret backslashes.
+echo="echo"
+
+# The archiver.
+AR="ar"
+AR_FLAGS="cru"
+
+# A C compiler.
+LTCC="gcc"
+
+# LTCC compiler flags.
+LTCFLAGS="-g -O2"
+
+# A language-specific compiler.
+CC="g++"
+
+# Is the compiler the GNU C compiler?
+with_gcc=yes
+
+# An ERE matcher.
+EGREP="grep -E"
+
+# The linker used to build libraries.
+LD="/usr/bin/ld"
+
+# Whether we need hard or soft links.
+LN_S="ln -s"
+
+# A BSD-compatible nm program.
+NM="/usr/bin/nm -B"
+
+# A symbol stripping program
+STRIP="strip"
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=file
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="dlltool"
+
+# Used on cygwin: object dumper.
+OBJDUMP="objdump"
+
+# Used on cygwin: assembler.
+AS="as"
+
+# The name of the directory that contains temporary libtool files.
+objdir=.libs
+
+# How to create reloadable object files.
+reload_flag=" -r"
+reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
+
+# How to pass a linker flag through the compiler.
+wl="-Wl,"
+
+# Object file suffix (normally "o").
+objext="o"
+
+# Old archive suffix (normally "a").
+libext="a"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='.so'
+
+# Executable file suffix (normally "").
+exeext=""
+
+# Additional compiler flags for building library objects.
+pic_flag=" -fPIC -DPIC"
+pic_mode=default
+
+# What is the maximum length of a command?
+max_cmd_len=32768
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o="yes"
+
+# Must we lock files when doing compilation?
+need_locks="no"
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=no
+
+# Do we need a version for libraries?
+need_version=no
+
+# Whether dlopen is supported.
+dlopen_support=unknown
+
+# Whether dlopen of programs is supported.
+dlopen_self=unknown
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=unknown
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag="-static"
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=" -fno-builtin"
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec="\${wl}--export-dynamic"
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=""
+
+# Library versioning type.
+version_type=linux
+
+# Format of library name prefix.
+libname_spec="lib\$name"
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"
+
+# The coded name of the library, if different from the real name.
+soname_spec="\${libname}\${release}\${shared_ext}\$major"
+
+# Commands used to build and install an old-style archive.
+RANLIB="ranlib"
+old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib"
+old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
+old_postuninstall_cmds=""
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=""
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=""
+
+# Commands used to build and install a shared archive.
+archive_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
+archive_expsym_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-retain-symbols-file \$wl\$export_symbols -o \$lib"
+postinstall_cmds=""
+postuninstall_cmds=""
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=""
+module_expsym_cmds=""
+
+# Commands to strip libraries.
+old_striplib="strip --strip-debug"
+striplib="strip --strip-unneeded"
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects="/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crti.o /usr/lib/gcc/i486-linux-gnu/4.1.2/crtbeginS.o"
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects="/usr/lib/gcc/i486-linux-gnu/4.1.2/crtendS.o /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crtn.o"
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=""
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s"
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path="-L/usr/lib/gcc/i486-linux-gnu/4.1.2 -L/usr/lib/gcc/i486-linux-gnu/4.1.2 -L/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib -L/lib/../lib -L/usr/lib/../lib"
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method="pass_all"
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd="\$MAGIC_CMD"
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=""
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=""
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=""
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'"
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (lt_ptr) \\&\\2},/p'"
+
+# This is the shared library runtime path variable.
+runpath_var=LD_RUN_PATH
+
+# This is the shared library path variable.
+shlibpath_var=LD_LIBRARY_PATH
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=no
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=immediate
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=yes
+
+# Flag to hardcode $libdir into a binary during linking.
+# This must work even if $libdir does not exist.
+hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir"
+
+# If ld is used when linking, flag to hardcode $libdir into
+# a binary during linking. This must work even if $libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=""
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=""
+
+# Set to yes if using DIR/libNAME during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=no
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=no
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=unsupported
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=no
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=unknown
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=" /usr/lib/gcc/i486-linux-gnu/4.1.2/ /usr/lib/gcc/i486-linux-gnu/4.1.2/ /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../i486-linux-gnu/lib/i486-linux-gnu/4.1.2/ /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../i486-linux-gnu/lib/ /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../i486-linux-gnu/4.1.2/ /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../ /lib/i486-linux-gnu/4.1.2/ /lib/ /usr/lib/i486-linux-gnu/4.1.2/ /usr/lib/"
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/lib "
+
+# Fix the shell variable $srcfile for the compiler.
+fix_srcfile_path=""
+
+# Set to yes if exported symbols are required.
+always_export_symbols=no
+
+# The commands to list exported symbols.
+export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=""
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=""
+
+# Symbols that must always be exported.
+include_expsyms=""
+
+# ### END LIBTOOL TAG CONFIG: CXX
+
diff --git a/libs/glibmm2/scripts/Makefile b/libs/glibmm2/scripts/Makefile
new file mode 100644
index 0000000000..e6b3a83092
--- /dev/null
+++ b/libs/glibmm2/scripts/Makefile
@@ -0,0 +1,387 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# scripts/Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+srcdir = .
+top_srcdir = ..
+
+pkgdatadir = $(datadir)/glibmm
+pkglibdir = $(libdir)/glibmm
+pkgincludedir = $(includedir)/glibmm
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = i686-pc-linux-gnu
+host_triplet = i686-pc-linux-gnu
+subdir = scripts
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ config.guess config.sub depcomp install-sh ltmain.sh missing
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/scripts/cxx.m4 \
+ $(top_srcdir)/scripts/cxx_std.m4 \
+ $(top_srcdir)/scripts/docgen.m4 \
+ $(top_srcdir)/scripts/glibmm_check_perl.m4 \
+ $(top_srcdir)/scripts/macros.m4 \
+ $(top_srcdir)/scripts/reduced.m4 $(top_srcdir)/scripts/sun.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h \
+ $(top_builddir)/glib/glibmmconfig.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(m4dir)"
+m4DATA_INSTALL = $(INSTALL_DATA)
+DATA = $(m4_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run aclocal-1.9 -I ./scripts
+AMDEP_FALSE = #
+AMDEP_TRUE =
+AMTAR = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run tar
+AR = ar
+AS = as
+AUTOCONF = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run autoconf
+AUTOHEADER = :
+AUTOMAKE = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS =
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2 -Wall -Wno-long-long
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DISABLE_DEPRECATED_API_CFLAGS =
+DISABLE_DEPRECATED_CFLAGS =
+DLLTOOL = dlltool
+ECHO = echo
+ECHO_C =
+ECHO_N = -n
+ECHO_T =
+EGREP = grep -E
+EXEEXT =
+F77 =
+FFLAGS =
+GLIBMM_CFLAGS = -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+GLIBMM_LIBS = -Wl,--export-dynamic -lsigc-2.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
+GLIBMM_MAJOR_VERSION = 2
+GLIBMM_MICRO_VERSION = 3
+GLIBMM_MINOR_VERSION = 13
+GLIBMM_RELEASE = 2.13
+GLIBMM_VERSION = 2.13.3
+GTHREAD_CFLAGS = -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+GTHREAD_LIBS = -pthread -lgthread-2.0 -lrt -lglib-2.0
+GTKMMPROC_MERGECDOCS =
+GTKMM_DOXYGEN_INPUT = /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/glib/glibmm/
+GTKMM_FALSE_FALSE =
+GTKMM_FALSE_TRUE = #
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =
+LIBGLIBMM_SO_VERSION = 1:24:0
+LIBOBJS =
+LIBS =
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS =
+M4 = m4
+MAINT = #
+MAINTAINER_MODE_FALSE =
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run makeinfo
+OBJDUMP = objdump
+OBJEXT = o
+OS_WIN32_FALSE =
+OS_WIN32_TRUE = #
+PACKAGE = glibmm
+PACKAGE_BUGREPORT =
+PACKAGE_NAME =
+PACKAGE_STRING =
+PACKAGE_TARNAME =
+PACKAGE_VERSION =
+PATH_SEPARATOR = :
+PERL_PATH = /usr/bin/perl
+PKG_CONFIG = /usr/bin/pkg-config
+PLATFORM_WIN32_FALSE =
+PLATFORM_WIN32_TRUE = #
+RANLIB = ranlib
+SET_MAKE =
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 2.13.3
+ac_ct_AR = ar
+ac_ct_AS =
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DLLTOOL =
+ac_ct_F77 =
+ac_ct_OBJDUMP =
+ac_ct_RANLIB = ranlib
+ac_ct_STRIP = strip
+ac_pt_PKG_CONFIG = /usr/bin/pkg-config
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE =
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE =
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = i686-pc-linux-gnu
+build_alias =
+build_cpu = i686
+build_os = linux-gnu
+build_vendor = pc
+datadir = ${prefix}/share
+exec_prefix = ${prefix}
+host = i686-pc-linux-gnu
+host_alias =
+host_cpu = i686
+host_os = linux-gnu
+host_vendor = pc
+includedir = ${prefix}/include
+infodir = ${prefix}/info
+install_sh = /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localstatedir = ${prefix}/var
+mandir = ${prefix}/man
+mkdir_p = mkdir -p --
+oldincludedir = /usr/include
+prefix = /usr/local
+program_transform_name = s,x,x,
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias =
+
+# Install m4 macros needed by other *mm packages:
+m4dir = $(datadir)/aclocal
+m4_DATA = glibmm_check_perl.m4
+EXTRA_DIST = README config.sub missing config.guess install-sh \
+ ltmain.sh cxx.m4 cxx_std.m4 docgen.m4 macros.m4 reduced.m4 \
+ $(m4_DATA)
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu scripts/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu scripts/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-m4DATA: $(m4_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(m4dir)" || $(mkdir_p) "$(DESTDIR)$(m4dir)"
+ @list='$(m4_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(m4DATA_INSTALL) '$$d$$p' '$(DESTDIR)$(m4dir)/$$f'"; \
+ $(m4DATA_INSTALL) "$$d$$p" "$(DESTDIR)$(m4dir)/$$f"; \
+ done
+
+uninstall-m4DATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(m4_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(m4dir)/$$f'"; \
+ rm -f "$(DESTDIR)$(m4dir)/$$f"; \
+ done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(m4dir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-m4DATA
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-m4DATA
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-exec install-exec-am \
+ install-info install-info-am install-m4DATA install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am uninstall-info-am uninstall-m4DATA
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libs/glibmm2/scripts/Makefile.am b/libs/glibmm2/scripts/Makefile.am
new file mode 100644
index 0000000000..0edd72f1a0
--- /dev/null
+++ b/libs/glibmm2/scripts/Makefile.am
@@ -0,0 +1,8 @@
+# Install m4 macros needed by other *mm packages:
+m4dir = $(datadir)/aclocal
+m4_DATA = glibmm_check_perl.m4
+
+EXTRA_DIST = README config.sub missing config.guess install-sh \
+ ltmain.sh cxx.m4 cxx_std.m4 docgen.m4 macros.m4 reduced.m4 \
+ $(m4_DATA)
+
diff --git a/libs/glibmm2/scripts/Makefile.in b/libs/glibmm2/scripts/Makefile.in
new file mode 100644
index 0000000000..9574c987b0
--- /dev/null
+++ b/libs/glibmm2/scripts/Makefile.in
@@ -0,0 +1,387 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = scripts
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ config.guess config.sub depcomp install-sh ltmain.sh missing
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/scripts/cxx.m4 \
+ $(top_srcdir)/scripts/cxx_std.m4 \
+ $(top_srcdir)/scripts/docgen.m4 \
+ $(top_srcdir)/scripts/glibmm_check_perl.m4 \
+ $(top_srcdir)/scripts/macros.m4 \
+ $(top_srcdir)/scripts/reduced.m4 $(top_srcdir)/scripts/sun.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h \
+ $(top_builddir)/glib/glibmmconfig.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(m4dir)"
+m4DATA_INSTALL = $(INSTALL_DATA)
+DATA = $(m4_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISABLE_DEPRECATED_API_CFLAGS = @DISABLE_DEPRECATED_API_CFLAGS@
+DISABLE_DEPRECATED_CFLAGS = @DISABLE_DEPRECATED_CFLAGS@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GLIBMM_CFLAGS = @GLIBMM_CFLAGS@
+GLIBMM_LIBS = @GLIBMM_LIBS@
+GLIBMM_MAJOR_VERSION = @GLIBMM_MAJOR_VERSION@
+GLIBMM_MICRO_VERSION = @GLIBMM_MICRO_VERSION@
+GLIBMM_MINOR_VERSION = @GLIBMM_MINOR_VERSION@
+GLIBMM_RELEASE = @GLIBMM_RELEASE@
+GLIBMM_VERSION = @GLIBMM_VERSION@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKMMPROC_MERGECDOCS = @GTKMMPROC_MERGECDOCS@
+GTKMM_DOXYGEN_INPUT = @GTKMM_DOXYGEN_INPUT@
+GTKMM_FALSE_FALSE = @GTKMM_FALSE_FALSE@
+GTKMM_FALSE_TRUE = @GTKMM_FALSE_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBGLIBMM_SO_VERSION = @LIBGLIBMM_SO_VERSION@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+M4 = @M4@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS_WIN32_FALSE = @OS_WIN32_FALSE@
+OS_WIN32_TRUE = @OS_WIN32_TRUE@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL_PATH = @PERL_PATH@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_WIN32_FALSE = @PLATFORM_WIN32_FALSE@
+PLATFORM_WIN32_TRUE = @PLATFORM_WIN32_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_AS = @ac_ct_AS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+
+# Install m4 macros needed by other *mm packages:
+m4dir = $(datadir)/aclocal
+m4_DATA = glibmm_check_perl.m4
+EXTRA_DIST = README config.sub missing config.guess install-sh \
+ ltmain.sh cxx.m4 cxx_std.m4 docgen.m4 macros.m4 reduced.m4 \
+ $(m4_DATA)
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu scripts/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu scripts/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-m4DATA: $(m4_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(m4dir)" || $(mkdir_p) "$(DESTDIR)$(m4dir)"
+ @list='$(m4_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(m4DATA_INSTALL) '$$d$$p' '$(DESTDIR)$(m4dir)/$$f'"; \
+ $(m4DATA_INSTALL) "$$d$$p" "$(DESTDIR)$(m4dir)/$$f"; \
+ done
+
+uninstall-m4DATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(m4_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(m4dir)/$$f'"; \
+ rm -f "$(DESTDIR)$(m4dir)/$$f"; \
+ done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(m4dir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-m4DATA
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-m4DATA
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-exec install-exec-am \
+ install-info install-info-am install-m4DATA install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am uninstall-info-am uninstall-m4DATA
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libs/glibmm2/scripts/README b/libs/glibmm2/scripts/README
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/libs/glibmm2/scripts/README
@@ -0,0 +1 @@
+
diff --git a/libs/glibmm2/scripts/config.guess b/libs/glibmm2/scripts/config.guess
new file mode 100644
index 0000000000..e3ef63f6cb
--- /dev/null
+++ b/libs/glibmm2/scripts/config.guess
@@ -0,0 +1,1471 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+timestamp='2005-12-13'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub. If it succeeds, it prints the system name on stdout, and
+# exits with 0. Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int x;" > $dummy.c ;
+ for c in cc gcc c89 c99 ; do
+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found ;
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ sysctl="sysctl -n hw.machine_arch"
+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+ case "${UNAME_MACHINE_ARCH}" in
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently, or will in the future.
+ case "${UNAME_MACHINE_ARCH}" in
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ eval $set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep __ELF__ >/dev/null
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "${UNAME_VERSION}" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+ exit ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit ;;
+ macppc:MirBSD:*:*)
+ echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ ;;
+ *5.*)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE="alpha" ;;
+ "EV5 (21164)")
+ UNAME_MACHINE="alphaev5" ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE="alphaev56" ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE="alphapca56" ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE="alphapca57" ;;
+ "EV6 (21264)")
+ UNAME_MACHINE="alphaev6" ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE="alphaev67" ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE="alphaev69" ;;
+ "EV7 (21364)")
+ UNAME_MACHINE="alphaev7" ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE="alphaev79" ;;
+ esac
+ # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+ exit ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+ exit ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit ;;
+ arm:riscos:*:*|arm:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit ;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7; exit ;;
+ esac ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ i86pc:SunOS:5.*:*)
+ echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ exit ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ case "`/bin/arch`" in
+ sun3)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ ;;
+ sun4)
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+ exit ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c &&
+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`$dummy $dummyarg` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ then
+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+ [ ${TARGET_BINARY_INTERFACE}x = x ]
+ then
+ echo m88k-dg-dgux${UNAME_RELEASE}
+ else
+ echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+ exit ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ exit ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+ exit ;;
+ *:AIX:*:[45])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+ 9000/31? ) HP_ARCH=m68000 ;;
+ 9000/[34]?? ) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if [ "${HP_ARCH}" = "" ]; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+ eval $set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep __LP64__ >/dev/null
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo unknown-hitachi-hiuxwe2
+ exit ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+ exit ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+ exit ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:FreeBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit ;;
+ i*:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit ;;
+ x86:Interix*:[345]*)
+ echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
+ exit ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+ exit ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+ exit ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ exit ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit ;;
+ arm*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ cris:Linux:*:*)
+ echo cris-axis-linux-gnu
+ exit ;;
+ crisv32:Linux:*:*)
+ echo crisv32-axis-linux-gnu
+ exit ;;
+ frv:Linux:*:*)
+ echo frv-unknown-linux-gnu
+ exit ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ mips:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips
+ #undef mipsel
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mipsel
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '/^CPU/{s: ::g;p;}'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips64
+ #undef mips64el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mips64el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips64
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '/^CPU/{s: ::g;p;}'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ or32:Linux:*:*)
+ echo or32-unknown-linux-gnu
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
+ exit ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ vax:Linux:*:*)
+ echo ${UNAME_MACHINE}-dec-linux-gnu
+ exit ;;
+ x86_64:Linux:*:*)
+ echo x86_64-unknown-linux-gnu
+ exit ;;
+ i*86:Linux:*:*)
+ # The BFD linker knows what the default object file format is, so
+ # first see if it will tell us. cd to the root directory to prevent
+ # problems with other programs or directories called `ld' in the path.
+ # Set LC_ALL=C to ensure ld outputs messages in English.
+ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+ | sed -ne '/supported targets:/!d
+ s/[ ][ ]*/ /g
+ s/.*supported targets: *//
+ s/ .*//
+ p'`
+ case "$ld_supported_targets" in
+ elf32-i386)
+ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+ ;;
+ a.out-i386-linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+ exit ;;
+ coff-i386)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+ exit ;;
+ "")
+ # Either a pre-BFD a.out linker (linux-gnuoldld) or
+ # one that does not give us useful --help.
+ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+ exit ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <features.h>
+ #ifdef __ELF__
+ # ifdef __GLIBC__
+ # if __GLIBC__ >= 2
+ LIBC=gnu
+ # else
+ LIBC=gnulibc1
+ # endif
+ # else
+ LIBC=gnulibc1
+ # endif
+ #else
+ #if defined(__INTEL_COMPILER) || defined(__PGI)
+ LIBC=gnu
+ #else
+ LIBC=gnuaout
+ #endif
+ #endif
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '/^LIBC/{s: ::g;p;}'`"
+ test x"${LIBC}" != x && {
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit
+ }
+ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+ ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ exit ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ exit ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i386.
+ echo i386-pc-msdosdjgpp
+ exit ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+ exit ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ echo ${UNAME_MACHINE}-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo ${UNAME_MACHINE}-stratus-vos
+ exit ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+ exit ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+ exit ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ exit ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit ;;
+ NSE-?:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "$cputype" = "386"; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
+ i*86:rdos:*:*)
+ echo ${UNAME_MACHINE}-pc-rdos
+ exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+ printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+ printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+# include <sys/param.h>
+# if defined (BSD)
+# if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+# else
+# if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# endif
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# else
+ printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+ case `getsysinfo -f cpu_type` in
+ c1*)
+ echo c1-convex-bsd
+ exit ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ c34*)
+ echo c34-convex-bsd
+ exit ;;
+ c38*)
+ echo c38-convex-bsd
+ exit ;;
+ c4*)
+ echo c4-convex-bsd
+ exit ;;
+ esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+and
+ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/libs/glibmm2/scripts/config.sub b/libs/glibmm2/scripts/config.sub
new file mode 100644
index 0000000000..285164700d
--- /dev/null
+++ b/libs/glibmm2/scripts/config.sub
@@ -0,0 +1,1599 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+timestamp='2005-12-11'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine. It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support. The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit ;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+ *)
+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+ if [ $basic_machine != $1 ]
+ then os=`echo $1 | sed 's/.*-/-/'`
+ else os=; fi
+ ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work. We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+ -sun*os*)
+ # Prevent following clause from handling this invalid input.
+ ;;
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+ -apple | -axis | -knuth | -cray)
+ os=
+ basic_machine=$1
+ ;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -sco6)
+ os=-sco5v6
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco4)
+ os=-sco3.2v4
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2v[4-9]*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -udk*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -isc)
+ os=-isc2.2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -clix*)
+ basic_machine=clipper-intergraph
+ ;;
+ -isc*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -lynx*)
+ os=-lynxos
+ ;;
+ -ptx*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ ;;
+ -windowsnt*)
+ os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ ;;
+ -psos*)
+ os=-psos
+ ;;
+ -mint | -mint[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+ # Recognize the basic CPU types without company name.
+ # Some are omitted here because they have special meanings below.
+ 1750a | 580 \
+ | a29k \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+ | bfin \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+ | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64vr | mips64vrel \
+ | mips64orion | mips64orionel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+ | mt \
+ | msp430 \
+ | ns16k | ns32k \
+ | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b \
+ | strongarm \
+ | tahoe | thumb | tic4x | tic80 | tron \
+ | v850 | v850e \
+ | we32k \
+ | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
+ | z8k)
+ basic_machine=$basic_machine-unknown
+ ;;
+ m32c)
+ basic_machine=$basic_machine-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12)
+ # Motorola 68HC11/12.
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+ ms1)
+ basic_machine=mt-unknown
+ ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ basic_machine=$basic_machine-pc
+ ;;
+ # Object if more than one company name word.
+ *-*-*)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+ # Recognize the basic CPU types with company name.
+ 580-* \
+ | a29k-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | avr-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
+ | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | mt-* \
+ | msp430-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tron-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | xstormy16-* | xtensa-* \
+ | ymp-* \
+ | z8k-*)
+ ;;
+ m32c-*)
+ ;;
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
+ 386bsd)
+ basic_machine=i386-unknown
+ os=-bsd
+ ;;
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ basic_machine=m68000-att
+ ;;
+ 3b*)
+ basic_machine=we32k-att
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
+ alliant | fx80)
+ basic_machine=fx80-alliant
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=-bsd
+ ;;
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+ ;;
+ amiga | amiga-*)
+ basic_machine=m68k-unknown
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=-amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=-sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=-sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=-bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=-bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=-bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=-bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=-bsd
+ ;;
+ cray | j90)
+ basic_machine=j90-cray
+ os=-unicos
+ ;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16c)
+ basic_machine=cr16c-unknown
+ os=-elf
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ crisv32 | crisv32-* | etraxfs*)
+ basic_machine=crisv32-axis
+ ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+ crx)
+ basic_machine=crx-unknown
+ os=-elf
+ ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ ;;
+ decsystem10* | dec10*)
+ basic_machine=pdp10-dec
+ os=-tops10
+ ;;
+ decsystem20* | dec20*)
+ basic_machine=pdp10-dec
+ os=-tops20
+ ;;
+ delta | 3300 | motorola-3300 | motorola-delta \
+ | 3300-motorola | delta-motorola)
+ basic_machine=m68k-motorola
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+ ;;
+ dpx2* | dpx2*-bull)
+ basic_machine=m68k-bull
+ os=-sysv3
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=-ebmon
+ ;;
+ elxsi)
+ basic_machine=elxsi-elxsi
+ os=-bsd
+ ;;
+ encore | umax | mmax)
+ basic_machine=ns32k-encore
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
+ ;;
+ fx2800)
+ basic_machine=i860-alliant
+ ;;
+ genix)
+ basic_machine=ns32k-ns
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=-sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
+ ;;
+ h3050r* | hiux*)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=-hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=-xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=-hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=-sysv3
+ ;;
+ hp300-*)
+ basic_machine=m68k-hp
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=-bsd
+ ;;
+ hp300hpux)
+ basic_machine=m68k-hp
+ os=-hpux
+ ;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ basic_machine=m68000-hp
+ ;;
+ hp9k3[2-9][0-9])
+ basic_machine=m68k-hp
+ ;;
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hppa-next)
+ os=-nextstep3
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=-osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=-proelf
+ ;;
+ i370-ibm* | ibm*)
+ basic_machine=i370-ibm
+ ;;
+# I'm not sure what "Sysv32" means. Should this be sysv3.2?
+ i*86v32)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv32
+ ;;
+ i*86v4*)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv4
+ ;;
+ i*86v)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv
+ ;;
+ i*86sol2)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-solaris2
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=-mach
+ ;;
+ i386-vsta | vsta)
+ basic_machine=i386-unknown
+ os=-vsta
+ ;;
+ iris | iris4d)
+ basic_machine=mips-sgi
+ case $os in
+ -irix*)
+ ;;
+ *)
+ os=-irix4
+ ;;
+ esac
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=-sysv
+ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ mingw32)
+ basic_machine=i386-pc
+ os=-mingw32
+ ;;
+ miniframe)
+ basic_machine=m68000-convergent
+ ;;
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+ mips3*-*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ ;;
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=-morphos
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+ ms1-*)
+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=-sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-unknown
+ os=-netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=-linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=-newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=-newsos
+ ;;
+ news-3600 | risc-news)
+ basic_machine=mips-sony
+ os=-newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=-sysv
+ ;;
+ next | m*-next )
+ basic_machine=m68k-next
+ case $os in
+ -nextstep* )
+ ;;
+ -ns2*)
+ os=-nextstep2
+ ;;
+ *)
+ os=-nextstep3
+ ;;
+ esac
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=-cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=-cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=-nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=-mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=-nonstopux
+ ;;
+ np1)
+ basic_machine=np1-gould
+ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ openrisc | openrisc-*)
+ basic_machine=or32-unknown
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
+ ;;
+ pa-hitachi)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=-osf
+ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
+ basic_machine=i686-pc
+ ;;
+ pentiumii | pentium2 | pentiumiii | pentium3)
+ basic_machine=i686-pc
+ ;;
+ pentium4)
+ basic_machine=i786-pc
+ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium4-*)
+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pn)
+ basic_machine=pn-gould
+ ;;
+ power) basic_machine=power-ibm
+ ;;
+ ppc) basic_machine=powerpc-unknown
+ ;;
+ ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppcle | powerpclittle | ppc-le | powerpc-little)
+ basic_machine=powerpcle-unknown
+ ;;
+ ppcle-* | powerpclittle-*)
+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64) basic_machine=powerpc64-unknown
+ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ basic_machine=powerpc64le-unknown
+ ;;
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ps2)
+ basic_machine=i386-ibm
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+ rdos)
+ basic_machine=i386-pc
+ os=-rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ rm[46]00)
+ basic_machine=mips-siemens
+ ;;
+ rtpc | rtpc-*)
+ basic_machine=romp-ibm
+ ;;
+ s390 | s390-*)
+ basic_machine=s390-ibm
+ ;;
+ s390x | s390x-*)
+ basic_machine=s390x-ibm
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ sb1)
+ basic_machine=mipsisa64sb1-unknown
+ ;;
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+ sh)
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+ sparclite-wrs | simso-wrs)
+ basic_machine=sparclite-wrs
+ os=-vxworks
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=-sysv2
+ ;;
+ spur)
+ basic_machine=spur-unknown
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=-sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=-sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=-sunos4
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=-sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=-sunos4
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=-sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=-sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=-solaris2
+ ;;
+ sun3 | sun3-*)
+ basic_machine=m68k-sun
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=-dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=-unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=-unicos
+ ;;
+ tic54x | c54x*)
+ basic_machine=tic54x-unknown
+ os=-coff
+ ;;
+ tic55x | c55x*)
+ basic_machine=tic55x-unknown
+ os=-coff
+ ;;
+ tic6x | c6x*)
+ basic_machine=tic6x-unknown
+ os=-coff
+ ;;
+ tx39)
+ basic_machine=mipstx39-unknown
+ ;;
+ tx39el)
+ basic_machine=mipstx39el-unknown
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=-tops20
+ ;;
+ tower | tower-32)
+ basic_machine=m68k-ncr
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=-sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=-sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=-vms
+ ;;
+ vpp*|vx|vx-*)
+ basic_machine=f301-fujitsu
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=-vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=-vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=-vxworks
+ ;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ z8k-*-coff)
+ basic_machine=z8k-unknown
+ os=-sim
+ ;;
+ none)
+ basic_machine=none-none
+ os=-none
+ ;;
+
+# Here we handle the default manufacturer of certain CPU types. It is in
+# some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ basic_machine=hppa1.1-winbond
+ ;;
+ op50n)
+ basic_machine=hppa1.1-oki
+ ;;
+ op60c)
+ basic_machine=hppa1.1-oki
+ ;;
+ romp)
+ basic_machine=romp-ibm
+ ;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
+ rs6000)
+ basic_machine=rs6000-ibm
+ ;;
+ vax)
+ basic_machine=vax-dec
+ ;;
+ pdp10)
+ # there are many clones, so DEC is not a safe bet
+ basic_machine=pdp10-unknown
+ ;;
+ pdp11)
+ basic_machine=pdp11-dec
+ ;;
+ we32k)
+ basic_machine=we32k-att
+ ;;
+ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ sparc | sparcv8 | sparcv9 | sparcv9b)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+ basic_machine=cydra-cydrome
+ ;;
+ orion)
+ basic_machine=orion-highlevel
+ ;;
+ orion105)
+ basic_machine=clipper-highlevel
+ ;;
+ mac | mpw | mac-mpw)
+ basic_machine=m68k-apple
+ ;;
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+ *-unknown)
+ # Make sure to match an already-canonicalized machine name.
+ ;;
+ *)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+ *-digital*)
+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+ ;;
+ *-commodore*)
+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ ;;
+ *)
+ ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+ # First match some system type aliases
+ # that might get confused with valid system types.
+ # -solaris* is a basic system type, with this one exception.
+ -solaris1 | -solaris1.*)
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ ;;
+ -solaris)
+ os=-solaris2
+ ;;
+ -svr4*)
+ os=-sysv4
+ ;;
+ -unixware*)
+ os=-sysv4.2uw
+ ;;
+ -gnu/linux*)
+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ ;;
+ # First accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST END IN A *, to match a version number.
+ # -sysv* is not here because it comes later, after sysvr4.
+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+ | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku* | -rdos*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i*86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto-qnx*)
+ ;;
+ -nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+ -linux-dietlibc)
+ os=-linux-dietlibc
+ ;;
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+ -sunos5*)
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ ;;
+ -sunos6*)
+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ ;;
+ -opened*)
+ os=-openedition
+ ;;
+ -os400*)
+ os=-os400
+ ;;
+ -wince*)
+ os=-wince
+ ;;
+ -osfrose*)
+ os=-osfrose
+ ;;
+ -osf*)
+ os=-osf
+ ;;
+ -utek*)
+ os=-bsd
+ ;;
+ -dynix*)
+ os=-bsd
+ ;;
+ -acis*)
+ os=-aos
+ ;;
+ -atheos*)
+ os=-atheos
+ ;;
+ -syllable*)
+ os=-syllable
+ ;;
+ -386bsd)
+ os=-bsd
+ ;;
+ -ctix* | -uts*)
+ os=-sysv
+ ;;
+ -nova*)
+ os=-rtmk-nova
+ ;;
+ -ns2 )
+ os=-nextstep2
+ ;;
+ -nsk*)
+ os=-nsk
+ ;;
+ # Preserve the version number of sinix5.
+ -sinix5.*)
+ os=`echo $os | sed -e 's|sinix|sysv|'`
+ ;;
+ -sinix*)
+ os=-sysv4
+ ;;
+ -tpf*)
+ os=-tpf
+ ;;
+ -triton*)
+ os=-sysv3
+ ;;
+ -oss*)
+ os=-sysv3
+ ;;
+ -svr4)
+ os=-sysv4
+ ;;
+ -svr3)
+ os=-sysv3
+ ;;
+ -sysvr4)
+ os=-sysv4
+ ;;
+ # This must come after -sysvr4.
+ -sysv*)
+ ;;
+ -ose*)
+ os=-ose
+ ;;
+ -es1800*)
+ os=-ose
+ ;;
+ -xenix)
+ os=-xenix
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
+ ;;
+ -aros*)
+ os=-aros
+ ;;
+ -kaos*)
+ os=-kaos
+ ;;
+ -zvmoe)
+ os=-zvmoe
+ ;;
+ -none)
+ ;;
+ *)
+ # Get rid of the `-' at the beginning of $os.
+ os=`echo $os | sed 's/[^-]*-//'`
+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system. Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+ *-acorn)
+ os=-riscix1.2
+ ;;
+ arm*-rebel)
+ os=-linux
+ ;;
+ arm*-semi)
+ os=-aout
+ ;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+ ;;
+ pdp11-*)
+ os=-none
+ ;;
+ *-dec | vax-*)
+ os=-ultrix4.2
+ ;;
+ m68*-apollo)
+ os=-domain
+ ;;
+ i386-sun)
+ os=-sunos4.0.2
+ ;;
+ m68000-sun)
+ os=-sunos3
+ # This also exists in the configure program, but was not the
+ # default.
+ # os=-sunos4
+ ;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ mips*-cisco)
+ os=-elf
+ ;;
+ mips*-*)
+ os=-elf
+ ;;
+ or32-*)
+ os=-coff
+ ;;
+ *-tti) # must be before sparc entry or we get the wrong os.
+ os=-sysv3
+ ;;
+ sparc-* | *-sun)
+ os=-sunos4.1.1
+ ;;
+ *-be)
+ os=-beos
+ ;;
+ *-haiku)
+ os=-haiku
+ ;;
+ *-ibm)
+ os=-aix
+ ;;
+ *-knuth)
+ os=-mmixware
+ ;;
+ *-wec)
+ os=-proelf
+ ;;
+ *-winbond)
+ os=-proelf
+ ;;
+ *-oki)
+ os=-proelf
+ ;;
+ *-hp)
+ os=-hpux
+ ;;
+ *-hitachi)
+ os=-hiux
+ ;;
+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+ os=-sysv
+ ;;
+ *-cbm)
+ os=-amigaos
+ ;;
+ *-dg)
+ os=-dgux
+ ;;
+ *-dolphin)
+ os=-sysv3
+ ;;
+ m68k-ccur)
+ os=-rtu
+ ;;
+ m88k-omron*)
+ os=-luna
+ ;;
+ *-next )
+ os=-nextstep
+ ;;
+ *-sequent)
+ os=-ptx
+ ;;
+ *-crds)
+ os=-unos
+ ;;
+ *-ns)
+ os=-genix
+ ;;
+ i370-*)
+ os=-mvs
+ ;;
+ *-next)
+ os=-nextstep3
+ ;;
+ *-gould)
+ os=-sysv
+ ;;
+ *-highlevel)
+ os=-bsd
+ ;;
+ *-encore)
+ os=-bsd
+ ;;
+ *-sgi)
+ os=-irix
+ ;;
+ *-siemens)
+ os=-sysv4
+ ;;
+ *-masscomp)
+ os=-rtu
+ ;;
+ f30[01]-fujitsu | f700-fujitsu)
+ os=-uxpv
+ ;;
+ *-rom68k)
+ os=-coff
+ ;;
+ *-*bug)
+ os=-coff
+ ;;
+ *-apple)
+ os=-macos
+ ;;
+ *-atari*)
+ os=-mint
+ ;;
+ *)
+ os=-none
+ ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer. We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+ *-unknown)
+ case $os in
+ -riscix*)
+ vendor=acorn
+ ;;
+ -sunos*)
+ vendor=sun
+ ;;
+ -aix*)
+ vendor=ibm
+ ;;
+ -beos*)
+ vendor=be
+ ;;
+ -hpux*)
+ vendor=hp
+ ;;
+ -mpeix*)
+ vendor=hp
+ ;;
+ -hiux*)
+ vendor=hitachi
+ ;;
+ -unos*)
+ vendor=crds
+ ;;
+ -dgux*)
+ vendor=dg
+ ;;
+ -luna*)
+ vendor=omron
+ ;;
+ -genix*)
+ vendor=ns
+ ;;
+ -mvs* | -opened*)
+ vendor=ibm
+ ;;
+ -os400*)
+ vendor=ibm
+ ;;
+ -ptx*)
+ vendor=sequent
+ ;;
+ -tpf*)
+ vendor=ibm
+ ;;
+ -vxsim* | -vxworks* | -windiss*)
+ vendor=wrs
+ ;;
+ -aux*)
+ vendor=apple
+ ;;
+ -hms*)
+ vendor=hitachi
+ ;;
+ -mpw* | -macos*)
+ vendor=apple
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ vendor=atari
+ ;;
+ -vos*)
+ vendor=stratus
+ ;;
+ esac
+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+ ;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/libs/glibmm2/scripts/cxx.m4 b/libs/glibmm2/scripts/cxx.m4
new file mode 100644
index 0000000000..8dce019940
--- /dev/null
+++ b/libs/glibmm2/scripts/cxx.m4
@@ -0,0 +1,364 @@
+
+dnl
+dnl AC_CXX_NAMESPACES(ACTION_FOUND,ACTION_NOT_FOUND)
+dnl
+AC_DEFUN([AC_CXX_NAMESPACES],[
+AC_MSG_CHECKING(if C++ compiler supports namespaces)
+AC_TRY_COMPILE(
+[
+namespace Foo { struct A {}; }
+using namespace Foo;
+],[
+A a;
+(void)a;
+],[
+ ac_cxx_namespaces=yes
+ AC_MSG_RESULT([$ac_cxx_namespaces])
+ $1
+],[
+ ac_cxx_namespaces=no
+ AC_MSG_RESULT([$ac_cxx_namespaces])
+ $2
+])
+])
+
+dnl
+dnl AC_CXX_NAMESPACES(ACTION_FOUND,ACTION_NOT_FOUND)
+dnl
+AC_DEFUN([AC_CXX_BOOL],[
+AC_MSG_CHECKING(if C++ compiler supports bool)
+AC_TRY_COMPILE(
+[
+],[
+ bool b=true;
+ bool b1=false;
+ (void)b;
+ (void)b1;
+],[
+ ac_cxx_bool=yes
+ AC_MSG_RESULT([$ac_cxx_bool])
+ $1
+],[
+ ac_cxx_bool=no
+ AC_MSG_RESULT([$ac_cxx_bool])
+ $2
+])
+])
+
+dnl
+dnl AC_CXX_MUTABLE(ACTION_FOUND,ACTION_NOT_FOUND)
+dnl
+AC_DEFUN([AC_CXX_MUTABLE],[
+AC_MSG_CHECKING(if C++ compiler supports mutable)
+AC_TRY_COMPILE(
+[
+class k {
+ mutable char *c;
+public:
+ void foo() const { c=0; }
+};
+],[
+],[
+ ac_cxx_mutable=yes
+ AC_MSG_RESULT([$ac_cxx_mutable])
+ $1
+],[
+ ac_cxx_mutable=no
+ AC_MSG_RESULT([$ac_cxx_mutable])
+ $2
+])
+])
+
+
+dnl
+dnl AC_CXX_CONST_CAST(ACTION_FOUND,ACTION_NOT_FOUND)
+dnl
+AC_DEFUN([AC_CXX_CONST_CAST],[
+AC_MSG_CHECKING([if C++ compiler supports const_cast<>])
+AC_TRY_COMPILE(
+[
+ class foo;
+],[
+ const foo *c=0;
+ foo *c1=const_cast<foo*>(c);
+ (void)c1;
+],[
+ ac_cxx_const_cast=yes
+ AC_MSG_RESULT([$ac_cxx_const_cast])
+],[
+ ac_cxx_const_cast=no
+ AC_MSG_RESULT([$ac_cxx_const_cast])
+])
+])
+
+
+dnl
+dnl GLIBMM_CXX_MEMBER_FUNCTIONS_MEMBER_TEMPLATES(ACTION_FOUND,ACTION_NOT_FOUND)
+dnl
+dnl Test whether the compiler allows member functions to refer to spezialized member function templates.
+dnl Some compilers have problems with this. gcc 2.95.3 aborts with an internal compiler error.
+dnl
+AC_DEFUN([GLIBMM_CXX_MEMBER_FUNCTIONS_MEMBER_TEMPLATES],[
+AC_MSG_CHECKING([if C++ compiler allows member functions to refer to member templates])
+AC_TRY_COMPILE(
+[
+ struct foo {
+ template <class C> inline
+ void doit();
+ void thebug();
+ };
+
+ template <class C> inline
+ void foo::doit() {
+ }
+
+ struct bar {
+ void neitherabug();
+ };
+
+ void notabug() {
+ void (foo::*func)();
+ func = &foo::doit<int>;
+ (void)func;
+ }
+
+ void bar::neitherabug() {
+ void (foo::*func)();
+ func = &foo::doit<int>;
+ (void)func;
+ }
+
+ void foo::thebug() {
+ void (foo::*func)();
+ func = &foo::doit<int>; //Compiler bugs usually show here.
+ (void)func;
+ }
+],[],[
+ glibmm_cxx_member_functions_member_templates=yes
+ AC_DEFINE([GLIBMM_MEMBER_FUNCTIONS_MEMBER_TEMPLATES],[1],[does the C++ compiler allow member functions to refer to member templates])
+ AC_MSG_RESULT([$glibmm_cxx_member_functions_member_templates])
+],[
+ glibmm_cxx_member_functions_member_templates=no
+ AC_DEFINE([GLIBMM_MEMBER_FUNCTIONS_MEMBER_TEMPLATES],[0])
+ AC_MSG_RESULT([$glibmm_cxx_member_functions_member_templates])
+])
+])
+
+## GLIBMM_CXX_CAN_DISAMBIGUATE_CONST_TEMPLATE_SPECIALIZATIONS()
+##
+## Check whether the compiler finds it ambiguous to have both
+## const and non-const template specializations,
+## The SUN Forte compiler has this problem, though we are
+## not 100% sure that it's a C++ standards violation.
+##
+AC_DEFUN([GLIBMM_CXX_CAN_DISAMBIGUATE_CONST_TEMPLATE_SPECIALIZATIONS],
+[
+ AC_REQUIRE([GLIBMM_CXX_HAS_NAMESPACE_STD])
+
+ AC_CACHE_CHECK(
+ [whether the compiler finds it ambiguous to have both const and non-const template specializations],
+ [glibmm_cv_cxx_can_disambiguate_const_template_specializations],
+ [
+ AC_TRY_COMPILE(
+ [
+ #include <iostream>
+
+ template <class T> class Foo {};
+
+ template <typename T> class Traits {
+ public:
+ const char* whoami() {
+ return "generic template";
+ }
+ };
+
+ template <typename T> class Traits<Foo<T> > {
+ public:
+ const char* whoami() {
+ return "partial specialization for Foo<T>";
+ }
+ };
+
+ template <typename T> class Traits<Foo<const T> > {
+ public:
+ const char* whoami() {
+ return "partial specialization for Foo<const T>";
+ }
+ };
+
+ ],[
+ Traits<int> it;
+ Traits<Foo<int> > fit;
+ Traits<Foo<const int> > cfit;
+
+ std::cout << "Traits<int> --> "
+ << it.whoami() << std::endl;
+ std::cout << "Traits<Foo<int>> --> "
+ << fit.whoami() << std::endl;
+ std::cout << "Traits<Foo<const int >> --> "
+ << cfit.whoami() << std::endl;
+ ],
+ [glibmm_cv_cxx_can_disambiguate_const_template_specializations="yes"],
+ [glibmm_cv_cxx_can_disambiguate_const_template_specializations="no"]
+ )
+ ])
+
+ if test "x${glibmm_cv_cxx_can_disambiguate_const_template_specializations}" = "xyes"; then
+ {
+ AC_DEFINE([GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS],[1], [Defined if the compiler does not find it ambiguous to have both const and non-const template specializations])
+ }
+ fi
+])
+
+
+
+## GLIBMM_CXX_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION()
+##
+## Check whether the compiler allows us to define a template that uses
+## dynamic_cast<> with an object whose type is not defined,
+## even if we do not use that template before we have defined the type.
+## This should probably not be allowed anyway.
+##
+AC_DEFUN([GLIBMM_CXX_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION],
+[
+ AC_CACHE_CHECK(
+ [whether the compiler allows us to define a template that uses dynamic_cast<> with an object whose type is not yet defined],
+ [glibmm_cv_cxx_can_use_dynamic_cast_in_unused_template_without_definition],
+ [
+ AC_TRY_COMPILE(
+ [
+ class SomeClass;
+
+ SomeClass* some_function();
+
+ template <class T>
+ class SomeTemplate
+ {
+ static bool do_something()
+ {
+ //This does not compile, with the MipsPro (IRIX) compiler
+ //even if we don't use this template at all.
+ //(We would use it later, after we have defined the type).
+ return dynamic_cast<T*>(some_function());
+ }
+ };
+
+ ],[
+
+ ],
+ [glibmm_cv_cxx_can_use_dynamic_cast_in_unused_template_without_definition="yes"],
+ [glibmm_cv_cxx_can_use_dynamic_cast_in_unused_template_without_definition="no"]
+ )
+ ])
+
+ if test "x${glibmm_cv_cxx_can_use_dynamic_cast_in_unused_template_without_definition}" = "xyes"; then
+ {
+ AC_DEFINE([GLIBMM_CAN_USE_DYNAMIC_CAST_IN_UNUSED_TEMPLATE_WITHOUT_DEFINITION],[1], [Defined if the compiler allows us to define a template that uses dynamic_cast<> with an object whose type is not yet defined.])
+ }
+ fi
+])
+
+
+## GLIBMM_CXX_CAN_ASSIGN_NON_EXTERN_C_FUNCTIONS_TO_EXTERN_C_CALLBACKS()
+##
+## Check whether the compiler allows us to use a non-extern "C" function,
+## such as a static member function, to an extern "C" function pointer,
+## such as a GTK+ callback.
+## This should not be allowed anyway.
+##
+AC_DEFUN([GLIBMM_CXX_CAN_ASSIGN_NON_EXTERN_C_FUNCTIONS_TO_EXTERN_C_CALLBACKS],
+[
+ AC_CACHE_CHECK(
+ [whether the the compilerallows us to use a non-extern "C" function for an extern "C" function pointer.],
+ [glibmm_cv_cxx_can_assign_non_extern_c_functions_to_extern_c_callbacks],
+ [
+ AC_TRY_COMPILE(
+ [
+ extern "C"
+ {
+ struct somestruct
+ {
+ void (*callback) (int);
+ };
+
+ } // extern "C"
+
+ void somefunction(int)
+ {
+ }
+
+ ],[
+ somestruct something;
+ something.callback = &somefunction;
+ ],
+ [glibmm_cv_cxx_can_assign_non_extern_c_functions_to_extern_c_callbacks="yes"],
+ [glibmm_cv_cxx_can_assign_non_extern_c_functions_to_extern_c_callbacks="no"]
+ )
+ ])
+
+ if test "x${glibmm_cv_cxx_can_assign_non_extern_c_functions_to_extern_c_callbacks}" = "xyes"; then
+ {
+ AC_DEFINE([GLIBMM_CAN_ASSIGN_NON_EXTERN_C_FUNCTIONS_TO_EXTERN_C_CALLBACKS],[1], [Defined if the compiler allows us to use a non-extern "C" function for an extern "C" function pointer.])
+ }
+ fi
+])
+
+## GLIBMM_CXX_CAN_USE_NAMESPACES_INSIDE_EXTERNC()
+##
+## Check whether the compiler puts extern "C" functions in the global namespace,
+## even inside a namespace declaration. The AIX xlC compiler does this, and also
+## gets confused if we declare the namespace again inside the extern "C" block.
+## This seems like a compiler bug, but not a serious one.
+##
+AC_DEFUN([GLIBMM_CXX_CAN_USE_NAMESPACES_INSIDE_EXTERNC],
+[
+ AC_CACHE_CHECK(
+ [whether the compiler uses namespace declarations inside extern "C" blocks.],
+ [glibmm_cv_cxx_can_use_namespaces_inside_externc],
+ [
+ AC_TRY_COMPILE(
+ [
+ namespace test
+ {
+
+ extern "C"
+ {
+
+ void do_something();
+
+ } //extern C
+
+
+ class Something
+ {
+ protected:
+ int i;
+
+ friend void do_something();
+ };
+
+ void do_something()
+ {
+ Something something;
+ something.i = 1;
+ }
+
+ } //namespace
+
+
+ ],[
+
+ ],
+ [glibmm_cv_cxx_can_use_namespaces_inside_externc="yes"],
+ [glibmm_cv_cxx_can_use_namespaces_inside_externc="no"]
+ )
+ ])
+
+ if test "x${glibmm_cv_cxx_can_use_namespaces_inside_externc}" = "xyes"; then
+ {
+ AC_DEFINE([GLIBMM_CAN_USE_NAMESPACES_INSIDE_EXTERNC],[1], [Defined if the compiler whether the compiler uses namespace declarations inside extern "C" blocks.])
+ }
+ fi
+])
+
+
diff --git a/libs/glibmm2/scripts/cxx_std.m4 b/libs/glibmm2/scripts/cxx_std.m4
new file mode 100644
index 0000000000..cb64fd4afe
--- /dev/null
+++ b/libs/glibmm2/scripts/cxx_std.m4
@@ -0,0 +1,195 @@
+cv_cxx_has_namespace_std
+## GLIBMM_CXX_HAS_NAMESPACE_STD()
+##
+## Test whether libstdc++ declares namespace std. For safety,
+## also check whether several randomly selected STL symbols
+## are available in namespace std.
+##
+## On success, #define GLIBMM_HAVE_NAMESPACE_STD to 1.
+##
+AC_DEFUN([GLIBMM_CXX_HAS_NAMESPACE_STD],
+[
+ AC_CACHE_CHECK(
+ [whether C++ library symbols are declared in namespace std],
+ [gtkmm_cv_cxx_has_namespace_std],
+ [
+ AC_TRY_COMPILE(
+ [
+ #include <algorithm>
+ #include <iterator>
+ #include <iostream>
+ #include <string>
+ ],[
+ using std::min;
+ using std::find;
+ using std::copy;
+ using std::bidirectional_iterator_tag;
+ using std::string;
+ using std::istream;
+ using std::cout;
+ ],
+ [gtkmm_cv_cxx_has_namespace_std="yes"],
+ [gtkmm_cv_cxx_has_namespace_std="no"]
+ )
+ ])
+
+ if test "x${gtkmm_cv_cxx_has_namespace_std}" = "xyes"; then
+ {
+ AC_DEFINE([GLIBMM_HAVE_NAMESPACE_STD],[1], [Defined when the libstdc++ declares the std-namespace])
+ }
+ fi
+])
+
+
+## GLIBMM_CXX_HAS_STD_ITERATOR_TRAITS()
+##
+## Check for standard-conform std::iterator_traits<>, and
+## #define GLIBMM_HAVE_STD_ITERATOR_TRAITS on success.
+##
+AC_DEFUN([GLIBMM_CXX_HAS_STD_ITERATOR_TRAITS],
+[
+ AC_REQUIRE([GLIBMM_CXX_HAS_NAMESPACE_STD])
+
+ AC_CACHE_CHECK(
+ [whether the C++ library supports std::iterator_traits],
+ [gtkmm_cv_cxx_has_std_iterator_traits],
+ [
+ AC_TRY_COMPILE(
+ [
+ #include <iterator>
+ #ifdef GLIBMM_HAVE_NAMESPACE_STD
+ using namespace std;
+ #endif
+ ],[
+ typedef iterator_traits<char*>::value_type ValueType;
+ ],
+ [gtkmm_cv_cxx_has_std_iterator_traits="yes"],
+ [gtkmm_cv_cxx_has_std_iterator_traits="no"]
+ )
+ ])
+
+ if test "x${gtkmm_cv_cxx_has_std_iterator_traits}" = "xyes"; then
+ {
+ AC_DEFINE([GLIBMM_HAVE_STD_ITERATOR_TRAITS],[1], [Defined if std::iterator_traits<> is standard-conforming])
+ }
+ fi
+])
+
+
+## GLIBMM_CXX_HAS_SUN_REVERSE_ITERATOR()
+##
+## Check for Sun libCstd style std::reverse_iterator,
+## and #define GLIBMM_HAVE_SUN_REVERSE_ITERATOR if found.
+##
+AC_DEFUN([GLIBMM_CXX_HAS_SUN_REVERSE_ITERATOR],
+[
+ AC_REQUIRE([GLIBMM_CXX_HAS_NAMESPACE_STD])
+
+ AC_CACHE_CHECK(
+ [for non-standard Sun libCstd reverse_iterator],
+ [gtkmm_cv_cxx_has_sun_reverse_iterator],
+ [
+ AC_TRY_COMPILE(
+ [
+ #include <iterator>
+ #ifdef GLIBMM_HAVE_NAMESPACE_STD
+ using namespace std;
+ #endif
+ ],[
+ typedef reverse_iterator<char*,random_access_iterator_tag,char,char&,char*,int> ReverseIter;
+ ],
+ [gtkmm_cv_cxx_has_sun_reverse_iterator="yes"],
+ [gtkmm_cv_cxx_has_sun_reverse_iterator="no"]
+ )
+ ])
+
+ if test "x${gtkmm_cv_cxx_has_sun_reverse_iterator}" = "xyes"; then
+ {
+ AC_DEFINE([GLIBMM_HAVE_SUN_REVERSE_ITERATOR],[1], [Defined if std::reverse_iterator is in Sun libCstd style])
+ }
+ fi
+])
+
+
+## GLIBMM_CXX_HAS_TEMPLATE_SEQUENCE_CTORS()
+##
+## Check whether the STL containers have templated sequence ctors,
+## and #define GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS on success.
+##
+AC_DEFUN([GLIBMM_CXX_HAS_TEMPLATE_SEQUENCE_CTORS],
+[
+ AC_REQUIRE([GLIBMM_CXX_HAS_NAMESPACE_STD])
+
+ AC_CACHE_CHECK(
+ [whether STL containers have templated sequence constructors],
+ [gtkmm_cv_cxx_has_template_sequence_ctors],
+ [
+ AC_TRY_COMPILE(
+ [
+ #include <vector>
+ #include <deque>
+ #include <list>
+ #ifdef GLIBMM_HAVE_NAMESPACE_STD
+ using namespace std;
+ #endif
+ ],[
+ const int array[8] = { 0, };
+ vector<int> test_vector (&array[0], &array[8]);
+ deque<short> test_deque (test_vector.begin(), test_vector.end());
+ list<long> test_list (test_deque.begin(), test_deque.end());
+ test_vector.assign(test_list.begin(), test_list.end());
+ ],
+ [gtkmm_cv_cxx_has_template_sequence_ctors="yes"],
+ [gtkmm_cv_cxx_has_template_sequence_ctors="no"]
+ )
+ ])
+
+ if test "x${gtkmm_cv_cxx_has_template_sequence_ctors}" = "xyes"; then
+ {
+ AC_DEFINE([GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS],[1], [Defined if the STL containers have templated sequence ctors])
+ }
+ fi
+])
+
+## GLIBMM_CXX_ALLOWS_STATIC_INLINE_NPOS()
+##
+## Check whether the a static member variable may be initialized inline to std::string::npos.
+## The MipsPro (IRIX) compiler does not like this.
+## and #define GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS on success.
+##
+AC_DEFUN([GLIBMM_CXX_ALLOWS_STATIC_INLINE_NPOS],
+[
+ AC_REQUIRE([GLIBMM_CXX_HAS_NAMESPACE_STD])
+
+ AC_CACHE_CHECK(
+ [whether the compiler allows a static member variable to be initialized inline to std::string::npos],
+ [gtkmm_cv_cxx_has_allows_static_inline_npos],
+ [
+ AC_TRY_COMPILE(
+ [
+ #include <string>
+ #include <iostream>
+
+ class ustringtest
+ {
+ public:
+ //The MipsPro compiler (IRIX) says "The indicated constant value is not known",
+ //so we need to initalize the static member data elsewhere.
+ static const std::string::size_type ustringnpos = std::string::npos;
+ };
+ ],[
+ std::cout << "npos=" << ustringtest::ustringnpos << std::endl;
+ ],
+ [gtkmm_cv_cxx_has_allows_static_inline_npos="yes"],
+ [gtkmm_cv_cxx_has_allows_static_inline_npos="no"]
+ )
+ ])
+
+ if test "x${gtkmm_cv_cxx_has_allows_static_inline_npos}" = "xyes"; then
+ {
+ AC_DEFINE([GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS],[1], [Defined if a static member variable may be initialized inline to std::string::npos])
+ }
+ fi
+])
+
+
diff --git a/libs/glibmm2/scripts/depcomp b/libs/glibmm2/scripts/depcomp
new file mode 100644
index 0000000000..04701da536
--- /dev/null
+++ b/libs/glibmm2/scripts/depcomp
@@ -0,0 +1,530 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2005-07-09.11
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+ '')
+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ exit 1;
+ ;;
+ -h | --h*)
+ cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+ depmode Dependency tracking mode.
+ source Source file read by `PROGRAMS ARGS'.
+ object Object file output by `PROGRAMS ARGS'.
+ DEPDIR directory where to store dependencies.
+ depfile Dependency file to output.
+ tmpdepfile Temporary file to use when outputing dependencies.
+ libtool Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "depcomp $scriptversion"
+ exit $?
+ ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+ echo "depcomp: Variables source, object and depmode must be set" 1>&2
+ exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags. We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write. Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+ # HP compiler uses -M and no extra arg.
+ gccflag=-M
+ depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+ # This is just like dashmstdout with a different argument.
+ dashmflag=-xM
+ depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want. Yay! Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff. Hmm.
+ "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ mv "$tmpdepfile" "$depfile"
+ ;;
+
+gcc)
+## There are various ways to get dependency output from gcc. Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+## up in a subdir. Having to rename by hand is ugly.
+## (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+## -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+## than renaming).
+ if test -z "$gccflag"; then
+ gccflag=-MD,
+ fi
+ "$@" -Wp,"$gccflag$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+ sed -e 's/^[^:]*: / /' \
+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header). We avoid this by adding
+## dummy dependencies for each header file. Too bad gcc doesn't do
+## this for us directly.
+ tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'. On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+hp)
+ # This case exists only to let depend.m4 do its work. It works by
+ # looking at the text of this script. This case will never be run,
+ # since it is checked for above.
+ exit 1
+ ;;
+
+sgi)
+ if test "$libtool" = yes; then
+ "$@" "-Wp,-MDupdate,$tmpdepfile"
+ else
+ "$@" -MDupdate "$tmpdepfile"
+ fi
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+
+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
+ echo "$object : \\" > "$depfile"
+
+ # Clip off the initial element (the dependent). Don't try to be
+ # clever and replace this with sed code, as IRIX sed won't handle
+ # lines with more than a fixed number of characters (4096 in
+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
+ # the IRIX cc adds comments like `#:fec' to the end of the
+ # dependency line.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+ tr '
+' ' ' >> $depfile
+ echo >> $depfile
+
+ # The second pass generates a dummy entry for each header file.
+ tr ' ' '
+' < "$tmpdepfile" \
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+ >> $depfile
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+aix)
+ # The C for AIX Compiler uses -M and outputs the dependencies
+ # in a .u file. In older versions, this file always lives in the
+ # current directory. Also, the AIX compiler puts `$object:' at the
+ # start of each line; $object doesn't have directory information.
+ # Version 6 uses the directory in both cases.
+ stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
+ tmpdepfile="$stripped.u"
+ if test "$libtool" = yes; then
+ "$@" -Wc,-M
+ else
+ "$@" -M
+ fi
+ stat=$?
+
+ if test -f "$tmpdepfile"; then :
+ else
+ stripped=`echo "$stripped" | sed 's,^.*/,,'`
+ tmpdepfile="$stripped.u"
+ fi
+
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+
+ if test -f "$tmpdepfile"; then
+ outname="$stripped.o"
+ # Each line is of the form `foo.o: dependent.h'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
+ sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+ else
+ # The sourcefile does not contain any dependencies, so just
+ # store a dummy comment line, to avoid errors with the Makefile
+ # "include basename.Plo" scheme.
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+icc)
+ # Intel's C compiler understands `-MD -MF file'. However on
+ # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+ # ICC 7.0 will fill foo.d with something like
+ # foo.o: sub/foo.c
+ # foo.o: sub/foo.h
+ # which is wrong. We want:
+ # sub/foo.o: sub/foo.c
+ # sub/foo.o: sub/foo.h
+ # sub/foo.c:
+ # sub/foo.h:
+ # ICC 7.1 will output
+ # foo.o: sub/foo.c sub/foo.h
+ # and will wrap long lines using \ :
+ # foo.o: sub/foo.c ... \
+ # sub/foo.h ... \
+ # ...
+
+ "$@" -MD -MF "$tmpdepfile"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile"
+ exit $stat
+ fi
+ rm -f "$depfile"
+ # Each line is of the form `foo.o: dependent.h',
+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+ # Do two passes, one to just change these to
+ # `$object: dependent.h' and one to simply `dependent.h:'.
+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+ # Some versions of the HPUX 10.20 sed can't process this invocation
+ # correctly. Breaking it into two sed invocations is a workaround.
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+ sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+tru64)
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+ # dependencies in `foo.d' instead, so we check for that too.
+ # Subdirectories are respected.
+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+ test "x$dir" = "x$object" && dir=
+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+ if test "$libtool" = yes; then
+ # With Tru64 cc, shared objects can also be used to make a
+ # static library. This mecanism is used in libtool 1.4 series to
+ # handle both shared and static libraries in a single compilation.
+ # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+ #
+ # With libtool 1.5 this exception was removed, and libtool now
+ # generates 2 separate objects for the 2 libraries. These two
+ # compilations output dependencies in in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+ # automatically cleaned when .libs/ is deleted, while ignoring
+ # the former would cause a distcleancheck panic.
+ tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
+ tmpdepfile2=$dir$base.o.d # libtool 1.5
+ tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
+ tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
+ "$@" -Wc,-MD
+ else
+ tmpdepfile1=$dir$base.o.d
+ tmpdepfile2=$dir$base.d
+ tmpdepfile3=$dir$base.d
+ tmpdepfile4=$dir$base.d
+ "$@" -MD
+ fi
+
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+ exit $stat
+ fi
+
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+ do
+ test -f "$tmpdepfile" && break
+ done
+ if test -f "$tmpdepfile"; then
+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+ # That's a tab and a space in the [].
+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+ else
+ echo "#dummy" > "$depfile"
+ fi
+ rm -f "$tmpdepfile"
+ ;;
+
+#nosideeffect)
+ # This comment above is used by automake to tell side-effect
+ # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout, regardless of -o.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove `-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ test -z "$dashmflag" && dashmflag=-M
+ # Require at least two characters before searching for `:'
+ # in the target name. This is to cope with DOS-style filenames:
+ # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+ "$@" $dashmflag |
+ sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+dashXmstdout)
+ # This case only exists to satisfy depend.m4. It is never actually
+ # run, as this mode is specially recognized in the preamble.
+ exit 1
+ ;;
+
+makedepend)
+ "$@" || exit $?
+ # Remove any Libtool call
+ if test "$libtool" = yes; then
+ while test $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+ # X makedepend
+ shift
+ cleared=no
+ for arg in "$@"; do
+ case $cleared in
+ no)
+ set ""; shift
+ cleared=yes ;;
+ esac
+ case "$arg" in
+ -D*|-I*)
+ set fnord "$@" "$arg"; shift ;;
+ # Strip any option that makedepend may not understand. Remove
+ # the object too, otherwise makedepend will parse it as a source file.
+ -*|$object)
+ ;;
+ *)
+ set fnord "$@" "$arg"; shift ;;
+ esac
+ done
+ obj_suffix="`echo $object | sed 's/^.*\././'`"
+ touch "$tmpdepfile"
+ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+ rm -f "$depfile"
+ cat < "$tmpdepfile" > "$depfile"
+ sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly. Breaking it into two sed invocations is a workaround.
+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile" "$tmpdepfile".bak
+ ;;
+
+cpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout.
+ "$@" || exit $?
+
+ # Remove the call to Libtool.
+ if test "$libtool" = yes; then
+ while test $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+
+ # Remove `-o $object'.
+ IFS=" "
+ for arg
+ do
+ case $arg in
+ -o)
+ shift
+ ;;
+ $object)
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift # fnord
+ shift # $arg
+ ;;
+ esac
+ done
+
+ "$@" -E |
+ sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+ sed '$ s: \\$::' > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ cat < "$tmpdepfile" >> "$depfile"
+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+msvisualcpp)
+ # Important note: in order to support this mode, a compiler *must*
+ # always write the preprocessed file to stdout, regardless of -o,
+ # because we must use -o when running libtool.
+ "$@" || exit $?
+ IFS=" "
+ for arg
+ do
+ case "$arg" in
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+ set fnord "$@"
+ shift
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
+ esac
+ done
+ "$@" -E |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
+ echo " " >> "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+none)
+ exec "$@"
+ ;;
+
+*)
+ echo "Unknown depmode $depmode" 1>&2
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/libs/glibmm2/scripts/docgen.m4 b/libs/glibmm2/scripts/docgen.m4
new file mode 100644
index 0000000000..8a04aaaab7
--- /dev/null
+++ b/libs/glibmm2/scripts/docgen.m4
@@ -0,0 +1,75 @@
+
+## GTKMM_DOXYGEN_INPUT_SUBDIRS(subdirectory list)
+##
+AC_DEFUN([GTKMM_DOXYGEN_INPUT_SUBDIRS],
+[
+GTKMM_DOXYGEN_INPUT=
+gtkmm_srcdir=`cd "$srcdir" >/dev/null && pwd`
+
+gtkmm_list="$@"
+for gtkmm_sublib in $gtkmm_list
+do
+ GTKMM_DOXYGEN_INPUT="$GTKMM_DOXYGEN_INPUT ${gtkmm_srcdir}/${gtkmm_sublib}/${gtkmm_sublib}mm/"
+done
+
+AC_SUBST(GTKMM_DOXYGEN_INPUT)
+])
+
+
+## GTKMM_ARG_ENABLE_FULLDOCS()
+##
+## Check whether to build the full docs into the generated source. If yes,
+## set GTKMMPROC_MERGECDOCS='--mergecdocs', which will be passed to gtkmmproc
+## (in build_shared/Makefile_gensrc.am_fragment). This will be much slower.
+##
+AC_DEFUN([GTKMM_ARG_ENABLE_FULLDOCS],
+[
+AC_REQUIRE([GLIBMM_CHECK_PERL])
+
+AC_MSG_CHECKING([[whether to merge C reference docs into generated headers]])
+
+AC_ARG_ENABLE([fulldocs],
+ [ --enable-fulldocs Generate fully-documented reference docs, takes
+ longer to build. [[default=enabled for CVS builds]]],
+ [gtkmm_enable_fulldocs=$enableval],
+ [gtkmm_enable_fulldocs=$USE_MAINTAINER_MODE])
+
+AC_MSG_RESULT([${gtkmm_enable_fulldocs}])
+
+GTKMMPROC_MERGECDOCS=
+
+if test "x$gtkmm_enable_fulldocs" = xyes; then
+{
+ GTKMMPROC_MERGECDOCS='--mergecdocs'
+
+ if test "x$USE_MAINTAINER_MODE" != xyes; then
+ {
+ AC_MSG_WARN([[
+*** --enable-fulldocs only works if --enable-maintainer-mode is also set.
+*** gtkmm source tarballs should be packaged with --enable-fulldocs, so
+*** usually you don't need this option unless you got gtkmm from CVS.
+]])
+ }
+ fi
+
+ AC_CACHE_CHECK(
+ [whether the XML::Parser module is available],
+ [gtkmm_cv_have_xml_parser],
+ [
+ gtkmm_cv_have_xml_parser=no
+ "$PERL_PATH" -e 'use strict; use XML::Parser; exit 0;' >&5 2>&5 && gtkmm_cv_have_xml_parser=yes
+ ])
+
+ if test "x$gtkmm_cv_have_xml_parser" = xno; then
+ {
+ AC_MSG_ERROR([[
+*** The Perl module XML::Parser is required to build $PACKAGE from CVS.
+]])
+ }
+ fi
+}
+fi
+
+AC_SUBST(GTKMMPROC_MERGECDOCS)
+])
+
diff --git a/libs/glibmm2/scripts/glibmm_check_perl.m4 b/libs/glibmm2/scripts/glibmm_check_perl.m4
new file mode 100644
index 0000000000..62519e5c43
--- /dev/null
+++ b/libs/glibmm2/scripts/glibmm_check_perl.m4
@@ -0,0 +1,54 @@
+dnl
+dnl Some macros needed for autoconf
+dnl
+
+
+## GLIBMM_CV_PERL_VERSION(version)
+##
+## Helper macro of GLIBMM_CHECK_PERL(). It generates a cache variable
+## name that includes the version number, in order to avoid clashes.
+##
+AC_DEFUN([GLIBMM_CV_PERL_VERSION],[glibmm_cv_perl_version_[]m4_translit([$1],[.${}],[____])])
+
+
+## GLIBMM_CHECK_PERL(version)
+##
+## Check for Perl >= version and set PERL_PATH. If Perl is not found
+## and maintainer-mode is enabled, abort with an error message. If not
+## in maintainer-mode, set PERL_PATH=perl on failure.
+##
+AC_DEFUN([GLIBMM_CHECK_PERL],
+[
+ glibmm_perl_result=no
+
+ AC_PATH_PROGS([PERL_PATH], [perl perl5], [not found])
+
+ if test "x$PERL_PATH" != "xnot found"; then
+ {
+ AC_CACHE_CHECK(
+ [whether Perl is new enough],
+ GLIBMM_CV_PERL_VERSION([$1]),
+ [
+ ]GLIBMM_CV_PERL_VERSION([$1])[=no
+ "$PERL_PATH" -e "require v$1; exit 0;" >/dev/null 2>&1 && ]GLIBMM_CV_PERL_VERSION([$1])[=yes
+ ])
+ test "x${GLIBMM_CV_PERL_VERSION([$1])}" = xyes && glibmm_perl_result=yes
+ }
+ else
+ {
+ # Make sure we have something sensible, even if it doesn't work.
+ PERL_PATH=perl
+ }
+ fi
+
+ if test "x$glibmm_perl_result" = xno && test "x$USE_MAINTAINER_MODE" = xyes; then
+ {
+ AC_MSG_ERROR([[
+*** Perl >= ]$1[ is required for building $PACKAGE in maintainer-mode.
+]])
+ }
+ fi
+
+ AC_SUBST([PERL_PATH])
+])
+
diff --git a/libs/glibmm2/scripts/install-sh b/libs/glibmm2/scripts/install-sh
new file mode 100644
index 0000000000..4d4a9519ea
--- /dev/null
+++ b/libs/glibmm2/scripts/install-sh
@@ -0,0 +1,323 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2005-05-14.22
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch. It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+chmodcmd="$chmodprog 0755"
+chowncmd=
+chgrpcmd=
+stripcmd=
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=
+dst=
+dir_arg=
+dstarg=
+no_target_directory=
+
+usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+-c (ignored)
+-d create directories instead of installing files.
+-g GROUP $chgrpprog installed files to GROUP.
+-m MODE $chmodprog installed files to MODE.
+-o USER $chownprog installed files to USER.
+-s $stripprog installed files.
+-t DIRECTORY install into DIRECTORY.
+-T report an error if DSTFILE is a directory.
+--help display this help and exit.
+--version display version info and exit.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+"
+
+while test -n "$1"; do
+ case $1 in
+ -c) shift
+ continue;;
+
+ -d) dir_arg=true
+ shift
+ continue;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift
+ shift
+ continue;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) chmodcmd="$chmodprog $2"
+ shift
+ shift
+ continue;;
+
+ -o) chowncmd="$chownprog $2"
+ shift
+ shift
+ continue;;
+
+ -s) stripcmd=$stripprog
+ shift
+ continue;;
+
+ -t) dstarg=$2
+ shift
+ shift
+ continue;;
+
+ -T) no_target_directory=true
+ shift
+ continue;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ *) # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ test -n "$dir_arg$dstarg" && break
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dstarg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dstarg"
+ shift # fnord
+ fi
+ shift # arg
+ dstarg=$arg
+ done
+ break;;
+ esac
+done
+
+if test -z "$1"; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call `install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
+
+for src
+do
+ # Protect names starting with `-'.
+ case $src in
+ -*) src=./$src ;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ src=
+
+ if test -d "$dst"; then
+ mkdircmd=:
+ chmodcmd=
+ else
+ mkdircmd=$mkdirprog
+ fi
+ else
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dstarg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+
+ dst=$dstarg
+ # Protect names starting with `-'.
+ case $dst in
+ -*) dst=./$dst ;;
+ esac
+
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dstarg: Is a directory" >&2
+ exit 1
+ fi
+ dst=$dst/`basename "$src"`
+ fi
+ fi
+
+ # This sed command emulates the dirname command.
+ dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
+
+ # Make sure that the destination directory exists.
+
+ # Skip lots of stat calls in the usual case.
+ if test ! -d "$dstdir"; then
+ defaultIFS='
+ '
+ IFS="${IFS-$defaultIFS}"
+
+ oIFS=$IFS
+ # Some sh's can't handle IFS=/ for some reason.
+ IFS='%'
+ set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+ shift
+ IFS=$oIFS
+
+ pathcomp=
+
+ while test $# -ne 0 ; do
+ pathcomp=$pathcomp$1
+ shift
+ if test ! -d "$pathcomp"; then
+ $mkdirprog "$pathcomp"
+ # mkdir can fail with a `File exist' error in case several
+ # install-sh are creating the directory concurrently. This
+ # is OK.
+ test -d "$pathcomp" || exit
+ fi
+ pathcomp=$pathcomp/
+ done
+ fi
+
+ if test -n "$dir_arg"; then
+ $doit $mkdircmd "$dst" \
+ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
+ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
+
+ else
+ dstfile=`basename "$dst"`
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Copy the file name to the temp name.
+ $doit $cpprog "$src" "$dsttmp" &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
+ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
+
+ # Now rename the file to the real destination.
+ { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
+ || {
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ if test -f "$dstdir/$dstfile"; then
+ $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
+ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
+ || {
+ echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+ (exit 1); exit 1
+ }
+ else
+ :
+ fi
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+ }
+ }
+ fi || { (exit 1); exit 1; }
+done
+
+# The final little trick to "correctly" pass the exit status to the exit trap.
+{
+ (exit 0); exit 0
+}
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/libs/glibmm2/scripts/ltmain.sh b/libs/glibmm2/scripts/ltmain.sh
new file mode 100644
index 0000000000..06823e057a
--- /dev/null
+++ b/libs/glibmm2/scripts/ltmain.sh
@@ -0,0 +1,6863 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+basename="s,^.*/,,g"
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# The name of this program:
+progname=`echo "$progpath" | $SED $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5.22
+TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes.
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell, and then maybe $echo will work.
+ exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit $EXIT_SUCCESS
+fi
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ SP2NL='tr \040 \012'
+ NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ SP2NL='tr \100 \n'
+ NL2SP='tr \r\n \100\100'
+ ;;
+esac
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+ save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+ save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" $lt_nl"
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ $echo "$modename: not configured to build any kind of library" 1>&2
+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ exit $EXIT_FAILURE
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+duplicate_deps=no
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+
+#####################################
+# Shell function definitions:
+# This seems to be the best place for them
+
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible. If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+ my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+ if test "$run" = ":"; then
+ # Return a directory name, but don't create it in dry-run mode
+ my_tmpdir="${my_template}-$$"
+ else
+
+ # If mktemp works, use that first and foremost
+ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+ if test ! -d "$my_tmpdir"; then
+ # Failing that, at least try and use $RANDOM to avoid a race
+ my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+ save_mktempdir_umask=`umask`
+ umask 0077
+ $mkdir "$my_tmpdir"
+ umask $save_mktempdir_umask
+ fi
+
+ # If we're not in dry-run mode, bomb out on failure
+ test -d "$my_tmpdir" || {
+ $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
+ exit $EXIT_FAILURE
+ }
+ fi
+
+ $echo "X$my_tmpdir" | $Xsed
+}
+
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+func_win32_libid ()
+{
+ win32_libid_type="unknown"
+ win32_fileres=`file -L $1 2>/dev/null`
+ case $win32_fileres in
+ *ar\ archive\ import\ library*) # definitely import
+ win32_libid_type="x86 archive import"
+ ;;
+ *ar\ archive*) # could be an import, or static
+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+ win32_nmres=`eval $NM -f posix -A $1 | \
+ $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'`
+ case $win32_nmres in
+ import*) win32_libid_type="x86 archive import";;
+ *) win32_libid_type="x86 archive static";;
+ esac
+ fi
+ ;;
+ *DLL*)
+ win32_libid_type="x86 DLL"
+ ;;
+ *executable*) # but shell scripts are "executable" too...
+ case $win32_fileres in
+ *MS\ Windows\ PE\ Intel*)
+ win32_libid_type="x86 DLL"
+ ;;
+ esac
+ ;;
+ esac
+ $echo $win32_libid_type
+}
+
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ CC_quoted="$CC_quoted $arg"
+ done
+ case $@ in
+ # Blanks in the command may have been stripped by the calling shell,
+ # but not from the CC environment variable when configure was run.
+ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
+ # Blanks at the start of $base_compile will cause this to fail
+ # if we don't check for them as well.
+ *)
+ for z in $available_tags; do
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+ # Evaluate the configuration.
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+ CC_quoted=
+ for arg in $CC; do
+ # Double-quote args containing other shell metacharacters.
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ CC_quoted="$CC_quoted $arg"
+ done
+ case "$@ " in
+ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+ # The compiler in the base compile command matches
+ # the one in the tagged configuration.
+ # Assume this is the tagged configuration we want.
+ tagname=$z
+ break
+ ;;
+ esac
+ fi
+ done
+ # If $tagname still isn't set, then no tagged configuration
+ # was found and let the user know that the "--tag" command
+ # line option must be used.
+ if test -z "$tagname"; then
+ $echo "$modename: unable to infer tagged configuration"
+ $echo "$modename: specify a tag with \`--tag'" 1>&2
+ exit $EXIT_FAILURE
+# else
+# $echo "$modename: using $tagname tagged configuration"
+ fi
+ ;;
+ esac
+ fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+ f_ex_an_ar_dir="$1"; shift
+ f_ex_an_ar_oldlib="$1"
+
+ $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
+ $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
+ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
+ exit $EXIT_FAILURE
+ fi
+}
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+ my_gentop="$1"; shift
+ my_oldlibs=${1+"$@"}
+ my_oldobjs=""
+ my_xlib=""
+ my_xabs=""
+ my_xdir=""
+ my_status=""
+
+ $show "${rm}r $my_gentop"
+ $run ${rm}r "$my_gentop"
+ $show "$mkdir $my_gentop"
+ $run $mkdir "$my_gentop"
+ my_status=$?
+ if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
+ exit $my_status
+ fi
+
+ for my_xlib in $my_oldlibs; do
+ # Extract the objects.
+ case $my_xlib in
+ [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+ *) my_xabs=`pwd`"/$my_xlib" ;;
+ esac
+ my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+ my_xdir="$my_gentop/$my_xlib"
+
+ $show "${rm}r $my_xdir"
+ $run ${rm}r "$my_xdir"
+ $show "$mkdir $my_xdir"
+ $run $mkdir "$my_xdir"
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
+ exit $exit_status
+ fi
+ case $host in
+ *-darwin*)
+ $show "Extracting $my_xabs"
+ # Do not bother doing anything if just a dry run
+ if test -z "$run"; then
+ darwin_orig_dir=`pwd`
+ cd $my_xdir || exit $?
+ darwin_archive=$my_xabs
+ darwin_curdir=`pwd`
+ darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
+ darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
+ if test -n "$darwin_arches"; then
+ darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
+ darwin_arch=
+ $show "$darwin_base_archive has multiple architectures $darwin_arches"
+ for darwin_arch in $darwin_arches ; do
+ mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+ cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+ func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+ cd "$darwin_curdir"
+ $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+ done # $darwin_arches
+ ## Okay now we have a bunch of thin objects, gotta fatten them up :)
+ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
+ darwin_file=
+ darwin_files=
+ for darwin_file in $darwin_filelist; do
+ darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+ lipo -create -output "$darwin_file" $darwin_files
+ done # $darwin_filelist
+ ${rm}r unfat-$$
+ cd "$darwin_orig_dir"
+ else
+ cd "$darwin_orig_dir"
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ fi # $darwin_arches
+ fi # $run
+ ;;
+ *)
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ ;;
+ esac
+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+ done
+ func_extract_archives_result="$my_oldobjs"
+}
+# End of Shell function definitions
+#####################################
+
+# Darwin sucks
+eval std_shrext=\"$shrext_cmds\"
+
+disable_libs=no
+
+# Parse our command line options once, thoroughly.
+while test "$#" -gt 0
+do
+ arg="$1"
+ shift
+
+ case $arg in
+ -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) optarg= ;;
+ esac
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ execute_dlfiles)
+ execute_dlfiles="$execute_dlfiles $arg"
+ ;;
+ tag)
+ tagname="$arg"
+ preserve_args="${preserve_args}=$arg"
+
+ # Check whether tagname contains only valid characters
+ case $tagname in
+ *[!-_A-Za-z0-9,/]*)
+ $echo "$progname: invalid tag name: $tagname" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $tagname in
+ CC)
+ # Don't test for the "default" C tag, as we know, it's there, but
+ # not specially marked.
+ ;;
+ *)
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
+ taglist="$taglist $tagname"
+ # Evaluate the configuration.
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
+ else
+ $echo "$progname: ignoring unknown tag $tagname" 1>&2
+ fi
+ ;;
+ esac
+ ;;
+ *)
+ eval "$prev=\$arg"
+ ;;
+ esac
+
+ prev=
+ prevopt=
+ continue
+ fi
+
+ # Have we seen a non-optional argument yet?
+ case $arg in
+ --help)
+ show_help=yes
+ ;;
+
+ --version)
+ $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+ $echo
+ $echo "Copyright (C) 2005 Free Software Foundation, Inc."
+ $echo "This is free software; see the source for copying conditions. There is NO"
+ $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+ exit $?
+ ;;
+
+ --config)
+ ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
+ # Now print the configurations for the tags.
+ for tagname in $taglist; do
+ ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+ done
+ exit $?
+ ;;
+
+ --debug)
+ $echo "$progname: enabling shell trace mode"
+ set -x
+ preserve_args="$preserve_args $arg"
+ ;;
+
+ --dry-run | -n)
+ run=:
+ ;;
+
+ --features)
+ $echo "host: $host"
+ if test "$build_libtool_libs" = yes; then
+ $echo "enable shared libraries"
+ else
+ $echo "disable shared libraries"
+ fi
+ if test "$build_old_libs" = yes; then
+ $echo "enable static libraries"
+ else
+ $echo "disable static libraries"
+ fi
+ exit $?
+ ;;
+
+ --finish) mode="finish" ;;
+
+ --mode) prevopt="--mode" prev=mode ;;
+ --mode=*) mode="$optarg" ;;
+
+ --preserve-dup-deps) duplicate_deps="yes" ;;
+
+ --quiet | --silent)
+ show=:
+ preserve_args="$preserve_args $arg"
+ ;;
+
+ --tag)
+ prevopt="--tag"
+ prev=tag
+ preserve_args="$preserve_args --tag"
+ ;;
+ --tag=*)
+ set tag "$optarg" ${1+"$@"}
+ shift
+ prev=tag
+ preserve_args="$preserve_args --tag"
+ ;;
+
+ -dlopen)
+ prevopt="-dlopen"
+ prev=execute_dlfiles
+ ;;
+
+ -*)
+ $echo "$modename: unrecognized option \`$arg'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+
+ *)
+ nonopt="$arg"
+ break
+ ;;
+ esac
+done
+
+if test -n "$prevopt"; then
+ $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+fi
+
+case $disable_libs in
+no)
+ ;;
+shared)
+ build_libtool_libs=no
+ build_old_libs=yes
+ ;;
+static)
+ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+ ;;
+esac
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end. This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+if test -z "$show_help"; then
+
+ # Infer the operation mode.
+ if test -z "$mode"; then
+ $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+ $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
+ case $nonopt in
+ *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+ mode=link
+ for arg
+ do
+ case $arg in
+ -c)
+ mode=compile
+ break
+ ;;
+ esac
+ done
+ ;;
+ *db | *dbx | *strace | *truss)
+ mode=execute
+ ;;
+ *install*|cp|mv)
+ mode=install
+ ;;
+ *rm)
+ mode=uninstall
+ ;;
+ *)
+ # If we have no mode, but dlfiles were specified, then do execute mode.
+ test -n "$execute_dlfiles" && mode=execute
+
+ # Just use the default operation mode.
+ if test -z "$mode"; then
+ if test -n "$nonopt"; then
+ $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+ else
+ $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+ fi
+ fi
+ ;;
+ esac
+ fi
+
+ # Only execute mode is allowed to have -dlopen flags.
+ if test -n "$execute_dlfiles" && test "$mode" != execute; then
+ $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Change the help message to a mode-specific one.
+ generic_help="$help"
+ help="Try \`$modename --help --mode=$mode' for more information."
+
+ # These modes are in order of execution frequency so that they run quickly.
+ case $mode in
+ # libtool compile mode
+ compile)
+ modename="$modename: compile"
+ # Get the compilation command and the source file.
+ base_compile=
+ srcfile="$nonopt" # always keep a non-empty value in "srcfile"
+ suppress_opt=yes
+ suppress_output=
+ arg_mode=normal
+ libobj=
+ later=
+
+ for arg
+ do
+ case $arg_mode in
+ arg )
+ # do not "continue". Instead, add this to base_compile
+ lastarg="$arg"
+ arg_mode=normal
+ ;;
+
+ target )
+ libobj="$arg"
+ arg_mode=normal
+ continue
+ ;;
+
+ normal )
+ # Accept any command-line options.
+ case $arg in
+ -o)
+ if test -n "$libobj" ; then
+ $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ arg_mode=target
+ continue
+ ;;
+
+ -static | -prefer-pic | -prefer-non-pic)
+ later="$later $arg"
+ continue
+ ;;
+
+ -no-suppress)
+ suppress_opt=no
+ continue
+ ;;
+
+ -Xcompiler)
+ arg_mode=arg # the next one goes into the "base_compile" arg list
+ continue # The current "srcfile" will either be retained or
+ ;; # replaced later. I would guess that would be a bug.
+
+ -Wc,*)
+ args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+ lastarg=
+ save_ifs="$IFS"; IFS=','
+ for arg in $args; do
+ IFS="$save_ifs"
+
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ lastarg="$lastarg $arg"
+ done
+ IFS="$save_ifs"
+ lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+ # Add the arguments to base_compile.
+ base_compile="$base_compile $lastarg"
+ continue
+ ;;
+
+ * )
+ # Accept the current argument as the source file.
+ # The previous "srcfile" becomes the current argument.
+ #
+ lastarg="$srcfile"
+ srcfile="$arg"
+ ;;
+ esac # case $arg
+ ;;
+ esac # case $arg_mode
+
+ # Aesthetically quote the previous argument.
+ lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+ case $lastarg in
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, and some SunOS ksh mistreat backslash-escaping
+ # in scan sets (worked around with variable expansion),
+ # and furthermore cannot handle '|' '&' '(' ')' in scan sets
+ # at all, so we specify them separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ lastarg="\"$lastarg\""
+ ;;
+ esac
+
+ base_compile="$base_compile $lastarg"
+ done # for arg
+
+ case $arg_mode in
+ arg)
+ $echo "$modename: you must specify an argument for -Xcompile"
+ exit $EXIT_FAILURE
+ ;;
+ target)
+ $echo "$modename: you must specify a target with \`-o'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ *)
+ # Get the name of the library object.
+ [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+ ;;
+ esac
+
+ # Recognize several different file suffixes.
+ # If the user specifies -o file.o, it is replaced with file.lo
+ xform='[cCFSifmso]'
+ case $libobj in
+ *.ada) xform=ada ;;
+ *.adb) xform=adb ;;
+ *.ads) xform=ads ;;
+ *.asm) xform=asm ;;
+ *.c++) xform=c++ ;;
+ *.cc) xform=cc ;;
+ *.ii) xform=ii ;;
+ *.class) xform=class ;;
+ *.cpp) xform=cpp ;;
+ *.cxx) xform=cxx ;;
+ *.f90) xform=f90 ;;
+ *.for) xform=for ;;
+ *.java) xform=java ;;
+ esac
+
+ libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+ case $libobj in
+ *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+ *)
+ $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ func_infer_tag $base_compile
+
+ for arg in $later; do
+ case $arg in
+ -static)
+ build_old_libs=yes
+ continue
+ ;;
+
+ -prefer-pic)
+ pic_mode=yes
+ continue
+ ;;
+
+ -prefer-non-pic)
+ pic_mode=no
+ continue
+ ;;
+ esac
+ done
+
+ qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
+ case $qlibobj in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qlibobj="\"$qlibobj\"" ;;
+ esac
+ test "X$libobj" != "X$qlibobj" \
+ && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \
+ && $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
+ objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+ xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$obj"; then
+ xdir=
+ else
+ xdir=$xdir/
+ fi
+ lobj=${xdir}$objdir/$objname
+
+ if test -z "$base_compile"; then
+ $echo "$modename: you must specify a compilation command" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Delete any leftover library objects.
+ if test "$build_old_libs" = yes; then
+ removelist="$obj $lobj $libobj ${libobj}T"
+ else
+ removelist="$lobj $libobj ${libobj}T"
+ fi
+
+ $run $rm $removelist
+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+
+ # On Cygwin there's no "real" PIC flag so we must build both object types
+ case $host_os in
+ cygwin* | mingw* | pw32* | os2*)
+ pic_mode=default
+ ;;
+ esac
+ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+ # non-PIC code in shared libraries is not supported
+ pic_mode=default
+ fi
+
+ # Calculate the filename of the output object if compiler does
+ # not support -o with -c
+ if test "$compiler_c_o" = no; then
+ output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+ lockfile="$output_obj.lock"
+ removelist="$removelist $output_obj $lockfile"
+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+ else
+ output_obj=
+ need_locks=no
+ lockfile=
+ fi
+
+ # Lock this critical section if it is needed
+ # We use this script file to make the link, it avoids creating a new file
+ if test "$need_locks" = yes; then
+ until $run ln "$progpath" "$lockfile" 2>/dev/null; do
+ $show "Waiting for $lockfile to be removed"
+ sleep 2
+ done
+ elif test "$need_locks" = warn; then
+ if test -f "$lockfile"; then
+ $echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+ $echo "$srcfile" > "$lockfile"
+ fi
+
+ if test -n "$fix_srcfile_path"; then
+ eval srcfile=\"$fix_srcfile_path\"
+ fi
+ qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
+ case $qsrcfile in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qsrcfile="\"$qsrcfile\"" ;;
+ esac
+
+ $run $rm "$libobj" "${libobj}T"
+
+ # Create a libtool object file (analogous to a ".la" file),
+ # but don't create it if we're doing a dry run.
+ test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+ # Only build a PIC object if we are building libtool libraries.
+ if test "$build_libtool_libs" = yes; then
+ # Without this assignment, base_compile gets emptied.
+ fbsd_hideous_sh_bug=$base_compile
+
+ if test "$pic_mode" != no; then
+ command="$base_compile $qsrcfile $pic_flag"
+ else
+ # Don't build PIC code
+ command="$base_compile $qsrcfile"
+ fi
+
+ if test ! -d "${xdir}$objdir"; then
+ $show "$mkdir ${xdir}$objdir"
+ $run $mkdir ${xdir}$objdir
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
+ exit $exit_status
+ fi
+ fi
+
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+ command="$command -o $lobj"
+ fi
+
+ $run $rm "$lobj" "$output_obj"
+
+ $show "$command"
+ if $run eval "$command"; then :
+ else
+ test -n "$output_obj" && $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed, then go on to compile the next one
+ if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+ $show "$mv $output_obj $lobj"
+ if $run $mv $output_obj $lobj; then :
+ else
+ error=$?
+ $run $rm $removelist
+ exit $error
+ fi
+ fi
+
+ # Append the name of the PIC object to the libtool object file.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+ # Allow error messages only from the first compilation.
+ if test "$suppress_opt" = yes; then
+ suppress_output=' >/dev/null 2>&1'
+ fi
+ else
+ # No PIC object so indicate it doesn't exist in the libtool
+ # object file.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+ fi
+
+ # Only build a position-dependent object if we build old libraries.
+ if test "$build_old_libs" = yes; then
+ if test "$pic_mode" != yes; then
+ # Don't build PIC code
+ command="$base_compile $qsrcfile"
+ else
+ command="$base_compile $qsrcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+ command="$command -o $obj"
+ fi
+
+ # Suppress compiler output if we already did a PIC compilation.
+ command="$command$suppress_output"
+ $run $rm "$obj" "$output_obj"
+ $show "$command"
+ if $run eval "$command"; then :
+ else
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$need_locks" = warn &&
+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+ $echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together. If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ # Just move the object if needed
+ if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+ $show "$mv $output_obj $obj"
+ if $run $mv $output_obj $obj; then :
+ else
+ error=$?
+ $run $rm $removelist
+ exit $error
+ fi
+ fi
+
+ # Append the name of the non-PIC object the libtool object file.
+ # Only append if the libtool object file exists.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+ else
+ # Append the name of the non-PIC object the libtool object file.
+ # Only append if the libtool object file exists.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+ fi
+
+ $run $mv "${libobj}T" "${libobj}"
+
+ # Unlock the critical section if it was locked
+ if test "$need_locks" != no; then
+ $run $rm "$lockfile"
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool link mode
+ link | relink)
+ modename="$modename: link"
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # It is impossible to link a dll without this setting, and
+ # we shouldn't force the makefile maintainer to figure out
+ # which system we are compiling for in order to pass an extra
+ # flag for every libtool invocation.
+ # allow_undefined=no
+
+ # FIXME: Unfortunately, there are problems with the above when trying
+ # to make a dll which has undefined symbols, in which case not
+ # even a static library is built. For now, we need to specify
+ # -no-undefined on the libtool link line when we can be certain
+ # that all symbols are satisfied, otherwise we get a static library.
+ allow_undefined=yes
+ ;;
+ *)
+ allow_undefined=yes
+ ;;
+ esac
+ libtool_args="$nonopt"
+ base_compile="$nonopt $@"
+ compile_command="$nonopt"
+ finalize_command="$nonopt"
+
+ compile_rpath=
+ finalize_rpath=
+ compile_shlibpath=
+ finalize_shlibpath=
+ convenience=
+ old_convenience=
+ deplibs=
+ old_deplibs=
+ compiler_flags=
+ linker_flags=
+ dllsearchpath=
+ lib_search_path=`pwd`
+ inst_prefix_dir=
+
+ avoid_version=no
+ dlfiles=
+ dlprefiles=
+ dlself=no
+ export_dynamic=no
+ export_symbols=
+ export_symbols_regex=
+ generated=
+ libobjs=
+ ltlibs=
+ module=no
+ no_install=no
+ objs=
+ non_pic_objects=
+ notinst_path= # paths that contain not-installed libtool libraries
+ precious_files_regex=
+ prefer_static_libs=no
+ preload=no
+ prev=
+ prevarg=
+ release=
+ rpath=
+ xrpath=
+ perm_rpath=
+ temp_rpath=
+ thread_safe=no
+ vinfo=
+ vinfo_number=no
+
+ func_infer_tag $base_compile
+
+ # We need to know -static, to get the right output filenames.
+ for arg
+ do
+ case $arg in
+ -all-static | -static)
+ if test "X$arg" = "X-all-static"; then
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+ fi
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ else
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=built
+ fi
+ build_libtool_libs=no
+ build_old_libs=yes
+ break
+ ;;
+ esac
+ done
+
+ # See if our shared archives depend on static archives.
+ test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+ # Go through the arguments, transforming them on the way.
+ while test "$#" -gt 0; do
+ arg="$1"
+ shift
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+ ;;
+ *) qarg=$arg ;;
+ esac
+ libtool_args="$libtool_args $qarg"
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ output)
+ compile_command="$compile_command @OUTPUT@"
+ finalize_command="$finalize_command @OUTPUT@"
+ ;;
+ esac
+
+ case $prev in
+ dlfiles|dlprefiles)
+ if test "$preload" = no; then
+ # Add the symbol object into the linking commands.
+ compile_command="$compile_command @SYMFILE@"
+ finalize_command="$finalize_command @SYMFILE@"
+ preload=yes
+ fi
+ case $arg in
+ *.la | *.lo) ;; # We handle these cases below.
+ force)
+ if test "$dlself" = no; then
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ self)
+ if test "$prev" = dlprefiles; then
+ dlself=yes
+ elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+ dlself=yes
+ else
+ dlself=needless
+ export_dynamic=yes
+ fi
+ prev=
+ continue
+ ;;
+ *)
+ if test "$prev" = dlfiles; then
+ dlfiles="$dlfiles $arg"
+ else
+ dlprefiles="$dlprefiles $arg"
+ fi
+ prev=
+ continue
+ ;;
+ esac
+ ;;
+ expsyms)
+ export_symbols="$arg"
+ if test ! -f "$arg"; then
+ $echo "$modename: symbol file \`$arg' does not exist"
+ exit $EXIT_FAILURE
+ fi
+ prev=
+ continue
+ ;;
+ expsyms_regex)
+ export_symbols_regex="$arg"
+ prev=
+ continue
+ ;;
+ inst_prefix)
+ inst_prefix_dir="$arg"
+ prev=
+ continue
+ ;;
+ precious_regex)
+ precious_files_regex="$arg"
+ prev=
+ continue
+ ;;
+ release)
+ release="-$arg"
+ prev=
+ continue
+ ;;
+ objectlist)
+ if test -f "$arg"; then
+ save_arg=$arg
+ moreargs=
+ for fil in `cat $save_arg`
+ do
+# moreargs="$moreargs $fil"
+ arg=$fil
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ # If there is no directory component, then add one.
+ case $arg in
+ */* | *\\*) . $arg ;;
+ *) . ./$arg ;;
+ esac
+
+ if test -z "$pic_object" || \
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none && \
+ test "$non_pic_object" = none; then
+ $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ dlfiles="$dlfiles $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ libobjs="$libobjs $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if test -z "$run"; then
+ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+ exit $EXIT_FAILURE
+ else
+ # Dry-run case.
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+ libobjs="$libobjs $pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ fi
+ done
+ else
+ $echo "$modename: link input file \`$save_arg' does not exist"
+ exit $EXIT_FAILURE
+ fi
+ arg=$save_arg
+ prev=
+ continue
+ ;;
+ rpath | xrpath)
+ # We need an absolute path.
+ case $arg in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ $echo "$modename: only absolute run-paths are allowed" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ if test "$prev" = rpath; then
+ case "$rpath " in
+ *" $arg "*) ;;
+ *) rpath="$rpath $arg" ;;
+ esac
+ else
+ case "$xrpath " in
+ *" $arg "*) ;;
+ *) xrpath="$xrpath $arg" ;;
+ esac
+ fi
+ prev=
+ continue
+ ;;
+ xcompiler)
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ compile_command="$compile_command $qarg"
+ finalize_command="$finalize_command $qarg"
+ continue
+ ;;
+ xlinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $wl$qarg"
+ prev=
+ compile_command="$compile_command $wl$qarg"
+ finalize_command="$finalize_command $wl$qarg"
+ continue
+ ;;
+ xcclinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ compile_command="$compile_command $qarg"
+ finalize_command="$finalize_command $qarg"
+ continue
+ ;;
+ shrext)
+ shrext_cmds="$arg"
+ prev=
+ continue
+ ;;
+ darwin_framework|darwin_framework_skip)
+ test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ prev=
+ continue
+ ;;
+ *)
+ eval "$prev=\"\$arg\""
+ prev=
+ continue
+ ;;
+ esac
+ fi # test -n "$prev"
+
+ prevarg="$arg"
+
+ case $arg in
+ -all-static)
+ if test -n "$link_static_flag"; then
+ compile_command="$compile_command $link_static_flag"
+ finalize_command="$finalize_command $link_static_flag"
+ fi
+ continue
+ ;;
+
+ -allow-undefined)
+ # FIXME: remove this flag sometime in the future.
+ $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+ continue
+ ;;
+
+ -avoid-version)
+ avoid_version=yes
+ continue
+ ;;
+
+ -dlopen)
+ prev=dlfiles
+ continue
+ ;;
+
+ -dlpreopen)
+ prev=dlprefiles
+ continue
+ ;;
+
+ -export-dynamic)
+ export_dynamic=yes
+ continue
+ ;;
+
+ -export-symbols | -export-symbols-regex)
+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+ $echo "$modename: more than one -exported-symbols argument is not allowed"
+ exit $EXIT_FAILURE
+ fi
+ if test "X$arg" = "X-export-symbols"; then
+ prev=expsyms
+ else
+ prev=expsyms_regex
+ fi
+ continue
+ ;;
+
+ -framework|-arch|-isysroot)
+ case " $CC " in
+ *" ${arg} ${1} "* | *" ${arg} ${1} "*)
+ prev=darwin_framework_skip ;;
+ *) compiler_flags="$compiler_flags $arg"
+ prev=darwin_framework ;;
+ esac
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ continue
+ ;;
+
+ -inst-prefix-dir)
+ prev=inst_prefix
+ continue
+ ;;
+
+ # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+ # so, if we see these flags be careful not to treat them like -L
+ -L[A-Z][A-Z]*:*)
+ case $with_gcc/$host in
+ no/*-*-irix* | /*-*-irix*)
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ ;;
+ esac
+ continue
+ ;;
+
+ -L*)
+ dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+ absdir="$dir"
+ notinst_path="$notinst_path $dir"
+ fi
+ dir="$absdir"
+ ;;
+ esac
+ case "$deplibs " in
+ *" -L$dir "*) ;;
+ *)
+ deplibs="$deplibs -L$dir"
+ lib_search_path="$lib_search_path $dir"
+ ;;
+ esac
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$dir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$testbindir";;
+ esac
+ ;;
+ esac
+ continue
+ ;;
+
+ -l*)
+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
+ # These systems don't actually have a C or math library (as such)
+ continue
+ ;;
+ *-*-os2*)
+ # These systems don't actually have a C library (as such)
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc due to us having libc/libc_r.
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C and math libraries are in the System framework
+ deplibs="$deplibs -framework System"
+ continue
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ test "X$arg" = "X-lc" && continue
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ test "X$arg" = "X-lc" && continue
+ ;;
+ esac
+ elif test "X$arg" = "X-lc_r"; then
+ case $host in
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc_r directly, use -pthread flag.
+ continue
+ ;;
+ esac
+ fi
+ deplibs="$deplibs $arg"
+ continue
+ ;;
+
+ # Tru64 UNIX uses -model [arg] to determine the layout of C++
+ # classes, name mangling, and exception handling.
+ -model)
+ compile_command="$compile_command $arg"
+ compiler_flags="$compiler_flags $arg"
+ finalize_command="$finalize_command $arg"
+ prev=xcompiler
+ continue
+ ;;
+
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+ compiler_flags="$compiler_flags $arg"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ continue
+ ;;
+
+ -module)
+ module=yes
+ continue
+ ;;
+
+ # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+ # -r[0-9][0-9]* specifies the processor on the SGI compiler
+ # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+ # +DA*, +DD* enable 64-bit mode on the HP compiler
+ # -q* pass through compiler args for the IBM compiler
+ # -m* pass through architecture-specific compiler args for GCC
+ # -m*, -t[45]*, -txscale* pass through architecture-specific
+ # compiler args for GCC
+ # -pg pass through profiling flag for GCC
+ # @file GCC response files
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
+ -t[45]*|-txscale*|@*)
+
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ compiler_flags="$compiler_flags $arg"
+ continue
+ ;;
+
+ -shrext)
+ prev=shrext
+ continue
+ ;;
+
+ -no-fast-install)
+ fast_install=no
+ continue
+ ;;
+
+ -no-install)
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # The PATH hackery in wrapper scripts is required on Windows
+ # in order for the loader to find any dlls it needs.
+ $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+ $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+ fast_install=no
+ ;;
+ *) no_install=yes ;;
+ esac
+ continue
+ ;;
+
+ -no-undefined)
+ allow_undefined=no
+ continue
+ ;;
+
+ -objectlist)
+ prev=objectlist
+ continue
+ ;;
+
+ -o) prev=output ;;
+
+ -precious-files-regex)
+ prev=precious_regex
+ continue
+ ;;
+
+ -release)
+ prev=release
+ continue
+ ;;
+
+ -rpath)
+ prev=rpath
+ continue
+ ;;
+
+ -R)
+ prev=xrpath
+ continue
+ ;;
+
+ -R*)
+ dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ $echo "$modename: only absolute run-paths are allowed" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ continue
+ ;;
+
+ -static)
+ # The effects of -static are defined in a previous loop.
+ # We used to do the same as -all-static on platforms that
+ # didn't have a PIC flag, but the assumption that the effects
+ # would be equivalent was wrong. It would break on at least
+ # Digital Unix and AIX.
+ continue
+ ;;
+
+ -thread-safe)
+ thread_safe=yes
+ continue
+ ;;
+
+ -version-info)
+ prev=vinfo
+ continue
+ ;;
+ -version-number)
+ prev=vinfo
+ vinfo_number=yes
+ continue
+ ;;
+
+ -Wc,*)
+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ case $flag in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ flag="\"$flag\""
+ ;;
+ esac
+ arg="$arg $wl$flag"
+ compiler_flags="$compiler_flags $flag"
+ done
+ IFS="$save_ifs"
+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+ ;;
+
+ -Wl,*)
+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ case $flag in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ flag="\"$flag\""
+ ;;
+ esac
+ arg="$arg $wl$flag"
+ compiler_flags="$compiler_flags $wl$flag"
+ linker_flags="$linker_flags $flag"
+ done
+ IFS="$save_ifs"
+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+ ;;
+
+ -Xcompiler)
+ prev=xcompiler
+ continue
+ ;;
+
+ -Xlinker)
+ prev=xlinker
+ continue
+ ;;
+
+ -XCClinker)
+ prev=xcclinker
+ continue
+ ;;
+
+ # Some other compiler flag.
+ -* | +*)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ ;;
+
+ *.$objext)
+ # A standard object.
+ objs="$objs $arg"
+ ;;
+
+ *.lo)
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ # If there is no directory component, then add one.
+ case $arg in
+ */* | *\\*) . $arg ;;
+ *) . ./$arg ;;
+ esac
+
+ if test -z "$pic_object" || \
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none && \
+ test "$non_pic_object" = none; then
+ $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ dlfiles="$dlfiles $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ libobjs="$libobjs $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ else
+ # If the PIC object exists, use it instead.
+ # $xdir was prepended to $pic_object above.
+ non_pic_object="$pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if test -z "$run"; then
+ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+ exit $EXIT_FAILURE
+ else
+ # Dry-run case.
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+ libobjs="$libobjs $pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ fi
+ ;;
+
+ *.$libext)
+ # An archive.
+ deplibs="$deplibs $arg"
+ old_deplibs="$old_deplibs $arg"
+ continue
+ ;;
+
+ *.la)
+ # A libtool-controlled library.
+
+ if test "$prev" = dlfiles; then
+ # This library was specified with -dlopen.
+ dlfiles="$dlfiles $arg"
+ prev=
+ elif test "$prev" = dlprefiles; then
+ # The library was specified with -dlpreopen.
+ dlprefiles="$dlprefiles $arg"
+ prev=
+ else
+ deplibs="$deplibs $arg"
+ fi
+ continue
+ ;;
+
+ # Some other compiler argument.
+ *)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ ;;
+ esac # arg
+
+ # Now actually substitute the argument into the commands.
+ if test -n "$arg"; then
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ fi
+ done # argument parsing loop
+
+ if test -n "$prev"; then
+ $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+ eval arg=\"$export_dynamic_flag_spec\"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ fi
+
+ oldlibs=
+ # calculate the name of the file, without its directory
+ outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+ libobjs_save="$libobjs"
+
+ if test -n "$shlibpath_var"; then
+ # get the directories listed in $shlibpath_var
+ eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+ else
+ shlib_search_path=
+ fi
+ eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+ output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$output_objdir" = "X$output"; then
+ output_objdir="$objdir"
+ else
+ output_objdir="$output_objdir/$objdir"
+ fi
+ # Create the object directory.
+ if test ! -d "$output_objdir"; then
+ $show "$mkdir $output_objdir"
+ $run $mkdir $output_objdir
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
+ exit $exit_status
+ fi
+ fi
+
+ # Determine the type of output
+ case $output in
+ "")
+ $echo "$modename: you must specify an output file" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ *.$libext) linkmode=oldlib ;;
+ *.lo | *.$objext) linkmode=obj ;;
+ *.la) linkmode=lib ;;
+ *) linkmode=prog ;; # Anything else should be a program.
+ esac
+
+ case $host in
+ *cygwin* | *mingw* | *pw32*)
+ # don't eliminate duplications in $postdeps and $predeps
+ duplicate_compiler_generated_deps=yes
+ ;;
+ *)
+ duplicate_compiler_generated_deps=$duplicate_deps
+ ;;
+ esac
+ specialdeplibs=
+
+ libs=
+ # Find all interdependent deplibs by searching for libraries
+ # that are linked more than once (e.g. -la -lb -la)
+ for deplib in $deplibs; do
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ libs="$libs $deplib"
+ done
+
+ if test "$linkmode" = lib; then
+ libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+ # Compute libraries that are listed more than once in $predeps
+ # $postdeps and mark them as special (i.e., whose duplicates are
+ # not to be eliminated).
+ pre_post_deps=
+ if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
+ for pre_post_dep in $predeps $postdeps; do
+ case "$pre_post_deps " in
+ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+ esac
+ pre_post_deps="$pre_post_deps $pre_post_dep"
+ done
+ fi
+ pre_post_deps=
+ fi
+
+ deplibs=
+ newdependency_libs=
+ newlib_search_path=
+ need_relink=no # whether we're linking any uninstalled libtool libraries
+ notinst_deplibs= # not-installed libtool libraries
+ case $linkmode in
+ lib)
+ passes="conv link"
+ for file in $dlfiles $dlprefiles; do
+ case $file in
+ *.la) ;;
+ *)
+ $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ done
+ ;;
+ prog)
+ compile_deplibs=
+ finalize_deplibs=
+ alldeplibs=no
+ newdlfiles=
+ newdlprefiles=
+ passes="conv scan dlopen dlpreopen link"
+ ;;
+ *) passes="conv"
+ ;;
+ esac
+ for pass in $passes; do
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan"; then
+ libs="$deplibs"
+ deplibs=
+ fi
+ if test "$linkmode" = prog; then
+ case $pass in
+ dlopen) libs="$dlfiles" ;;
+ dlpreopen) libs="$dlprefiles" ;;
+ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+ esac
+ fi
+ if test "$pass" = dlopen; then
+ # Collect dlpreopened libraries
+ save_deplibs="$deplibs"
+ deplibs=
+ fi
+ for deplib in $libs; do
+ lib=
+ found=no
+ case $deplib in
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ compiler_flags="$compiler_flags $deplib"
+ fi
+ continue
+ ;;
+ -l*)
+ if test "$linkmode" != lib && test "$linkmode" != prog; then
+ $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+ continue
+ fi
+ name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+ for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ for search_ext in .la $std_shrext .so .a; do
+ # Search the libtool library
+ lib="$searchdir/lib${name}${search_ext}"
+ if test -f "$lib"; then
+ if test "$search_ext" = ".la"; then
+ found=yes
+ else
+ found=no
+ fi
+ break 2
+ fi
+ done
+ done
+ if test "$found" != yes; then
+ # deplib doesn't seem to be a libtool library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ else # deplib is a libtool library
+ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+ # We need to do some special things here, and not later.
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $deplib "*)
+ if (${SED} -e '2q' $lib |
+ grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ library_names=
+ old_library=
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+ for l in $old_library $library_names; do
+ ll="$l"
+ done
+ if test "X$ll" = "X$old_library" ; then # only static version available
+ found=no
+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$ladir" = "X$lib" && ladir="."
+ lib=$ladir/$old_library
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ fi
+ fi
+ ;;
+ *) ;;
+ esac
+ fi
+ fi
+ ;; # -l
+ -L*)
+ case $linkmode in
+ lib)
+ deplibs="$deplib $deplibs"
+ test "$pass" = conv && continue
+ newdependency_libs="$deplib $newdependency_libs"
+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ ;;
+ prog)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ if test "$pass" = scan; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ ;;
+ *)
+ $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+ ;;
+ esac # linkmode
+ continue
+ ;; # -L
+ -R*)
+ if test "$pass" = link; then
+ dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+ # Make sure the xrpath contains only unique directories.
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
+ ;;
+ *.la) lib="$deplib" ;;
+ *.$libext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ case $linkmode in
+ lib)
+ valid_a_lib=no
+ case $deplibs_check_method in
+ match_pattern*)
+ set dummy $deplibs_check_method
+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ if eval $echo \"$deplib\" 2>/dev/null \
+ | $SED 10q \
+ | $EGREP "$match_pattern_regex" > /dev/null; then
+ valid_a_lib=yes
+ fi
+ ;;
+ pass_all)
+ valid_a_lib=yes
+ ;;
+ esac
+ if test "$valid_a_lib" != yes; then
+ $echo
+ $echo "*** Warning: Trying to link with static lib archive $deplib."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have"
+ $echo "*** because the file extensions .$libext of this argument makes me believe"
+ $echo "*** that it is just a static archive that I should not used here."
+ else
+ $echo
+ $echo "*** Warning: Linking the shared library $output against the"
+ $echo "*** static library $deplib is not portable!"
+ deplibs="$deplib $deplibs"
+ fi
+ continue
+ ;;
+ prog)
+ if test "$pass" != link; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ continue
+ ;;
+ esac # linkmode
+ ;; # *.$libext
+ *.lo | *.$objext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ elif test "$linkmode" = prog; then
+ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+ # If there is no dlopen support or we're linking statically,
+ # we need to preload.
+ newdlprefiles="$newdlprefiles $deplib"
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ newdlfiles="$newdlfiles $deplib"
+ fi
+ fi
+ continue
+ ;;
+ %DEPLIBS%)
+ alldeplibs=yes
+ continue
+ ;;
+ esac # case $deplib
+ if test "$found" = yes || test -f "$lib"; then :
+ else
+ $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$ladir" = "X$lib" && ladir="."
+
+ dlname=
+ dlopen=
+ dlpreopen=
+ libdir=
+ library_names=
+ old_library=
+ # If the library was installed with an old release of libtool,
+ # it will not redefine variables installed, or shouldnotlink
+ installed=yes
+ shouldnotlink=no
+ avoidtemprpath=
+
+
+ # Read the .la file
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan" ||
+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+ test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+ test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+ fi
+
+ if test "$pass" = conv; then
+ # Only check for convenience libraries
+ deplibs="$lib $deplibs"
+ if test -z "$libdir"; then
+ if test -z "$old_library"; then
+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ # It is a libtool convenience library, so add in its objects.
+ convenience="$convenience $ladir/$objdir/$old_library"
+ old_convenience="$old_convenience $ladir/$objdir/$old_library"
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
+ $echo "$modename: \`$lib' is not a convenience library" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ continue
+ fi # $pass = conv
+
+
+ # Get the name of the library we link against.
+ linklib=
+ for l in $old_library $library_names; do
+ linklib="$l"
+ done
+ if test -z "$linklib"; then
+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # This library was specified with -dlopen.
+ if test "$pass" = dlopen; then
+ if test -z "$libdir"; then
+ $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test -z "$dlname" ||
+ test "$dlopen_support" != yes ||
+ test "$build_libtool_libs" = no; then
+ # If there is no dlname, no dlopen support or we're linking
+ # statically, we need to preload. We also need to preload any
+ # dependent libraries so libltdl's deplib preloader doesn't
+ # bomb out in the load deplibs phase.
+ dlprefiles="$dlprefiles $lib $dependency_libs"
+ else
+ newdlfiles="$newdlfiles $lib"
+ fi
+ continue
+ fi # $pass = dlopen
+
+ # We need an absolute path.
+ case $ladir in
+ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+ *)
+ abs_ladir=`cd "$ladir" && pwd`
+ if test -z "$abs_ladir"; then
+ $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+ $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+ abs_ladir="$ladir"
+ fi
+ ;;
+ esac
+ laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ $echo "$modename: warning: library \`$lib' was moved." 1>&2
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+ dir="$libdir"
+ absdir="$libdir"
+ fi
+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+ else
+ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ dir="$ladir"
+ absdir="$abs_ladir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ else
+ dir="$ladir/$objdir"
+ absdir="$abs_ladir/$objdir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ fi
+ fi # $installed = yes
+ name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+ # This library was specified with -dlpreopen.
+ if test "$pass" = dlpreopen; then
+ if test -z "$libdir"; then
+ $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ # Prefer using a static library (so that no silly _DYNAMIC symbols
+ # are required to link).
+ if test -n "$old_library"; then
+ newdlprefiles="$newdlprefiles $dir/$old_library"
+ # Otherwise, use the dlname, so that lt_dlopen finds it.
+ elif test -n "$dlname"; then
+ newdlprefiles="$newdlprefiles $dir/$dlname"
+ else
+ newdlprefiles="$newdlprefiles $dir/$linklib"
+ fi
+ fi # $pass = dlpreopen
+
+ if test -z "$libdir"; then
+ # Link the convenience library
+ if test "$linkmode" = lib; then
+ deplibs="$dir/$old_library $deplibs"
+ elif test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$dir/$old_library $compile_deplibs"
+ finalize_deplibs="$dir/$old_library $finalize_deplibs"
+ else
+ deplibs="$lib $deplibs" # used for prog,scan pass
+ fi
+ continue
+ fi
+
+
+ if test "$linkmode" = prog && test "$pass" != link; then
+ newlib_search_path="$newlib_search_path $ladir"
+ deplibs="$lib $deplibs"
+
+ linkalldeplibs=no
+ if test "$link_all_deplibs" != no || test -z "$library_names" ||
+ test "$build_libtool_libs" = no; then
+ linkalldeplibs=yes
+ fi
+
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+ esac
+ # Need to link against all dependency_libs?
+ if test "$linkalldeplibs" = yes; then
+ deplibs="$deplib $deplibs"
+ else
+ # Need to hardcode shared library paths
+ # or/and link against static libraries
+ newdependency_libs="$deplib $newdependency_libs"
+ fi
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done # for deplib
+ continue
+ fi # $linkmode = prog...
+
+ if test "$linkmode,$pass" = "prog,link"; then
+ if test -n "$library_names" &&
+ { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+ # We need to hardcode the library path
+ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+ # Make sure the rpath contains only unique directories.
+ case "$temp_rpath " in
+ *" $dir "*) ;;
+ *" $absdir "*) ;;
+ *) temp_rpath="$temp_rpath $absdir" ;;
+ esac
+ fi
+
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi # $linkmode,$pass = prog,link...
+
+ if test "$alldeplibs" = yes &&
+ { test "$deplibs_check_method" = pass_all ||
+ { test "$build_libtool_libs" = yes &&
+ test -n "$library_names"; }; }; then
+ # We only need to search for static libraries
+ continue
+ fi
+ fi
+
+ link_static=no # Whether the deplib will be linked statically
+ use_static_libs=$prefer_static_libs
+ if test "$use_static_libs" = built && test "$installed" = yes ; then
+ use_static_libs=no
+ fi
+ if test -n "$library_names" &&
+ { test "$use_static_libs" = no || test -z "$old_library"; }; then
+ if test "$installed" = no; then
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=yes
+ fi
+ # This is a shared library
+
+ # Warn about portability, can't link against -module's on
+ # some systems (darwin)
+ if test "$shouldnotlink" = yes && test "$pass" = link ; then
+ $echo
+ if test "$linkmode" = prog; then
+ $echo "*** Warning: Linking the executable $output against the loadable module"
+ else
+ $echo "*** Warning: Linking the shared library $output against the loadable module"
+ fi
+ $echo "*** $linklib is not portable!"
+ fi
+ if test "$linkmode" = lib &&
+ test "$hardcode_into_libs" = yes; then
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi
+
+ if test -n "$old_archive_from_expsyms_cmds"; then
+ # figure out the soname
+ set dummy $library_names
+ realname="$2"
+ shift; shift
+ libname=`eval \\$echo \"$libname_spec\"`
+ # use dlname if we got it. it's perfectly good, no?
+ if test -n "$dlname"; then
+ soname="$dlname"
+ elif test -n "$soname_spec"; then
+ # bleh windows
+ case $host in
+ *cygwin* | mingw*)
+ major=`expr $current - $age`
+ versuffix="-$major"
+ ;;
+ esac
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+
+ # Make a new name for the extract_expsyms_cmds to use
+ soroot="$soname"
+ soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
+ newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+ # If the library has no export list, then create one now
+ if test -f "$output_objdir/$soname-def"; then :
+ else
+ $show "extracting exported symbol list from \`$soname'"
+ save_ifs="$IFS"; IFS='~'
+ cmds=$extract_expsyms_cmds
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ # Create $newlib
+ if test -f "$output_objdir/$newlib"; then :; else
+ $show "generating import library for \`$soname'"
+ save_ifs="$IFS"; IFS='~'
+ cmds=$old_archive_from_expsyms_cmds
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+ # make sure the library variables are pointing to the new library
+ dir=$output_objdir
+ linklib=$newlib
+ fi # test -n "$old_archive_from_expsyms_cmds"
+
+ if test "$linkmode" = prog || test "$mode" != relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ lib_linked=yes
+ case $hardcode_action in
+ immediate | unsupported)
+ if test "$hardcode_direct" = no; then
+ add="$dir/$linklib"
+ case $host in
+ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+ *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+ *-*-unixware7*) add_dir="-L$dir" ;;
+ *-*-darwin* )
+ # if the lib is a module then we can not link against
+ # it, someone is ignoring the new warnings I added
+ if /usr/bin/file -L $add 2> /dev/null |
+ $EGREP ": [^:]* bundle" >/dev/null ; then
+ $echo "** Warning, lib $linklib is a module, not a shared library"
+ if test -z "$old_library" ; then
+ $echo
+ $echo "** And there doesn't seem to be a static archive available"
+ $echo "** The link will probably fail, sorry"
+ else
+ add="$dir/$old_library"
+ fi
+ fi
+ esac
+ elif test "$hardcode_minus_L" = no; then
+ case $host in
+ *-*-sunos*) add_shlibpath="$dir" ;;
+ esac
+ add_dir="-L$dir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = no; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ relink)
+ if test "$hardcode_direct" = yes; then
+ add="$dir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$dir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ *) lib_linked=no ;;
+ esac
+
+ if test "$lib_linked" != yes; then
+ $echo "$modename: configuration error: unsupported hardcode properties"
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$add_shlibpath"; then
+ case :$compile_shlibpath: in
+ *":$add_shlibpath:"*) ;;
+ *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+ esac
+ fi
+ if test "$linkmode" = prog; then
+ test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+ test -n "$add" && compile_deplibs="$add $compile_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ if test "$hardcode_direct" != yes && \
+ test "$hardcode_minus_L" != yes && \
+ test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ fi
+ fi
+ fi
+
+ if test "$linkmode" = prog || test "$mode" = relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ # Finalize command for both is simple: just hardcode it.
+ if test "$hardcode_direct" = yes; then
+ add="$libdir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$libdir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ case :$finalize_shlibpath: in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ add="-l$name"
+ elif test "$hardcode_automatic" = yes; then
+ if test -n "$inst_prefix_dir" &&
+ test -f "$inst_prefix_dir$libdir/$linklib" ; then
+ add="$inst_prefix_dir$libdir/$linklib"
+ else
+ add="$libdir/$linklib"
+ fi
+ else
+ # We cannot seem to hardcode it, guess we'll fake it.
+ add_dir="-L$libdir"
+ # Try looking first in the location we're being installed to.
+ if test -n "$inst_prefix_dir"; then
+ case $libdir in
+ [\\/]*)
+ add_dir="$add_dir -L$inst_prefix_dir$libdir"
+ ;;
+ esac
+ fi
+ add="-l$name"
+ fi
+
+ if test "$linkmode" = prog; then
+ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+ test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ fi
+ fi
+ elif test "$linkmode" = prog; then
+ # Here we assume that one of hardcode_direct or hardcode_minus_L
+ # is not unsupported. This is valid on all known static and
+ # shared platforms.
+ if test "$hardcode_direct" != unsupported; then
+ test -n "$old_library" && linklib="$old_library"
+ compile_deplibs="$dir/$linklib $compile_deplibs"
+ finalize_deplibs="$dir/$linklib $finalize_deplibs"
+ else
+ compile_deplibs="-l$name -L$dir $compile_deplibs"
+ finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+ fi
+ elif test "$build_libtool_libs" = yes; then
+ # Not a shared library
+ if test "$deplibs_check_method" != pass_all; then
+ # We're trying link a shared library against a static one
+ # but the system doesn't support it.
+
+ # Just print a warning and add the library to dependency_libs so
+ # that the program can be linked against the static library.
+ $echo
+ $echo "*** Warning: This system can not link to static lib archive $lib."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have."
+ if test "$module" = yes; then
+ $echo "*** But as you try to build a module library, libtool will still create "
+ $echo "*** a static module, that should work as long as the dlopening application"
+ $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+ if test -z "$global_symbol_pipe"; then
+ $echo
+ $echo "*** However, this would only work if libtool was able to extract symbol"
+ $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ $echo "*** not find such a program. So, this module is probably useless."
+ $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+ fi
+ if test "$build_old_libs" = no; then
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ else
+ deplibs="$dir/$old_library $deplibs"
+ link_static=yes
+ fi
+ fi # link shared/static library?
+
+ if test "$linkmode" = lib; then
+ if test -n "$dependency_libs" &&
+ { test "$hardcode_into_libs" != yes ||
+ test "$build_old_libs" = yes ||
+ test "$link_static" = yes; }; then
+ # Extract -R from dependency_libs
+ temp_deplibs=
+ for libdir in $dependency_libs; do
+ case $libdir in
+ -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+ *) xrpath="$xrpath $temp_xrpath";;
+ esac;;
+ *) temp_deplibs="$temp_deplibs $libdir";;
+ esac
+ done
+ dependency_libs="$temp_deplibs"
+ fi
+
+ newlib_search_path="$newlib_search_path $absdir"
+ # Link against this library
+ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+ # ... and its dependency_libs
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ newdependency_libs="$deplib $newdependency_libs"
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+
+ if test "$link_all_deplibs" != no; then
+ # Add the search paths of all dependency libraries
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) path="$deplib" ;;
+ *.la)
+ dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$deplib" && dir="."
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+ absdir="$dir"
+ fi
+ ;;
+ esac
+ if grep "^installed=no" $deplib > /dev/null; then
+ path="$absdir/$objdir"
+ else
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test "$absdir" != "$libdir"; then
+ $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+ fi
+ path="$absdir"
+ fi
+ depdepl=
+ case $host in
+ *-*-darwin*)
+ # we do not want to link against static libs,
+ # but need to link against shared
+ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+ if test -n "$deplibrary_names" ; then
+ for tmp in $deplibrary_names ; do
+ depdepl=$tmp
+ done
+ if test -f "$path/$depdepl" ; then
+ depdepl="$path/$depdepl"
+ fi
+ # do not add paths which are already there
+ case " $newlib_search_path " in
+ *" $path "*) ;;
+ *) newlib_search_path="$newlib_search_path $path";;
+ esac
+ fi
+ path=""
+ ;;
+ *)
+ path="-L$path"
+ ;;
+ esac
+ ;;
+ -l*)
+ case $host in
+ *-*-darwin*)
+ # Again, we only want to link against shared libraries
+ eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+ for tmp in $newlib_search_path ; do
+ if test -f "$tmp/lib$tmp_libs.dylib" ; then
+ eval depdepl="$tmp/lib$tmp_libs.dylib"
+ break
+ fi
+ done
+ path=""
+ ;;
+ *) continue ;;
+ esac
+ ;;
+ *) continue ;;
+ esac
+ case " $deplibs " in
+ *" $path "*) ;;
+ *) deplibs="$path $deplibs" ;;
+ esac
+ case " $deplibs " in
+ *" $depdepl "*) ;;
+ *) deplibs="$depdepl $deplibs" ;;
+ esac
+ done
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+ done # for deplib in $libs
+ dependency_libs="$newdependency_libs"
+ if test "$pass" = dlpreopen; then
+ # Link the dlpreopened libraries before other libraries
+ for deplib in $save_deplibs; do
+ deplibs="$deplib $deplibs"
+ done
+ fi
+ if test "$pass" != dlopen; then
+ if test "$pass" != conv; then
+ # Make sure lib_search_path contains only unique directories.
+ lib_search_path=
+ for dir in $newlib_search_path; do
+ case "$lib_search_path " in
+ *" $dir "*) ;;
+ *) lib_search_path="$lib_search_path $dir" ;;
+ esac
+ done
+ newlib_search_path=
+ fi
+
+ if test "$linkmode,$pass" != "prog,link"; then
+ vars="deplibs"
+ else
+ vars="compile_deplibs finalize_deplibs"
+ fi
+ for var in $vars dependency_libs; do
+ # Add libraries to $var in reverse order
+ eval tmp_libs=\"\$$var\"
+ new_libs=
+ for deplib in $tmp_libs; do
+ # FIXME: Pedantically, this is the right thing to do, so
+ # that some nasty dependency loop isn't accidentally
+ # broken:
+ #new_libs="$deplib $new_libs"
+ # Pragmatically, this seems to cause very few problems in
+ # practice:
+ case $deplib in
+ -L*) new_libs="$deplib $new_libs" ;;
+ -R*) ;;
+ *)
+ # And here is the reason: when a library appears more
+ # than once as an explicit dependence of a library, or
+ # is implicitly linked in more than once by the
+ # compiler, it is considered special, and multiple
+ # occurrences thereof are not removed. Compare this
+ # with having the same library being listed as a
+ # dependency of multiple other libraries: in this case,
+ # we know (pedantically, we assume) the library does not
+ # need to be listed more than once, so we keep only the
+ # last copy. This is not always right, but it is rare
+ # enough that we require users that really mean to play
+ # such unportable linking tricks to link the library
+ # using -Wl,-lname, so that libtool does not consider it
+ # for duplicate removal.
+ case " $specialdeplibs " in
+ *" $deplib "*) new_libs="$deplib $new_libs" ;;
+ *)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$deplib $new_libs" ;;
+ esac
+ ;;
+ esac
+ ;;
+ esac
+ done
+ tmp_libs=
+ for deplib in $new_libs; do
+ case $deplib in
+ -L*)
+ case " $tmp_libs " in
+ *" $deplib "*) ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ done
+ eval $var=\"$tmp_libs\"
+ done # for var
+ fi
+ # Last step: remove runtime libs from dependency_libs
+ # (they stay in deplibs)
+ tmp_libs=
+ for i in $dependency_libs ; do
+ case " $predeps $postdeps $compiler_lib_search_path " in
+ *" $i "*)
+ i=""
+ ;;
+ esac
+ if test -n "$i" ; then
+ tmp_libs="$tmp_libs $i"
+ fi
+ done
+ dependency_libs=$tmp_libs
+ done # for pass
+ if test "$linkmode" = prog; then
+ dlfiles="$newdlfiles"
+ dlprefiles="$newdlprefiles"
+ fi
+
+ case $linkmode in
+ oldlib)
+ if test -n "$deplibs"; then
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+ fi
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$rpath"; then
+ $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$xrpath"; then
+ $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+ $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+ fi
+
+ # Now set the variables for building old libraries.
+ build_libtool_libs=no
+ oldlibs="$output"
+ objs="$objs$old_deplibs"
+ ;;
+
+ lib)
+ # Make sure we only generate libraries of the form `libNAME.la'.
+ case $outputname in
+ lib*)
+ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ ;;
+ *)
+ if test "$module" = no; then
+ $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test "$need_lib_prefix" != no; then
+ # Add the "lib" prefix for modules if required
+ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ else
+ libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+ fi
+ ;;
+ esac
+
+ if test -n "$objs"; then
+ if test "$deplibs_check_method" != pass_all; then
+ $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+ exit $EXIT_FAILURE
+ else
+ $echo
+ $echo "*** Warning: Linking the shared library $output against the non-libtool"
+ $echo "*** objects $objs is not portable!"
+ libobjs="$libobjs $objs"
+ fi
+ fi
+
+ if test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+ fi
+
+ set dummy $rpath
+ if test "$#" -gt 2; then
+ $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+ fi
+ install_libdir="$2"
+
+ oldlibs=
+ if test -z "$rpath"; then
+ if test "$build_libtool_libs" = yes; then
+ # Building a libtool convenience library.
+ # Some compilers have problems with a `.al' extension so
+ # convenience libraries should have the same extension an
+ # archive normally would.
+ oldlibs="$output_objdir/$libname.$libext $oldlibs"
+ build_libtool_libs=convenience
+ build_old_libs=yes
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+ fi
+ else
+
+ # Parse the version information argument.
+ save_ifs="$IFS"; IFS=':'
+ set dummy $vinfo 0 0 0
+ IFS="$save_ifs"
+
+ if test -n "$8"; then
+ $echo "$modename: too many parameters to \`-version-info'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # convert absolute version numbers to libtool ages
+ # this retains compatibility with .la files and attempts
+ # to make the code below a bit more comprehensible
+
+ case $vinfo_number in
+ yes)
+ number_major="$2"
+ number_minor="$3"
+ number_revision="$4"
+ #
+ # There are really only two kinds -- those that
+ # use the current revision as the major version
+ # and those that subtract age and use age as
+ # a minor version. But, then there is irix
+ # which has an extra 1 added just for fun
+ #
+ case $version_type in
+ darwin|linux|osf|windows)
+ current=`expr $number_major + $number_minor`
+ age="$number_minor"
+ revision="$number_revision"
+ ;;
+ freebsd-aout|freebsd-elf|sunos)
+ current="$number_major"
+ revision="$number_minor"
+ age="0"
+ ;;
+ irix|nonstopux)
+ current=`expr $number_major + $number_minor - 1`
+ age="$number_minor"
+ revision="$number_minor"
+ ;;
+ esac
+ ;;
+ no)
+ current="$2"
+ revision="$3"
+ age="$4"
+ ;;
+ esac
+
+ # Check that each of the things are valid numbers.
+ case $current in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $revision in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $age in
+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+ *)
+ $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ if test "$age" -gt "$current"; then
+ $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Calculate the version variables.
+ major=
+ versuffix=
+ verstring=
+ case $version_type in
+ none) ;;
+
+ darwin)
+ # Like Linux, but with the current version available in
+ # verstring for coding it into the library header
+ major=.`expr $current - $age`
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+ minor_current=`expr $current + 1`
+ verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ ;;
+
+ freebsd-aout)
+ major=".$current"
+ versuffix=".$current.$revision";
+ ;;
+
+ freebsd-elf)
+ major=".$current"
+ versuffix=".$current";
+ ;;
+
+ irix | nonstopux)
+ major=`expr $current - $age + 1`
+
+ case $version_type in
+ nonstopux) verstring_prefix=nonstopux ;;
+ *) verstring_prefix=sgi ;;
+ esac
+ verstring="$verstring_prefix$major.$revision"
+
+ # Add in all the interfaces that we are compatible with.
+ loop=$revision
+ while test "$loop" -ne 0; do
+ iface=`expr $revision - $loop`
+ loop=`expr $loop - 1`
+ verstring="$verstring_prefix$major.$iface:$verstring"
+ done
+
+ # Before this point, $major must not contain `.'.
+ major=.$major
+ versuffix="$major.$revision"
+ ;;
+
+ linux)
+ major=.`expr $current - $age`
+ versuffix="$major.$age.$revision"
+ ;;
+
+ osf)
+ major=.`expr $current - $age`
+ versuffix=".$current.$age.$revision"
+ verstring="$current.$age.$revision"
+
+ # Add in all the interfaces that we are compatible with.
+ loop=$age
+ while test "$loop" -ne 0; do
+ iface=`expr $current - $loop`
+ loop=`expr $loop - 1`
+ verstring="$verstring:${iface}.0"
+ done
+
+ # Make executables depend on our current version.
+ verstring="$verstring:${current}.0"
+ ;;
+
+ sunos)
+ major=".$current"
+ versuffix=".$current.$revision"
+ ;;
+
+ windows)
+ # Use '-' rather than '.', since we only want one
+ # extension on DOS 8.3 filesystems.
+ major=`expr $current - $age`
+ versuffix="-$major"
+ ;;
+
+ *)
+ $echo "$modename: unknown library version type \`$version_type'" 1>&2
+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ # Clear the version info if we defaulted, and they specified a release.
+ if test -z "$vinfo" && test -n "$release"; then
+ major=
+ case $version_type in
+ darwin)
+ # we can't check for "0.0" in archive_cmds due to quoting
+ # problems, so we reset it completely
+ verstring=
+ ;;
+ *)
+ verstring="0.0"
+ ;;
+ esac
+ if test "$need_version" = no; then
+ versuffix=
+ else
+ versuffix=".0.0"
+ fi
+ fi
+
+ # Remove version info from name if versioning should be avoided
+ if test "$avoid_version" = yes && test "$need_version" = no; then
+ major=
+ versuffix=
+ verstring=""
+ fi
+
+ # Check to see if the archive will have undefined symbols.
+ if test "$allow_undefined" = yes; then
+ if test "$allow_undefined_flag" = unsupported; then
+ $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+ build_libtool_libs=no
+ build_old_libs=yes
+ fi
+ else
+ # Don't allow undefined symbols.
+ allow_undefined_flag="$no_undefined_flag"
+ fi
+ fi
+
+ if test "$mode" != relink; then
+ # Remove our outputs, but don't remove object files since they
+ # may have been created when compiling PIC objects.
+ removelist=
+ tempremovelist=`$echo "$output_objdir/*"`
+ for p in $tempremovelist; do
+ case $p in
+ *.$objext)
+ ;;
+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+ if test "X$precious_files_regex" != "X"; then
+ if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+ then
+ continue
+ fi
+ fi
+ removelist="$removelist $p"
+ ;;
+ *) ;;
+ esac
+ done
+ if test -n "$removelist"; then
+ $show "${rm}r $removelist"
+ $run ${rm}r $removelist
+ fi
+ fi
+
+ # Now set the variables for building old libraries.
+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+ oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+ # Transform .lo files to .o files.
+ oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+ fi
+
+ # Eliminate all temporary directories.
+ for path in $notinst_path; do
+ lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
+ deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+ dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
+ done
+
+ if test -n "$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ temp_xrpath=
+ for libdir in $xrpath; do
+ temp_xrpath="$temp_xrpath -R$libdir"
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir" ;;
+ esac
+ done
+ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+ dependency_libs="$temp_xrpath $dependency_libs"
+ fi
+ fi
+
+ # Make sure dlfiles contains only unique files that won't be dlpreopened
+ old_dlfiles="$dlfiles"
+ dlfiles=
+ for lib in $old_dlfiles; do
+ case " $dlprefiles $dlfiles " in
+ *" $lib "*) ;;
+ *) dlfiles="$dlfiles $lib" ;;
+ esac
+ done
+
+ # Make sure dlprefiles contains only unique files
+ old_dlprefiles="$dlprefiles"
+ dlprefiles=
+ for lib in $old_dlprefiles; do
+ case "$dlprefiles " in
+ *" $lib "*) ;;
+ *) dlprefiles="$dlprefiles $lib" ;;
+ esac
+ done
+
+ if test "$build_libtool_libs" = yes; then
+ if test -n "$rpath"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+ # these systems don't actually have a c library (as such)!
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C library is in the System framework
+ deplibs="$deplibs -framework System"
+ ;;
+ *-*-netbsd*)
+ # Don't link with libc until the a.out ld.so is fixed.
+ ;;
+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+ # Do not include libc due to us having libc/libc_r.
+ ;;
+ *-*-sco3.2v5* | *-*-sco5v6*)
+ # Causes problems with __ctype
+ ;;
+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+ # Compiler inserts libc in the correct place for threads to work
+ ;;
+ *)
+ # Add libc to deplibs on all other systems if necessary.
+ if test "$build_libtool_need_lc" = "yes"; then
+ deplibs="$deplibs -lc"
+ fi
+ ;;
+ esac
+ fi
+
+ # Transform deplibs into only deplibs that can be linked in shared.
+ name_save=$name
+ libname_save=$libname
+ release_save=$release
+ versuffix_save=$versuffix
+ major_save=$major
+ # I'm not sure if I'm treating the release correctly. I think
+ # release should show up in the -l (ie -lgmp5) so we don't want to
+ # add it in twice. Is that correct?
+ release=""
+ versuffix=""
+ major=""
+ newdeplibs=
+ droppeddeps=no
+ case $deplibs_check_method in
+ pass_all)
+ # Don't check for shared/static. Everything works.
+ # This might be a little naive. We might want to check
+ # whether the library exists or not. But this is on
+ # osf3 & osf4 and I'm not really sure... Just
+ # implementing what was already the behavior.
+ newdeplibs=$deplibs
+ ;;
+ test_compile)
+ # This code stresses the "libraries are programs" paradigm to its
+ # limits. Maybe even breaks it. We compile a program, linking it
+ # against the deplibs as a proxy for the library. Then we can check
+ # whether they linked in statically or dynamically with ldd.
+ $rm conftest.c
+ cat > conftest.c <<EOF
+ int main() { return 0; }
+EOF
+ $rm conftest
+ $LTCC $LTCFLAGS -o conftest conftest.c $deplibs
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+ name=`expr $i : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" -ne "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ deplib_matches=`eval \\$echo \"$library_names_spec\"`
+ set dummy $deplib_matches
+ deplib_match=$2
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: dynamic linker does not accept needed library $i."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which I believe you do not have"
+ $echo "*** because a test_compile did reveal that the linker did not use it for"
+ $echo "*** its dynamic dependency list that programs get resolved with at runtime."
+ fi
+ fi
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ done
+ else
+ # Error occurred in the first compile. Let's try to salvage
+ # the situation: Compile a separate program for each library.
+ for i in $deplibs; do
+ name=`expr $i : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ $rm conftest
+ $LTCC $LTCFLAGS -o conftest conftest.c $i
+ # Did it work?
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ deplib_matches=`eval \\$echo \"$library_names_spec\"`
+ set dummy $deplib_matches
+ deplib_match=$2
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: dynamic linker does not accept needed library $i."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have"
+ $echo "*** because a test_compile did reveal that the linker did not use this one"
+ $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+ fi
+ fi
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning! Library $i is needed by this library but I was not able to"
+ $echo "*** make it link in! You will probably need to install it or some"
+ $echo "*** library that it depends on before this library will be fully"
+ $echo "*** functional. Installing it before continuing would be even better."
+ fi
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ done
+ fi
+ ;;
+ file_magic*)
+ set dummy $deplibs_check_method
+ file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+ name=`expr $a_deplib : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+ for potent_lib in $potential_libs; do
+ # Follow soft links.
+ if ls -lLd "$potent_lib" 2>/dev/null \
+ | grep " -> " >/dev/null; then
+ continue
+ fi
+ # The statement above tries to avoid entering an
+ # endless loop below, in case of cyclic links.
+ # We might still enter an endless loop, since a link
+ # loop can be closed while we follow links,
+ # but so what?
+ potlib="$potent_lib"
+ while test -h "$potlib" 2>/dev/null; do
+ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+ case $potliblink in
+ [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+ *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+ esac
+ done
+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+ | ${SED} 10q \
+ | $EGREP "$file_magic_regex" > /dev/null; then
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: linker path does not have real file for library $a_deplib."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have"
+ $echo "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib" ; then
+ $echo "*** with $libname but no candidates were found. (...for file magic test)"
+ else
+ $echo "*** with $libname and none of the candidates passed a file format test"
+ $echo "*** using a file magic. Last file checked: $potlib"
+ fi
+ fi
+ else
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ fi
+ done # Gone through all deplibs.
+ ;;
+ match_pattern*)
+ set dummy $deplibs_check_method
+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+ name=`expr $a_deplib : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test -n "$name" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ ;;
+ esac
+ fi
+ if test -n "$a_deplib" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+ for potent_lib in $potential_libs; do
+ potlib="$potent_lib" # see symlink-check above in file_magic test
+ if eval $echo \"$potent_lib\" 2>/dev/null \
+ | ${SED} 10q \
+ | $EGREP "$match_pattern_regex" > /dev/null; then
+ newdeplibs="$newdeplibs $a_deplib"
+ a_deplib=""
+ break 2
+ fi
+ done
+ done
+ fi
+ if test -n "$a_deplib" ; then
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: linker path does not have real file for library $a_deplib."
+ $echo "*** I have the capability to make that library automatically link in when"
+ $echo "*** you link to this library. But I can only do this if you have a"
+ $echo "*** shared version of the library, which you do not appear to have"
+ $echo "*** because I did check the linker path looking for a file starting"
+ if test -z "$potlib" ; then
+ $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
+ else
+ $echo "*** with $libname and none of the candidates passed a file format test"
+ $echo "*** using a regex pattern. Last file checked: $potlib"
+ fi
+ fi
+ else
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ fi
+ done # Gone through all deplibs.
+ ;;
+ none | unknown | *)
+ newdeplibs=""
+ tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+ -e 's/ -[LR][^ ]*//g'`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ for i in $predeps $postdeps ; do
+ # can't use Xsed below, because $i might contain '/'
+ tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
+ done
+ fi
+ if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \
+ | grep . >/dev/null; then
+ $echo
+ if test "X$deplibs_check_method" = "Xnone"; then
+ $echo "*** Warning: inter-library dependencies are not supported in this platform."
+ else
+ $echo "*** Warning: inter-library dependencies are not known to be supported."
+ fi
+ $echo "*** All declared inter-library dependencies are being dropped."
+ droppeddeps=yes
+ fi
+ ;;
+ esac
+ versuffix=$versuffix_save
+ major=$major_save
+ release=$release_save
+ libname=$libname_save
+ name=$name_save
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+ newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ ;;
+ esac
+
+ if test "$droppeddeps" = yes; then
+ if test "$module" = yes; then
+ $echo
+ $echo "*** Warning: libtool could not satisfy all declared inter-library"
+ $echo "*** dependencies of module $libname. Therefore, libtool will create"
+ $echo "*** a static module, that should work as long as the dlopening"
+ $echo "*** application is linked with the -dlopen flag."
+ if test -z "$global_symbol_pipe"; then
+ $echo
+ $echo "*** However, this would only work if libtool was able to extract symbol"
+ $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+ $echo "*** not find such a program. So, this module is probably useless."
+ $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+ fi
+ if test "$build_old_libs" = no; then
+ oldlibs="$output_objdir/$libname.$libext"
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ else
+ $echo "*** The inter-library dependencies that have been dropped here will be"
+ $echo "*** automatically added whenever a program is linked with this library"
+ $echo "*** or is declared to -dlopen it."
+
+ if test "$allow_undefined" = no; then
+ $echo
+ $echo "*** Since this library must not contain undefined symbols,"
+ $echo "*** because either the platform does not support them or"
+ $echo "*** it was explicitly requested with -no-undefined,"
+ $echo "*** libtool will only create a static version of it."
+ if test "$build_old_libs" = no; then
+ oldlibs="$output_objdir/$libname.$libext"
+ build_libtool_libs=module
+ build_old_libs=yes
+ else
+ build_libtool_libs=no
+ fi
+ fi
+ fi
+ fi
+ # Done checking deplibs!
+ deplibs=$newdeplibs
+ fi
+
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $deplibs " in
+ *" -L$path/$objdir "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ done
+ deplibs="$new_libs"
+
+
+ # All the library-specific variables (install_libdir is set above).
+ library_names=
+ old_library=
+ dlname=
+
+ # Test again, we may have decided not to build it any more
+ if test "$build_libtool_libs" = yes; then
+ if test "$hardcode_into_libs" = yes; then
+ # Hardcode the library paths
+ hardcode_libdirs=
+ dep_rpath=
+ rpath="$finalize_rpath"
+ test "$mode" != relink && rpath="$compile_rpath$rpath"
+ for libdir in $rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ dep_rpath="$dep_rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ if test -n "$hardcode_libdir_flag_spec_ld"; then
+ eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+ else
+ eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+ fi
+ fi
+ if test -n "$runpath_var" && test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+ fi
+ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+ fi
+
+ shlibpath="$finalize_shlibpath"
+ test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+ if test -n "$shlibpath"; then
+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+ fi
+
+ # Get the real and link names of the library.
+ eval shared_ext=\"$shrext_cmds\"
+ eval library_names=\"$library_names_spec\"
+ set dummy $library_names
+ realname="$2"
+ shift; shift
+
+ if test -n "$soname_spec"; then
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+ if test -z "$dlname"; then
+ dlname=$soname
+ fi
+
+ lib="$output_objdir/$realname"
+ linknames=
+ for link
+ do
+ linknames="$linknames $link"
+ done
+
+ # Use standard objects if they are pic
+ test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+ $show "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $run $rm $export_symbols
+ cmds=$export_symbols_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ if len=`expr "X$cmd" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ skipped_export=false
+ else
+ # The command line is too long to execute in one step.
+ $show "using reloadable object file for export list..."
+ skipped_export=:
+ # Break out early, otherwise skipped_export may be
+ # set to false by a later but shorter cmd.
+ break
+ fi
+ done
+ IFS="$save_ifs"
+ if test -n "$export_symbols_regex"; then
+ $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+ $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+ $run eval '$mv "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+ fi
+
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+ fi
+
+ tmp_deplibs=
+ for test_deplib in $deplibs; do
+ case " $convenience " in
+ *" $test_deplib "*) ;;
+ *)
+ tmp_deplibs="$tmp_deplibs $test_deplib"
+ ;;
+ esac
+ done
+ deplibs="$tmp_deplibs"
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ libobjs="$libobjs $func_extract_archives_result"
+ fi
+ fi
+
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ linker_flags="$linker_flags $flag"
+ fi
+
+ # Make a backup of the uninstalled library when relinking
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+ fi
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ eval test_cmds=\"$module_expsym_cmds\"
+ cmds=$module_expsym_cmds
+ else
+ eval test_cmds=\"$module_cmds\"
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ eval test_cmds=\"$archive_expsym_cmds\"
+ cmds=$archive_expsym_cmds
+ else
+ eval test_cmds=\"$archive_cmds\"
+ cmds=$archive_cmds
+ fi
+ fi
+
+ if test "X$skipped_export" != "X:" &&
+ len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ :
+ else
+ # The command line is too long to link in one step, link piecewise.
+ $echo "creating reloadable object files..."
+
+ # Save the value of $output and $libobjs because we want to
+ # use them later. If we have whole_archive_flag_spec, we
+ # want to use save_libobjs as it was before
+ # whole_archive_flag_spec was expanded, because we can't
+ # assume the linker understands whole_archive_flag_spec.
+ # This may have to be revisited, in case too many
+ # convenience libraries get linked in and end up exceeding
+ # the spec.
+ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ fi
+ save_output=$output
+ output_la=`$echo "X$output" | $Xsed -e "$basename"`
+
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+ test_cmds=
+ concat_cmds=
+ objlist=
+ delfiles=
+ last_robj=
+ k=1
+ output=$output_objdir/$output_la-${k}.$objext
+ # Loop over the list of objects to be linked.
+ for obj in $save_libobjs
+ do
+ eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+ if test "X$objlist" = X ||
+ { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$max_cmd_len"; }; then
+ objlist="$objlist $obj"
+ else
+ # The command $test_cmds is almost too long, add a
+ # command to the queue.
+ if test "$k" -eq 1 ; then
+ # The first file doesn't have a previous command to add.
+ eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+ else
+ # All subsequent reloadable object files will link in
+ # the last one created.
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+ fi
+ last_robj=$output_objdir/$output_la-${k}.$objext
+ k=`expr $k + 1`
+ output=$output_objdir/$output_la-${k}.$objext
+ objlist=$obj
+ len=1
+ fi
+ done
+ # Handle the remaining objects by creating one last
+ # reloadable object file. All subsequent reloadable object
+ # files will link in the last one created.
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+
+ if ${skipped_export-false}; then
+ $show "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $run $rm $export_symbols
+ libobjs=$output
+ # Append the command to create the export file.
+ eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+ fi
+
+ # Set up a command to remove the reloadable object files
+ # after they are used.
+ i=0
+ while test "$i" -lt "$k"
+ do
+ i=`expr $i + 1`
+ delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
+ done
+
+ $echo "creating a temporary reloadable object file: $output"
+
+ # Loop through the commands generated above and execute them.
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $concat_cmds; do
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ libobjs=$output
+ # Restore the value of output.
+ output=$save_output
+
+ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ fi
+ # Expand the library linking commands again to reset the
+ # value of $libobjs for piecewise linking.
+
+ # Do each of the archive commands.
+ if test "$module" = yes && test -n "$module_cmds" ; then
+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+ cmds=$module_expsym_cmds
+ else
+ cmds=$module_cmds
+ fi
+ else
+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+ cmds=$archive_expsym_cmds
+ else
+ cmds=$archive_cmds
+ fi
+ fi
+
+ # Append the command to remove the reloadable object files
+ # to the just-reset $cmds.
+ eval cmds=\"\$cmds~\$rm $delfiles\"
+ fi
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+
+ if test -n "$convenience"; then
+ if test -z "$whole_archive_flag_spec"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r "$gentop"
+ fi
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ # Create links to the real library.
+ for linkname in $linknames; do
+ if test "$realname" != "$linkname"; then
+ $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+ $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+ fi
+ done
+
+ # If -module or -export-dynamic was specified, set the dlname.
+ if test "$module" = yes || test "$export_dynamic" = yes; then
+ # On all known operating systems, these are identical.
+ dlname="$soname"
+ fi
+ fi
+ ;;
+
+ obj)
+ if test -n "$deplibs"; then
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+ fi
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$rpath"; then
+ $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$xrpath"; then
+ $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+ fi
+
+ case $output in
+ *.lo)
+ if test -n "$objs$old_deplibs"; then
+ $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ libobj="$output"
+ obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+ ;;
+ *)
+ libobj=
+ obj="$output"
+ ;;
+ esac
+
+ # Delete the old objects.
+ $run $rm $obj $libobj
+
+ # Objects from convenience libraries. This assumes
+ # single-version convenience libraries. Whenever we create
+ # different ones for PIC/non-PIC, this we'll have to duplicate
+ # the extraction.
+ reload_conv_objs=
+ gentop=
+ # reload_cmds runs $LD directly, so let us get rid of
+ # -Wl from whole_archive_flag_spec
+ wl=
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${obj}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ reload_conv_objs="$reload_objs $func_extract_archives_result"
+ fi
+ fi
+
+ # Create the old-style object.
+ reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+ output="$obj"
+ cmds=$reload_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ # Exit if we aren't doing a library object file.
+ if test -z "$libobj"; then
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$build_libtool_libs" != yes; then
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ # Create an invalid libtool object if no PIC, so that we don't
+ # accidentally link it into a program.
+ # $show "echo timestamp > $libobj"
+ # $run eval "echo timestamp > $libobj" || exit $?
+ exit $EXIT_SUCCESS
+ fi
+
+ if test -n "$pic_flag" || test "$pic_mode" != default; then
+ # Only do commands if we really have different PIC objects.
+ reload_objs="$libobjs $reload_conv_objs"
+ output="$libobj"
+ cmds=$reload_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ prog)
+ case $host in
+ *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+ esac
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+ fi
+
+ if test "$preload" = yes; then
+ if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+ test "$dlopen_self_static" = unknown; then
+ $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+ fi
+ fi
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+ compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ ;;
+ esac
+
+ case $host in
+ *darwin*)
+ # Don't allow lazy linking, it breaks C++ global constructors
+ if test "$tagname" = CXX ; then
+ compile_command="$compile_command ${wl}-bind_at_load"
+ finalize_command="$finalize_command ${wl}-bind_at_load"
+ fi
+ ;;
+ esac
+
+
+ # move library search paths that coincide with paths to not yet
+ # installed libraries to the beginning of the library search list
+ new_libs=
+ for path in $notinst_path; do
+ case " $new_libs " in
+ *" -L$path/$objdir "*) ;;
+ *)
+ case " $compile_deplibs " in
+ *" -L$path/$objdir "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $compile_deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ done
+ compile_deplibs="$new_libs"
+
+
+ compile_command="$compile_command $compile_deplibs"
+ finalize_command="$finalize_command $finalize_deplibs"
+
+ if test -n "$rpath$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ for libdir in $rpath $xrpath; do
+ # This is the magic to use -rpath.
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir" ;;
+ esac
+ done
+ fi
+
+ # Now hardcode the library paths
+ rpath=
+ hardcode_libdirs=
+ for libdir in $compile_rpath $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$libdir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$testbindir";;
+ esac
+ ;;
+ esac
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ compile_rpath="$rpath"
+
+ rpath=
+ hardcode_libdirs=
+ for libdir in $finalize_rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval rpath=\" $hardcode_libdir_flag_spec\"
+ fi
+ finalize_rpath="$rpath"
+
+ if test -n "$libobjs" && test "$build_old_libs" = yes; then
+ # Transform all the library objects into standard objects.
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ fi
+
+ dlsyms=
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ if test -n "$NM" && test -n "$global_symbol_pipe"; then
+ dlsyms="${outputname}S.c"
+ else
+ $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+ fi
+ fi
+
+ if test -n "$dlsyms"; then
+ case $dlsyms in
+ "") ;;
+ *.c)
+ # Discover the nlist of each of the dlfiles.
+ nlist="$output_objdir/${outputname}.nm"
+
+ $show "$rm $nlist ${nlist}S ${nlist}T"
+ $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+ # Parse the name list into a source file.
+ $show "creating $output_objdir/$dlsyms"
+
+ test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+ if test "$dlself" = yes; then
+ $show "generating symbol list for \`$output'"
+
+ test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+ # Add our own program objects to the symbol list.
+ progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ for arg in $progfiles; do
+ $show "extracting global C symbols from \`$arg'"
+ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -n "$exclude_expsyms"; then
+ $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+ $run eval '$mv "$nlist"T "$nlist"'
+ fi
+
+ if test -n "$export_symbols_regex"; then
+ $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+ $run eval '$mv "$nlist"T "$nlist"'
+ fi
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ export_symbols="$output_objdir/$outputname.exp"
+ $run $rm $export_symbols
+ $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ case $host in
+ *cygwin* | *mingw* )
+ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ else
+ $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+ $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+ $run eval 'mv "$nlist"T "$nlist"'
+ case $host in
+ *cygwin* | *mingw* )
+ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ fi
+ fi
+
+ for arg in $dlprefiles; do
+ $show "extracting global C symbols from \`$arg'"
+ name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
+ $run eval '$echo ": $name " >> "$nlist"'
+ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -z "$run"; then
+ # Make sure we have at least an empty file.
+ test -f "$nlist" || : > "$nlist"
+
+ if test -n "$exclude_expsyms"; then
+ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+ $mv "$nlist"T "$nlist"
+ fi
+
+ # Try sorting and uniquifying the output.
+ if grep -v "^: " < "$nlist" |
+ if sort -k 3 </dev/null >/dev/null 2>&1; then
+ sort -k 3
+ else
+ sort +2
+ fi |
+ uniq > "$nlist"S; then
+ :
+ else
+ grep -v "^: " < "$nlist" > "$nlist"S
+ fi
+
+ if test -f "$nlist"S; then
+ eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+ else
+ $echo '/* NONE */' >> "$output_objdir/$dlsyms"
+ fi
+
+ $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+"
+
+ case $host in
+ *cygwin* | *mingw* )
+ $echo >> "$output_objdir/$dlsyms" "\
+/* DATA imports from DLLs on WIN32 can't be const, because
+ runtime relocations are performed -- see ld's documentation
+ on pseudo-relocs */
+struct {
+"
+ ;;
+ * )
+ $echo >> "$output_objdir/$dlsyms" "\
+const struct {
+"
+ ;;
+ esac
+
+
+ $echo >> "$output_objdir/$dlsyms" "\
+ const char *name;
+ lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+ $echo >> "$output_objdir/$dlsyms" "\
+ {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+ fi
+
+ pic_flag_for_symtable=
+ case $host in
+ # compiling the symbol table file with pic_flag works around
+ # a FreeBSD bug that causes programs to crash when -lm is
+ # linked before any other PIC object. But we must not use
+ # pic_flag when linking with -static. The problem exists in
+ # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+ *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+ case "$compile_command " in
+ *" -static "*) ;;
+ *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+ esac;;
+ *-*-hpux*)
+ case "$compile_command " in
+ *" -static "*) ;;
+ *) pic_flag_for_symtable=" $pic_flag";;
+ esac
+ esac
+
+ # Now compile the dynamic symbol file.
+ $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+ $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+ # Clean up the generated files.
+ $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+ $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+ # Transform the symbol file into the correct name.
+ case $host in
+ *cygwin* | *mingw* )
+ if test -f "$output_objdir/${outputname}.def" ; then
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+ else
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ fi
+ ;;
+ * )
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ ;;
+ esac
+ ;;
+ *)
+ $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ else
+ # We keep going just in case the user didn't refer to
+ # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
+ # really was required.
+
+ # Nullify the symbol file.
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+ fi
+
+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+ # Replace the output file specification.
+ compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ link_command="$compile_command$compile_rpath"
+
+ # We have no uninstalled library dependencies, so finalize right now.
+ $show "$link_command"
+ $run eval "$link_command"
+ exit_status=$?
+
+ # Delete the generated files.
+ if test -n "$dlsyms"; then
+ $show "$rm $output_objdir/${outputname}S.${objext}"
+ $run $rm "$output_objdir/${outputname}S.${objext}"
+ fi
+
+ exit $exit_status
+ fi
+
+ if test -n "$shlibpath_var"; then
+ # We should set the shlibpath_var
+ rpath=
+ for dir in $temp_rpath; do
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*)
+ # Absolute path.
+ rpath="$rpath$dir:"
+ ;;
+ *)
+ # Relative path: add a thisdir entry.
+ rpath="$rpath\$thisdir/$dir:"
+ ;;
+ esac
+ done
+ temp_rpath="$rpath"
+ fi
+
+ if test -n "$compile_shlibpath$finalize_shlibpath"; then
+ compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+ fi
+ if test -n "$finalize_shlibpath"; then
+ finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+ fi
+
+ compile_var=
+ finalize_var=
+ if test -n "$runpath_var"; then
+ if test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ if test -n "$finalize_perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $finalize_perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+ fi
+ fi
+
+ if test "$no_install" = yes; then
+ # We don't need to create a wrapper script.
+ link_command="$compile_var$compile_command$compile_rpath"
+ # Replace the output file specification.
+ link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ # Delete the old output file.
+ $run $rm $output
+ # Link the executable and exit
+ $show "$link_command"
+ $run eval "$link_command" || exit $?
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+ $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+ $echo "$modename: \`$output' will be relinked during installation" 1>&2
+ else
+ if test "$fast_install" != no; then
+ link_command="$finalize_var$compile_command$finalize_rpath"
+ if test "$fast_install" = yes; then
+ relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+ else
+ # fast_install is set to needless
+ relink_command=
+ fi
+ else
+ link_command="$compile_var$compile_command$compile_rpath"
+ relink_command="$finalize_var$finalize_command$finalize_rpath"
+ fi
+ fi
+
+ # Replace the output file specification.
+ link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+ # Delete the old output files.
+ $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+ $show "$link_command"
+ $run eval "$link_command" || exit $?
+
+ # Now create the wrapper script.
+ $show "creating $output"
+
+ # Quote the relink command for shipping.
+ if test -n "$relink_command"; then
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+ relink_command="$var=\"$var_value\"; export $var; $relink_command"
+ fi
+ done
+ relink_command="(cd `pwd`; $relink_command)"
+ relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Quote $echo for shipping.
+ if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
+ case $progpath in
+ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+ esac
+ qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+ else
+ qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Only actually do things if our run command is non-null.
+ if test -z "$run"; then
+ # win32 will think the script is a binary if it has
+ # a .exe suffix, so we strip it off here.
+ case $output in
+ *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+ esac
+ # test for cygwin because mv fails w/o .exe extensions
+ case $host in
+ *cygwin*)
+ exeext=.exe
+ outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+ *) exeext= ;;
+ esac
+ case $host in
+ *cygwin* | *mingw* )
+ output_name=`basename $output`
+ output_path=`dirname $output`
+ cwrappersource="$output_path/$objdir/lt-$output_name.c"
+ cwrapper="$output_path/$output_name.exe"
+ $rm $cwrappersource $cwrapper
+ trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+ cat > $cwrappersource <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+ Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+
+ The $output program cannot be directly executed until all the libtool
+ libraries that it depends on are installed.
+
+ This wrapper executable should never be moved out of the build directory.
+ If it is, it will not operate correctly.
+
+ Currently, it simply execs the wrapper *script* "/bin/sh $output",
+ but could eventually absorb all of the scripts functionality and
+ exec $objdir/$outputname directly.
+*/
+EOF
+ cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/stat.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+ defined (__OS2__)
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# ifndef DIR_SEPARATOR_2
+# define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+# define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+ if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+/* -DDEBUG is fairly common in CFLAGS. */
+#undef DEBUG
+#if defined DEBUGWRAPPER
+# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
+#else
+# define DEBUG(format, ...)
+#endif
+
+const char *program_name = NULL;
+
+void * xmalloc (size_t num);
+char * xstrdup (const char *string);
+const char * base_name (const char *name);
+char * find_executable(const char *wrapper);
+int check_executable(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+ char **newargz;
+ int i;
+
+ program_name = (char *) xstrdup (base_name (argv[0]));
+ DEBUG("(main) argv[0] : %s\n",argv[0]);
+ DEBUG("(main) program_name : %s\n",program_name);
+ newargz = XMALLOC(char *, argc+2);
+EOF
+
+ cat >> $cwrappersource <<EOF
+ newargz[0] = (char *) xstrdup("$SHELL");
+EOF
+
+ cat >> $cwrappersource <<"EOF"
+ newargz[1] = find_executable(argv[0]);
+ if (newargz[1] == NULL)
+ lt_fatal("Couldn't find %s", argv[0]);
+ DEBUG("(main) found exe at : %s\n",newargz[1]);
+ /* we know the script has the same name, without the .exe */
+ /* so make sure newargz[1] doesn't end in .exe */
+ strendzap(newargz[1],".exe");
+ for (i = 1; i < argc; i++)
+ newargz[i+1] = xstrdup(argv[i]);
+ newargz[argc+1] = NULL;
+
+ for (i=0; i<argc+1; i++)
+ {
+ DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
+ ;
+ }
+
+EOF
+
+ case $host_os in
+ mingw*)
+ cat >> $cwrappersource <<EOF
+ execv("$SHELL",(char const **)newargz);
+EOF
+ ;;
+ *)
+ cat >> $cwrappersource <<EOF
+ execv("$SHELL",newargz);
+EOF
+ ;;
+ esac
+
+ cat >> $cwrappersource <<"EOF"
+ return 127;
+}
+
+void *
+xmalloc (size_t num)
+{
+ void * p = (void *) malloc (num);
+ if (!p)
+ lt_fatal ("Memory exhausted");
+
+ return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+ return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
+;
+}
+
+const char *
+base_name (const char *name)
+{
+ const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ /* Skip over the disk name in MSDOS pathnames. */
+ if (isalpha ((unsigned char)name[0]) && name[1] == ':')
+ name += 2;
+#endif
+
+ for (base = name; *name; name++)
+ if (IS_DIR_SEPARATOR (*name))
+ base = name + 1;
+ return base;
+}
+
+int
+check_executable(const char * path)
+{
+ struct stat st;
+
+ DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
+ if ((!path) || (!*path))
+ return 0;
+
+ if ((stat (path, &st) >= 0) &&
+ (
+ /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
+#if defined (S_IXOTH)
+ ((st.st_mode & S_IXOTH) == S_IXOTH) ||
+#endif
+#if defined (S_IXGRP)
+ ((st.st_mode & S_IXGRP) == S_IXGRP) ||
+#endif
+ ((st.st_mode & S_IXUSR) == S_IXUSR))
+ )
+ return 1;
+ else
+ return 0;
+}
+
+/* Searches for the full path of the wrapper. Returns
+ newly allocated full path name if found, NULL otherwise */
+char *
+find_executable (const char* wrapper)
+{
+ int has_slash = 0;
+ const char* p;
+ const char* p_next;
+ /* static buffer for getcwd */
+ char tmp[LT_PATHMAX + 1];
+ int tmp_len;
+ char* concat_name;
+
+ DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
+
+ if ((wrapper == NULL) || (*wrapper == '\0'))
+ return NULL;
+
+ /* Absolute path? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ }
+ else
+ {
+#endif
+ if (IS_DIR_SEPARATOR (wrapper[0]))
+ {
+ concat_name = xstrdup (wrapper);
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ }
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ }
+#endif
+
+ for (p = wrapper; *p; p++)
+ if (*p == '/')
+ {
+ has_slash = 1;
+ break;
+ }
+ if (!has_slash)
+ {
+ /* no slashes; search PATH */
+ const char* path = getenv ("PATH");
+ if (path != NULL)
+ {
+ for (p = path; *p; p = p_next)
+ {
+ const char* q;
+ size_t p_len;
+ for (q = p; *q; q++)
+ if (IS_PATH_SEPARATOR(*q))
+ break;
+ p_len = q - p;
+ p_next = (*q == '\0' ? q : q + 1);
+ if (p_len == 0)
+ {
+ /* empty path: current directory */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+ tmp_len = strlen(tmp);
+ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+ }
+ else
+ {
+ concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
+ memcpy (concat_name, p, p_len);
+ concat_name[p_len] = '/';
+ strcpy (concat_name + p_len + 1, wrapper);
+ }
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ }
+ }
+ /* not found in PATH; assume curdir */
+ }
+ /* Relative path | not found in path: prepend cwd */
+ if (getcwd (tmp, LT_PATHMAX) == NULL)
+ lt_fatal ("getcwd failed");
+ tmp_len = strlen(tmp);
+ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+ memcpy (concat_name, tmp, tmp_len);
+ concat_name[tmp_len] = '/';
+ strcpy (concat_name + tmp_len + 1, wrapper);
+
+ if (check_executable(concat_name))
+ return concat_name;
+ XFREE(concat_name);
+ return NULL;
+}
+
+char *
+strendzap(char *str, const char *pat)
+{
+ size_t len, patlen;
+
+ assert(str != NULL);
+ assert(pat != NULL);
+
+ len = strlen(str);
+ patlen = strlen(pat);
+
+ if (patlen <= len)
+ {
+ str += len - patlen;
+ if (strcmp(str, pat) == 0)
+ *str = '\0';
+ }
+ return str;
+}
+
+static void
+lt_error_core (int exit_status, const char * mode,
+ const char * message, va_list ap)
+{
+ fprintf (stderr, "%s: %s: ", program_name, mode);
+ vfprintf (stderr, message, ap);
+ fprintf (stderr, ".\n");
+
+ if (exit_status >= 0)
+ exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+ va_list ap;
+ va_start (ap, message);
+ lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+ va_end (ap);
+}
+EOF
+ # we should really use a build-platform specific compiler
+ # here, but OTOH, the wrappers (shell script and this C one)
+ # are only useful if you want to execute the "real" binary.
+ # Since the "real" binary is built for $host, then this
+ # wrapper might as well be built for $host, too.
+ $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
+ ;;
+ esac
+ $rm $output
+ trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+ $echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting. It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+ # install mode needs the following variable:
+ notinst_deplibs='$notinst_deplibs'
+else
+ # When we are sourced in execute mode, \$file and \$echo are already set.
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ echo=\"$qecho\"
+ file=\"\$0\"
+ # Make sure echo works.
+ if test \"X\$1\" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+ elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+ # Yippee, \$echo works!
+ :
+ else
+ # Restart under the correct shell, and then maybe \$echo will work.
+ exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+ fi
+ fi\
+"
+ $echo >> $output "\
+
+ # Find the directory that this script lives in.
+ thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+ test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+ # Follow symbolic links until we get to the real thisdir.
+ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+ while test -n \"\$file\"; do
+ destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+ # If there was a directory component, then change thisdir.
+ if test \"x\$destdir\" != \"x\$file\"; then
+ case \"\$destdir\" in
+ [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+ *) thisdir=\"\$thisdir/\$destdir\" ;;
+ esac
+ fi
+
+ file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+ done
+
+ # Try to get the absolute directory name.
+ absdir=\`cd \"\$thisdir\" && pwd\`
+ test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+ if test "$fast_install" = yes; then
+ $echo >> $output "\
+ program=lt-'$outputname'$exeext
+ progdir=\"\$thisdir/$objdir\"
+
+ if test ! -f \"\$progdir/\$program\" || \\
+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+ test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+ file=\"\$\$-\$program\"
+
+ if test ! -d \"\$progdir\"; then
+ $mkdir \"\$progdir\"
+ else
+ $rm \"\$progdir/\$file\"
+ fi"
+
+ $echo >> $output "\
+
+ # relink executable if necessary
+ if test -n \"\$relink_command\"; then
+ if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+ else
+ $echo \"\$relink_command_output\" >&2
+ $rm \"\$progdir/\$file\"
+ exit $EXIT_FAILURE
+ fi
+ fi
+
+ $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+ { $rm \"\$progdir/\$program\";
+ $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+ $rm \"\$progdir/\$file\"
+ fi"
+ else
+ $echo >> $output "\
+ program='$outputname'
+ progdir=\"\$thisdir/$objdir\"
+"
+ fi
+
+ $echo >> $output "\
+
+ if test -f \"\$progdir/\$program\"; then"
+
+ # Export our shlibpath_var if we have one.
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ $echo >> $output "\
+ # Add our own library path to $shlibpath_var
+ $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+ # Some systems cannot cope with colon-terminated $shlibpath_var
+ # The second colon is a workaround for a bug in BeOS R4 sed
+ $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+ export $shlibpath_var
+"
+ fi
+
+ # fixup the dll searchpath if we need to.
+ if test -n "$dllsearchpath"; then
+ $echo >> $output "\
+ # Add the dll search path components to the executable PATH
+ PATH=$dllsearchpath:\$PATH
+"
+ fi
+
+ $echo >> $output "\
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ # Run the actual program with our arguments.
+"
+ case $host in
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2*)
+ $echo >> $output "\
+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+ ;;
+
+ *)
+ $echo >> $output "\
+ exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+ ;;
+ esac
+ $echo >> $output "\
+ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+ exit $EXIT_FAILURE
+ fi
+ else
+ # The program doesn't exist.
+ \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+ \$echo \"This script is just a wrapper for \$program.\" 1>&2
+ $echo \"See the $PACKAGE documentation for more information.\" 1>&2
+ exit $EXIT_FAILURE
+ fi
+fi\
+"
+ chmod +x $output
+ fi
+ exit $EXIT_SUCCESS
+ ;;
+ esac
+
+ # See if we need to build an old-fashioned archive.
+ for oldlib in $oldlibs; do
+
+ if test "$build_libtool_libs" = convenience; then
+ oldobjs="$libobjs_save"
+ addlibs="$convenience"
+ build_libtool_libs=no
+ else
+ if test "$build_libtool_libs" = module; then
+ oldobjs="$libobjs_save"
+ build_libtool_libs=no
+ else
+ oldobjs="$old_deplibs $non_pic_objects"
+ fi
+ addlibs="$old_convenience"
+ fi
+
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $addlibs
+ oldobjs="$oldobjs $func_extract_archives_result"
+ fi
+
+ # Do each command in the archive commands.
+ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+ cmds=$old_archive_from_new_cmds
+ else
+ # POSIX demands no paths to be encoded in archives. We have
+ # to avoid creating archives with duplicate basenames if we
+ # might have to extract them afterwards, e.g., when creating a
+ # static archive out of a convenience library, or when linking
+ # the entirety of a libtool archive into another (currently
+ # not supported by libtool).
+ if (for obj in $oldobjs
+ do
+ $echo "X$obj" | $Xsed -e 's%^.*/%%'
+ done | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $echo "copying selected object files to avoid basename conflicts..."
+
+ if test -z "$gentop"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ $show "${rm}r $gentop"
+ $run ${rm}r "$gentop"
+ $show "$mkdir $gentop"
+ $run $mkdir "$gentop"
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
+ exit $exit_status
+ fi
+ fi
+
+ save_oldobjs=$oldobjs
+ oldobjs=
+ counter=1
+ for obj in $save_oldobjs
+ do
+ objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+ case " $oldobjs " in
+ " ") oldobjs=$obj ;;
+ *[\ /]"$objbase "*)
+ while :; do
+ # Make sure we don't pick an alternate name that also
+ # overlaps.
+ newobj=lt$counter-$objbase
+ counter=`expr $counter + 1`
+ case " $oldobjs " in
+ *[\ /]"$newobj "*) ;;
+ *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+ esac
+ done
+ $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+ $run ln "$obj" "$gentop/$newobj" ||
+ $run cp "$obj" "$gentop/$newobj"
+ oldobjs="$oldobjs $gentop/$newobj"
+ ;;
+ *) oldobjs="$oldobjs $obj" ;;
+ esac
+ done
+ fi
+
+ eval cmds=\"$old_archive_cmds\"
+
+ if len=`expr "X$cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ cmds=$old_archive_cmds
+ else
+ # the command line is too long to link in one step, link in parts
+ $echo "using piecewise archive linking..."
+ save_RANLIB=$RANLIB
+ RANLIB=:
+ objlist=
+ concat_cmds=
+ save_oldobjs=$oldobjs
+
+ # Is there a better way of finding the last object in the list?
+ for obj in $save_oldobjs
+ do
+ last_oldobj=$obj
+ done
+ for obj in $save_oldobjs
+ do
+ oldobjs="$objlist $obj"
+ objlist="$objlist $obj"
+ eval test_cmds=\"$old_archive_cmds\"
+ if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$max_cmd_len"; then
+ :
+ else
+ # the above command should be used before it gets too long
+ oldobjs=$objlist
+ if test "$obj" = "$last_oldobj" ; then
+ RANLIB=$save_RANLIB
+ fi
+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+ objlist=
+ fi
+ done
+ RANLIB=$save_RANLIB
+ oldobjs=$objlist
+ if test "X$oldobjs" = "X" ; then
+ eval cmds=\"\$concat_cmds\"
+ else
+ eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+ fi
+ fi
+ fi
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ eval cmd=\"$cmd\"
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ done
+
+ if test -n "$generated"; then
+ $show "${rm}r$generated"
+ $run ${rm}r$generated
+ fi
+
+ # Now create the libtool archive.
+ case $output in
+ *.la)
+ old_library=
+ test "$build_old_libs" = yes && old_library="$libname.$libext"
+ $show "creating $output"
+
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+ relink_command="$var=\"$var_value\"; export $var; $relink_command"
+ fi
+ done
+ # Quote the link command for shipping.
+ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+ relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ if test "$hardcode_automatic" = yes ; then
+ relink_command=
+ fi
+
+
+ # Only create the output if not a dry run.
+ if test -z "$run"; then
+ for installed in no yes; do
+ if test "$installed" = yes; then
+ if test -z "$install_libdir"; then
+ break
+ fi
+ output="$output_objdir/$outputname"i
+ # Replace all uninstalled libtool libraries with the installed ones
+ newdependency_libs=
+ for deplib in $dependency_libs; do
+ case $deplib in
+ *.la)
+ name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdependency_libs="$newdependency_libs $libdir/$name"
+ ;;
+ *) newdependency_libs="$newdependency_libs $deplib" ;;
+ esac
+ done
+ dependency_libs="$newdependency_libs"
+ newdlfiles=
+ for lib in $dlfiles; do
+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdlfiles="$newdlfiles $libdir/$name"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdlprefiles="$newdlprefiles $libdir/$name"
+ done
+ dlprefiles="$newdlprefiles"
+ else
+ newdlfiles=
+ for lib in $dlfiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlfiles="$newdlfiles $abs"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlprefiles="$newdlprefiles $abs"
+ done
+ dlprefiles="$newdlprefiles"
+ fi
+ $rm $output
+ # place dlname in correct position for cygwin
+ tdlname=$dlname
+ case $host,$output,$installed,$module,$dlname in
+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+ esac
+ $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+ if test "$installed" = no && test "$need_relink" = yes; then
+ $echo >> $output "\
+relink_command=\"$relink_command\""
+ fi
+ done
+ fi
+
+ # Do a symbolic link so that the libtool archive can be found in
+ # LD_LIBRARY_PATH before the program is installed.
+ $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+ $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+ ;;
+ esac
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool install mode
+ install)
+ modename="$modename: install"
+
+ # There may be an optional sh(1) argument at the beginning of
+ # install_prog (especially on Windows NT).
+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+ # Allow the use of GNU shtool's install command.
+ $echo "X$nonopt" | grep shtool > /dev/null; then
+ # Aesthetically quote it.
+ arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$arg "
+ arg="$1"
+ shift
+ else
+ install_prog=
+ arg=$nonopt
+ fi
+
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$install_prog$arg"
+
+ # We need to accept at least all the BSD install flags.
+ dest=
+ files=
+ opts=
+ prev=
+ install_type=
+ isdir=no
+ stripme=
+ for arg
+ do
+ if test -n "$dest"; then
+ files="$files $dest"
+ dest=$arg
+ continue
+ fi
+
+ case $arg in
+ -d) isdir=yes ;;
+ -f)
+ case " $install_prog " in
+ *[\\\ /]cp\ *) ;;
+ *) prev=$arg ;;
+ esac
+ ;;
+ -g | -m | -o) prev=$arg ;;
+ -s)
+ stripme=" -s"
+ continue
+ ;;
+ -*)
+ ;;
+ *)
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ prev=
+ else
+ dest=$arg
+ continue
+ fi
+ ;;
+ esac
+
+ # Aesthetically quote the argument.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$install_prog $arg"
+ done
+
+ if test -z "$install_prog"; then
+ $echo "$modename: you must specify an install program" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$prev"; then
+ $echo "$modename: the \`$prev' option requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -z "$files"; then
+ if test -z "$dest"; then
+ $echo "$modename: no file or destination specified" 1>&2
+ else
+ $echo "$modename: you must specify a destination" 1>&2
+ fi
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Strip any trailing slash from the destination.
+ dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+ # Check to see that the destination is a directory.
+ test -d "$dest" && isdir=yes
+ if test "$isdir" = yes; then
+ destdir="$dest"
+ destname=
+ else
+ destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$destdir" = "X$dest" && destdir=.
+ destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+ # Not a directory, so check to see that there is only one file specified.
+ set dummy $files
+ if test "$#" -gt 2; then
+ $echo "$modename: \`$dest' is not a directory" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ fi
+ case $destdir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ for file in $files; do
+ case $file in
+ *.lo) ;;
+ *)
+ $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ done
+ ;;
+ esac
+
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic="$magic"
+
+ staticlibs=
+ future_libdirs=
+ current_libdirs=
+ for file in $files; do
+
+ # Do each installation.
+ case $file in
+ *.$libext)
+ # Do the static libraries later.
+ staticlibs="$staticlibs $file"
+ ;;
+
+ *.la)
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ library_names=
+ old_library=
+ relink_command=
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Add the libdir to current_libdirs if it is the destination.
+ if test "X$destdir" = "X$libdir"; then
+ case "$current_libdirs " in
+ *" $libdir "*) ;;
+ *) current_libdirs="$current_libdirs $libdir" ;;
+ esac
+ else
+ # Note the libdir as a future libdir.
+ case "$future_libdirs " in
+ *" $libdir "*) ;;
+ *) future_libdirs="$future_libdirs $libdir" ;;
+ esac
+ fi
+
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+ test "X$dir" = "X$file/" && dir=
+ dir="$dir$objdir"
+
+ if test -n "$relink_command"; then
+ # Determine the prefix the user has applied to our future dir.
+ inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
+
+ # Don't allow the user to place us outside of our expected
+ # location b/c this prevents finding dependent libraries that
+ # are installed to the same prefix.
+ # At present, this check doesn't affect windows .dll's that
+ # are installed into $libdir/../bin (currently, that works fine)
+ # but it's something to keep an eye on.
+ if test "$inst_prefix_dir" = "$destdir"; then
+ $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$inst_prefix_dir"; then
+ # Stick the inst_prefix_dir data into the link command.
+ relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+ else
+ relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+ fi
+
+ $echo "$modename: warning: relinking \`$file'" 1>&2
+ $show "$relink_command"
+ if $run eval "$relink_command"; then :
+ else
+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ fi
+
+ # See the names of the shared library.
+ set dummy $library_names
+ if test -n "$2"; then
+ realname="$2"
+ shift
+ shift
+
+ srcname="$realname"
+ test -n "$relink_command" && srcname="$realname"T
+
+ # Install the shared library and build the symlinks.
+ $show "$install_prog $dir/$srcname $destdir/$realname"
+ $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+ if test -n "$stripme" && test -n "$striplib"; then
+ $show "$striplib $destdir/$realname"
+ $run eval "$striplib $destdir/$realname" || exit $?
+ fi
+
+ if test "$#" -gt 0; then
+ # Delete the old symlinks, and create new ones.
+ # Try `ln -sf' first, because the `ln' binary might depend on
+ # the symlink we replace! Solaris /bin/ln does not understand -f,
+ # so we also need to try rm && ln -s.
+ for linkname
+ do
+ if test "$linkname" != "$realname"; then
+ $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+ $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+ fi
+ done
+ fi
+
+ # Do each command in the postinstall commands.
+ lib="$destdir/$realname"
+ cmds=$postinstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+ fi
+
+ # Install the pseudo-library for information purposes.
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ instname="$dir/$name"i
+ $show "$install_prog $instname $destdir/$name"
+ $run eval "$install_prog $instname $destdir/$name" || exit $?
+
+ # Maybe install the static library, too.
+ test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+ ;;
+
+ *.lo)
+ # Install (i.e. copy) a libtool object.
+
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ destfile="$destdir/$destfile"
+ fi
+
+ # Deduce the name of the destination old-style object file.
+ case $destfile in
+ *.lo)
+ staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+ ;;
+ *.$objext)
+ staticdest="$destfile"
+ destfile=
+ ;;
+ *)
+ $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ # Install the libtool object if requested.
+ if test -n "$destfile"; then
+ $show "$install_prog $file $destfile"
+ $run eval "$install_prog $file $destfile" || exit $?
+ fi
+
+ # Install the old object if enabled.
+ if test "$build_old_libs" = yes; then
+ # Deduce the name of the old-style object file.
+ staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+ $show "$install_prog $staticobj $staticdest"
+ $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+ fi
+ exit $EXIT_SUCCESS
+ ;;
+
+ *)
+ # Figure out destination file name, if it wasn't already specified.
+ if test -n "$destname"; then
+ destfile="$destdir/$destname"
+ else
+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ destfile="$destdir/$destfile"
+ fi
+
+ # If the file is missing, and there is a .exe on the end, strip it
+ # because it is most likely a libtool script we actually want to
+ # install
+ stripped_ext=""
+ case $file in
+ *.exe)
+ if test ! -f "$file"; then
+ file=`$echo $file|${SED} 's,.exe$,,'`
+ stripped_ext=".exe"
+ fi
+ ;;
+ esac
+
+ # Do a test to see if this is really a libtool program.
+ case $host in
+ *cygwin*|*mingw*)
+ wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
+ ;;
+ *)
+ wrapper=$file
+ ;;
+ esac
+ if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+ notinst_deplibs=
+ relink_command=
+
+ # Note that it is not necessary on cygwin/mingw to append a dot to
+ # foo even if both foo and FILE.exe exist: automatic-append-.exe
+ # behavior happens only for exec(3), not for open(2)! Also, sourcing
+ # `FILE.' does not work on cygwin managed mounts.
+ #
+ # If there is no directory component, then add one.
+ case $wrapper in
+ */* | *\\*) . ${wrapper} ;;
+ *) . ./${wrapper} ;;
+ esac
+
+ # Check the variables that should have been set.
+ if test -z "$notinst_deplibs"; then
+ $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ finalize=yes
+ for lib in $notinst_deplibs; do
+ # Check to see that each library is installed.
+ libdir=
+ if test -f "$lib"; then
+ # If there is no directory component, then add one.
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+ fi
+ libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+ if test -n "$libdir" && test ! -f "$libfile"; then
+ $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+ finalize=no
+ fi
+ done
+
+ relink_command=
+ # Note that it is not necessary on cygwin/mingw to append a dot to
+ # foo even if both foo and FILE.exe exist: automatic-append-.exe
+ # behavior happens only for exec(3), not for open(2)! Also, sourcing
+ # `FILE.' does not work on cygwin managed mounts.
+ #
+ # If there is no directory component, then add one.
+ case $wrapper in
+ */* | *\\*) . ${wrapper} ;;
+ *) . ./${wrapper} ;;
+ esac
+
+ outputname=
+ if test "$fast_install" = no && test -n "$relink_command"; then
+ if test "$finalize" = yes && test -z "$run"; then
+ tmpdir=`func_mktempdir`
+ file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+ outputname="$tmpdir/$file"
+ # Replace the output file specification.
+ relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+ $show "$relink_command"
+ if $run eval "$relink_command"; then :
+ else
+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+ ${rm}r "$tmpdir"
+ continue
+ fi
+ file="$outputname"
+ else
+ $echo "$modename: warning: cannot relink \`$file'" 1>&2
+ fi
+ else
+ # Install the binary that we compiled earlier.
+ file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+ fi
+ fi
+
+ # remove .exe since cygwin /usr/bin/install will append another
+ # one anyway
+ case $install_prog,$host in
+ */usr/bin/install*,*cygwin*)
+ case $file:$destfile in
+ *.exe:*.exe)
+ # this is ok
+ ;;
+ *.exe:*)
+ destfile=$destfile.exe
+ ;;
+ *:*.exe)
+ destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
+ ;;
+ esac
+ ;;
+ esac
+ $show "$install_prog$stripme $file $destfile"
+ $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+ test -n "$outputname" && ${rm}r "$tmpdir"
+ ;;
+ esac
+ done
+
+ for file in $staticlibs; do
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+ # Set up the ranlib parameters.
+ oldlib="$destdir/$name"
+
+ $show "$install_prog $file $oldlib"
+ $run eval "$install_prog \$file \$oldlib" || exit $?
+
+ if test -n "$stripme" && test -n "$old_striplib"; then
+ $show "$old_striplib $oldlib"
+ $run eval "$old_striplib $oldlib" || exit $?
+ fi
+
+ # Do each command in the postinstall commands.
+ cmds=$old_postinstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ done
+
+ if test -n "$future_libdirs"; then
+ $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+ fi
+
+ if test -n "$current_libdirs"; then
+ # Maybe just do a dry run.
+ test -n "$run" && current_libdirs=" -n$current_libdirs"
+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+ else
+ exit $EXIT_SUCCESS
+ fi
+ ;;
+
+ # libtool finish mode
+ finish)
+ modename="$modename: finish"
+ libdirs="$nonopt"
+ admincmds=
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ for dir
+ do
+ libdirs="$libdirs $dir"
+ done
+
+ for libdir in $libdirs; do
+ if test -n "$finish_cmds"; then
+ # Do each command in the finish commands.
+ cmds=$finish_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || admincmds="$admincmds
+ $cmd"
+ done
+ IFS="$save_ifs"
+ fi
+ if test -n "$finish_eval"; then
+ # Do the single finish_eval.
+ eval cmds=\"$finish_eval\"
+ $run eval "$cmds" || admincmds="$admincmds
+ $cmds"
+ fi
+ done
+ fi
+
+ # Exit here if they wanted silent mode.
+ test "$show" = : && exit $EXIT_SUCCESS
+
+ $echo "X----------------------------------------------------------------------" | $Xsed
+ $echo "Libraries have been installed in:"
+ for libdir in $libdirs; do
+ $echo " $libdir"
+ done
+ $echo
+ $echo "If you ever happen to want to link against installed libraries"
+ $echo "in a given directory, LIBDIR, you must either use libtool, and"
+ $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+ $echo "flag during linking and do at least one of the following:"
+ if test -n "$shlibpath_var"; then
+ $echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
+ $echo " during execution"
+ fi
+ if test -n "$runpath_var"; then
+ $echo " - add LIBDIR to the \`$runpath_var' environment variable"
+ $echo " during linking"
+ fi
+ if test -n "$hardcode_libdir_flag_spec"; then
+ libdir=LIBDIR
+ eval flag=\"$hardcode_libdir_flag_spec\"
+
+ $echo " - use the \`$flag' linker flag"
+ fi
+ if test -n "$admincmds"; then
+ $echo " - have your system administrator run these commands:$admincmds"
+ fi
+ if test -f /etc/ld.so.conf; then
+ $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+ fi
+ $echo
+ $echo "See any operating system documentation about shared libraries for"
+ $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+ $echo "X----------------------------------------------------------------------" | $Xsed
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool execute mode
+ execute)
+ modename="$modename: execute"
+
+ # The first argument is the command name.
+ cmd="$nonopt"
+ if test -z "$cmd"; then
+ $echo "$modename: you must specify a COMMAND" 1>&2
+ $echo "$help"
+ exit $EXIT_FAILURE
+ fi
+
+ # Handle -dlopen flags immediately.
+ for file in $execute_dlfiles; do
+ if test ! -f "$file"; then
+ $echo "$modename: \`$file' is not a file" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ dir=
+ case $file in
+ *.la)
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Read the libtool library.
+ dlname=
+ library_names=
+
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Skip this library if it cannot be dlopened.
+ if test -z "$dlname"; then
+ # Warn if it was a shared library.
+ test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+ continue
+ fi
+
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$file" && dir=.
+
+ if test -f "$dir/$objdir/$dlname"; then
+ dir="$dir/$objdir"
+ else
+ $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ ;;
+
+ *.lo)
+ # Just add the directory containing the .lo file.
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$file" && dir=.
+ ;;
+
+ *)
+ $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+ continue
+ ;;
+ esac
+
+ # Get the absolute pathname.
+ absdir=`cd "$dir" && pwd`
+ test -n "$absdir" && dir="$absdir"
+
+ # Now add the directory to shlibpath_var.
+ if eval "test -z \"\$$shlibpath_var\""; then
+ eval "$shlibpath_var=\"\$dir\""
+ else
+ eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+ fi
+ done
+
+ # This variable tells wrapper scripts just to set shlibpath_var
+ # rather than running their programs.
+ libtool_execute_magic="$magic"
+
+ # Check if any of the arguments is a wrapper script.
+ args=
+ for file
+ do
+ case $file in
+ -*) ;;
+ *)
+ # Do a test to see if this is really a libtool program.
+ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ fi
+ ;;
+ esac
+ # Quote arguments (to preserve shell metacharacters).
+ file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+ args="$args \"$file\""
+ done
+
+ if test -z "$run"; then
+ if test -n "$shlibpath_var"; then
+ # Export the shlibpath_var.
+ eval "export $shlibpath_var"
+ fi
+
+ # Restore saved environment variables
+ if test "${save_LC_ALL+set}" = set; then
+ LC_ALL="$save_LC_ALL"; export LC_ALL
+ fi
+ if test "${save_LANG+set}" = set; then
+ LANG="$save_LANG"; export LANG
+ fi
+
+ # Now prepare to actually exec the command.
+ exec_cmd="\$cmd$args"
+ else
+ # Display what would be done.
+ if test -n "$shlibpath_var"; then
+ eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+ $echo "export $shlibpath_var"
+ fi
+ $echo "$cmd$args"
+ exit $EXIT_SUCCESS
+ fi
+ ;;
+
+ # libtool clean and uninstall mode
+ clean | uninstall)
+ modename="$modename: $mode"
+ rm="$nonopt"
+ files=
+ rmforce=
+ exit_status=0
+
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic="$magic"
+
+ for arg
+ do
+ case $arg in
+ -f) rm="$rm $arg"; rmforce=yes ;;
+ -*) rm="$rm $arg" ;;
+ *) files="$files $arg" ;;
+ esac
+ done
+
+ if test -z "$rm"; then
+ $echo "$modename: you must specify an RM program" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ rmdirs=
+
+ origobjdir="$objdir"
+ for file in $files; do
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$dir" = "X$file"; then
+ dir=.
+ objdir="$origobjdir"
+ else
+ objdir="$dir/$origobjdir"
+ fi
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ test "$mode" = uninstall && objdir="$dir"
+
+ # Remember objdir for removal later, being careful to avoid duplicates
+ if test "$mode" = clean; then
+ case " $rmdirs " in
+ *" $objdir "*) ;;
+ *) rmdirs="$rmdirs $objdir" ;;
+ esac
+ fi
+
+ # Don't error if the file doesn't exist and rm -f was used.
+ if (test -L "$file") >/dev/null 2>&1 \
+ || (test -h "$file") >/dev/null 2>&1 \
+ || test -f "$file"; then
+ :
+ elif test -d "$file"; then
+ exit_status=1
+ continue
+ elif test "$rmforce" = yes; then
+ continue
+ fi
+
+ rmfiles="$file"
+
+ case $name in
+ *.la)
+ # Possibly a libtool archive, so verify it.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ . $dir/$name
+
+ # Delete the libtool libraries and symlinks.
+ for n in $library_names; do
+ rmfiles="$rmfiles $objdir/$n"
+ done
+ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+
+ case "$mode" in
+ clean)
+ case " $library_names " in
+ # " " in the beginning catches empty $dlname
+ *" $dlname "*) ;;
+ *) rmfiles="$rmfiles $objdir/$dlname" ;;
+ esac
+ test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+ ;;
+ uninstall)
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+ cmds=$postuninstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd"
+ if test "$?" -ne 0 && test "$rmforce" != yes; then
+ exit_status=1
+ fi
+ done
+ IFS="$save_ifs"
+ fi
+
+ if test -n "$old_library"; then
+ # Do each command in the old_postuninstall commands.
+ cmds=$old_postuninstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd"
+ if test "$?" -ne 0 && test "$rmforce" != yes; then
+ exit_status=1
+ fi
+ done
+ IFS="$save_ifs"
+ fi
+ # FIXME: should reinstall the best remaining shared library.
+ ;;
+ esac
+ fi
+ ;;
+
+ *.lo)
+ # Possibly a libtool object, so verify it.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+ # Read the .lo file
+ . $dir/$name
+
+ # Add PIC object to the list of files to remove.
+ if test -n "$pic_object" \
+ && test "$pic_object" != none; then
+ rmfiles="$rmfiles $dir/$pic_object"
+ fi
+
+ # Add non-PIC object to the list of files to remove.
+ if test -n "$non_pic_object" \
+ && test "$non_pic_object" != none; then
+ rmfiles="$rmfiles $dir/$non_pic_object"
+ fi
+ fi
+ ;;
+
+ *)
+ if test "$mode" = clean ; then
+ noexename=$name
+ case $file in
+ *.exe)
+ file=`$echo $file|${SED} 's,.exe$,,'`
+ noexename=`$echo $name|${SED} 's,.exe$,,'`
+ # $file with .exe has already been added to rmfiles,
+ # add $file without .exe
+ rmfiles="$rmfiles $file"
+ ;;
+ esac
+ # Do a test to see if this is a libtool program.
+ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ relink_command=
+ . $dir/$noexename
+
+ # note $name still contains .exe if it was in $file originally
+ # as does the version of $file that was added into $rmfiles
+ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+ if test "$fast_install" = yes && test -n "$relink_command"; then
+ rmfiles="$rmfiles $objdir/lt-$name"
+ fi
+ if test "X$noexename" != "X$name" ; then
+ rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ $show "$rm $rmfiles"
+ $run $rm $rmfiles || exit_status=1
+ done
+ objdir="$origobjdir"
+
+ # Try to remove the ${objdir}s in the directories where we deleted files
+ for dir in $rmdirs; do
+ if test -d "$dir"; then
+ $show "rmdir $dir"
+ $run rmdir $dir >/dev/null 2>&1
+ fi
+ done
+
+ exit $exit_status
+ ;;
+
+ "")
+ $echo "$modename: you must specify a MODE" 1>&2
+ $echo "$generic_help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ if test -z "$exec_cmd"; then
+ $echo "$modename: invalid operation mode \`$mode'" 1>&2
+ $echo "$generic_help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+ eval exec $exec_cmd
+ exit $EXIT_FAILURE
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+ --config show all configuration variables
+ --debug enable verbose shell tracing
+-n, --dry-run display commands without modifying any files
+ --features display basic configuration information and exit
+ --finish same as \`--mode=finish'
+ --help display this help message and exit
+ --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
+ --quiet same as \`--silent'
+ --silent don't print informational messages
+ --tag=TAG use configuration variables from tag TAG
+ --version print version information
+
+MODE must be one of the following:
+
+ clean remove files from the build directory
+ compile compile a source file into a libtool object
+ execute automatically set library path, then run a program
+ finish complete the installation of libtool libraries
+ install install libraries or executables
+ link create a library or an executable
+ uninstall remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE.
+
+Report bugs to <bug-libtool@gnu.org>."
+ exit $EXIT_SUCCESS
+ ;;
+
+clean)
+ $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+ ;;
+
+compile)
+ $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+ -o OUTPUT-FILE set the output file name to OUTPUT-FILE
+ -prefer-pic try to building PIC objects only
+ -prefer-non-pic try to building non-PIC objects only
+ -static always build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+ ;;
+
+execute)
+ $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+ -dlopen FILE add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+ ;;
+
+finish)
+ $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges. Use
+the \`--dry-run' option if you just want to see what would be executed."
+ ;;
+
+install)
+ $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command. The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+ ;;
+
+link)
+ $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+ -all-static do not do any dynamic linking at all
+ -avoid-version do not add a version suffix if possible
+ -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
+ -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
+ -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+ -export-symbols SYMFILE
+ try to export only the symbols listed in SYMFILE
+ -export-symbols-regex REGEX
+ try to export only the symbols matching REGEX
+ -LLIBDIR search LIBDIR for required installed libraries
+ -lNAME OUTPUT-FILE requires the installed library libNAME
+ -module build a library that can dlopened
+ -no-fast-install disable the fast-install mode
+ -no-install link a not-installable executable
+ -no-undefined declare that a library does not refer to external symbols
+ -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
+ -objectlist FILE Use a list of object files found in FILE to specify objects
+ -precious-files-regex REGEX
+ don't remove output files matching REGEX
+ -release RELEASE specify package release information
+ -rpath LIBDIR the created library will eventually be installed in LIBDIR
+ -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
+ -static do not do any dynamic linking of libtool libraries
+ -version-info CURRENT[:REVISION[:AGE]]
+ specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename. Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+ ;;
+
+uninstall)
+ $echo \
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+ ;;
+
+*)
+ $echo "$modename: invalid operation mode \`$mode'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+esac
+
+$echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit $?
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries. Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them. This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration. But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+disable_libs=shared
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+disable_libs=static
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
diff --git a/libs/glibmm2/scripts/macros.m4 b/libs/glibmm2/scripts/macros.m4
new file mode 100644
index 0000000000..44a9c4de05
--- /dev/null
+++ b/libs/glibmm2/scripts/macros.m4
@@ -0,0 +1,134 @@
+dnl
+dnl Some macros needed for autoconf
+dnl
+
+dnl AL_PROG_GNU_M4(ACTION_NOT_FOUND)
+dnl Check for GNU m4. (sun won't do.)
+dnl
+AC_DEFUN([AL_PROG_GNU_M4],[
+AC_CHECK_PROGS(M4, gm4 m4, m4)
+
+if test "$M4" = "m4"; then
+ AC_MSG_CHECKING(whether m4 is GNU m4)
+ if $M4 --version </dev/null 2>/dev/null | grep '^GNU m4 ' >/dev/null ; then
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ if test "$host_vendor" = "sun"; then
+ $1
+ fi
+ fi
+fi
+])
+
+
+dnl AL_PROG_GNU_MAKE(ACTION_NOT_FOUND)
+dnl Check for GNU make (no sun make)
+dnl
+AC_DEFUN([AL_PROG_GNU_MAKE],[
+dnl
+dnl Check for GNU make (stolen from gtk+/configure.in)
+AC_MSG_CHECKING(whether make is GNU Make)
+if ${MAKE-make} --version 2>/dev/null | grep '^GNU Make ' >/dev/null ; then
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_RESULT(no)
+ if test "$host_vendor" = "sun" ; then
+ $1
+ fi
+fi
+])
+
+dnl AL_ACLOCAL_INCLUDE(macrodir)
+dnl Add a directory to macro search (from gnome)
+AC_DEFUN([AL_ACLOCAL_INCLUDE],
+[
+ test "x$ACLOCAL_FLAGS" = "x" || ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+ for dir in $1
+ do
+ ACLOCAL="$ACLOCAL -I $srcdir/$dir"
+ done
+])
+
+
+## GLIBMM_ARG_ENABLE_DEBUG_REFCOUNTING()
+##
+## Provide the --enable-debug-refcounting configure argument, disabled
+## by default. If enabled, #define GTKMM_DEBUG_REFCOUNTING.
+##
+AC_DEFUN([GLIBMM_ARG_ENABLE_DEBUG_REFCOUNTING],
+[
+ AC_ARG_ENABLE([debug-refcounting],
+ [ --enable-debug-refcounting Print a debug message on every ref/unref.
+ [[default=disabled]]],
+ [glibmm_debug_refcounting="$enableval"],
+ [glibmm_debug_refcounting='no'])
+
+ if test "x$glibmm_debug_refcounting" = "xyes"; then
+ {
+ AC_DEFINE([GLIBMM_DEBUG_REFCOUNTING],[1], [Defined when the --enable-debug-refcounting configure argument was given])
+ }
+ fi
+])
+
+
+## GTKMM_ARG_ENABLE_WARNINGS()
+##
+## Provide the --enable-warnings configure argument, set to 'minimum'
+## by default.
+##
+AC_DEFUN([GTKMM_ARG_ENABLE_WARNINGS],
+[
+ AC_ARG_ENABLE([warnings],
+ [ --enable-warnings=[[none|minimum|maximum|hardcore]]
+ Control compiler pickyness. [[default=minimum]]],
+ [gtkmm_enable_warnings="$enableval"],
+ [gtkmm_enable_warnings='minimum'])
+
+ AC_MSG_CHECKING([for compiler warning flags to use])
+
+ gtkmm_warning_flags=''
+
+ case "$gtkmm_enable_warnings" in
+ minimum|yes) gtkmm_warning_flags='-Wall -Wno-long-long';;
+ maximum) gtkmm_warning_flags='-pedantic -W -Wall -Wno-long-long';;
+ hardcore) gtkmm_warning_flags='-pedantic -W -Wall -Wno-long-long -Werror';;
+ esac
+
+ gtkmm_use_flags=''
+
+ if test "x$gtkmm_warning_flags" != "x"
+ then
+ echo 'int foo() { return 0; }' > conftest.cc
+
+ for flag in $gtkmm_warning_flags
+ do
+ # Test whether the compiler accepts the flag. GCC doesn't bail
+ # out when given an unsupported flag but prints a warning, so
+ # check the compiler output instead.
+ gtkmm_cxx_out="`$CXX $flag -c conftest.cc 2>&1`"
+ rm -f conftest.$OBJEXT
+ test "x${gtkmm_cxx_out}" = "x" && \
+ gtkmm_use_flags="${gtkmm_use_flags:+$gtkmm_use_flags }$flag"
+ done
+
+ rm -f conftest.cc
+ gtkmm_cxx_out=''
+ fi
+
+ if test "x$gtkmm_use_flags" != "x"
+ then
+ for flag in $gtkmm_use_flags
+ do
+ case " $CXXFLAGS " in
+ *" $flag "*) ;; # don't add flags twice
+ *) CXXFLAGS="${CXXFLAGS:+$CXXFLAGS }$flag";;
+ esac
+ done
+ else
+ gtkmm_use_flags='none'
+ fi
+
+ AC_MSG_RESULT([$gtkmm_use_flags])
+])
+
diff --git a/libs/glibmm2/scripts/missing b/libs/glibmm2/scripts/missing
new file mode 100644
index 0000000000..894e786e16
--- /dev/null
+++ b/libs/glibmm2/scripts/missing
@@ -0,0 +1,360 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2005-06-08.21
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+fi
+
+run=:
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+ configure_ac=configure.ac
+else
+ configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case "$1" in
+--run)
+ # Try to run requested program, and just exit if it succeeds.
+ run=
+ shift
+ "$@" && exit 0
+ # Exit code 63 means version mismatch. This often happens
+ # when the user try to use an ancient version of a tool on
+ # a file that requires a minimum version. In this case we
+ # we should proceed has if the program had been absent, or
+ # if --run hadn't been passed.
+ if test $? = 63; then
+ run=:
+ msg="probably too old"
+ fi
+ ;;
+
+ -h|--h|--he|--hel|--help)
+ echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+ -h, --help display this help and exit
+ -v, --version output version information and exit
+ --run try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+ aclocal touch file \`aclocal.m4'
+ autoconf touch file \`configure'
+ autoheader touch file \`config.h.in'
+ automake touch all \`Makefile.in' files
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
+ flex create \`lex.yy.c', if possible, from existing .c
+ help2man touch the output file
+ lex create \`lex.yy.c', if possible, from existing .c
+ makeinfo touch the output file
+ tar try tar, gnutar, gtar, then tar without non-portable flags
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake@gnu.org>."
+ exit $?
+ ;;
+
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+ echo "missing $scriptversion (GNU Automake)"
+ exit $?
+ ;;
+
+ -*)
+ echo 1>&2 "$0: Unknown \`$1' option"
+ echo 1>&2 "Try \`$0 --help' for more information"
+ exit 1
+ ;;
+
+esac
+
+# Now exit if we have it, but it failed. Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case "$1" in
+ lex|yacc)
+ # Not GNU programs, they don't have --version.
+ ;;
+
+ tar)
+ if test -n "$run"; then
+ echo 1>&2 "ERROR: \`tar' requires --run"
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ exit 1
+ fi
+ ;;
+
+ *)
+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+ # We have it, but it failed.
+ exit 1
+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+ # Could not run --version or --help. This is probably someone
+ # running `$TOOL --version' or `$TOOL --help' to check whether
+ # $TOOL exists and not knowing $TOOL uses missing.
+ exit 1
+ fi
+ ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case "$1" in
+ aclocal*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want
+ to install the \`Automake' and \`Perl' packages. Grab them from
+ any GNU archive site."
+ touch aclocal.m4
+ ;;
+
+ autoconf)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`${configure_ac}'. You might want to install the
+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
+ archive site."
+ touch configure
+ ;;
+
+ autoheader)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`acconfig.h' or \`${configure_ac}'. You might want
+ to install the \`Autoconf' and \`GNU m4' packages. Grab them
+ from any GNU archive site."
+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+ test -z "$files" && files="config.h"
+ touch_files=
+ for f in $files; do
+ case "$f" in
+ *:*) touch_files="$touch_files "`echo "$f" |
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+ *) touch_files="$touch_files $f.in";;
+ esac
+ done
+ touch $touch_files
+ ;;
+
+ automake*)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+ You might want to install the \`Automake' and \`Perl' packages.
+ Grab them from any GNU archive site."
+ find . -type f -name Makefile.am -print |
+ sed 's/\.am$/.in/' |
+ while read f; do touch "$f"; done
+ ;;
+
+ autom4te)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them.
+ You can get \`$1' as part of \`Autoconf' from any GNU
+ archive site."
+
+ file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
+ test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo "#! /bin/sh"
+ echo "# Created by GNU Automake missing as a replacement of"
+ echo "# $ $@"
+ echo "exit 0"
+ chmod +x $file
+ exit 1
+ fi
+ ;;
+
+ bison|yacc)
+ echo 1>&2 "\
+WARNING: \`$1' $msg. You should only need it if
+ you modified a \`.y' file. You may need the \`Bison' package
+ in order for those modifications to take effect. You can get
+ \`Bison' from any GNU archive site."
+ rm -f y.tab.c y.tab.h
+ if [ $# -ne 1 ]; then
+ eval LASTARG="\${$#}"
+ case "$LASTARG" in
+ *.y)
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+ if [ -f "$SRCFILE" ]; then
+ cp "$SRCFILE" y.tab.c
+ fi
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+ if [ -f "$SRCFILE" ]; then
+ cp "$SRCFILE" y.tab.h
+ fi
+ ;;
+ esac
+ fi
+ if [ ! -f y.tab.h ]; then
+ echo >y.tab.h
+ fi
+ if [ ! -f y.tab.c ]; then
+ echo 'main() { return 0; }' >y.tab.c
+ fi
+ ;;
+
+ lex|flex)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.l' file. You may need the \`Flex' package
+ in order for those modifications to take effect. You can get
+ \`Flex' from any GNU archive site."
+ rm -f lex.yy.c
+ if [ $# -ne 1 ]; then
+ eval LASTARG="\${$#}"
+ case "$LASTARG" in
+ *.l)
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+ if [ -f "$SRCFILE" ]; then
+ cp "$SRCFILE" lex.yy.c
+ fi
+ ;;
+ esac
+ fi
+ if [ ! -f lex.yy.c ]; then
+ echo 'main() { return 0; }' >lex.yy.c
+ fi
+ ;;
+
+ help2man)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a dependency of a manual page. You may need the
+ \`Help2man' package in order for those modifications to take
+ effect. You can get \`Help2man' from any GNU archive site."
+
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+ if test -z "$file"; then
+ file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
+ fi
+ if [ -f "$file" ]; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+ echo ".ab help2man is required to generate this page"
+ exit 1
+ fi
+ ;;
+
+ makeinfo)
+ echo 1>&2 "\
+WARNING: \`$1' is $msg. You should only need it if
+ you modified a \`.texi' or \`.texinfo' file, or any other file
+ indirectly affecting the aspect of the manual. The spurious
+ call might also be the consequence of using a buggy \`make' (AIX,
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+ # The file to touch is that specified with -o ...
+ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+ if test -z "$file"; then
+ # ... or it is the one specified with @setfilename ...
+ infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+ file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
+ # ... or it is derived from the source name (dir/f.texi becomes f.info)
+ test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+ fi
+ # If the file does not exist, the user really needs makeinfo;
+ # let's fail without touching anything.
+ test -f $file || exit 1
+ touch $file
+ ;;
+
+ tar)
+ shift
+
+ # We have already tried tar in the generic part.
+ # Look for gnutar/gtar before invocation to avoid ugly error
+ # messages.
+ if (gnutar --version > /dev/null 2>&1); then
+ gnutar "$@" && exit 0
+ fi
+ if (gtar --version > /dev/null 2>&1); then
+ gtar "$@" && exit 0
+ fi
+ firstarg="$1"
+ if shift; then
+ case "$firstarg" in
+ *o*)
+ firstarg=`echo "$firstarg" | sed s/o//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ case "$firstarg" in
+ *h*)
+ firstarg=`echo "$firstarg" | sed s/h//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+ fi
+
+ echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+ You may want to install GNU tar or Free paxutils, or check the
+ command line arguments."
+ exit 1
+ ;;
+
+ *)
+ echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+ You might have modified some files without having the
+ proper tools for further handling them. Check the \`README' file,
+ it often tells you about the needed prerequisites for installing
+ this package. You may also peek at any GNU archive site, in case
+ some other package would contain this missing \`$1' program."
+ exit 1
+ ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/libs/glibmm2/scripts/reduced.m4 b/libs/glibmm2/scripts/reduced.m4
new file mode 100644
index 0000000000..9411a57824
--- /dev/null
+++ b/libs/glibmm2/scripts/reduced.m4
@@ -0,0 +1,106 @@
+## GLIBMM_ARG_ENABLE_API_PROPERTIES()
+##
+## Provide the --enable-api-properties configure argument, enabled
+## by default.
+##
+AC_DEFUN([GLIBMM_ARG_ENABLE_API_PROPERTIES],
+[
+ AC_ARG_ENABLE([api-properties],
+ [ --enable-api-properties Build properties API.
+ [[default=yes]]],
+ [glibmm_enable_api_properties="$enableval"],
+ [glibmm_enable_api_properties='yes'])
+
+ if test "x$glibmm_enable_api_properties" = "xyes"; then
+ {
+ AC_DEFINE([GLIBMM_PROPERTIES_ENABLED],[1], [Defined when the --enable-api-properties configure argument was given])
+ }
+ fi
+])
+
+## GLIBMM_ARG_ENABLE_API_VFUNCS()
+##
+## Provide the --enable-api-vfuncs configure argument, enabled
+## by default.
+##
+AC_DEFUN([GLIBMM_ARG_ENABLE_API_VFUNCS],
+[
+ AC_ARG_ENABLE([api-vfuncs],
+ [ --enable-api-vfuncs Build vfuncs API.
+ [[default=yes]]],
+ [glibmm_enable_api_vfuncs="$enableval"],
+ [glibmm_enable_api_vfuncs='yes'])
+
+ if test "x$glibmm_enable_api_vfuncs" = "xyes"; then
+ {
+ AC_DEFINE([GLIBMM_VFUNCS_ENABLED],[1], [Defined when the --enable-api-vfuncs configure argument was given])
+ }
+ fi
+])
+
+## GLIBMM_ARG_ENABLE_API_EXCEPTIONS()
+##
+## Provide the --enable-api-exceptions configure argument, enabled
+## by default.
+##
+AC_DEFUN([GLIBMM_ARG_ENABLE_API_EXCEPTIONS],
+[
+ AC_ARG_ENABLE([api-exceptions],
+ [ --enable-api-exceptions Build exceptions API.
+ [[default=yes]]],
+ [glibmm_enable_api_exceptions="$enableval"],
+ [glibmm_enable_api_exceptions='yes'])
+
+ if test "x$glibmm_enable_api_exceptions" = "xyes"; then
+ {
+ AC_DEFINE([GLIBMM_EXCEPTIONS_ENABLED],[1], [Defined when the --enable-api-exceptions configure argument was given])
+ }
+ fi
+])
+
+## GLIBMM_ARG_ENABLE_API_DEPRECATED()
+##
+## Provide the --enable-deprecated-api configure argument, enabled
+## by default.
+##
+AC_DEFUN([GLIBMM_ARG_ENABLE_API_DEPRECATED],
+[
+ AC_ARG_ENABLE(deprecated-api,
+ [ --enable-deprecated-api Include (build) deprecated API in the libraries.
+ [[default=yes]]],
+ [glibmm_enable_api_deprecated="$enableval"],
+ [glibmm_enable_api_deprecated='yes'])
+
+ if test "x$glibmm_enable_api_deprecated" = "xyes"; then
+ {
+ AC_MSG_WARN([Deprecated API will be built, for backwards-compatibility.])
+ }
+ else
+ {
+ AC_MSG_WARN([Deprecated API will not be built, breaking backwards-compatibility. Do not use this build for distribution packages.])
+ DISABLE_DEPRECATED_API_CFLAGS="-DGLIBMM_DISABLE_DEPRECATED"
+ AC_SUBST(DISABLE_DEPRECATED_API_CFLAGS)
+ }
+ fi
+])
+
+
+## GLIBMM_ARG_ENABLE_API_DEFAULT_SIGNAL_HANDLERS()
+##
+## Provide the --enable-api-default-signal-handlers configure argument, enabled
+## by default.
+##
+AC_DEFUN([GLIBMM_ARG_ENABLE_API_DEFAULT_SIGNAL_HANDLERS],
+[
+ AC_ARG_ENABLE([api-default-signal-handlers],
+ [ --enable-api-default-signal-handlers Build default signal handlers API.
+ [[default=yes]]],
+ [glibmm_enable_api_default_signal_handlers="$enableval"],
+ [glibmm_enable_api_default_signal_handlers='yes'])
+
+ if test "x$glibmm_enable_api_default_signal_handlers" = "xyes"; then
+ {
+ AC_DEFINE([GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED],[1], [Defined when the --enable-api-default-signal-handlers configure argument was given])
+ }
+ fi
+])
diff --git a/libs/glibmm2/scripts/sun.m4 b/libs/glibmm2/scripts/sun.m4
new file mode 100644
index 0000000000..6b8950f798
--- /dev/null
+++ b/libs/glibmm2/scripts/sun.m4
@@ -0,0 +1,15 @@
+AC_DEFUN([GLIBMM_PROG_CXX_SUN],
+ [AC_CACHE_CHECK(whether we are using SUN CC compiler, ac_cv_prog_sun_cxx,
+ [if AC_TRY_COMMAND(${CXX-g++} -V 2>&1) | egrep "Sun WorkShop" >/dev/null 2>&1; then
+ ac_cv_prog_sun_cxx=yes
+ else
+ ac_cv_prog_sun_cxx=no
+ fi]
+ )]
+
+ if test "x${ac_cv_prog_sun_cxx}" = "xyes"; then
+ {
+ AC_DEFINE([GLIBMM_COMPILER_SUN_FORTE],[1], [Defined when the SUN Forte C++ compiler is being used.])
+ }
+ fi
+)
diff --git a/libs/glibmm2/stamp-h1 b/libs/glibmm2/stamp-h1
new file mode 100644
index 0000000000..4547fe1b5e
--- /dev/null
+++ b/libs/glibmm2/stamp-h1
@@ -0,0 +1 @@
+timestamp for config.h
diff --git a/libs/glibmm2/tools/Makefile b/libs/glibmm2/tools/Makefile
new file mode 100644
index 0000000000..a62cca1c1f
--- /dev/null
+++ b/libs/glibmm2/tools/Makefile
@@ -0,0 +1,558 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# tools/Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+srcdir = .
+top_srcdir = ..
+
+pkgdatadir = $(datadir)/glibmm
+pkglibdir = $(libdir)/glibmm
+pkgincludedir = $(includedir)/glibmm
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = i686-pc-linux-gnu
+host_triplet = i686-pc-linux-gnu
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/generate_wrap_init.pl.in $(srcdir)/gmmproc.in \
+ $(top_srcdir)/tools/Makefile_list_of_sources.am_fragment \
+ $(top_srcdir)/tools/m4/Makefile_list_of_sources.am_fragment \
+ $(top_srcdir)/tools/pm/Makefile_list_of_sources.am_fragment \
+ TODO
+subdir = tools
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/scripts/cxx.m4 \
+ $(top_srcdir)/scripts/cxx_std.m4 \
+ $(top_srcdir)/scripts/docgen.m4 \
+ $(top_srcdir)/scripts/glibmm_check_perl.m4 \
+ $(top_srcdir)/scripts/macros.m4 \
+ $(top_srcdir)/scripts/reduced.m4 $(top_srcdir)/scripts/sun.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h \
+ $(top_builddir)/glib/glibmmconfig.h
+CONFIG_CLEAN_FILES = gmmproc generate_wrap_init.pl
+am__installdirs = "$(DESTDIR)$(gmmproc_bindir)"
+gmmproc_binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
+SCRIPTS = $(gmmproc_bin_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run aclocal-1.9 -I ./scripts
+AMDEP_FALSE = #
+AMDEP_TRUE =
+AMTAR = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run tar
+AR = ar
+AS = as
+AUTOCONF = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run autoconf
+AUTOHEADER = :
+AUTOMAKE = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS =
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2 -Wall -Wno-long-long
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DISABLE_DEPRECATED_API_CFLAGS =
+DISABLE_DEPRECATED_CFLAGS =
+DLLTOOL = dlltool
+ECHO = echo
+ECHO_C =
+ECHO_N = -n
+ECHO_T =
+EGREP = grep -E
+EXEEXT =
+F77 =
+FFLAGS =
+GLIBMM_CFLAGS = -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+GLIBMM_LIBS = -Wl,--export-dynamic -lsigc-2.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
+GLIBMM_MAJOR_VERSION = 2
+GLIBMM_MICRO_VERSION = 3
+GLIBMM_MINOR_VERSION = 13
+GLIBMM_RELEASE = 2.13
+GLIBMM_VERSION = 2.13.3
+GTHREAD_CFLAGS = -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+GTHREAD_LIBS = -pthread -lgthread-2.0 -lrt -lglib-2.0
+GTKMMPROC_MERGECDOCS =
+GTKMM_DOXYGEN_INPUT = /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/glib/glibmm/
+GTKMM_FALSE_FALSE =
+GTKMM_FALSE_TRUE = #
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =
+LIBGLIBMM_SO_VERSION = 1:24:0
+LIBOBJS =
+LIBS =
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS =
+M4 = m4
+MAINT = #
+MAINTAINER_MODE_FALSE =
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run makeinfo
+OBJDUMP = objdump
+OBJEXT = o
+OS_WIN32_FALSE =
+OS_WIN32_TRUE = #
+PACKAGE = glibmm
+PACKAGE_BUGREPORT =
+PACKAGE_NAME =
+PACKAGE_STRING =
+PACKAGE_TARNAME =
+PACKAGE_VERSION =
+PATH_SEPARATOR = :
+PERL_PATH = /usr/bin/perl
+PKG_CONFIG = /usr/bin/pkg-config
+PLATFORM_WIN32_FALSE =
+PLATFORM_WIN32_TRUE = #
+RANLIB = ranlib
+SET_MAKE =
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 2.13.3
+ac_ct_AR = ar
+ac_ct_AS =
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DLLTOOL =
+ac_ct_F77 =
+ac_ct_OBJDUMP =
+ac_ct_RANLIB = ranlib
+ac_ct_STRIP = strip
+ac_pt_PKG_CONFIG = /usr/bin/pkg-config
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE =
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE =
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = i686-pc-linux-gnu
+build_alias =
+build_cpu = i686
+build_os = linux-gnu
+build_vendor = pc
+datadir = ${prefix}/share
+exec_prefix = ${prefix}
+host = i686-pc-linux-gnu
+host_alias =
+host_cpu = i686
+host_os = linux-gnu
+host_vendor = pc
+includedir = ${prefix}/include
+infodir = ${prefix}/info
+install_sh = /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localstatedir = ${prefix}/var
+mandir = ${prefix}/man
+mkdir_p = mkdir -p --
+oldincludedir = /usr/include
+prefix = /usr/local
+program_transform_name = s,x,x,
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias =
+files_tools_m4 = base.m4 class_shared.m4 class_boxedtype.m4 class_boxedtype_static.m4 \
+ class_generic.m4 class_gobject.m4 class_gtkobject.m4 \
+ class_interface.m4 class_opaque_refcounted.m4 class_opaque_copyable.m4 \
+ gerror.m4 \
+ compare.m4 convert.m4 convert_base.m4 convert_gtkmm.m4 convert_atk.m4 convert_gdk.m4 \
+ convert_glib.m4 convert_gtk.m4 convert_pango.m4 ctor.m4 doc.m4 enum.m4 list.m4 member.m4 \
+ method.m4 property.m4 signal.m4 vfunc.m4
+
+files_tools_pm = DocsParser.pm GtkDefs.pm Enum.pm Function.pm FunctionBase.pm Object.pm Output.pm Property.pm Util.pm WrapParser.pm
+files_tools_genwrap = generate_wrap_init.pl
+files_tools_perl = $(files_tools_genwrap) gmmproc.in
+SUBDIRS = m4 pm extra_defs_gen
+EXTRA_DIST = Makefile_list_of_sources.am_fragment $(files_tools_perl) README TODO enum.pl
+gmmproc_bin_SCRIPTS = gmmproc $(files_tools_genwrap)
+gmmproc_bindir = $(libdir)/glibmm-2.4/proc
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(top_srcdir)/tools/Makefile_list_of_sources.am_fragment $(top_srcdir)/tools/m4/Makefile_list_of_sources.am_fragment $(top_srcdir)/tools/pm/Makefile_list_of_sources.am_fragment $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tools/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+gmmproc: $(top_builddir)/config.status $(srcdir)/gmmproc.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+generate_wrap_init.pl: $(top_builddir)/config.status $(srcdir)/generate_wrap_init.pl.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+install-gmmproc_binSCRIPTS: $(gmmproc_bin_SCRIPTS)
+ @$(NORMAL_INSTALL)
+ test -z "$(gmmproc_bindir)" || $(mkdir_p) "$(DESTDIR)$(gmmproc_bindir)"
+ @list='$(gmmproc_bin_SCRIPTS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f $$d$$p; then \
+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+ echo " $(gmmproc_binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(gmmproc_bindir)/$$f'"; \
+ $(gmmproc_binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(gmmproc_bindir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-gmmproc_binSCRIPTS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(gmmproc_bin_SCRIPTS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+ echo " rm -f '$(DESTDIR)$(gmmproc_bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(gmmproc_bindir)/$$f"; \
+ done
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/../tools $(distdir)/../tools/m4 $(distdir)/../tools/pm
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(SCRIPTS)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(gmmproc_bindir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-gmmproc_binSCRIPTS
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-gmmproc_binSCRIPTS uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-libtool clean-recursive ctags \
+ ctags-recursive distclean distclean-generic distclean-libtool \
+ distclean-recursive distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am \
+ install-gmmproc_binSCRIPTS install-info install-info-am \
+ install-man install-strip installcheck installcheck-am \
+ installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive \
+ mostlyclean mostlyclean-generic mostlyclean-libtool \
+ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am uninstall-gmmproc_binSCRIPTS \
+ uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libs/glibmm2/tools/Makefile.am b/libs/glibmm2/tools/Makefile.am
new file mode 100644
index 0000000000..cbe60fe9b0
--- /dev/null
+++ b/libs/glibmm2/tools/Makefile.am
@@ -0,0 +1,11 @@
+
+include $(top_srcdir)/tools/Makefile_list_of_sources.am_fragment
+
+SUBDIRS = m4 pm extra_defs_gen
+
+EXTRA_DIST = Makefile_list_of_sources.am_fragment $(files_tools_perl) README TODO enum.pl
+
+gmmproc_bin_SCRIPTS = gmmproc $(files_tools_genwrap)
+gmmproc_bindir = $(libdir)/glibmm-2.4/proc
+
+
diff --git a/libs/glibmm2/tools/Makefile.in b/libs/glibmm2/tools/Makefile.in
new file mode 100644
index 0000000000..dc9a54dbae
--- /dev/null
+++ b/libs/glibmm2/tools/Makefile.in
@@ -0,0 +1,558 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/generate_wrap_init.pl.in $(srcdir)/gmmproc.in \
+ $(top_srcdir)/tools/Makefile_list_of_sources.am_fragment \
+ $(top_srcdir)/tools/m4/Makefile_list_of_sources.am_fragment \
+ $(top_srcdir)/tools/pm/Makefile_list_of_sources.am_fragment \
+ TODO
+subdir = tools
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/scripts/cxx.m4 \
+ $(top_srcdir)/scripts/cxx_std.m4 \
+ $(top_srcdir)/scripts/docgen.m4 \
+ $(top_srcdir)/scripts/glibmm_check_perl.m4 \
+ $(top_srcdir)/scripts/macros.m4 \
+ $(top_srcdir)/scripts/reduced.m4 $(top_srcdir)/scripts/sun.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h \
+ $(top_builddir)/glib/glibmmconfig.h
+CONFIG_CLEAN_FILES = gmmproc generate_wrap_init.pl
+am__installdirs = "$(DESTDIR)$(gmmproc_bindir)"
+gmmproc_binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
+SCRIPTS = $(gmmproc_bin_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISABLE_DEPRECATED_API_CFLAGS = @DISABLE_DEPRECATED_API_CFLAGS@
+DISABLE_DEPRECATED_CFLAGS = @DISABLE_DEPRECATED_CFLAGS@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GLIBMM_CFLAGS = @GLIBMM_CFLAGS@
+GLIBMM_LIBS = @GLIBMM_LIBS@
+GLIBMM_MAJOR_VERSION = @GLIBMM_MAJOR_VERSION@
+GLIBMM_MICRO_VERSION = @GLIBMM_MICRO_VERSION@
+GLIBMM_MINOR_VERSION = @GLIBMM_MINOR_VERSION@
+GLIBMM_RELEASE = @GLIBMM_RELEASE@
+GLIBMM_VERSION = @GLIBMM_VERSION@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKMMPROC_MERGECDOCS = @GTKMMPROC_MERGECDOCS@
+GTKMM_DOXYGEN_INPUT = @GTKMM_DOXYGEN_INPUT@
+GTKMM_FALSE_FALSE = @GTKMM_FALSE_FALSE@
+GTKMM_FALSE_TRUE = @GTKMM_FALSE_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBGLIBMM_SO_VERSION = @LIBGLIBMM_SO_VERSION@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+M4 = @M4@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS_WIN32_FALSE = @OS_WIN32_FALSE@
+OS_WIN32_TRUE = @OS_WIN32_TRUE@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL_PATH = @PERL_PATH@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_WIN32_FALSE = @PLATFORM_WIN32_FALSE@
+PLATFORM_WIN32_TRUE = @PLATFORM_WIN32_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_AS = @ac_ct_AS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+files_tools_m4 = base.m4 class_shared.m4 class_boxedtype.m4 class_boxedtype_static.m4 \
+ class_generic.m4 class_gobject.m4 class_gtkobject.m4 \
+ class_interface.m4 class_opaque_refcounted.m4 class_opaque_copyable.m4 \
+ gerror.m4 \
+ compare.m4 convert.m4 convert_base.m4 convert_gtkmm.m4 convert_atk.m4 convert_gdk.m4 \
+ convert_glib.m4 convert_gtk.m4 convert_pango.m4 ctor.m4 doc.m4 enum.m4 list.m4 member.m4 \
+ method.m4 property.m4 signal.m4 vfunc.m4
+
+files_tools_pm = DocsParser.pm GtkDefs.pm Enum.pm Function.pm FunctionBase.pm Object.pm Output.pm Property.pm Util.pm WrapParser.pm
+files_tools_genwrap = generate_wrap_init.pl
+files_tools_perl = $(files_tools_genwrap) gmmproc.in
+SUBDIRS = m4 pm extra_defs_gen
+EXTRA_DIST = Makefile_list_of_sources.am_fragment $(files_tools_perl) README TODO enum.pl
+gmmproc_bin_SCRIPTS = gmmproc $(files_tools_genwrap)
+gmmproc_bindir = $(libdir)/glibmm-2.4/proc
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/tools/Makefile_list_of_sources.am_fragment $(top_srcdir)/tools/m4/Makefile_list_of_sources.am_fragment $(top_srcdir)/tools/pm/Makefile_list_of_sources.am_fragment $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tools/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+gmmproc: $(top_builddir)/config.status $(srcdir)/gmmproc.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+generate_wrap_init.pl: $(top_builddir)/config.status $(srcdir)/generate_wrap_init.pl.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+install-gmmproc_binSCRIPTS: $(gmmproc_bin_SCRIPTS)
+ @$(NORMAL_INSTALL)
+ test -z "$(gmmproc_bindir)" || $(mkdir_p) "$(DESTDIR)$(gmmproc_bindir)"
+ @list='$(gmmproc_bin_SCRIPTS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f $$d$$p; then \
+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+ echo " $(gmmproc_binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(gmmproc_bindir)/$$f'"; \
+ $(gmmproc_binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(gmmproc_bindir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-gmmproc_binSCRIPTS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(gmmproc_bin_SCRIPTS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+ echo " rm -f '$(DESTDIR)$(gmmproc_bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(gmmproc_bindir)/$$f"; \
+ done
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/../tools $(distdir)/../tools/m4 $(distdir)/../tools/pm
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(SCRIPTS)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(gmmproc_bindir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-gmmproc_binSCRIPTS
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-gmmproc_binSCRIPTS uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-libtool clean-recursive ctags \
+ ctags-recursive distclean distclean-generic distclean-libtool \
+ distclean-recursive distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am \
+ install-gmmproc_binSCRIPTS install-info install-info-am \
+ install-man install-strip installcheck installcheck-am \
+ installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive \
+ mostlyclean mostlyclean-generic mostlyclean-libtool \
+ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+ uninstall uninstall-am uninstall-gmmproc_binSCRIPTS \
+ uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libs/glibmm2/tools/Makefile_list_of_sources.am_fragment b/libs/glibmm2/tools/Makefile_list_of_sources.am_fragment
new file mode 100644
index 0000000000..dcdc9ab416
--- /dev/null
+++ b/libs/glibmm2/tools/Makefile_list_of_sources.am_fragment
@@ -0,0 +1,5 @@
+include $(top_srcdir)/tools/m4/Makefile_list_of_sources.am_fragment
+include $(top_srcdir)/tools/pm/Makefile_list_of_sources.am_fragment
+
+files_tools_genwrap = generate_wrap_init.pl
+files_tools_perl = $(files_tools_genwrap) gmmproc.in
diff --git a/libs/glibmm2/tools/README b/libs/glibmm2/tools/README
new file mode 100644
index 0000000000..ae015279d7
--- /dev/null
+++ b/libs/glibmm2/tools/README
@@ -0,0 +1,4 @@
+This directory contains the gtkmm preprocessor used for wrapping
+gtk+ objects.
+
+See docs/internal/ for some gtkmmproc documentation.
diff --git a/libs/glibmm2/tools/TODO b/libs/glibmm2/tools/TODO
new file mode 100644
index 0000000000..75598b9523
--- /dev/null
+++ b/libs/glibmm2/tools/TODO
@@ -0,0 +1,12 @@
+* streams
+ - Please give more information. murrayc
+
+* Incorporate new GtkDefs parser.
+ What does this mean? murrayc.
+
+* Get gtkmmproc to run outside install directory.
+ What does this mean? It runs for gtkmm and it runs installed for libgnome*mm.
+
+
+
+
diff --git a/libs/glibmm2/tools/enum.pl b/libs/glibmm2/tools/enum.pl
new file mode 100644
index 0000000000..8cc6ff9011
--- /dev/null
+++ b/libs/glibmm2/tools/enum.pl
@@ -0,0 +1,233 @@
+#! /usr/bin/perl
+
+# The lisp definitions for flags does not include order.
+# thus we must extract it ourselves.
+# Usage: ./enum.pl /gnome/head/cvs/gconf/gconf/*.h > gconf_enums.defs
+
+use warnings;
+
+my %token;
+$module="none";
+
+while ($ARGV[0] =~ /^--(\S+)/)
+{
+ shift @ARGV;
+ $module=shift @ARGV if ($1 eq "module");
+ if ($1 eq "help")
+ {
+ print "enum.pl [--module modname] header_files ....\n";
+ exit 0;
+ }
+}
+
+foreach $file (@ARGV)
+{
+ &parse($file);
+}
+
+exit;
+
+
+
+# parse enums from C
+sub parse
+{
+ my ($file)=@_;
+
+ $from=0;
+ open(FILE,$file);
+
+ $enum=0;
+ $deprecated=0;
+ $comment=0;
+
+ while(<FILE>)
+ {
+ if($comment)
+ {
+ # end of multiline comment
+ $comment = 0 if(/\*\//);
+ next;
+ }
+
+ $deprecated = 1 if(s/^#ifndef [A-Z_]+_DISABLE_DEPRECATED//);
+
+ ++$deprecated if($deprecated > 0 && /^#\s*if/);
+ --$deprecated if($deprecated > 0 && /^#\s*endif/);
+
+ next if($deprecated > 0);
+
+ # filter single-line comments
+ s/\/\*.*\*\///g;
+
+ # begin of multiline comment
+ if(/\/\*/)
+ {
+ $comment = 1;
+ next;
+ }
+
+ s/','/\%\%COMMA\%\%/;
+ s/'}'/\%\%RBRACE\%\%/;
+ if (/^\s*typedef enum/ )
+ {
+ print ";; From $file\n\n" if (!$from);
+ $from=1;
+ $enum=1;
+ next;
+ }
+
+ if ($enum && /\}/)
+ {
+ $enum=0;
+ &process($line,$_);
+ $line="";
+ }
+ $line.=$_ if ($enum);
+ }
+}
+
+
+# convert enums to lisp
+sub process
+{
+ my ($line,$def)=@_;
+
+ $def=~s/\s*\}\s*//g;
+ $def=~s/\s*;\s*$//;
+ my $c_name=$def;
+
+ $line=~s/\s+/ /g;
+ $line=~s/\/\*.*\*\///g;
+ $line=~s/\s*{\s*//;
+
+ my $entity = "enum";
+ $c_name =~ /^([A-Z][a-z]*)/;
+ $module = $1;
+ $def =~ s/$module//;
+
+ @c_name=();
+ @name=();
+ @number=();
+
+ $val=0;
+ foreach $i (split(/,/,$line))
+ {
+ $i=~s/^\s+//;
+ $i=~s/\s+$//;
+ if ($i =~ /^\S+$/)
+ {
+ push(@c_name,$i);
+ push(@number,sprintf("%d",$val));
+ $token{$i}=$val;
+ }
+ elsif ($i =~ /^(\S+)\s*=\s*(0x[0-9a-fA-F]+)$/ ||
+ $i =~ /^(\S+)\s*=\s*(-?[0-9]+)$/ ||
+ $i =~ /^(\S+)\s*=\s*(1\s*<<\s*[0-9]+)$/
+ )
+ {
+ my ($tmp1, $tmp2) = ($1, $2);
+ push(@c_name, $tmp1);
+ eval("\$val = $tmp2;");
+ $entity = "flags" if($tmp2 =~ /^1\s*<</ || $tmp2 =~ /^0x/);
+ push(@number, $tmp2);
+ $token{$tmp1} = $tmp2;
+ }
+ elsif ($i =~ /^(\S+)\s*=\s*([ _x0-9a-fA-Z|()~]+)$/)
+ {
+ my ($tmp1, $tmp2) = ($1, $2);
+ push(@c_name, $tmp1);
+ $tmp2 =~ s/([A-Z_]+)/($token{$1})/;
+ eval("\$val = $tmp2;");
+ $val = "#error" if(!$val);
+ $val = sprintf("0x%X", $val) if($entity eq "flags");
+ push(@number, $val);
+ $token{$tmp1} = $val;
+ }
+ elsif ($i =~ /^(\S+)\s*=\s*'(.)'$/)
+ {
+ push(@c_name,$1);
+ push(@number,"\'$2\'");
+ $val=ord($2);
+ $token{$1}=$val;
+ }
+ elsif ($i =~ /^(\S+)\s*=\s*(\%\%[A-Z]+\%\%)$/)
+ {
+ $tmp=$1;
+ $_=$2;
+ s/\%\%COMMA\%\%/,/;
+ s/\%\%RBRACE\%\%/]/;
+ push(@c_name,$tmp);
+ push(@number,"\'$_\'");
+ $val=ord($_);
+ $token{$tmp}=$val;
+ }
+ else
+ {
+ #print STDERR "$i\n";
+ }
+ $val++;
+ }
+
+ # remove the prefix to form names
+ &form_names(\@name,\@c_name);
+
+ my $format = "%d";
+ $format = "0x%X" if($entity eq "flags");
+
+ # evaluate any unevaluated values
+ my $j;
+ for ($j=0;$j<$#number+1;$j++)
+ {
+ if ($number[$j]=~/\$/)
+ {
+ $number[$j]=sprintf($format, eval($number[$j]));
+ }
+ }
+
+ #print ";; Enum $def\n\n";
+ print "(define-$entity-extended $def\n";
+ print " (in-module \"$module\")\n";
+ print " (c-name \"$c_name\")\n";
+
+ print " (values\n";
+ for ($j=0;$j<$#c_name+1;$j++)
+ {
+ print " \'(\"$name[$j]\" \"$c_name[$j]\"";
+ print " \"$number[$j]\"" if ($number[$j] ne "");
+ print ")\n";
+ }
+ print " )\n";
+ print ")\n\n";
+}
+
+
+sub form_names
+{
+ my ($name,$c_name)=@_;
+
+ my $len=length($$c_name[0]) - 1;
+ my $j;
+
+ NAME: for ($j=0;$j<$#c_name;$j++)
+ {
+ while (substr($$c_name[$j],$len-1,1) ne "_" ||
+ substr($$c_name[$j],0,$len) ne substr($$c_name[$j+1],0,$len))
+ {
+ $len--;
+ last NAME if ($len <= 0);
+ }
+ #print substr($$c_name[$j],0,$len),"\n";
+ }
+
+ my $prefix=substr($$c_name[0],0,$len);
+
+ for ($j=0;$j<$#c_name+1;$j++)
+ {
+ $_=$$c_name[$j];
+ s/^$prefix//;
+ tr/A-Z_/a-z-/;
+ push(@$name,$_);
+ }
+
+}
diff --git a/libs/glibmm2/tools/extra_defs_gen/.deps/generate_defs_glib.Po b/libs/glibmm2/tools/extra_defs_gen/.deps/generate_defs_glib.Po
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/tools/extra_defs_gen/.deps/generate_defs_glib.Po
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/tools/extra_defs_gen/.deps/generate_extra_defs.Plo b/libs/glibmm2/tools/extra_defs_gen/.deps/generate_extra_defs.Plo
new file mode 100644
index 0000000000..9ce06a81ea
--- /dev/null
+++ b/libs/glibmm2/tools/extra_defs_gen/.deps/generate_extra_defs.Plo
@@ -0,0 +1 @@
+# dummy
diff --git a/libs/glibmm2/tools/extra_defs_gen/Makefile b/libs/glibmm2/tools/extra_defs_gen/Makefile
new file mode 100644
index 0000000000..e44264b8b2
--- /dev/null
+++ b/libs/glibmm2/tools/extra_defs_gen/Makefile
@@ -0,0 +1,562 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# tools/extra_defs_gen/Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+# Build the library, to be installed and used by other defs-generating code:
+
+
+
+srcdir = .
+top_srcdir = ../..
+
+pkgdatadir = $(datadir)/glibmm
+pkglibdir = $(libdir)/glibmm
+pkgincludedir = $(includedir)/glibmm
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = i686-pc-linux-gnu
+host_triplet = i686-pc-linux-gnu
+noinst_PROGRAMS = generate_extra_defs$(EXEEXT)
+subdir = tools/extra_defs_gen
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(sublib_include_HEADERS)
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/scripts/cxx.m4 \
+ $(top_srcdir)/scripts/cxx_std.m4 \
+ $(top_srcdir)/scripts/docgen.m4 \
+ $(top_srcdir)/scripts/glibmm_check_perl.m4 \
+ $(top_srcdir)/scripts/macros.m4 \
+ $(top_srcdir)/scripts/reduced.m4 $(top_srcdir)/scripts/sun.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h \
+ $(top_builddir)/glib/glibmmconfig.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(libdir)" \
+ "$(DESTDIR)$(sublib_includedir)"
+libLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(lib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libglibmm_generate_extra_defs_2_4_la_DEPENDENCIES = \
+ $(am__DEPENDENCIES_1)
+am__objects_1 =
+am__objects_2 = generate_extra_defs.lo
+am_libglibmm_generate_extra_defs_2_4_la_OBJECTS = $(am__objects_1) \
+ $(am__objects_2)
+libglibmm_generate_extra_defs_2_4_la_OBJECTS = \
+ $(am_libglibmm_generate_extra_defs_2_4_la_OBJECTS)
+PROGRAMS = $(noinst_PROGRAMS)
+am_generate_extra_defs_OBJECTS = generate_defs_glib.$(OBJEXT)
+generate_extra_defs_OBJECTS = $(am_generate_extra_defs_OBJECTS)
+generate_extra_defs_DEPENDENCIES = \
+ libglibmm_generate_extra_defs-2.4.la
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -I$(top_builddir)/glib
+depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libglibmm_generate_extra_defs_2_4_la_SOURCES) \
+ $(generate_extra_defs_SOURCES)
+DIST_SOURCES = $(libglibmm_generate_extra_defs_2_4_la_SOURCES) \
+ $(generate_extra_defs_SOURCES)
+sublib_includeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(sublib_include_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run aclocal-1.9 -I ./scripts
+AMDEP_FALSE = #
+AMDEP_TRUE =
+AMTAR = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run tar
+AR = ar
+AS = as
+AUTOCONF = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run autoconf
+AUTOHEADER = :
+AUTOMAKE = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS =
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2 -Wall -Wno-long-long
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DISABLE_DEPRECATED_API_CFLAGS =
+DISABLE_DEPRECATED_CFLAGS =
+DLLTOOL = dlltool
+ECHO = echo
+ECHO_C =
+ECHO_N = -n
+ECHO_T =
+EGREP = grep -E
+EXEEXT =
+F77 =
+FFLAGS =
+GLIBMM_CFLAGS = -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+GLIBMM_LIBS = -Wl,--export-dynamic -lsigc-2.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
+GLIBMM_MAJOR_VERSION = 2
+GLIBMM_MICRO_VERSION = 3
+GLIBMM_MINOR_VERSION = 13
+GLIBMM_RELEASE = 2.13
+GLIBMM_VERSION = 2.13.3
+GTHREAD_CFLAGS = -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+GTHREAD_LIBS = -pthread -lgthread-2.0 -lrt -lglib-2.0
+GTKMMPROC_MERGECDOCS =
+GTKMM_DOXYGEN_INPUT = /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/glib/glibmm/
+GTKMM_FALSE_FALSE =
+GTKMM_FALSE_TRUE = #
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =
+LIBGLIBMM_SO_VERSION = 1:24:0
+LIBOBJS =
+LIBS = $(GLIBMM_LIBS)
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS =
+M4 = m4
+MAINT = #
+MAINTAINER_MODE_FALSE =
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run makeinfo
+OBJDUMP = objdump
+OBJEXT = o
+OS_WIN32_FALSE =
+OS_WIN32_TRUE = #
+PACKAGE = glibmm
+PACKAGE_BUGREPORT =
+PACKAGE_NAME =
+PACKAGE_STRING =
+PACKAGE_TARNAME =
+PACKAGE_VERSION =
+PATH_SEPARATOR = :
+PERL_PATH = /usr/bin/perl
+PKG_CONFIG = /usr/bin/pkg-config
+PLATFORM_WIN32_FALSE =
+PLATFORM_WIN32_TRUE = #
+RANLIB = ranlib
+SET_MAKE =
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 2.13.3
+ac_ct_AR = ar
+ac_ct_AS =
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DLLTOOL =
+ac_ct_F77 =
+ac_ct_OBJDUMP =
+ac_ct_RANLIB = ranlib
+ac_ct_STRIP = strip
+ac_pt_PKG_CONFIG = /usr/bin/pkg-config
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE =
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE =
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = i686-pc-linux-gnu
+build_alias =
+build_cpu = i686
+build_os = linux-gnu
+build_vendor = pc
+datadir = ${prefix}/share
+exec_prefix = ${prefix}
+host = i686-pc-linux-gnu
+host_alias =
+host_cpu = i686
+host_os = linux-gnu
+host_vendor = pc
+includedir = ${prefix}/include
+infodir = ${prefix}/info
+install_sh = /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localstatedir = ${prefix}/var
+mandir = ${prefix}/man
+mkdir_p = mkdir -p --
+oldincludedir = /usr/include
+prefix = /usr/local
+program_transform_name = s,x,x,
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias =
+files_h = generate_extra_defs.h
+files_cc = generate_extra_defs.cc
+no_undefined =
+#no_undefined = -no-undefined
+lib_LTLIBRARIES = libglibmm_generate_extra_defs-2.4.la
+libglibmm_generate_extra_defs_2_4_la_SOURCES = $(files_h) $(files_cc)
+libglibmm_generate_extra_defs_2_4_la_LDFLAGS = $(no_undefined) -version-info $(LIBGLIBMM_SO_VERSION)
+libglibmm_generate_extra_defs_2_4_la_LIBADD = $(GLIBMM_LIBS)
+sublib_includedir = $(includedir)/glibmm-2.4/glibmm_generate_extra_defs
+sublib_include_HEADERS = $(files_h)
+
+# Build the generate_properties_defs utility executable.
+# This is not used to build the rest of glibmm.
+INCLUDES = $(GLIBMM_CFLAGS)
+generate_extra_defs_SOURCES = generate_defs_glib.cc
+generate_extra_defs_LDADD = libglibmm_generate_extra_defs-2.4.la
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cc .lo .o .obj
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/extra_defs_gen/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tools/extra_defs_gen/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+ done
+
+clean-libLTLIBRARIES:
+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libglibmm_generate_extra_defs-2.4.la: $(libglibmm_generate_extra_defs_2_4_la_OBJECTS) $(libglibmm_generate_extra_defs_2_4_la_DEPENDENCIES)
+ $(CXXLINK) -rpath $(libdir) $(libglibmm_generate_extra_defs_2_4_la_LDFLAGS) $(libglibmm_generate_extra_defs_2_4_la_OBJECTS) $(libglibmm_generate_extra_defs_2_4_la_LIBADD) $(LIBS)
+
+clean-noinstPROGRAMS:
+ @list='$(noinst_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+generate_extra_defs$(EXEEXT): $(generate_extra_defs_OBJECTS) $(generate_extra_defs_DEPENDENCIES)
+ @rm -f generate_extra_defs$(EXEEXT)
+ $(CXXLINK) $(generate_extra_defs_LDFLAGS) $(generate_extra_defs_OBJECTS) $(generate_extra_defs_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+include ./$(DEPDIR)/generate_defs_glib.Po
+include ./$(DEPDIR)/generate_extra_defs.Plo
+
+.cc.o:
+ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+# source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+# source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cc.lo:
+ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+# source='$<' object='$@' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-sublib_includeHEADERS: $(sublib_include_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(sublib_includedir)" || $(mkdir_p) "$(DESTDIR)$(sublib_includedir)"
+ @list='$(sublib_include_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(sublib_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(sublib_includedir)/$$f'"; \
+ $(sublib_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(sublib_includedir)/$$f"; \
+ done
+
+uninstall-sublib_includeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(sublib_include_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(sublib_includedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(sublib_includedir)/$$f"; \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS)
+installdirs:
+ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(sublib_includedir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+ clean-noinstPROGRAMS mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-sublib_includeHEADERS
+
+install-exec-am: install-libLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \
+ uninstall-sublib_includeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-libLTLIBRARIES install-man \
+ install-strip install-sublib_includeHEADERS installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-info-am \
+ uninstall-libLTLIBRARIES uninstall-sublib_includeHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libs/glibmm2/tools/extra_defs_gen/Makefile.am b/libs/glibmm2/tools/extra_defs_gen/Makefile.am
new file mode 100644
index 0000000000..871bb4e386
--- /dev/null
+++ b/libs/glibmm2/tools/extra_defs_gen/Makefile.am
@@ -0,0 +1,29 @@
+# Build the library, to be installed and used by other defs-generating code:
+
+files_h = generate_extra_defs.h
+files_cc = generate_extra_defs.cc
+
+if PLATFORM_WIN32
+no_undefined = -no-undefined
+else
+no_undefined =
+endif
+
+lib_LTLIBRARIES = libglibmm_generate_extra_defs-2.4.la
+libglibmm_generate_extra_defs_2_4_la_SOURCES = $(files_h) $(files_cc)
+libglibmm_generate_extra_defs_2_4_la_LDFLAGS = $(no_undefined) -version-info $(LIBGLIBMM_SO_VERSION)
+libglibmm_generate_extra_defs_2_4_la_LIBADD = $(GLIBMM_LIBS)
+
+sublib_includedir = $(includedir)/glibmm-2.4/glibmm_generate_extra_defs
+sublib_include_HEADERS = $(files_h)
+
+
+# Build the generate_properties_defs utility executable.
+# This is not used to build the rest of glibmm.
+
+INCLUDES = $(GLIBMM_CFLAGS)
+LIBS = $(GLIBMM_LIBS)
+
+noinst_PROGRAMS = generate_extra_defs
+generate_extra_defs_SOURCES = generate_defs_glib.cc
+generate_extra_defs_LDADD = libglibmm_generate_extra_defs-2.4.la
diff --git a/libs/glibmm2/tools/extra_defs_gen/Makefile.in b/libs/glibmm2/tools/extra_defs_gen/Makefile.in
new file mode 100644
index 0000000000..893eec016a
--- /dev/null
+++ b/libs/glibmm2/tools/extra_defs_gen/Makefile.in
@@ -0,0 +1,562 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Build the library, to be installed and used by other defs-generating code:
+
+
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+noinst_PROGRAMS = generate_extra_defs$(EXEEXT)
+subdir = tools/extra_defs_gen
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(sublib_include_HEADERS)
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/scripts/cxx.m4 \
+ $(top_srcdir)/scripts/cxx_std.m4 \
+ $(top_srcdir)/scripts/docgen.m4 \
+ $(top_srcdir)/scripts/glibmm_check_perl.m4 \
+ $(top_srcdir)/scripts/macros.m4 \
+ $(top_srcdir)/scripts/reduced.m4 $(top_srcdir)/scripts/sun.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h \
+ $(top_builddir)/glib/glibmmconfig.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(libdir)" \
+ "$(DESTDIR)$(sublib_includedir)"
+libLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(lib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libglibmm_generate_extra_defs_2_4_la_DEPENDENCIES = \
+ $(am__DEPENDENCIES_1)
+am__objects_1 =
+am__objects_2 = generate_extra_defs.lo
+am_libglibmm_generate_extra_defs_2_4_la_OBJECTS = $(am__objects_1) \
+ $(am__objects_2)
+libglibmm_generate_extra_defs_2_4_la_OBJECTS = \
+ $(am_libglibmm_generate_extra_defs_2_4_la_OBJECTS)
+PROGRAMS = $(noinst_PROGRAMS)
+am_generate_extra_defs_OBJECTS = generate_defs_glib.$(OBJEXT)
+generate_extra_defs_OBJECTS = $(am_generate_extra_defs_OBJECTS)
+generate_extra_defs_DEPENDENCIES = \
+ libglibmm_generate_extra_defs-2.4.la
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -I$(top_builddir)/glib
+depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libglibmm_generate_extra_defs_2_4_la_SOURCES) \
+ $(generate_extra_defs_SOURCES)
+DIST_SOURCES = $(libglibmm_generate_extra_defs_2_4_la_SOURCES) \
+ $(generate_extra_defs_SOURCES)
+sublib_includeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(sublib_include_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISABLE_DEPRECATED_API_CFLAGS = @DISABLE_DEPRECATED_API_CFLAGS@
+DISABLE_DEPRECATED_CFLAGS = @DISABLE_DEPRECATED_CFLAGS@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GLIBMM_CFLAGS = @GLIBMM_CFLAGS@
+GLIBMM_LIBS = @GLIBMM_LIBS@
+GLIBMM_MAJOR_VERSION = @GLIBMM_MAJOR_VERSION@
+GLIBMM_MICRO_VERSION = @GLIBMM_MICRO_VERSION@
+GLIBMM_MINOR_VERSION = @GLIBMM_MINOR_VERSION@
+GLIBMM_RELEASE = @GLIBMM_RELEASE@
+GLIBMM_VERSION = @GLIBMM_VERSION@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKMMPROC_MERGECDOCS = @GTKMMPROC_MERGECDOCS@
+GTKMM_DOXYGEN_INPUT = @GTKMM_DOXYGEN_INPUT@
+GTKMM_FALSE_FALSE = @GTKMM_FALSE_FALSE@
+GTKMM_FALSE_TRUE = @GTKMM_FALSE_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBGLIBMM_SO_VERSION = @LIBGLIBMM_SO_VERSION@
+LIBOBJS = @LIBOBJS@
+LIBS = $(GLIBMM_LIBS)
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+M4 = @M4@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS_WIN32_FALSE = @OS_WIN32_FALSE@
+OS_WIN32_TRUE = @OS_WIN32_TRUE@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL_PATH = @PERL_PATH@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_WIN32_FALSE = @PLATFORM_WIN32_FALSE@
+PLATFORM_WIN32_TRUE = @PLATFORM_WIN32_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_AS = @ac_ct_AS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+files_h = generate_extra_defs.h
+files_cc = generate_extra_defs.cc
+@PLATFORM_WIN32_FALSE@no_undefined =
+@PLATFORM_WIN32_TRUE@no_undefined = -no-undefined
+lib_LTLIBRARIES = libglibmm_generate_extra_defs-2.4.la
+libglibmm_generate_extra_defs_2_4_la_SOURCES = $(files_h) $(files_cc)
+libglibmm_generate_extra_defs_2_4_la_LDFLAGS = $(no_undefined) -version-info $(LIBGLIBMM_SO_VERSION)
+libglibmm_generate_extra_defs_2_4_la_LIBADD = $(GLIBMM_LIBS)
+sublib_includedir = $(includedir)/glibmm-2.4/glibmm_generate_extra_defs
+sublib_include_HEADERS = $(files_h)
+
+# Build the generate_properties_defs utility executable.
+# This is not used to build the rest of glibmm.
+INCLUDES = $(GLIBMM_CFLAGS)
+generate_extra_defs_SOURCES = generate_defs_glib.cc
+generate_extra_defs_LDADD = libglibmm_generate_extra_defs-2.4.la
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cc .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/extra_defs_gen/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tools/extra_defs_gen/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+ done
+
+clean-libLTLIBRARIES:
+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libglibmm_generate_extra_defs-2.4.la: $(libglibmm_generate_extra_defs_2_4_la_OBJECTS) $(libglibmm_generate_extra_defs_2_4_la_DEPENDENCIES)
+ $(CXXLINK) -rpath $(libdir) $(libglibmm_generate_extra_defs_2_4_la_LDFLAGS) $(libglibmm_generate_extra_defs_2_4_la_OBJECTS) $(libglibmm_generate_extra_defs_2_4_la_LIBADD) $(LIBS)
+
+clean-noinstPROGRAMS:
+ @list='$(noinst_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+generate_extra_defs$(EXEEXT): $(generate_extra_defs_OBJECTS) $(generate_extra_defs_DEPENDENCIES)
+ @rm -f generate_extra_defs$(EXEEXT)
+ $(CXXLINK) $(generate_extra_defs_LDFLAGS) $(generate_extra_defs_OBJECTS) $(generate_extra_defs_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/generate_defs_glib.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/generate_extra_defs.Plo@am__quote@
+
+.cc.o:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cc.lo:
+@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-sublib_includeHEADERS: $(sublib_include_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(sublib_includedir)" || $(mkdir_p) "$(DESTDIR)$(sublib_includedir)"
+ @list='$(sublib_include_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(sublib_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(sublib_includedir)/$$f'"; \
+ $(sublib_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(sublib_includedir)/$$f"; \
+ done
+
+uninstall-sublib_includeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(sublib_include_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(sublib_includedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(sublib_includedir)/$$f"; \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS)
+installdirs:
+ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(sublib_includedir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+ clean-noinstPROGRAMS mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-sublib_includeHEADERS
+
+install-exec-am: install-libLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \
+ uninstall-sublib_includeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-libLTLIBRARIES install-man \
+ install-strip install-sublib_includeHEADERS installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-info-am \
+ uninstall-libLTLIBRARIES uninstall-sublib_includeHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libs/glibmm2/tools/extra_defs_gen/generate_defs_glib.cc b/libs/glibmm2/tools/extra_defs_gen/generate_defs_glib.cc
new file mode 100644
index 0000000000..8da95178fb
--- /dev/null
+++ b/libs/glibmm2/tools/extra_defs_gen/generate_defs_glib.cc
@@ -0,0 +1,34 @@
+/* $Id: generate_defs_glib.cc,v 1.2 2003/04/19 12:39:05 murrayc Exp $ */
+
+/* generate_defs_gtk.cc
+ *
+ * Copyright (C) 2001 The Free Software Foundation
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "generate_extra_defs.h"
+//#include <glib/glib.h>
+
+int main (int, char**)
+{
+ //glib_init(&argc, &argv);
+
+ //std::cout << get_defs( ATK_TYPE_HYPERLINK )
+
+ std::cout << "No glib types were examined.";
+
+ return 0;
+}
diff --git a/libs/glibmm2/tools/extra_defs_gen/generate_extra_defs.cc b/libs/glibmm2/tools/extra_defs_gen/generate_extra_defs.cc
new file mode 100644
index 0000000000..3df442ab12
--- /dev/null
+++ b/libs/glibmm2/tools/extra_defs_gen/generate_extra_defs.cc
@@ -0,0 +1,217 @@
+/* $Id: generate_extra_defs.cc,v 1.3 2005/02/13 14:30:19 murrayc Exp $ */
+
+/* generate_extra_defs.cc
+ *
+ * Copyright (C) 2001 The Free Software Foundation
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include "generate_extra_defs.h"
+
+std::string get_properties(GType gtype)
+{
+ std::string strResult;
+ std::string strObjectName = g_type_name(gtype);
+
+ //Get the list of properties:
+ GObjectClass* pGClass = G_OBJECT_CLASS(g_type_class_ref(gtype));
+
+ guint iCount = 0;
+ GParamSpec** ppParamSpec = g_object_class_list_properties (pGClass, &iCount);
+
+ for(guint i = 0; i < iCount; i++)
+ {
+ GParamSpec* pParamSpec = ppParamSpec[i];
+ if(pParamSpec)
+ {
+ //Name and type:
+ std::string strName = g_param_spec_get_name(pParamSpec);
+ std::string strTypeName = G_PARAM_SPEC_TYPE_NAME(pParamSpec);
+
+ const gchar* pchBlurb = g_param_spec_get_blurb(pParamSpec);
+ std::string strDocs = (pchBlurb ? pchBlurb : std::string());
+
+ strResult += "(define-property " + strName + "\n";
+ strResult += " (of-object \"" + strObjectName + "\")\n";
+ strResult += " (prop-type \"" + strTypeName + "\")\n";
+ strResult += " (docs \"" + strDocs + "\")\n";
+
+ //Flags:
+ GParamFlags flags = pParamSpec->flags;
+ bool bReadable = (flags & G_PARAM_READABLE) == G_PARAM_READABLE;
+ bool bWritable = (flags & G_PARAM_WRITABLE) == G_PARAM_WRITABLE;
+ bool bConstructOnly = (flags & G_PARAM_CONSTRUCT_ONLY) == G_PARAM_CONSTRUCT_ONLY;
+
+ //#t and #f aren't documented, but I guess that it's correct based on the example in the .defs spec.
+ const std::string strTrue = "#t";
+ const std::string strFalse = "#f";
+
+ strResult += " (readable " + (bReadable ? strTrue : strFalse) + ")\n";
+ strResult += " (writable " + (bWritable ? strTrue : strFalse) + ")\n";
+ strResult += " (construct-only " + (bConstructOnly ? strTrue : strFalse) + ")\n";
+
+ strResult += ")\n\n"; //close (define-property
+ }
+ }
+
+ g_free(ppParamSpec);
+ g_type_class_unref(pGClass); //to match the g_type_class_ref() above.
+
+ return strResult;
+}
+
+std::string get_type_name(GType gtype) //Adds a * if necessary.
+{
+ std::string strTypeName = g_type_name(gtype);
+
+ if( g_type_is_a(gtype, G_TYPE_OBJECT) || g_type_is_a(gtype, G_TYPE_BOXED) )
+ strTypeName += "*"; //Add * to show that it's a pointer.
+ else if( g_type_is_a(gtype, G_TYPE_STRING) )
+ strTypeName = "gchar*"; //g_type_name() returns "gchararray".
+
+ return strTypeName;
+}
+
+std::string get_type_name_parameter(GType gtype)
+{
+ std::string strTypeName = get_type_name(gtype);
+
+ //All signal parameters that are registered as GTK_TYPE_STRING are actually const gchar*.
+ if(strTypeName == "gchar*")
+ strTypeName = "const-gchar*";
+
+ return strTypeName;
+}
+
+std::string get_type_name_signal(GType gtype)
+{
+ return get_type_name_parameter(gtype); //At the moment, it needs the same stuff.
+}
+
+
+std::string get_signals(GType gtype)
+{
+ std::string strResult;
+ std::string strObjectName = g_type_name(gtype);
+
+ gpointer gclass_ref = 0;
+
+ if(G_TYPE_IS_OBJECT(gtype))
+ gclass_ref = g_type_class_ref(gtype); //Ensures that class_init() is called.
+
+ //Get the list of signals:
+ guint iCount = 0;
+ guint* pIDs = g_signal_list_ids (gtype, &iCount);
+
+ //Loop through the list of signals:
+ if(pIDs)
+ {
+ for(guint i = 0; i < iCount; i++)
+ {
+ guint signal_id = pIDs[i];
+
+ //Name:
+ std::string strName = g_signal_name(signal_id);
+ strResult += "(define-signal " + strName + "\n";
+ strResult += " (of-object \"" + strObjectName + "\")\n";
+
+
+
+ //Other information about the signal:
+ GSignalQuery signalQuery = { 0, 0, 0, GSignalFlags(0), 0, 0, 0, };
+ g_signal_query(signal_id, &signalQuery);
+
+ //Return type:
+ std::string strReturnTypeName = get_type_name_signal( signalQuery.return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE ); //The type is mangled with a flag. Hacky.
+ //bool bReturnTypeHasStaticScope = (signalQuery.return_type & G_SIGNAL_TYPE_STATIC_SCOPE) == G_SIGNAL_TYPE_STATIC_SCOPE;
+ strResult += " (return-type \"" + strReturnTypeName + "\")\n";
+
+
+ //When:
+ {
+ bool bWhenFirst = (signalQuery.signal_flags & G_SIGNAL_RUN_FIRST) == G_SIGNAL_RUN_FIRST;
+ bool bWhenLast = (signalQuery.signal_flags & G_SIGNAL_RUN_LAST) == G_SIGNAL_RUN_LAST;
+
+ std::string strWhen = "unknown";
+
+ if(bWhenFirst && bWhenLast)
+ strWhen = "both";
+ else if(bWhenFirst)
+ strWhen = "first";
+ else if(bWhenLast)
+ strWhen = "last";
+
+ strResult += " (when \"" + strWhen + "\")\n";
+ }
+
+
+ //Loop through the list of parameters:
+ const GType* pParameters = signalQuery.param_types;
+ if(pParameters)
+ {
+ strResult += " (parameters\n";
+
+ for(unsigned i = 0; i < signalQuery.n_params; i++)
+ {
+ GType typeParamMangled = pParameters[i];
+
+ //Parameter name:
+ //TODO: How can we get the real parameter name?
+ gchar* pchNum = g_strdup_printf("%d", i);
+ std::string strParamName = "p" + std::string(pchNum);
+ g_free(pchNum);
+ pchNum = 0;
+
+ //Just like above, for the return type:
+ std::string strTypeName = get_type_name_signal( typeParamMangled & ~G_SIGNAL_TYPE_STATIC_SCOPE ); //The type is mangled with a flag. Hacky.
+ //bool bReturnTypeHasStaticScope = (typeParamMangled & G_SIGNAL_TYPE_STATIC_SCOPE) == G_SIGNAL_TYPE_STATIC_SCOPE;
+
+ strResult += " '(\"" + strTypeName + "\" \"" + strParamName + "\")\n";
+ }
+
+ strResult += " )\n"; //close (properties
+ }
+
+ strResult += ")\n\n"; //close (define=signal
+ }
+ }
+
+ g_free(pIDs);
+
+ if(gclass_ref)
+ g_type_class_unref(gclass_ref); //to match the g_type_class_ref() above.
+
+ return strResult;
+}
+
+
+
+std::string get_defs(GType gtype)
+{
+ std::string strObjectName = g_type_name(gtype);
+ std::string strDefs = ";; From " + strObjectName + "\n\n";
+
+ strDefs += get_signals(gtype);
+
+ if(G_TYPE_IS_OBJECT(gtype))
+ strDefs += get_properties(gtype);
+
+ return strDefs;
+}
+
+
+
diff --git a/libs/glibmm2/tools/extra_defs_gen/generate_extra_defs.h b/libs/glibmm2/tools/extra_defs_gen/generate_extra_defs.h
new file mode 100644
index 0000000000..ad543b3c0e
--- /dev/null
+++ b/libs/glibmm2/tools/extra_defs_gen/generate_extra_defs.h
@@ -0,0 +1,33 @@
+/* $Id: generate_extra_defs.h,v 1.1.1.1 2003/01/07 16:59:04 murrayc Exp $ */
+
+/* generate_extra_defs.h
+ *
+ * Copyright (C) 2001 The Free Software Foundation
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+
+#include <glib-object.h>
+#include <iostream>
+#include <string>
+
+std::string get_defs(GType gtype);
+
+std::string get_properties(GType gtype);
+std::string get_type_name(GType gtype);
+std::string get_type_name_parameter(GType gtype);
+std::string get_type_name_signal(GType gtype);
+std::string get_signals(GType gtype);
diff --git a/libs/glibmm2/tools/generate_wrap_init.pl b/libs/glibmm2/tools/generate_wrap_init.pl
new file mode 100644
index 0000000000..2f295ac7a3
--- /dev/null
+++ b/libs/glibmm2/tools/generate_wrap_init.pl
@@ -0,0 +1,392 @@
+#! /usr/bin/perl
+#
+# tools/generate_wrap_init.pl. Generated from generate_wrap_init.pl.in by configure.
+#
+
+use strict;
+
+my @namespace_whole = (); # list of strings.
+my $function_prefix = "";
+my $parent_dir = ""; # e.g. gtkmm
+my $path = "gtk--";
+my $debug = 0;
+my @filenames_headers = ();
+my %objects = ();
+my %exceptions = ();
+my %namespaces = (); # hashmap of lists of strings.
+my %basenames = ();
+my %win32_nowrap = ();
+my %deprecated = ();
+
+# Loop through command line arguments, setting variables:
+while ($ARGV[0] =~ /^-/)
+{
+ if ($ARGV[0] =~ /--namespace=(\S+)/)
+ {
+ push(@namespace_whole, $1);
+
+ if($parent_dir eq "")
+ { $parent_dir = lc($1) . "mm"; }
+ }
+ elsif ($ARGV[0] =~ /--function_prefix=(\S+)/)
+ {
+ $function_prefix = "$1";
+ }
+ elsif ($ARGV[0] =~ /--parent_dir=(\S+)/)
+ {
+ $parent_dir = "$1";
+ }
+ elsif
+ (
+ $ARGV[0] =~ /--debug/) {$debug = 1;
+ }
+ elsif ($ARGV[0] =~ /--path=(\S+)/)
+ {
+ $path = "$1";
+ }
+ else
+ {
+ print "Error: unknown option $ARGV[0]\n";
+ exit;
+ }
+
+ shift @ARGV;
+}
+
+
+
+while ($ARGV[0])
+{
+ if ($debug) {warn "Processing file : $ARGV[0]\n";}
+
+ my $filename = $ARGV[0];
+ open FILE, $filename or die "Couldn't open file $ARGV[0] : $!\n";
+
+ # my $file = $ARGV[0];
+ # $file =~ s/.*\/([^\/]+)$/$1/;
+ # $file =~ s/\.hg//;
+ my @tmpnamespace = @namespace_whole;
+ my $cppname = "";
+ my $cname = "";
+ my $ccast = "";
+ while (<FILE>)
+ {
+ if (/CLASS_START\((\w+)\)/) #We need a new way to get the namespace.
+ {
+ print "generate_wrap_init: namespace found: $1\n";
+ push(@tmpnamespace, $1);
+ }
+ elsif (/_CLASS_GOBJECT\s*\(/) #TODO: There is duplication of code here.
+ {
+ my $line = $_;
+ while ($line !~ /\)/ && ($_ = <FILE>))
+ {
+ $line .= $_;
+ }
+
+ $line =~ s/^.*_CLASS_GOBJECT\s*\(//;
+ $line =~ s/\s+//g;
+ ($cppname, $cname, $ccast) = split(/,/, $line);
+
+ $objects{$cppname} = $cname;
+ @{$namespaces{$cppname}} = ( @tmpnamespace ); #both are lists of strings
+ $basenames{$cppname} = lc($ccast);
+ }
+ elsif (/_CLASS_GTKOBJECT\s*\(/)
+ {
+ my $line = $_;
+ while ($line !~ /\)/ && ($_ = <FILE>))
+ {
+ $line .= $_;
+ }
+
+ $line =~ s/^.*_CLASS_GTKOBJECT\s*\(//;
+ $line =~ s/\s+//g;
+ ($cppname, $cname, $ccast) = split(/,/, $line);
+
+ #TODO: Remove this hack eventually.
+ if( ($cname ne "GtkTree") && ($cname ne "GtkTreeItem") && ($cname ne "GtkText") )
+ {
+ $objects{$cppname} = $cname;
+ @{$namespaces{$cppname}} = ( @tmpnamespace ); #both are lists of strings
+ $basenames{$cppname} = lc($ccast);
+ }
+ }
+ elsif (/_WRAP_GERROR\s*\(/) #TODO: There is duplication of code here.
+ {
+ my $line = $_;
+ while ($line !~ /\)/ && ($_ = <FILE>))
+ {
+ $line .= $_;
+ }
+
+ $line =~ s/^.*_WRAP_GERROR\s*\(//;
+ $line =~ s/\s+//g;
+ $line =~ s/\)//;
+ ($cppname, $cname, $ccast) = split(/,/, $line);
+
+ $exceptions{$cppname} = $cname;
+ @{$namespaces{$cppname}} = ( @tmpnamespace ); #both are lists of strings
+ $basenames{$cppname} = lc($ccast);
+ }
+ elsif (/_GTKMMPROC_WIN32_NO_WRAP/)
+ {
+ $win32_nowrap{$cppname} = 1;
+ }
+ elsif (/_DEPRECATED/)
+ {
+ $deprecated{$cppname} = 1;
+ }
+ }
+
+ # Store header filename so that we can #include it later:
+ my $filename_header = $filename;
+ $filename_header =~ s/.*\/([^\/]+)\.hg/$1.h/;
+ push(@filenames_headers, $filename_header);
+
+ shift @ARGV;
+ close(FILE);
+}
+
+# my $namespace_whole_lower = lc($namespace_whole);
+
+print << "EOF";
+
+#include <glib.h>
+
+// Disable the 'const' function attribute of the get_type() functions.
+// GCC would optimize them out because we don't use the return value.
+#undef G_GNUC_CONST
+#define G_GNUC_CONST /* empty */
+
+#include <${parent_dir}/wrap_init.h>
+#include <glibmm/error.h>
+#include <glibmm/object.h>
+
+// #include the widget headers so that we can call the get_type() static methods:
+
+EOF
+
+foreach( @filenames_headers )
+{
+ print "#include \"" . $_ . "\"\n";
+}
+
+print "\n";
+
+# Here we have to be subtle. The gtkmm objects are easy, they all go
+# into the Gtk namespace. But in gnomemm, some go into the Gnome
+# namespace (most of them), and some into the Gtk one (because the
+# corresponding widget is Gtk-prefixed, e.g. GtkTed, GtkDial, etc...
+
+# First, the Gtk namespace
+
+print "extern \"C\"\n";
+print "{\n";
+print "\n//Declarations of the *_get_type() functions:\n\n";
+
+my $i = 0;
+foreach $i (sort keys %objects)
+{
+ if( $deprecated{$i} eq 1 )
+ {
+ # The uc(parent_dir) is a bit of a hack. One day it will get it wrong.
+ print "#ifndef " . uc($parent_dir) ."_DISABLE_DEPRECATED\n"
+ }
+
+ #On Win32, these classes are not compiled:
+ if( $win32_nowrap{$i} eq 1 )
+ {
+ print "#ifndef G_OS_WIN32\n"
+ }
+
+ print "GType $basenames{$i}_get_type(void);\n";
+
+ if( $win32_nowrap{$i} eq 1 )
+ {
+ print "#endif //G_OS_WIN32\n"
+ }
+
+ if( $deprecated{$i} eq 1 )
+ {
+ print "#endif // *_DISABLE_DEPRECATED\n"
+ }
+}
+
+print "\n//Declarations of the *_error_quark() functions:\n\n";
+
+my $i = 0;
+foreach $i (sort keys %exceptions)
+{
+ print "GQuark $basenames{$i}_quark(void);\n";
+}
+
+print "} // extern \"C\"\n";
+print "\n";
+
+print "\n//Declarations of the *_Class::wrap_new() methods, instead of including all the private headers:\n\n";
+
+my $i = 0;
+foreach $i (sort keys %objects)
+{
+ if( $deprecated{$i} eq 1 )
+ {
+ # The uc(parent_dir) is a bit of a hack. One day it will get it wrong.
+ print "#ifndef " . uc($parent_dir) ."_DISABLE_DEPRECATED\n"
+ }
+
+ #On Win32, these classes are not compiled:
+ if( $win32_nowrap{$i} eq 1 )
+ {
+ print "#ifndef G_OS_WIN32\n"
+ }
+
+ my $namespace_declarations = "";
+ my $namespace_close = "";
+ foreach ( @{$namespaces{$i}} )
+ {
+ $namespace_declarations .= "namespace $_ { ";
+ $namespace_close .= " }";
+ }
+
+ print "${namespace_declarations} class ${i}_Class { public: static Glib::ObjectBase* wrap_new(GObject*); }; ${namespace_close}\n";
+
+ if( $win32_nowrap{$i} eq 1 )
+ {
+ print "#endif //G_OS_WIN32\n"
+ }
+
+ if( $deprecated{$i} eq 1 )
+ {
+ print "#endif // *_DISABLE_DEPRECATED\n"
+ }
+}
+
+# print "\n//Declarations of the *Error::throw_func() methods:\n\n";
+#
+# my $i = 0;
+# foreach $i (sort keys %exceptions)
+# {
+# my $namespace_declarations = "";
+# my $namespace_close = "";
+# foreach ( @{$namespaces{$i}} )
+# {
+# $namespace_declarations .= "namespace $_ { ";
+# $namespace_close .= " }";
+# }
+#
+# print "${namespace_declarations} class ${i} { public: static void throw_func(GError*); }; ${namespace_close}\n";
+# }
+
+my $namespace_whole_declarations = "";
+my $namespace_whole_close = "";
+foreach( @namespace_whole )
+{
+ $namespace_whole_declarations .= "namespace " . $_ ." { ";
+ $namespace_whole_close = "} //" . $_ . "\n" . $namespace_whole_close;
+}
+
+print "\n";
+print "$namespace_whole_declarations\n";
+print "\n";
+print "void " .$function_prefix . "wrap_init()\n{\n";
+
+
+# Generate namespace::wrap_init() body
+#
+
+print " // Register Error domains:\n";
+
+foreach $i (sort keys %exceptions)
+{
+ my $namespace_prefix = "";
+ foreach( @{$namespaces{$i}} )
+ {
+ $namespace_prefix .= $_ ."::";
+ }
+
+ print " Glib::Error::register_domain($basenames{$i}_quark(), &", "${namespace_prefix}${i}::throw_func);\n";
+}
+
+print "\n";
+print "// Map gtypes to gtkmm wrapper-creation functions:\n";
+
+foreach $i (sort keys %objects)
+{
+ if( $deprecated{$i} eq 1 )
+ {
+ # The uc(parent_dir) is a bit of a hack. One day it will get it wrong.
+ print "#ifndef " . uc($parent_dir) ."_DISABLE_DEPRECATED\n"
+ }
+
+ #On Win32, these classes are not compiled:
+ if( $win32_nowrap{$i} eq 1 )
+ {
+ print "#ifndef G_OS_WIN32\n"
+ }
+
+ my $namespace_prefix = "";
+ foreach( @{$namespaces{$i}} )
+ {
+ $namespace_prefix .= $_ ."::";
+ }
+
+ print " Glib::wrap_register($basenames{$i}_get_type(), &", "${namespace_prefix}${i}_Class::wrap_new);\n";
+
+ if( $win32_nowrap{$i} eq 1 )
+ {
+ print "#endif //G_OS_WIN32\n"
+ }
+
+ if( $deprecated{$i} eq 1 )
+ {
+ print "#endif // *_DISABLE_DEPRECATED\n"
+ }
+}
+
+print "\n";
+print " // Register the gtkmm gtypes:\n";
+
+foreach $i (sort keys %objects)
+{
+ if( $deprecated{$i} eq 1 )
+ {
+ # The uc(parent_dir) is a bit of a hack. One day it will get it wrong.
+ print "#ifndef " . uc($parent_dir) ."_DISABLE_DEPRECATED\n"
+ }
+
+ #On Win32, these classes are not compiled:
+ if( $win32_nowrap{$i} eq 1 )
+ {
+ print "#ifndef G_OS_WIN32\n"
+ }
+
+ my $namespace_prefix = "";
+ foreach( @{$namespaces{$i}} )
+ {
+ $namespace_prefix .= $_ ."::";
+ }
+
+ print " ${namespace_prefix}${i}::get_type();\n";
+
+ if( $win32_nowrap{$i} eq 1 )
+ {
+ print "#endif //G_OS_WIN32\n"
+ }
+
+ if( $deprecated{$i} eq 1 )
+ {
+ print "#endif // *_DISABLE_DEPRECATED\n"
+ }
+}
+
+print << "EOF";
+
+} // wrap_init()
+
+$namespace_whole_close
+
+EOF
+
+exit 0;
+
diff --git a/libs/glibmm2/tools/generate_wrap_init.pl.in b/libs/glibmm2/tools/generate_wrap_init.pl.in
new file mode 100644
index 0000000000..202b58742c
--- /dev/null
+++ b/libs/glibmm2/tools/generate_wrap_init.pl.in
@@ -0,0 +1,392 @@
+#! @PERL_PATH@
+#
+# @configure_input@
+#
+
+use strict;
+
+my @namespace_whole = (); # list of strings.
+my $function_prefix = "";
+my $parent_dir = ""; # e.g. gtkmm
+my $path = "gtk--";
+my $debug = 0;
+my @filenames_headers = ();
+my %objects = ();
+my %exceptions = ();
+my %namespaces = (); # hashmap of lists of strings.
+my %basenames = ();
+my %win32_nowrap = ();
+my %deprecated = ();
+
+# Loop through command line arguments, setting variables:
+while ($ARGV[0] =~ /^-/)
+{
+ if ($ARGV[0] =~ /--namespace=(\S+)/)
+ {
+ push(@namespace_whole, $1);
+
+ if($parent_dir eq "")
+ { $parent_dir = lc($1) . "mm"; }
+ }
+ elsif ($ARGV[0] =~ /--function_prefix=(\S+)/)
+ {
+ $function_prefix = "$1";
+ }
+ elsif ($ARGV[0] =~ /--parent_dir=(\S+)/)
+ {
+ $parent_dir = "$1";
+ }
+ elsif
+ (
+ $ARGV[0] =~ /--debug/) {$debug = 1;
+ }
+ elsif ($ARGV[0] =~ /--path=(\S+)/)
+ {
+ $path = "$1";
+ }
+ else
+ {
+ print "Error: unknown option $ARGV[0]\n";
+ exit;
+ }
+
+ shift @ARGV;
+}
+
+
+
+while ($ARGV[0])
+{
+ if ($debug) {warn "Processing file : $ARGV[0]\n";}
+
+ my $filename = $ARGV[0];
+ open FILE, $filename or die "Couldn't open file $ARGV[0] : $!\n";
+
+ # my $file = $ARGV[0];
+ # $file =~ s/.*\/([^\/]+)$/$1/;
+ # $file =~ s/\.hg//;
+ my @tmpnamespace = @namespace_whole;
+ my $cppname = "";
+ my $cname = "";
+ my $ccast = "";
+ while (<FILE>)
+ {
+ if (/CLASS_START\((\w+)\)/) #We need a new way to get the namespace.
+ {
+ print "generate_wrap_init: namespace found: $1\n";
+ push(@tmpnamespace, $1);
+ }
+ elsif (/_CLASS_GOBJECT\s*\(/) #TODO: There is duplication of code here.
+ {
+ my $line = $_;
+ while ($line !~ /\)/ && ($_ = <FILE>))
+ {
+ $line .= $_;
+ }
+
+ $line =~ s/^.*_CLASS_GOBJECT\s*\(//;
+ $line =~ s/\s+//g;
+ ($cppname, $cname, $ccast) = split(/,/, $line);
+
+ $objects{$cppname} = $cname;
+ @{$namespaces{$cppname}} = ( @tmpnamespace ); #both are lists of strings
+ $basenames{$cppname} = lc($ccast);
+ }
+ elsif (/_CLASS_GTKOBJECT\s*\(/)
+ {
+ my $line = $_;
+ while ($line !~ /\)/ && ($_ = <FILE>))
+ {
+ $line .= $_;
+ }
+
+ $line =~ s/^.*_CLASS_GTKOBJECT\s*\(//;
+ $line =~ s/\s+//g;
+ ($cppname, $cname, $ccast) = split(/,/, $line);
+
+ #TODO: Remove this hack eventually.
+ if( ($cname ne "GtkTree") && ($cname ne "GtkTreeItem") && ($cname ne "GtkText") )
+ {
+ $objects{$cppname} = $cname;
+ @{$namespaces{$cppname}} = ( @tmpnamespace ); #both are lists of strings
+ $basenames{$cppname} = lc($ccast);
+ }
+ }
+ elsif (/_WRAP_GERROR\s*\(/) #TODO: There is duplication of code here.
+ {
+ my $line = $_;
+ while ($line !~ /\)/ && ($_ = <FILE>))
+ {
+ $line .= $_;
+ }
+
+ $line =~ s/^.*_WRAP_GERROR\s*\(//;
+ $line =~ s/\s+//g;
+ $line =~ s/\)//;
+ ($cppname, $cname, $ccast) = split(/,/, $line);
+
+ $exceptions{$cppname} = $cname;
+ @{$namespaces{$cppname}} = ( @tmpnamespace ); #both are lists of strings
+ $basenames{$cppname} = lc($ccast);
+ }
+ elsif (/_GTKMMPROC_WIN32_NO_WRAP/)
+ {
+ $win32_nowrap{$cppname} = 1;
+ }
+ elsif (/_DEPRECATED/)
+ {
+ $deprecated{$cppname} = 1;
+ }
+ }
+
+ # Store header filename so that we can #include it later:
+ my $filename_header = $filename;
+ $filename_header =~ s/.*\/([^\/]+)\.hg/$1.h/;
+ push(@filenames_headers, $filename_header);
+
+ shift @ARGV;
+ close(FILE);
+}
+
+# my $namespace_whole_lower = lc($namespace_whole);
+
+print << "EOF";
+
+#include <glib.h>
+
+// Disable the 'const' function attribute of the get_type() functions.
+// GCC would optimize them out because we don't use the return value.
+#undef G_GNUC_CONST
+#define G_GNUC_CONST /* empty */
+
+#include <${parent_dir}/wrap_init.h>
+#include <glibmm/error.h>
+#include <glibmm/object.h>
+
+// #include the widget headers so that we can call the get_type() static methods:
+
+EOF
+
+foreach( @filenames_headers )
+{
+ print "#include \"" . $_ . "\"\n";
+}
+
+print "\n";
+
+# Here we have to be subtle. The gtkmm objects are easy, they all go
+# into the Gtk namespace. But in gnomemm, some go into the Gnome
+# namespace (most of them), and some into the Gtk one (because the
+# corresponding widget is Gtk-prefixed, e.g. GtkTed, GtkDial, etc...
+
+# First, the Gtk namespace
+
+print "extern \"C\"\n";
+print "{\n";
+print "\n//Declarations of the *_get_type() functions:\n\n";
+
+my $i = 0;
+foreach $i (sort keys %objects)
+{
+ if( $deprecated{$i} eq 1 )
+ {
+ # The uc(parent_dir) is a bit of a hack. One day it will get it wrong.
+ print "#ifndef " . uc($parent_dir) ."_DISABLE_DEPRECATED\n"
+ }
+
+ #On Win32, these classes are not compiled:
+ if( $win32_nowrap{$i} eq 1 )
+ {
+ print "#ifndef G_OS_WIN32\n"
+ }
+
+ print "GType $basenames{$i}_get_type(void);\n";
+
+ if( $win32_nowrap{$i} eq 1 )
+ {
+ print "#endif //G_OS_WIN32\n"
+ }
+
+ if( $deprecated{$i} eq 1 )
+ {
+ print "#endif // *_DISABLE_DEPRECATED\n"
+ }
+}
+
+print "\n//Declarations of the *_error_quark() functions:\n\n";
+
+my $i = 0;
+foreach $i (sort keys %exceptions)
+{
+ print "GQuark $basenames{$i}_quark(void);\n";
+}
+
+print "} // extern \"C\"\n";
+print "\n";
+
+print "\n//Declarations of the *_Class::wrap_new() methods, instead of including all the private headers:\n\n";
+
+my $i = 0;
+foreach $i (sort keys %objects)
+{
+ if( $deprecated{$i} eq 1 )
+ {
+ # The uc(parent_dir) is a bit of a hack. One day it will get it wrong.
+ print "#ifndef " . uc($parent_dir) ."_DISABLE_DEPRECATED\n"
+ }
+
+ #On Win32, these classes are not compiled:
+ if( $win32_nowrap{$i} eq 1 )
+ {
+ print "#ifndef G_OS_WIN32\n"
+ }
+
+ my $namespace_declarations = "";
+ my $namespace_close = "";
+ foreach ( @{$namespaces{$i}} )
+ {
+ $namespace_declarations .= "namespace $_ { ";
+ $namespace_close .= " }";
+ }
+
+ print "${namespace_declarations} class ${i}_Class { public: static Glib::ObjectBase* wrap_new(GObject*); }; ${namespace_close}\n";
+
+ if( $win32_nowrap{$i} eq 1 )
+ {
+ print "#endif //G_OS_WIN32\n"
+ }
+
+ if( $deprecated{$i} eq 1 )
+ {
+ print "#endif // *_DISABLE_DEPRECATED\n"
+ }
+}
+
+# print "\n//Declarations of the *Error::throw_func() methods:\n\n";
+#
+# my $i = 0;
+# foreach $i (sort keys %exceptions)
+# {
+# my $namespace_declarations = "";
+# my $namespace_close = "";
+# foreach ( @{$namespaces{$i}} )
+# {
+# $namespace_declarations .= "namespace $_ { ";
+# $namespace_close .= " }";
+# }
+#
+# print "${namespace_declarations} class ${i} { public: static void throw_func(GError*); }; ${namespace_close}\n";
+# }
+
+my $namespace_whole_declarations = "";
+my $namespace_whole_close = "";
+foreach( @namespace_whole )
+{
+ $namespace_whole_declarations .= "namespace " . $_ ." { ";
+ $namespace_whole_close = "} //" . $_ . "\n" . $namespace_whole_close;
+}
+
+print "\n";
+print "$namespace_whole_declarations\n";
+print "\n";
+print "void " .$function_prefix . "wrap_init()\n{\n";
+
+
+# Generate namespace::wrap_init() body
+#
+
+print " // Register Error domains:\n";
+
+foreach $i (sort keys %exceptions)
+{
+ my $namespace_prefix = "";
+ foreach( @{$namespaces{$i}} )
+ {
+ $namespace_prefix .= $_ ."::";
+ }
+
+ print " Glib::Error::register_domain($basenames{$i}_quark(), &", "${namespace_prefix}${i}::throw_func);\n";
+}
+
+print "\n";
+print "// Map gtypes to gtkmm wrapper-creation functions:\n";
+
+foreach $i (sort keys %objects)
+{
+ if( $deprecated{$i} eq 1 )
+ {
+ # The uc(parent_dir) is a bit of a hack. One day it will get it wrong.
+ print "#ifndef " . uc($parent_dir) ."_DISABLE_DEPRECATED\n"
+ }
+
+ #On Win32, these classes are not compiled:
+ if( $win32_nowrap{$i} eq 1 )
+ {
+ print "#ifndef G_OS_WIN32\n"
+ }
+
+ my $namespace_prefix = "";
+ foreach( @{$namespaces{$i}} )
+ {
+ $namespace_prefix .= $_ ."::";
+ }
+
+ print " Glib::wrap_register($basenames{$i}_get_type(), &", "${namespace_prefix}${i}_Class::wrap_new);\n";
+
+ if( $win32_nowrap{$i} eq 1 )
+ {
+ print "#endif //G_OS_WIN32\n"
+ }
+
+ if( $deprecated{$i} eq 1 )
+ {
+ print "#endif // *_DISABLE_DEPRECATED\n"
+ }
+}
+
+print "\n";
+print " // Register the gtkmm gtypes:\n";
+
+foreach $i (sort keys %objects)
+{
+ if( $deprecated{$i} eq 1 )
+ {
+ # The uc(parent_dir) is a bit of a hack. One day it will get it wrong.
+ print "#ifndef " . uc($parent_dir) ."_DISABLE_DEPRECATED\n"
+ }
+
+ #On Win32, these classes are not compiled:
+ if( $win32_nowrap{$i} eq 1 )
+ {
+ print "#ifndef G_OS_WIN32\n"
+ }
+
+ my $namespace_prefix = "";
+ foreach( @{$namespaces{$i}} )
+ {
+ $namespace_prefix .= $_ ."::";
+ }
+
+ print " ${namespace_prefix}${i}::get_type();\n";
+
+ if( $win32_nowrap{$i} eq 1 )
+ {
+ print "#endif //G_OS_WIN32\n"
+ }
+
+ if( $deprecated{$i} eq 1 )
+ {
+ print "#endif // *_DISABLE_DEPRECATED\n"
+ }
+}
+
+print << "EOF";
+
+} // wrap_init()
+
+$namespace_whole_close
+
+EOF
+
+exit 0;
+
diff --git a/libs/glibmm2/tools/gmmproc b/libs/glibmm2/tools/gmmproc
new file mode 100644
index 0000000000..abb6fe03b9
--- /dev/null
+++ b/libs/glibmm2/tools/gmmproc
@@ -0,0 +1,239 @@
+#! /usr/bin/perl
+#
+# tools/gmmproc. Generated from gmmproc.in by configure.
+#
+######################################################################
+# gmmproc (version 4)
+######################################################################
+#
+# *** WARNING: Only modify gmmproc.in. gmmproc is built. ***
+#
+# Copyright 2001, Karl Einar Nelson, Murray Cumming
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+#
+#
+# 'classes':
+# WrapParser: steps through .hg and .ccg files, outputting appropriate m4 code with Outputter.
+# Outputter: Used by WrapParser to ouput wrapper code. Ouputs *.g1 temp file and uses m4 to generate *.g2 from it. Then outputs .h and .cc files.
+# Function: Contains information about C and C++ functions and signals.
+#
+######################################################################
+
+########################## 'main()' ##################################
+
+$main::procdir;
+$main::m4path;
+
+BEGIN {
+ # get prefix info from configure
+ my $prefix = "/usr/local";
+ my $exec_prefix = "${prefix}";
+ my $libdir = "${exec_prefix}/lib";
+
+ # This line must match the install directory in m4/Makefile.am
+ $main::procdir = "$libdir/glibmm-2.4/proc";
+ $main::m4path = "m4";
+
+ # This line must match install dir from pm/Makefile.am
+ push @INC,"$main::procdir/pm";
+}
+
+use strict;
+use warnings;
+
+use Output;
+use WrapParser;
+
+# initialize globals
+@main::macrodirs = ();
+$main::srcdir = ".";
+$main::defsdir = ".";
+$main::source = "";
+$main::debug = 0;
+$main::unwrapped = 1;
+
+{ # checking the environment for a set variable can trigger a warning
+ no warnings;
+ $main::debug = 1 if ($ENV{'GMMPROC_DEBUG'} eq 1);
+}
+
+# prototypes
+sub parse_command_line_args();
+
+
+#main()
+parse_command_line_args();
+
+my $objOutputter = &Output::new($main::m4path, \@main::macrodirs);
+my $objWrapParser = &WrapParser::new($objOutputter);
+
+$$objWrapParser{srcdir} = $main::srcdir;
+$$objWrapParser{defsdir} = $main::defsdir;
+$$objWrapParser{source} = $main::source;
+$$objOutputter{source} = $main::source;
+$$objOutputter{destdir} = $ARGV[1];
+
+# Merge the C docs, e.g. gtk_docs.xml
+
+# Suck the whole file into one big string, breaking it into tokens:
+$objWrapParser->read_file($main::srcdir, $main::source);
+
+# Parse output
+$objWrapParser->parse_and_build_output();
+
+# Write out *.g1 temporary file:
+$objOutputter->output_temp_g1($$objWrapParser{module}); # e.g. "gtk"
+
+# Execute m4 to get *.g2 file:
+{
+ my $exitcode = $objOutputter->make_g2_from_g1();
+ if ($exitcode != 0)
+ {
+ if (!$main::debug)
+ {
+ $objOutputter->remove_temp_files();
+ }
+ print STDERR "m4 failed with exit code $exitcode. Aborting...\n";
+ exit ($exitcode);
+ }
+}
+
+# Section out the resulting output
+$objOutputter->write_sections_to_files();
+
+# Remove temp files.
+if (!$main::debug)
+{
+ $objOutputter->remove_temp_files();
+}
+
+#Warn about any unwrapped function/signals:
+if ($main::unwrapped)
+{
+ my @unwrapped = GtkDefs::get_unwrapped();
+ if (@unwrapped)
+ {
+ no warnings;
+
+ my @methods =
+ grep {$$_{entity_type} eq "method" & $$_{c_name}!~/^_/ } @unwrapped;
+ my @signals =
+ grep {$$_{entity_type} eq "signal"} @unwrapped;
+ my @properties =
+ grep {$$_{entity_type} eq "property"} @unwrapped;
+
+ if (@methods)
+ {
+ print "Unwrapped functions:\n";
+ map { print " $$_{c_name}\n"} @methods;
+ }
+ if (@properties)
+ {
+ print "Unwrapped properties:\n";
+ map { print " $$_{class}::$$_{name}\n"} @properties;
+ }
+ if (@signals)
+ {
+ print "Unwrapped signals:\n";
+ map { print " $$_{class}::$$_{name}\n"} @signals;
+ }
+ }
+}
+
+# end of program
+exit();
+
+
+####################################################################
+
+
+sub print_usage()
+{
+ print
+'Usage: gmmproc [options] name srcdir destdir
+ -h
+ --help This usage message.
+
+ --doc Produces a header file for documentation. (FIXME)
+
+ --debug Leave intermediate output arround for analysis.
+ Alternatively, set GMMPROC_DEBUG=1 in the environment.
+
+ --unwrapped Warn about possible unwrapped functions.
+
+ --defs dir Change the directory to seach for defs.
+
+ -I dir Specify the directory with m4 files.
+
+
+Note: This will read srcdir/name.{hg,ccg} file and generates destdir/name.cc
+';
+ exit (1);
+}
+
+# void parse_command_line_args()
+sub parse_command_line_args()
+{
+ print_usage() if ($#ARGV == -1);
+
+ while ($#ARGV != -1)
+ {
+ $_ = shift @ARGV;
+
+ if (/^-/)
+ {
+ print_usage() if ( /^--help/);
+ print_usage() if ( /^-h/);
+ if (/^-I/)
+ {
+ push @main::macrodirs, shift @ARGV;
+ }
+ elsif (/^--unwrapped/)
+ {
+ $main::unwrapped = 1;
+ }
+ elsif (/^--defs/)
+ {
+ $main::defsdir = shift @ARGV;
+ }
+ elsif (/^--debug/)
+ {
+ $main::debug = 1;
+ }
+ else
+ {
+ print "unknown parameter $_\n";
+ }
+ next;
+ }
+
+ last;
+ }
+
+ # we already have one argument
+
+ if ($#ARGV != 1)
+ {
+ print STDERR "Invalid number of arguments (", $#ARGV+2, ")\n";
+ print_usage();
+ }
+
+ $main::srcdir = $ARGV[0];
+ $main::source = $_;
+
+ push @main::macrodirs,"$main::procdir/m4";
+}
+
diff --git a/libs/glibmm2/tools/gmmproc.in b/libs/glibmm2/tools/gmmproc.in
new file mode 100644
index 0000000000..f809817371
--- /dev/null
+++ b/libs/glibmm2/tools/gmmproc.in
@@ -0,0 +1,239 @@
+#! @PERL_PATH@
+#
+# @configure_input@
+#
+######################################################################
+# gmmproc (version 4)
+######################################################################
+#
+# *** WARNING: Only modify gmmproc.in. gmmproc is built. ***
+#
+# Copyright 2001, Karl Einar Nelson, Murray Cumming
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+#
+#
+# 'classes':
+# WrapParser: steps through .hg and .ccg files, outputting appropriate m4 code with Outputter.
+# Outputter: Used by WrapParser to ouput wrapper code. Ouputs *.g1 temp file and uses m4 to generate *.g2 from it. Then outputs .h and .cc files.
+# Function: Contains information about C and C++ functions and signals.
+#
+######################################################################
+
+########################## 'main()' ##################################
+
+$main::procdir;
+$main::m4path;
+
+BEGIN {
+ # get prefix info from configure
+ my $prefix = "@prefix@";
+ my $exec_prefix = "@exec_prefix@";
+ my $libdir = "@libdir@";
+
+ # This line must match the install directory in m4/Makefile.am
+ $main::procdir = "$libdir/glibmm-2.4/proc";
+ $main::m4path = "@M4@";
+
+ # This line must match install dir from pm/Makefile.am
+ push @INC,"$main::procdir/pm";
+}
+
+use strict;
+use warnings;
+
+use Output;
+use WrapParser;
+
+# initialize globals
+@main::macrodirs = ();
+$main::srcdir = ".";
+$main::defsdir = ".";
+$main::source = "";
+$main::debug = 0;
+$main::unwrapped = 1;
+
+{ # checking the environment for a set variable can trigger a warning
+ no warnings;
+ $main::debug = 1 if ($ENV{'GMMPROC_DEBUG'} eq 1);
+}
+
+# prototypes
+sub parse_command_line_args();
+
+
+#main()
+parse_command_line_args();
+
+my $objOutputter = &Output::new($main::m4path, \@main::macrodirs);
+my $objWrapParser = &WrapParser::new($objOutputter);
+
+$$objWrapParser{srcdir} = $main::srcdir;
+$$objWrapParser{defsdir} = $main::defsdir;
+$$objWrapParser{source} = $main::source;
+$$objOutputter{source} = $main::source;
+$$objOutputter{destdir} = $ARGV[1];
+
+# Merge the C docs, e.g. gtk_docs.xml
+
+# Suck the whole file into one big string, breaking it into tokens:
+$objWrapParser->read_file($main::srcdir, $main::source);
+
+# Parse output
+$objWrapParser->parse_and_build_output();
+
+# Write out *.g1 temporary file:
+$objOutputter->output_temp_g1($$objWrapParser{module}); # e.g. "gtk"
+
+# Execute m4 to get *.g2 file:
+{
+ my $exitcode = $objOutputter->make_g2_from_g1();
+ if ($exitcode != 0)
+ {
+ if (!$main::debug)
+ {
+ $objOutputter->remove_temp_files();
+ }
+ print STDERR "m4 failed with exit code $exitcode. Aborting...\n";
+ exit ($exitcode);
+ }
+}
+
+# Section out the resulting output
+$objOutputter->write_sections_to_files();
+
+# Remove temp files.
+if (!$main::debug)
+{
+ $objOutputter->remove_temp_files();
+}
+
+#Warn about any unwrapped function/signals:
+if ($main::unwrapped)
+{
+ my @unwrapped = GtkDefs::get_unwrapped();
+ if (@unwrapped)
+ {
+ no warnings;
+
+ my @methods =
+ grep {$$_{entity_type} eq "method" & $$_{c_name}!~/^_/ } @unwrapped;
+ my @signals =
+ grep {$$_{entity_type} eq "signal"} @unwrapped;
+ my @properties =
+ grep {$$_{entity_type} eq "property"} @unwrapped;
+
+ if (@methods)
+ {
+ print "Unwrapped functions:\n";
+ map { print " $$_{c_name}\n"} @methods;
+ }
+ if (@properties)
+ {
+ print "Unwrapped properties:\n";
+ map { print " $$_{class}::$$_{name}\n"} @properties;
+ }
+ if (@signals)
+ {
+ print "Unwrapped signals:\n";
+ map { print " $$_{class}::$$_{name}\n"} @signals;
+ }
+ }
+}
+
+# end of program
+exit();
+
+
+####################################################################
+
+
+sub print_usage()
+{
+ print
+'Usage: gmmproc [options] name srcdir destdir
+ -h
+ --help This usage message.
+
+ --doc Produces a header file for documentation. (FIXME)
+
+ --debug Leave intermediate output arround for analysis.
+ Alternatively, set GMMPROC_DEBUG=1 in the environment.
+
+ --unwrapped Warn about possible unwrapped functions.
+
+ --defs dir Change the directory to seach for defs.
+
+ -I dir Specify the directory with m4 files.
+
+
+Note: This will read srcdir/name.{hg,ccg} file and generates destdir/name.cc
+';
+ exit (1);
+}
+
+# void parse_command_line_args()
+sub parse_command_line_args()
+{
+ print_usage() if ($#ARGV == -1);
+
+ while ($#ARGV != -1)
+ {
+ $_ = shift @ARGV;
+
+ if (/^-/)
+ {
+ print_usage() if ( /^--help/);
+ print_usage() if ( /^-h/);
+ if (/^-I/)
+ {
+ push @main::macrodirs, shift @ARGV;
+ }
+ elsif (/^--unwrapped/)
+ {
+ $main::unwrapped = 1;
+ }
+ elsif (/^--defs/)
+ {
+ $main::defsdir = shift @ARGV;
+ }
+ elsif (/^--debug/)
+ {
+ $main::debug = 1;
+ }
+ else
+ {
+ print "unknown parameter $_\n";
+ }
+ next;
+ }
+
+ last;
+ }
+
+ # we already have one argument
+
+ if ($#ARGV != 1)
+ {
+ print STDERR "Invalid number of arguments (", $#ARGV+2, ")\n";
+ print_usage();
+ }
+
+ $main::srcdir = $ARGV[0];
+ $main::source = $_;
+
+ push @main::macrodirs,"$main::procdir/m4";
+}
+
diff --git a/libs/glibmm2/tools/m4/Makefile b/libs/glibmm2/tools/m4/Makefile
new file mode 100644
index 0000000000..899aff4c64
--- /dev/null
+++ b/libs/glibmm2/tools/m4/Makefile
@@ -0,0 +1,441 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# tools/m4/Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+srcdir = .
+top_srcdir = ../..
+
+pkgdatadir = $(datadir)/glibmm
+pkglibdir = $(libdir)/glibmm
+pkgincludedir = $(includedir)/glibmm
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = i686-pc-linux-gnu
+host_triplet = i686-pc-linux-gnu
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(tools_m4_include_HEADERS) \
+ $(top_srcdir)/tools/m4/Makefile_list_of_sources.am_fragment
+subdir = tools/m4
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/scripts/cxx.m4 \
+ $(top_srcdir)/scripts/cxx_std.m4 \
+ $(top_srcdir)/scripts/docgen.m4 \
+ $(top_srcdir)/scripts/glibmm_check_perl.m4 \
+ $(top_srcdir)/scripts/macros.m4 \
+ $(top_srcdir)/scripts/reduced.m4 $(top_srcdir)/scripts/sun.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h \
+ $(top_builddir)/glib/glibmmconfig.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(tools_m4_includedir)"
+tools_m4_includeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(tools_m4_include_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run aclocal-1.9 -I ./scripts
+AMDEP_FALSE = #
+AMDEP_TRUE =
+AMTAR = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run tar
+AR = ar
+AS = as
+AUTOCONF = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run autoconf
+AUTOHEADER = :
+AUTOMAKE = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS =
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2 -Wall -Wno-long-long
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DISABLE_DEPRECATED_API_CFLAGS =
+DISABLE_DEPRECATED_CFLAGS =
+DLLTOOL = dlltool
+ECHO = echo
+ECHO_C =
+ECHO_N = -n
+ECHO_T =
+EGREP = grep -E
+EXEEXT =
+F77 =
+FFLAGS =
+GLIBMM_CFLAGS = -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+GLIBMM_LIBS = -Wl,--export-dynamic -lsigc-2.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
+GLIBMM_MAJOR_VERSION = 2
+GLIBMM_MICRO_VERSION = 3
+GLIBMM_MINOR_VERSION = 13
+GLIBMM_RELEASE = 2.13
+GLIBMM_VERSION = 2.13.3
+GTHREAD_CFLAGS = -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+GTHREAD_LIBS = -pthread -lgthread-2.0 -lrt -lglib-2.0
+GTKMMPROC_MERGECDOCS =
+GTKMM_DOXYGEN_INPUT = /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/glib/glibmm/
+GTKMM_FALSE_FALSE =
+GTKMM_FALSE_TRUE = #
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =
+LIBGLIBMM_SO_VERSION = 1:24:0
+LIBOBJS =
+LIBS =
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS =
+M4 = m4
+MAINT = #
+MAINTAINER_MODE_FALSE =
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run makeinfo
+OBJDUMP = objdump
+OBJEXT = o
+OS_WIN32_FALSE =
+OS_WIN32_TRUE = #
+PACKAGE = glibmm
+PACKAGE_BUGREPORT =
+PACKAGE_NAME =
+PACKAGE_STRING =
+PACKAGE_TARNAME =
+PACKAGE_VERSION =
+PATH_SEPARATOR = :
+PERL_PATH = /usr/bin/perl
+PKG_CONFIG = /usr/bin/pkg-config
+PLATFORM_WIN32_FALSE =
+PLATFORM_WIN32_TRUE = #
+RANLIB = ranlib
+SET_MAKE =
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 2.13.3
+ac_ct_AR = ar
+ac_ct_AS =
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DLLTOOL =
+ac_ct_F77 =
+ac_ct_OBJDUMP =
+ac_ct_RANLIB = ranlib
+ac_ct_STRIP = strip
+ac_pt_PKG_CONFIG = /usr/bin/pkg-config
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE =
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE =
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = i686-pc-linux-gnu
+build_alias =
+build_cpu = i686
+build_os = linux-gnu
+build_vendor = pc
+datadir = ${prefix}/share
+exec_prefix = ${prefix}
+host = i686-pc-linux-gnu
+host_alias =
+host_cpu = i686
+host_os = linux-gnu
+host_vendor = pc
+includedir = ${prefix}/include
+infodir = ${prefix}/info
+install_sh = /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localstatedir = ${prefix}/var
+mandir = ${prefix}/man
+mkdir_p = mkdir -p --
+oldincludedir = /usr/include
+prefix = /usr/local
+program_transform_name = s,x,x,
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias =
+files_tools_m4 = base.m4 class_shared.m4 class_boxedtype.m4 class_boxedtype_static.m4 \
+ class_generic.m4 class_gobject.m4 class_gtkobject.m4 \
+ class_interface.m4 class_opaque_refcounted.m4 class_opaque_copyable.m4 \
+ gerror.m4 \
+ compare.m4 convert.m4 convert_base.m4 convert_gtkmm.m4 convert_atk.m4 convert_gdk.m4 \
+ convert_glib.m4 convert_gtk.m4 convert_pango.m4 ctor.m4 doc.m4 enum.m4 list.m4 member.m4 \
+ method.m4 property.m4 signal.m4 vfunc.m4
+
+EXTRA_DIST = Makefile_list_of_sources.am_fragment $(files_tools_m4)
+
+# Install the .m4, files:
+tools_m4_includedir = $(libdir)/glibmm-2.4/proc/m4
+tools_m4_include_HEADERS = $(files_tools_m4)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(top_srcdir)/tools/m4/Makefile_list_of_sources.am_fragment $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/m4/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tools/m4/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-tools_m4_includeHEADERS: $(tools_m4_include_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(tools_m4_includedir)" || $(mkdir_p) "$(DESTDIR)$(tools_m4_includedir)"
+ @list='$(tools_m4_include_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(tools_m4_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(tools_m4_includedir)/$$f'"; \
+ $(tools_m4_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(tools_m4_includedir)/$$f"; \
+ done
+
+uninstall-tools_m4_includeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(tools_m4_include_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(tools_m4_includedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(tools_m4_includedir)/$$f"; \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/../../tools/m4
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+ for dir in "$(DESTDIR)$(tools_m4_includedir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-tools_m4_includeHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-tools_m4_includeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool ctags distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-strip \
+ install-tools_m4_includeHEADERS installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+ ps ps-am tags uninstall uninstall-am uninstall-info-am \
+ uninstall-tools_m4_includeHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libs/glibmm2/tools/m4/Makefile.am b/libs/glibmm2/tools/m4/Makefile.am
new file mode 100644
index 0000000000..d3ec8fba7d
--- /dev/null
+++ b/libs/glibmm2/tools/m4/Makefile.am
@@ -0,0 +1,10 @@
+
+include $(top_srcdir)/tools/m4/Makefile_list_of_sources.am_fragment
+
+EXTRA_DIST = Makefile_list_of_sources.am_fragment $(files_tools_m4)
+
+# Install the .m4, files:
+
+tools_m4_includedir = $(libdir)/glibmm-2.4/proc/m4
+tools_m4_include_HEADERS = $(files_tools_m4)
+
diff --git a/libs/glibmm2/tools/m4/Makefile.in b/libs/glibmm2/tools/m4/Makefile.in
new file mode 100644
index 0000000000..f6aa5da2fd
--- /dev/null
+++ b/libs/glibmm2/tools/m4/Makefile.in
@@ -0,0 +1,441 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(tools_m4_include_HEADERS) \
+ $(top_srcdir)/tools/m4/Makefile_list_of_sources.am_fragment
+subdir = tools/m4
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/scripts/cxx.m4 \
+ $(top_srcdir)/scripts/cxx_std.m4 \
+ $(top_srcdir)/scripts/docgen.m4 \
+ $(top_srcdir)/scripts/glibmm_check_perl.m4 \
+ $(top_srcdir)/scripts/macros.m4 \
+ $(top_srcdir)/scripts/reduced.m4 $(top_srcdir)/scripts/sun.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h \
+ $(top_builddir)/glib/glibmmconfig.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(tools_m4_includedir)"
+tools_m4_includeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(tools_m4_include_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISABLE_DEPRECATED_API_CFLAGS = @DISABLE_DEPRECATED_API_CFLAGS@
+DISABLE_DEPRECATED_CFLAGS = @DISABLE_DEPRECATED_CFLAGS@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GLIBMM_CFLAGS = @GLIBMM_CFLAGS@
+GLIBMM_LIBS = @GLIBMM_LIBS@
+GLIBMM_MAJOR_VERSION = @GLIBMM_MAJOR_VERSION@
+GLIBMM_MICRO_VERSION = @GLIBMM_MICRO_VERSION@
+GLIBMM_MINOR_VERSION = @GLIBMM_MINOR_VERSION@
+GLIBMM_RELEASE = @GLIBMM_RELEASE@
+GLIBMM_VERSION = @GLIBMM_VERSION@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKMMPROC_MERGECDOCS = @GTKMMPROC_MERGECDOCS@
+GTKMM_DOXYGEN_INPUT = @GTKMM_DOXYGEN_INPUT@
+GTKMM_FALSE_FALSE = @GTKMM_FALSE_FALSE@
+GTKMM_FALSE_TRUE = @GTKMM_FALSE_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBGLIBMM_SO_VERSION = @LIBGLIBMM_SO_VERSION@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+M4 = @M4@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS_WIN32_FALSE = @OS_WIN32_FALSE@
+OS_WIN32_TRUE = @OS_WIN32_TRUE@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL_PATH = @PERL_PATH@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_WIN32_FALSE = @PLATFORM_WIN32_FALSE@
+PLATFORM_WIN32_TRUE = @PLATFORM_WIN32_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_AS = @ac_ct_AS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+files_tools_m4 = base.m4 class_shared.m4 class_boxedtype.m4 class_boxedtype_static.m4 \
+ class_generic.m4 class_gobject.m4 class_gtkobject.m4 \
+ class_interface.m4 class_opaque_refcounted.m4 class_opaque_copyable.m4 \
+ gerror.m4 \
+ compare.m4 convert.m4 convert_base.m4 convert_gtkmm.m4 convert_atk.m4 convert_gdk.m4 \
+ convert_glib.m4 convert_gtk.m4 convert_pango.m4 ctor.m4 doc.m4 enum.m4 list.m4 member.m4 \
+ method.m4 property.m4 signal.m4 vfunc.m4
+
+EXTRA_DIST = Makefile_list_of_sources.am_fragment $(files_tools_m4)
+
+# Install the .m4, files:
+tools_m4_includedir = $(libdir)/glibmm-2.4/proc/m4
+tools_m4_include_HEADERS = $(files_tools_m4)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/tools/m4/Makefile_list_of_sources.am_fragment $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/m4/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tools/m4/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-tools_m4_includeHEADERS: $(tools_m4_include_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(tools_m4_includedir)" || $(mkdir_p) "$(DESTDIR)$(tools_m4_includedir)"
+ @list='$(tools_m4_include_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(tools_m4_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(tools_m4_includedir)/$$f'"; \
+ $(tools_m4_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(tools_m4_includedir)/$$f"; \
+ done
+
+uninstall-tools_m4_includeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(tools_m4_include_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(tools_m4_includedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(tools_m4_includedir)/$$f"; \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/../../tools/m4
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+ for dir in "$(DESTDIR)$(tools_m4_includedir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-tools_m4_includeHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-tools_m4_includeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool ctags distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-strip \
+ install-tools_m4_includeHEADERS installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+ ps ps-am tags uninstall uninstall-am uninstall-info-am \
+ uninstall-tools_m4_includeHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libs/glibmm2/tools/m4/Makefile_list_of_sources.am_fragment b/libs/glibmm2/tools/m4/Makefile_list_of_sources.am_fragment
new file mode 100644
index 0000000000..ab2e9c1a3c
--- /dev/null
+++ b/libs/glibmm2/tools/m4/Makefile_list_of_sources.am_fragment
@@ -0,0 +1,8 @@
+files_tools_m4 = base.m4 class_shared.m4 class_boxedtype.m4 class_boxedtype_static.m4 \
+ class_generic.m4 class_gobject.m4 class_gtkobject.m4 \
+ class_interface.m4 class_opaque_refcounted.m4 class_opaque_copyable.m4 \
+ gerror.m4 \
+ compare.m4 convert.m4 convert_base.m4 convert_gtkmm.m4 convert_atk.m4 convert_gdk.m4 \
+ convert_glib.m4 convert_gtk.m4 convert_pango.m4 ctor.m4 doc.m4 enum.m4 list.m4 member.m4 \
+ method.m4 property.m4 signal.m4 vfunc.m4
+
diff --git a/libs/glibmm2/tools/m4/base.m4 b/libs/glibmm2/tools/m4/base.m4
new file mode 100644
index 0000000000..564b437b0c
--- /dev/null
+++ b/libs/glibmm2/tools/m4/base.m4
@@ -0,0 +1,424 @@
+dnl $Id: base.m4,v 1.4 2006/03/08 12:23:04 murrayc Exp $
+divert(-1)
+
+dnl
+dnl The general convention is
+dnl _* are macros
+dnl __*__ are variables
+
+dnl
+dnl rename several m4 builtins to avoid name clashes
+dnl
+
+define(`_PREFIX_BUILTIN_ALIAS', `define(`m4_$1', defn(`$1'))')
+define(`_PREFIX_BUILTIN', `_PREFIX_BUILTIN_ALIAS(`$1')`'undefine(`$1')')
+
+_PREFIX_BUILTIN(`builtin')
+_PREFIX_BUILTIN(`decr')
+_PREFIX_BUILTIN(`errprint')
+_PREFIX_BUILTIN(`esyscmd')
+_PREFIX_BUILTIN(`eval')
+_PREFIX_BUILTIN(`format')
+_PREFIX_BUILTIN(`incr')
+_PREFIX_BUILTIN(`index')
+_PREFIX_BUILTIN(`indir')
+_PREFIX_BUILTIN(`len')
+_PREFIX_BUILTIN(`maketemp')
+_PREFIX_BUILTIN(`syscmd')
+_PREFIX_BUILTIN(`substr')
+_PREFIX_BUILTIN(`sysval')
+
+dnl
+dnl More alternative names for m4 macros, not undefined (yet!).
+dnl
+
+_PREFIX_BUILTIN_ALIAS(`changecom')
+_PREFIX_BUILTIN_ALIAS(`changequote')
+_PREFIX_BUILTIN_ALIAS(`define')
+_PREFIX_BUILTIN_ALIAS(`divert')
+_PREFIX_BUILTIN_ALIAS(`divnum')
+_PREFIX_BUILTIN_ALIAS(`ifdef')
+_PREFIX_BUILTIN_ALIAS(`ifelse')
+_PREFIX_BUILTIN_ALIAS(`include')
+_PREFIX_BUILTIN_ALIAS(`m4exit')
+_PREFIX_BUILTIN_ALIAS(`m4wrap')
+_PREFIX_BUILTIN_ALIAS(`patsubst')
+_PREFIX_BUILTIN_ALIAS(`popdef')
+_PREFIX_BUILTIN_ALIAS(`pushdef')
+_PREFIX_BUILTIN_ALIAS(`shift')
+_PREFIX_BUILTIN_ALIAS(`undefine')
+_PREFIX_BUILTIN_ALIAS(`undivert')
+_PREFIX_BUILTIN_ALIAS(`regexp')
+_PREFIX_BUILTIN_ALIAS(`translit')
+
+dnl
+dnl Type Conversion Macros
+dnl
+
+m4_include(convert.m4)
+
+dnl
+dnl ----------------------- Utility Macros -------------------------
+dnl
+
+dnl
+dnl Add a comma before the arg if any, do nothing otherwise
+dnl _COMMA_PREFIX(a) -> ,a
+dnl _COMMA_PREFIX() -> `'
+dnl
+define(`_COMMA_PREFIX', `m4_ifelse(m4_eval(m4_len(`$*') >= 1), 1, `,$*')')dnl
+
+dnl
+dnl Add a comma after the arg if any, do nothing otherwise
+dnl _COMMA_SUFFIX(a) -> a,
+dnl _COMMA_SUFFIX() -> `'
+dnl
+define(`_COMMA_SUFFIX', `m4_ifelse(m4_eval(m4_len(`$*') >= 1), 1, `$*,')')dnl
+
+
+dnl
+dnl _UPPER(string)
+dnl uppercase a string
+define(`_UPPER',`m4_translit(`$*',`abcdefghijklmnopqrstuvwxyz',`ABCDEFGHIJKLMNOPQRSTUVWXYZ')')
+
+dnl
+dnl _LOWER(string)
+dnl lower a string
+define(`_LOWER',`m4_translit(`$*',`ABCDEFGHIJKLMNOPQRSTUVWXYZ',`abcdefghijklmnopqrstuvwxyz')')
+
+dnl
+dnl _QUOTE(macro)
+dnl If a macro generates an output with commas we need to protect it
+dnl from being broken down and interpreted
+define(`_QUOTE',``$*'')
+
+dnl
+dnl _NUM(arglist)
+dnl count number of arguments
+define(`_NUM',`m4_ifelse(m4_len(`$*'),0,0,`$#')')
+
+dnl
+dnl For handling of included macro files.
+dnl
+
+dnl _PUSH(section_name)
+dnl Uses pushdef() to redefine the __DIV__ macro
+dnl so that it diverts ouput to the section_name,
+dnl or discards it (-1) if no section_name is given.
+dnl TODO: However, as far as I can tell, __DIV__ is not used anywhere. murrayc.
+define(`_PUSH',`pushdef(`__DIV__',divnum)m4_divert(m4_ifelse($1,,-1,__SEC_$1))dnl`'')
+
+dnl _POP(section_name)
+dnl Uses popdef() to go back to the previous definition of the __DIV__ macro.
+define(`_POP',`m4_divert(__DIV__)popdef(`__DIV__')dnl`'')
+
+dnl _SECTION(section_name):
+dnl m4_divert() sends subsequent output to the specified file:
+define(`_SECTION',`m4_divert(__SEC_$1)dnl')
+
+dnl _IMPORT(section_name):
+define(`_IMPORT',`m4_undivert(__SEC_$1)dnl')
+
+dnl _GET_TYPE_FUNC(GtkWidget) -> gtk_widget_get_type()
+dnl The funny `[A-Z]?' part of the regexp is to catch things like GdkGCFooBar.
+define(`_GET_TYPE_FUNC',`dnl
+m4_translit(m4_substr(m4_patsubst(`$1',`[A-Z]?[A-Z]',`_\&'),1),`[A-Z]',`[a-z]')_get_type()`'dnl
+')
+
+dnl Define a new diversion
+dnl In m4, m4_divert() selects the output file to be used for subsequent text output.
+dnl 0 is the normal output. We define extra output files with _NEW_SECTION().
+dnl This macro seems to redefine __SEC_COUNT as __SEC_COUNT+1, and also
+dnl define __SEC_<the macro argument> as __SEC_COUNT.
+dnl So it just sets that section identifier to the next number.
+
+define(`__SEC_COUNT__',0)
+
+define(`_NEW_SECTION',`dnl
+define(`__SEC_COUNT__',m4_eval(__SEC_COUNT__+1))dnl
+define(`__SEC_$1',__SEC_COUNT__)dnl
+')
+
+
+changequote([,])
+define([__BT__],[changequote(,)`changequote(`,')])
+define([__FT__],[changequote(,)'changequote(`,')])
+changequote(`,')
+
+changecom()
+
+dnl
+dnl ----------------------- Main Headers -------------------------
+dnl
+
+_NEW_SECTION(SECTION_HEADER1) dnl header up to the first namespace
+_NEW_SECTION(SECTION_HEADER2) dnl header after the first namespace
+_NEW_SECTION(SECTION_HEADER3) dnl header after the first namespace
+_NEW_SECTION(SECTION_PHEADER) dnl private header
+_NEW_SECTION(SECTION_CC_INCLUDES) dnl section for additional includes
+_NEW_SECTION(SECTION_SRC_CUSTOM) dnl user supplied implementation
+_NEW_SECTION(SECTION_ANONYMOUS_NAMESPACE) dnl built implementation in anonymous namespace
+_NEW_SECTION(SECTION_SRC_GENERATED) dnl built implementation
+_NEW_SECTION(SECTION_CLASS1) dnl decl to _CLASS
+_NEW_SECTION(SECTION_CLASS2) dnl _CLASS to end of class
+_NEW_SECTION(SECTION_CC) dnl section for methods (in current namespace)
+
+_NEW_SECTION(SECTION_CC_IMPLEMENTS_INTERFACES) dnl Calls SomeBaseInterface::add_interface(get_type()).
+
+dnl Virtual Functions and Default Signal Handlers (Very similar)
+_NEW_SECTION(SECTION_H_VFUNCS) dnl Declaration of vfunc hooks.
+_NEW_SECTION(SECTION_H_VFUNCS_CPPWRAPPER) dnl Convenience method, using C++ types, that just calls the vfunc.
+_NEW_SECTION(SECTION_H_DEFAULT_SIGNAL_HANDLERS) dnl Declaration of default signal handler' hooks.
+
+_NEW_SECTION(SECTION_CC_DEFAULT_SIGNAL_HANDLERS)
+_NEW_SECTION(SECTION_CC_VFUNCS)
+_NEW_SECTION(SECTION_CC_VFUNCS_CPPWRAPPER) dnl Convenience method, using C++ types, that just calls the vfunc.
+
+_NEW_SECTION(SECTION_PH_DEFAULT_SIGNAL_HANDLERS) dnl private class declaration
+_NEW_SECTION(SECTION_PH_VFUNCS) dnl private class declaration
+
+_NEW_SECTION(SECTION_PCC_DEFAULT_SIGNAL_HANDLERS) dnl private class implementation
+_NEW_SECTION(SECTION_PCC_VFUNCS) dnl private class implementation
+
+_NEW_SECTION(SECTION_PCC_CLASS_INIT_DEFAULT_SIGNAL_HANDLERS) dnl gtk+ class_init function
+_NEW_SECTION(SECTION_PCC_CLASS_INIT_VFUNCS) dnl gtk+ class_init function
+
+
+dnl Signal Proxies:
+dnl _NEW_SECTION(SECTION_H_SIGNALPROXIES) dnl signal member objects
+_NEW_SECTION(SECTION_CC_SIGNALPROXIES) dnl signal member objects
+
+dnl Property Proxies:
+dnl _NEW_SECTION(SECTION_H_PROPERTYPROXIES)
+_NEW_SECTION(SECTION_CC_PROPERTYPROXIES)
+
+_NEW_SECTION(SECTION_CC_INITIALIZE_CLASS_EXTRA) dnl For instance, to initialize special member data from all constructors. Not commonly used.
+
+dnl _NEW_SECTION(PROXY)
+dnl _NEW_SECTION(SECTION_PCC_OBJECT_INIT) dnl gtk+ object_init function
+
+
+_NEW_SECTION(SECTION_CHECK)
+_NEW_SECTION(SECTION_USR)
+
+define(`_CHECK',`dnl
+_PUSH(SECTION_CHECK)
+ $*
+_POP()
+')
+
+dnl Start of processing
+dnl
+dnl _START(filname, module,modulecanonical) .e.g _START(button, gtkmm, gtkmm)
+define(`_START',`dnl
+define(`__MODULE__',$2)dnl
+define(`__MODULE_CANONICAL__',$3)dnl
+define(`__HEADER_GUARD__',`_`'_UPPER(m4_translit(`$3`'_`'$1', `-', `_'))')dnl
+define(`__FILE__',$1)dnl
+define(`__DEPRECATION_GUARD__',`_UPPER($3)'`_DISABLE_DEPRECATED')dnl
+_SECTION(SECTION_HEADER1)
+')
+
+dnl Start deprecation of individual methods:
+define(`_DEPRECATE_IFDEF_START',`dnl
+#ifndef __DEPRECATION_GUARD__'
+)
+
+dnl end deprecation of individual methods:
+define(`_DEPRECATE_IFDEF_END',`dnl
+#endif // __DEPRECATION_GUARD__'
+)
+
+dnl begin optional deprecation of whole class
+define(`_DEPRECATE_IFDEF_CLASS_START',`dnl
+ifdef(`__BOOL_DEPRECATED__',`dnl
+_DEPRECATE_IFDEF_START',`dnl
+')
+')
+
+dnl end optional deprecation of whole class
+define(`_DEPRECATE_IFDEF_CLASS_END',`dnl
+ifdef(`__BOOL_DEPRECATED__',`dnl
+_DEPRECATE_IFDEF_END',`dnl
+')
+')
+
+dnl This does all the work of assembling the final output
+dnl
+dnl _END()
+dnl
+define(`_END',`dnl
+m4_divert(0)dnl
+#S 0 dnl Marks the beginning of the header file.
+
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef __HEADER_GUARD__`'_H
+#define __HEADER_GUARD__`'_H
+
+_DEPRECATE_IFDEF_CLASS_START
+
+m4_ifelse(__MODULE__,glibmm,,`dnl else
+#include <glibmm.h>
+')dnl
+_IMPORT(SECTION_HEADER1)
+_IMPORT(SECTION_HEADER2)
+_IMPORT(SECTION_HEADER3)
+
+_DEPRECATE_IFDEF_CLASS_END
+
+#endif /* __HEADER_GUARD__`'_H */
+
+#S 1 dnl Marks the beginning of the private header file.
+
+// -*- c++ -*-
+// Generated by gtkmmproc -- DO NOT MODIFY!
+#ifndef __HEADER_GUARD__`'_P_H
+#define __HEADER_GUARD__`'_P_H
+_DEPRECATE_IFDEF_CLASS_START
+_IMPORT(SECTION_PHEADER)
+_DEPRECATE_IFDEF_CLASS_END
+#endif /* __HEADER_GUARD__`'_P_H */
+
+#S 2 dnl Marks the beginning of the source file.
+
+// Generated by gtkmmproc -- DO NOT MODIFY!
+
+_DEPRECATE_IFDEF_CLASS_START
+
+#include <__MODULE__/__FILE__.h>
+#include <__MODULE__/private/__FILE__`'_p.h>
+
+_IMPORT(SECTION_CC_INCLUDES)
+_IMPORT(SECTION_SRC_CUSTOM)
+
+namespace
+{
+_IMPORT(SECTION_ANONYMOUS_NAMESPACE)
+} // anonymous namespace
+
+_IMPORT(SECTION_SRC_GENERATED)
+_DEPRECATE_IFDEF_CLASS_END
+
+m4_divert(-1)
+m4_undivert()
+')
+
+define(`_NAMESPACE',`dnl
+_PUSH()
+m4_ifdef(`__NAMESPACE__',`dnl
+pushdef(`__NAMESPACE__',__NAMESPACE__`::'$1)
+pushdef(`__NAMESPACE_BEGIN__',__NAMESPACE_BEGIN__`
+
+namespace '$1`
+{')
+pushdef(`__NAMESPACE_END__',`} // namespace '$1`
+
+'__NAMESPACE_END__)
+',`dnl else
+pushdef(`__NAMESPACE__',$1)
+pushdef(`__NAMESPACE_BEGIN__',`namespace '$1`
+{')
+pushdef(`__NAMESPACE_END__',`} // namespace '$1)
+')dnl endif __NAMESPACE__
+_POP()
+')dnl enddef _NAMESPACE
+
+define(`_END_NAMESPACE',`dnl
+_PUSH()
+popdef(`__NAMESPACE__')
+popdef(`__NAMESPACE_BEGIN__')
+popdef(`__NAMESPACE_END__')
+_POP()
+')dnl enddef _END_NAMESPACE
+
+define(`_INCLUDE_FLAG',`__FLAG_$1_INCLUDE_`'_UPPER(m4_translit(`$2',`/.-',`___'))__')dnl
+
+define(`_PH_INCLUDE',`dnl
+m4_ifdef(_INCLUDE_FLAG(PH,`$*'),,`dnl else
+define(_INCLUDE_FLAG(PH,`$*'))dnl
+_PUSH(SECTION_PHEADER)
+#include <$*>
+_POP()
+')dnl endif
+')dnl
+
+define(`_CC_INCLUDE',`dnl
+m4_ifdef(_INCLUDE_FLAG(CC,`$*'),,`dnl else
+define(_INCLUDE_FLAG(CC,`$*'))dnl
+_PUSH(SECTION_CC_INCLUDES)
+#include <$*>
+_POP()
+')dnl endif
+')dnl
+
+define(`_PINCLUDE', defn(`_PH_INCLUDE'))
+
+# Put these, for instance, around gtkmmproc macros (_WRAP_SIGNAL)
+# to make the #ifndef appear around the generated code in both the .h
+# and .cc files.
+# e.g. _GTKMMPROC_H_AND_CC(#ifndef _SUN_CC_)
+# e.g. _GTKMMPROC_H_AND_CC(#endif //_SUN_CC_)
+# _GTKMMPROC_H_AND_CC(code)
+define(`_GTKMMPROC_H_AND_CC',`dnl
+$1
+_PUSH(SECTION_CC)
+$1
+
+_POP()
+')dnl
+
+# Same thing as _GTKMMPROC_H_AND_CC but for signals (_WRAP_SIGNAL)
+define(`_GTKMMPROC_SIGNAL_H_AND_CC',`dnl
+$1
+_PUSH(SECTION_ANONYMOUS_NAMESPACE)
+$1
+_POP()
+
+$1
+_PUSH(SECTION_H_DEFAULT_SIGNAL_HANDLERS)
+$1
+_POP()
+
+$1
+_PUSH(SECTION_PCC_CLASS_INIT_DEFAULT_SIGNAL_HANDLERS)
+$1
+_POP()
+
+$1
+_PUSH(SECTION_CC_DEFAULT_SIGNAL_HANDLERS)
+$1
+_POP()
+
+$1
+_PUSH(SECTION_PCC_DEFAULT_SIGNAL_HANDLERS)
+$1
+_POP()
+
+$1
+_PUSH(SECTION_CC_SIGNALPROXIES)
+$1
+_POP()
+')dnl
+
+m4_include(class_shared.m4)
+m4_include(class_generic.m4)
+m4_include(class_gobject.m4)
+m4_include(class_gtkobject.m4)
+m4_include(class_boxedtype.m4)
+m4_include(class_boxedtype_static.m4)
+m4_include(class_interface.m4)
+m4_include(class_opaque_copyable.m4)
+m4_include(class_opaque_refcounted.m4)
+m4_include(gerror.m4)
+m4_include(signal.m4)
+m4_include(vfunc.m4)
+m4_include(method.m4)
+m4_include(member.m4)
+m4_include(compare.m4)
+m4_include(ctor.m4)
+m4_include(property.m4)
+m4_include(enum.m4)
+
+_SECTION(SECTION_HEADER1)
+
diff --git a/libs/glibmm2/tools/m4/class_boxedtype.m4 b/libs/glibmm2/tools/m4/class_boxedtype.m4
new file mode 100644
index 0000000000..347c3940ea
--- /dev/null
+++ b/libs/glibmm2/tools/m4/class_boxedtype.m4
@@ -0,0 +1,215 @@
+dnl $Id: class_boxedtype.m4,v 1.3 2003/12/14 11:53:04 murrayc Exp $
+
+dnl
+dnl _CLASS_BOXEDTYPE(Region, GdkRegion, gdk_region_new, gdk_region_copy, gdk_region_destroy)
+dnl
+
+define(`_CLASS_BOXEDTYPE',`dnl
+_PUSH()
+dnl
+dnl Define the args for later macros
+define(`__CPPNAME__',`$1')
+define(`__CNAME__',`$2')
+define(`__BOXEDTYPE_FUNC_NEW',`$3')
+define(`__BOXEDTYPE_FUNC_COPY',`$4')
+define(`__BOXEDTYPE_FUNC_FREE',`$5')
+
+define(`_CUSTOM_DEFAULT_CTOR',`dnl
+_PUSH()
+dnl Define this macro to be tested for later.
+define(`__BOOL_CUSTOM_DEFAULT_CTOR__',`$1')
+_POP()
+')
+
+
+_POP()
+_SECTION(SECTION_CLASS2)
+') dnl End of _CLASS_BOXEDTYPE.
+
+dnl Some of the Gdk types are unions - e.g. GdkEvent.
+define(`_CUSTOM_STRUCT_PROTOTYPE',`dnl
+_PUSH()
+dnl Define this macro to be tested for later.
+define(`__BOOL_CUSTOM_STRUCT_PROTOTYPE__',`$1')
+_POP()
+')
+
+dnl
+dnl _END_CLASS_BOXEDTYPE()
+dnl denotes the end of a class
+dnl
+define(`_END_CLASS_BOXEDTYPE',`
+_SECTION(SECTION_HEADER1)
+ifdef(`__BOOL_CUSTOM_STRUCT_PROTOTYPE__',`dnl
+',`dnl
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern "C" { typedef struct _`'__CNAME__ __CNAME__; }
+#endif
+')dnl
+
+_SECTION(SECTION_HEADER3)
+
+__NAMESPACE_BEGIN__
+
+/** @relates __NAMESPACE__::__CPPNAME__
+ * @param lhs The left-hand side
+ * @param rhs The right-hand side
+ */
+inline void swap(__CPPNAME__& lhs, __CPPNAME__& rhs)
+ { lhs.swap(rhs); }
+
+__NAMESPACE_END__
+
+namespace Glib
+{
+ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
+',`dnl else
+
+/** @relates __NAMESPACE__::__CPPNAME__
+ * @param object The C instance
+ * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref.
+ * @result A C++ instance that wraps this C instance.
+ */
+__NAMESPACE__::__CPPNAME__ wrap(__CNAME__* object, bool take_copy = false);
+')dnl endif __BOOL_NO_WRAP_FUNCTION__
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+template <>
+class Value<__NAMESPACE__::__CPPNAME__> : public Glib::Value_Boxed<__NAMESPACE__::__CPPNAME__>
+{};
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+} // namespace Glib
+
+_SECTION(SECTION_SRC_GENERATED)
+
+ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
+',`dnl else
+namespace Glib
+{
+
+__NAMESPACE__::__CPPNAME__ wrap(__CNAME__* object, bool take_copy)
+{
+ return __NAMESPACE__::__CPPNAME__`'(object, take_copy);
+}
+
+} // namespace Glib
+')dnl endif
+
+
+__NAMESPACE_BEGIN__
+
+dnl
+dnl The implementation:
+dnl
+
+// static
+GType __CPPNAME__::get_type()
+{
+ return _GET_TYPE_FUNC(__CNAME__);
+}
+
+ifdef(`__BOOL_CUSTOM_DEFAULT_CTOR__',`dnl
+',`dnl else
+__CPPNAME__::__CPPNAME__`'()
+:
+ifelse(__BOXEDTYPE_FUNC_NEW,NONE,`dnl
+ gobject_ (0) // Allows creation of invalid wrapper, e.g. for output arguments to methods.
+',`dnl else
+ gobject_ (__BOXEDTYPE_FUNC_NEW`'())
+')dnl
+{}
+')dnl endif __BOOL_CUSTOM_DEFAULT_CTOR__
+
+__CPPNAME__::__CPPNAME__`'(const __CPPNAME__& other)
+:
+ gobject_ ((other.gobject_) ? __BOXEDTYPE_FUNC_COPY`'(other.gobject_) : 0)
+{}
+
+__CPPNAME__::__CPPNAME__`'(__CNAME__* gobject, bool make_a_copy)
+:
+ // For BoxedType wrappers, make_a_copy is true by default. The static
+ // BoxedType wrappers must always take a copy, thus make_a_copy = true
+ // ensures identical behaviour if the default argument is used.
+ gobject_ ((make_a_copy && gobject) ? __BOXEDTYPE_FUNC_COPY`'(gobject) : gobject)
+{}
+
+__CPPNAME__& __CPPNAME__::operator=(const __CPPNAME__`'& other)
+{
+ __CPPNAME__ temp (other);
+ swap(temp);
+ return *this;
+}
+
+__CPPNAME__::~__CPPNAME__`'()
+{
+dnl This could be a free or an unref, we do not need to know.
+ if(gobject_)
+ __BOXEDTYPE_FUNC_FREE`'(gobject_);
+}
+
+void __CPPNAME__::swap(__CPPNAME__& other)
+{
+ __CNAME__ *const temp = gobject_;
+ gobject_ = other.gobject_;
+ other.gobject_ = temp;
+}
+
+__CNAME__* __CPPNAME__::gobj_copy() const
+{
+ return __BOXEDTYPE_FUNC_COPY`'(gobject_);
+}
+
+_IMPORT(SECTION_CC)
+
+__NAMESPACE_END__
+
+
+dnl
+dnl
+dnl
+dnl
+_POP()
+dnl
+dnl
+dnl The actual class, e.g. Pango::FontDescription, declaration:
+dnl
+_IMPORT(SECTION_CLASS1)
+public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ typedef __CPPNAME__ CppObjectType;
+ typedef __CNAME__ BaseObjectType;
+
+ static GType get_type() G_GNUC_CONST;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+ifdef(`__BOOL_CUSTOM_DEFAULT_CTOR__',`dnl
+',`dnl else
+ __CPPNAME__`'();
+')dnl
+
+ explicit __CPPNAME__`'(__CNAME__* gobject, bool make_a_copy = true);
+
+ __CPPNAME__`'(const __CPPNAME__& other);
+ __CPPNAME__& operator=(const __CPPNAME__& other);
+
+ ~__CPPNAME__`'();
+
+ void swap(__CPPNAME__& other);
+
+ ///Provides access to the underlying C instance.
+ __CNAME__* gobj() { return gobject_; }
+
+ ///Provides access to the underlying C instance.
+ const __CNAME__* gobj() const { return gobject_; }
+
+ ///Provides access to the underlying C instance. The caller is responsible for freeing it. Use when directly setting fields in structs.
+ __CNAME__* gobj_copy() const;
+
+protected:
+ __CNAME__* gobject_;
+
+private:
+_IMPORT(SECTION_CLASS2)
+')
+
diff --git a/libs/glibmm2/tools/m4/class_boxedtype_static.m4 b/libs/glibmm2/tools/m4/class_boxedtype_static.m4
new file mode 100644
index 0000000000..89c8bbfe7d
--- /dev/null
+++ b/libs/glibmm2/tools/m4/class_boxedtype_static.m4
@@ -0,0 +1,169 @@
+dnl $Id: class_boxedtype_static.m4,v 1.3 2003/12/14 11:53:04 murrayc Exp $
+
+dnl
+dnl _CLASS_BOXEDTYPE_STATIC(TreeIter, GtkTreeIter)
+dnl
+define(`_CLASS_BOXEDTYPE_STATIC',`dnl
+_PUSH()
+dnl
+dnl Define the args for later macros
+define(`__CPPNAME__',`$1')
+define(`__CNAME__',`$2')
+
+define(`_CUSTOM_DEFAULT_CTOR',`dnl
+_PUSH()
+dnl Define this macro to be tested for later.
+define(`__BOOL_CUSTOM_DEFAULT_CTOR__',`$1')
+_POP()
+')
+
+define(`_CUSTOM_CTOR_CAST',`dnl
+_PUSH()
+dnl Define this macro to be tested for later.
+define(`__BOOL_CUSTOM_CTOR_CAST__',`$1')
+_POP()
+')
+
+_POP()
+_SECTION(SECTION_CLASS2)
+') dnl End of _CLASS_BOXEDTYPE_STATIC.
+
+dnl TreeIterBase shouldn't have a wrap() method - we'll custom implement them for TreeIter and TreeRow:
+define(`_NO_WRAP_FUNCTION',`dnl
+_PUSH()
+dnl Define this macro to be tested for later.
+define(`__BOOL_NO_WRAP_FUNCTION__',`$1')
+_POP()
+')
+
+dnl
+dnl _END_CLASS_BOXEDTYPE_STATIC()
+dnl denotes the end of a class
+dnl
+define(`_END_CLASS_BOXEDTYPE_STATIC',`
+
+_SECTION(SECTION_HEADER3)
+
+namespace Glib
+{
+ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
+',`dnl else
+
+/** @relates __NAMESPACE__::__CPPNAME__
+ * @param object The C instance
+ * @result A C++ instance that wraps this C instance.
+ */
+__NAMESPACE__::__CPPNAME__& wrap(__CNAME__* object);
+
+/** @relates __NAMESPACE__::__CPPNAME__
+ * @param object The C instance
+ * @result A C++ instance that wraps this C instance.
+ */
+const __NAMESPACE__::__CPPNAME__& wrap(const __CNAME__* object);
+')dnl endif __BOOL_NO_WRAP_FUNCTION__
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+template <>
+class Value<__NAMESPACE__::__CPPNAME__> : public Glib::Value_Boxed<__NAMESPACE__::__CPPNAME__>
+{};
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+} // namespace Glib
+
+_SECTION(SECTION_SRC_GENERATED)
+
+ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
+',`dnl else
+namespace Glib
+{
+
+__NAMESPACE__::__CPPNAME__& wrap(__CNAME__* object)
+{
+ return *reinterpret_cast<__NAMESPACE__::__CPPNAME__*>(object);
+}
+
+const __NAMESPACE__::__CPPNAME__& wrap(const __CNAME__* object)
+{
+ return *reinterpret_cast<const __NAMESPACE__::__CPPNAME__*>(object);
+}
+
+} // namespace Glib
+')dnl endif __BOOL_NO_WRAP_FUNCTION__
+
+
+__NAMESPACE_BEGIN__
+
+dnl
+dnl The implementation:
+dnl
+
+dnl // static
+dnl const __CNAME__ __CPPNAME__::gobject_initializer_ = { 0, };
+dnl
+// static
+GType __CPPNAME__::get_type()
+{
+ return _GET_TYPE_FUNC(__CNAME__);
+}
+
+ifdef(`__BOOL_CUSTOM_DEFAULT_CTOR__',,`dnl else
+__CPPNAME__::__CPPNAME__`'()
+{
+ GLIBMM_INITIALIZE_STRUCT`'(gobject_, __CNAME__);
+}
+')dnl
+
+ifdef(`__BOOL_CUSTOM_CTOR_CAST__',,`dnl else
+__CPPNAME__::__CPPNAME__`'(const __CNAME__* gobject)
+{
+ if(gobject)
+ gobject_ = *gobject;
+ else
+ GLIBMM_INITIALIZE_STRUCT`'(gobject_, __CNAME__);
+}
+')dnl
+
+_IMPORT(SECTION_CC)
+
+__NAMESPACE_END__
+
+dnl
+dnl
+dnl
+dnl
+_POP()
+dnl
+dnl
+dnl The actual class, e.g. Gtk::TreeIter, declaration:
+dnl
+_IMPORT(SECTION_CLASS1)
+public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ typedef __CPPNAME__ CppObjectType;
+ typedef __CNAME__ BaseObjectType;
+
+ static GType get_type() G_GNUC_CONST;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+ifdef(`__BOOL_CUSTOM_DEFAULT_CTOR__',,`dnl else
+ __CPPNAME__`'();
+')dnl
+
+ifdef(`__BOOL_CUSTOM_CTOR_CAST__',,`dnl else
+ explicit __CPPNAME__`'(const __CNAME__* gobject); // always takes a copy
+')dnl
+
+ ///Provides access to the underlying C instance.
+ __CNAME__* gobj() { return &gobject_; }
+
+ ///Provides access to the underlying C instance.
+ const __CNAME__* gobj() const { return &gobject_; }
+
+protected:
+ __CNAME__ gobject_;
+dnl static const __CNAME__ gobject_initializer_;
+
+private:
+ _IMPORT(SECTION_CLASS2)
+')
+
diff --git a/libs/glibmm2/tools/m4/class_generic.m4 b/libs/glibmm2/tools/m4/class_generic.m4
new file mode 100644
index 0000000000..790e7c1b85
--- /dev/null
+++ b/libs/glibmm2/tools/m4/class_generic.m4
@@ -0,0 +1,54 @@
+dnl $Id: class_generic.m4,v 1.1.1.1 2003/01/07 16:59:05 murrayc Exp $
+
+dnl
+dnl _CLASS_GENERIC(LayoutIter, PangoLayoutIter)
+dnl
+
+define(`_CLASS_GENERIC',`dnl
+_PUSH()
+dnl
+dnl Define the args for later macros
+define(`__CPPNAME__',`$1')
+define(`__CNAME__',`$2')
+
+_POP()
+_SECTION(SECTION_CLASS2)
+') dnl End of _CLASS_GENERIC.
+
+
+dnl
+dnl _END_CLASS_GENERIC()
+dnl denotes the end of a class
+dnl
+define(`_END_CLASS_GENERIC',`
+
+_SECTION(SECTION_SRC_GENERATED)
+
+__NAMESPACE_BEGIN__
+
+dnl The implementation:
+
+_IMPORT(SECTION_CC)
+
+__NAMESPACE_END__
+
+dnl
+dnl
+dnl
+dnl
+_POP()
+dnl
+dnl
+dnl The actual class, e.g. Pango::FontDescription, declaration:
+dnl
+_IMPORT(SECTION_CLASS1)
+public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ typedef __CPPNAME__ CppObjectType;
+ typedef __CNAME__ BaseObjectType;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+private:
+_IMPORT(SECTION_CLASS2)
+')
+
diff --git a/libs/glibmm2/tools/m4/class_gobject.m4 b/libs/glibmm2/tools/m4/class_gobject.m4
new file mode 100644
index 0000000000..acbe8db8a9
--- /dev/null
+++ b/libs/glibmm2/tools/m4/class_gobject.m4
@@ -0,0 +1,240 @@
+dnl $Id: class_gobject.m4,v 1.6 2004/04/29 22:43:44 murrayc Exp $
+
+
+define(`_CLASS_GOBJECT',`dnl
+_PUSH()
+dnl
+dnl Define the args for later macros
+define(`__CPPNAME__',`$1')
+define(`__CNAME__',`$2')
+define(`__CCAST__',`$3')
+define(`__BASE__',_LOWER(__CPPNAME__))
+define(`__CPPPARENT__',`$4')
+define(`__CPARENT__',`$5')
+define(`__PCAST__',`($5*)')
+
+dnl Some C types, e.g. GdkWindow or GdkPixmap, are a typedef to their base type,
+dnl rather than the real instance type. That is really ugly, yes. We get around
+dnl the problem by supporting optional __REAL_* arguments to this macro.
+define(`__REAL_CNAME__',ifelse(`$6',,__CNAME__,`$6'))
+define(`__REAL_CPARENT__',ifelse(`$7',,__CPARENT__,`$7'))
+
+
+_POP()
+_SECTION(SECTION_CLASS2)
+') dnl end of _CLASS_GOBJECT
+
+dnl Widget and Object, and some others, have custom-written destructor implementations:
+define(`_CUSTOM_DTOR',`dnl
+_PUSH()
+dnl Define this macro to be tested for later.
+define(`__BOOL_CUSTOM_DTOR__',`$1')
+_POP()
+')
+
+dnl Gdk::Pixmap_Class::wrap_new() needs a custom implementation, in order
+dnl to create a Gdk::Bitmap object if appropriate. See comments there.
+define(`_CUSTOM_WRAP_NEW',`dnl
+_PUSH()
+dnl Define this macro to be tested for later.
+define(`__BOOL_CUSTOM_WRAP_NEW__',`1')
+_POP()
+')
+
+dnl Gnome::Canvas::CanvasAA::CanvasAA() needs access to the
+dnl normally-private canvas_class_ member variable. See comments there.
+define(`_GMMPROC_PROTECTED_GCLASS',`dnl
+_PUSH()
+dnl Define this macro to be tested for later.
+define(`__BOOL_PROTECTED_GCLASS__',`1')
+_POP()
+')
+
+dnl Some of the Gdk types are actually direct typedefs of their base type.
+dnl This means that 2 wrap functions would have the same argument.
+dnl define(`_NO_WRAP_FUNCTION',`dnl
+dnl _PUSH()
+dnl Define this macro to be tested for later.
+dnl define(`__BOOL_NO_WRAP_FUNCTION__',`$1')
+dnl _POP()
+dnl ')
+
+dnl
+dnl _CREATE_METHOD(args_type_and_name_hpp, args_type_and_name_cpp,args_name_only);
+dnl
+define(`_CREATE_METHOD',`
+ static Glib::RefPtr<`'__CPPNAME__`'> create(`'$1`');
+_PUSH(SECTION_CC)
+Glib::RefPtr<`'__CPPNAME__`'> __CPPNAME__`'::create(`'$2`')
+{
+ return Glib::RefPtr<`'__CPPNAME__`'>( new __CPPNAME__`'(`'$3`') );
+}
+_POP()
+')
+
+
+dnl
+dnl _END_CLASS_GOBJECT()
+dnl denotes the end of a class
+dnl
+define(`_END_CLASS_GOBJECT',`
+_SECTION(SECTION_HEADER1)
+ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
+',`dnl
+_STRUCT_PROTOTYPE()
+')dnl
+
+__NAMESPACE_BEGIN__ class __CPPNAME__`'_Class; __NAMESPACE_END__
+_SECTION(SECTION_HEADER3)
+
+ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
+',`dnl
+namespace Glib
+{
+ /** @relates __NAMESPACE__::__CPPNAME__
+ * @param object The C instance
+ * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref.
+ * @result A C++ instance that wraps this C instance.
+ */
+ Glib::RefPtr<__NAMESPACE__::__CPPNAME__> wrap(__REAL_CNAME__`'* object, bool take_copy = false);
+}
+')dnl
+
+
+dnl
+dnl
+_SECTION(SECTION_PHEADER)
+
+#include <glibmm/class.h>
+
+__NAMESPACE_BEGIN__
+
+_PH_CLASS_DECLARATION()
+
+__NAMESPACE_END__
+
+_SECTION(SECTION_SRC_GENERATED)
+
+ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
+',`dnl else
+namespace Glib
+{
+
+Glib::RefPtr<__NAMESPACE__::__CPPNAME__> wrap(__REAL_CNAME__`'* object, bool take_copy)
+{
+ return Glib::RefPtr<__NAMESPACE__::__CPPNAME__>( dynamic_cast<__NAMESPACE__::__CPPNAME__*> (Glib::wrap_auto ((GObject*)(object), take_copy)) );
+ //We use dynamic_cast<> in case of multiple inheritance.
+}
+
+} /* namespace Glib */
+')dnl endif
+
+
+
+
+__NAMESPACE_BEGIN__
+
+
+/* The *_Class implementation: */
+
+_PCC_CLASS_IMPLEMENTATION()
+
+m4_ifdef(`__BOOL_CUSTOM_WRAP_NEW__',,`dnl else
+Glib::ObjectBase* __CPPNAME__`'_Class::wrap_new(GObject* object)
+{
+ return new __CPPNAME__`'((__CNAME__*)`'object);
+}
+
+')dnl endif
+
+/* The implementation: */
+
+__CNAME__* __CPPNAME__::gobj_copy()
+{
+ reference();
+ return gobj();
+}
+
+__CPPNAME__::__CPPNAME__`'(const Glib::ConstructParams& construct_params)
+:
+ __CPPPARENT__`'(construct_params)
+{}
+
+__CPPNAME__::__CPPNAME__`'(__CNAME__* castitem)
+:
+ __CPPPARENT__`'(__PCAST__`'(castitem))
+{}
+
+ifdef(`__BOOL_CUSTOM_DTOR__',`dnl
+',`dnl
+__CPPNAME__::~__CPPNAME__`'()
+{}
+
+')dnl
+
+
+_CC_CLASS_IMPLEMENTATION()
+
+__NAMESPACE_END__
+
+dnl
+dnl
+dnl
+dnl
+_POP()
+dnl
+dnl The actual class, e.g. Gtk::Widget, declaration:
+dnl _IMPORT(SECTION_H_SIGNALPROXIES_CUSTOM)
+
+_IMPORT(SECTION_CLASS1)
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+public:
+ typedef __CPPNAME__ CppObjectType;
+ typedef __CPPNAME__`'_Class CppClassType;
+ typedef __CNAME__ BaseObjectType;
+ typedef __REAL_CNAME__`'Class BaseClassType;
+
+m4_ifdef(`__BOOL_PROTECTED_GCLASS__',
+`protected:',`dnl else
+private:')dnl endif
+ friend class __CPPNAME__`'_Class;
+ static CppClassType `'__BASE__`'_class_;
+
+private:
+ // noncopyable
+ __CPPNAME__`'(const __CPPNAME__&);
+ __CPPNAME__& operator=(const __CPPNAME__&);
+
+protected:
+ explicit __CPPNAME__`'(const Glib::ConstructParams& construct_params);
+ explicit __CPPNAME__`'(__CNAME__* castitem);
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+public:
+ virtual ~__CPPNAME__`'();
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ static GType get_type() G_GNUC_CONST;
+ static GType get_base_type() G_GNUC_CONST;
+#endif
+
+ ///Provides access to the underlying C GObject.
+ __CNAME__* gobj() { return reinterpret_cast<__CNAME__*>(gobject_); }
+
+ ///Provides access to the underlying C GObject.
+ const __CNAME__* gobj() const { return reinterpret_cast<__CNAME__*>(gobject_); }
+
+ ///Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs.
+ __CNAME__* gobj_copy();
+
+private:
+_IMPORT(SECTION_CLASS2)
+
+public:
+_H_VFUNCS_AND_SIGNALS()
+
+')
+
diff --git a/libs/glibmm2/tools/m4/class_gtkobject.m4 b/libs/glibmm2/tools/m4/class_gtkobject.m4
new file mode 100644
index 0000000000..09445d03ec
--- /dev/null
+++ b/libs/glibmm2/tools/m4/class_gtkobject.m4
@@ -0,0 +1,225 @@
+dnl $Id: class_gtkobject.m4,v 1.6 2006/03/08 12:23:04 murrayc Exp $
+
+
+
+define(`_CLASS_GTKOBJECT',`dnl
+_PUSH()
+dnl
+dnl Define the args for later macros
+define(`__CPPNAME__',`$1')
+define(`__CNAME__',`$2')
+define(`__CCAST__',`$3')
+define(`__BASE__',_LOWER(__CPPNAME__))
+define(`__CPPPARENT__',`$4')
+define(`__CPARENT__',`$5')
+define(`__PCAST__',`($5*)')
+
+dnl Some C types, e.g. GdkWindow or GdkPixmap, are a typedef to their base type,
+dnl rather than the real instance type. That is really ugly, yes. We get around
+dnl the problem by supporting optional __REAL_* arguments to this macro.
+define(`__REAL_CNAME__',ifelse(`$6',,__CNAME__,`$6'))
+define(`__REAL_CPARENT__',ifelse(`$7',,__CPARENT__,`$7'))
+
+
+dnl
+dnl ----------------------- Constructors -------------------------
+dnl
+
+
+_POP()
+_SECTION(SECTION_CLASS2)
+')dnl end of _CLASS_GTKOBJECT
+
+dnl Widget and Object, and some others, have custom-written destructor implementations:
+define(`_CUSTOM_DTOR',`dnl
+_PUSH()
+dnl Define this macro to be tested for later.
+define(`__BOOL_CUSTOM_DTOR__',`$1')
+_POP()
+')
+
+dnl Gtk::Object has a custom-written cast implementation:
+define(`_CUSTOM_CTOR_CAST',`dnl
+_PUSH()
+dnl Define this macro to be tested for later.
+define(`__BOOL_CUSTOM_CTOR_CAST__',`$1')
+_POP()
+')
+
+dnl Top-level windows can not be manage()ed, so we should not use manage() in wrap_new().
+define(`_UNMANAGEABLE',`dnl
+_PUSH()
+dnl Define this macro to be tested for later.
+define(`__BOOL_UNMANAGEABLE__',`$1')
+_POP()
+')
+
+dnl Optionally ifdef-out the whole .h and .cc files:
+define(`_DEPRECATED',`dnl
+_PUSH()
+dnl Define this macro to be tested for later.
+define(`__BOOL_DEPRECATED__',`$1')
+_POP()
+')
+
+dnl Gnome::Canvas::CanvasAA::CanvasAA() needs access to the
+dnl normally-private canvas_class_ member variable. See comments there.
+define(`_GMMPROC_PROTECTED_GCLASS',`dnl
+_PUSH()
+dnl Define this macro to be tested for later.
+define(`__BOOL_PROTECTED_GCLASS__',`1')
+_POP()
+')
+
+
+dnl
+dnl _END_CLASS_GTKOBJECT()
+dnl denotes the end of a class
+dnl
+define(`_END_CLASS_GTKOBJECT',`
+
+_SECTION(SECTION_HEADER1)
+_STRUCT_PROTOTYPE()
+
+__NAMESPACE_BEGIN__ class __CPPNAME__`'_Class; __NAMESPACE_END__
+_SECTION(SECTION_HEADER3)
+
+namespace Glib
+{
+ /** @relates __NAMESPACE__::__CPPNAME__
+ * @param object The C instance
+ * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref.
+ * @result A C++ instance that wraps this C instance.
+ */
+ __NAMESPACE__::__CPPNAME__`'* wrap(__CNAME__`'* object, bool take_copy = false);
+} //namespace Glib
+
+dnl
+dnl
+_SECTION(SECTION_PHEADER)
+
+#include <glibmm/class.h>
+
+__NAMESPACE_BEGIN__
+
+_PH_CLASS_DECLARATION()
+
+__NAMESPACE_END__
+
+_SECTION(SECTION_SRC_GENERATED)
+
+namespace Glib
+{
+
+__NAMESPACE__::__CPPNAME__`'* wrap(__CNAME__`'* object, bool take_copy)
+{
+ return dynamic_cast<__NAMESPACE__::__CPPNAME__ *> (Glib::wrap_auto ((GObject*)(object), take_copy));
+}
+
+} /* namespace Glib */
+
+__NAMESPACE_BEGIN__
+
+
+/* The *_Class implementation: */
+
+_PCC_CLASS_IMPLEMENTATION()
+
+Glib::ObjectBase* __CPPNAME__`'_Class::wrap_new(GObject* o)
+{
+ifdef(`__BOOL_UNMANAGEABLE__',`dnl
+ return new __CPPNAME__`'((__CNAME__*)`'(o)); //top-level windows can not be manage()ed.
+',`dnl
+ return manage(new __CPPNAME__`'((__CNAME__*)`'(o)));
+')
+}
+
+
+/* The implementation: */
+
+ifdef(`__BOOL_CUSTOM_CTOR_CAST__',`dnl necessary for Gtk::Object implementation
+',`dnl
+__CPPNAME__::__CPPNAME__`'(const Glib::ConstructParams& construct_params)
+:
+ __CPPPARENT__`'(construct_params)
+{
+ _IMPORT(SECTION_CC_INITIALIZE_CLASS_EXTRA) dnl Does not seem to work - custom implement it instead.
+}
+
+__CPPNAME__::__CPPNAME__`'(__CNAME__* castitem)
+:
+ __CPPPARENT__`'(__PCAST__`'(castitem))
+{
+ _IMPORT(SECTION_CC_INITIALIZE_CLASS_EXTRA) dnl Does not seem to work - custom implement it instead.
+}
+
+')dnl
+ifdef(`__BOOL_CUSTOM_DTOR__',`dnl
+',`dnl
+__CPPNAME__::~__CPPNAME__`'()
+{
+ destroy_();
+}
+
+')dnl
+_CC_CLASS_IMPLEMENTATION()
+
+__NAMESPACE_END__
+
+dnl
+dnl
+dnl
+dnl
+_POP()
+dnl The actual class, e.g. Gtk::Widget, declaration:
+dnl _IMPORT(SECTION_H_SIGNALPROXIES_CUSTOM)
+
+_IMPORT(SECTION_CLASS1)
+public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ typedef __CPPNAME__ CppObjectType;
+ typedef __CPPNAME__`'_Class CppClassType;
+ typedef __CNAME__ BaseObjectType;
+ typedef __REAL_CNAME__`'Class BaseClassType;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+ virtual ~__CPPNAME__`'();
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+m4_ifdef(`__BOOL_PROTECTED_GCLASS__',
+`protected:',`dnl else
+private:')dnl endif
+
+ friend class __CPPNAME__`'_Class;
+ static CppClassType `'__BASE__`'_class_;
+
+ // noncopyable
+ __CPPNAME__`'(const __CPPNAME__&);
+ __CPPNAME__& operator=(const __CPPNAME__&);
+
+protected:
+ explicit __CPPNAME__`'(const Glib::ConstructParams& construct_params);
+ explicit __CPPNAME__`'(__CNAME__* castitem);
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ static GType get_type() G_GNUC_CONST;
+ static GType get_base_type() G_GNUC_CONST;
+#endif
+
+ ///Provides access to the underlying C GtkObject.
+ __CNAME__* gobj() { return reinterpret_cast<__CNAME__*>(gobject_); }
+
+ ///Provides access to the underlying C GtkObject.
+ const __CNAME__* gobj() const { return reinterpret_cast<__CNAME__*>(gobject_); }
+
+_H_VFUNCS_AND_SIGNALS()
+
+private:
+_IMPORT(SECTION_CLASS2)
+
+')
+
diff --git a/libs/glibmm2/tools/m4/class_interface.m4 b/libs/glibmm2/tools/m4/class_interface.m4
new file mode 100644
index 0000000000..c08dec9ca2
--- /dev/null
+++ b/libs/glibmm2/tools/m4/class_interface.m4
@@ -0,0 +1,264 @@
+dnl $Id: class_interface.m4,v 1.7 2006/07/19 16:32:41 murrayc Exp $
+
+
+define(`_CLASS_INTERFACE',`dnl
+_PUSH()
+dnl
+dnl Define the args for later macros
+define(`__CPPNAME__',`$1')
+define(`__CNAME__',`$2')
+define(`__CCAST__',`$3')
+define(`__CCLASS__',`$4') dnl SomethingIface or SomethingClass, both suffixes are used.
+define(`__BASE__',_LOWER(__CPPNAME__))
+define(`__CPPPARENT__',`Glib::Interface')
+dnl define(`__CPARENT__',`GObject')
+define(`__PCAST__',`(GObject*)')
+define(`__BOOL_IS_INTERFACE__',`1')
+
+
+_POP()
+_SECTION(SECTION_CLASS2)
+') dnl end of _CLASS_INTERFACE
+
+
+dnl Some of the Gdk types are actually direct typedefs of their base type.
+dnl This means that 2 wrap functions would have the same argument.
+dnl define(`_NO_WRAP_FUNCTION',`dnl
+dnl _PUSH()
+dnl Define this macro to be tested for later.
+dnl define(`__BOOL_NO_WRAP_FUNCTION__',`$1')
+dnl _POP()
+dnl ')
+
+dnl
+dnl
+dnl
+define(`_PH_CLASS_DECLARATION_INTERFACE',`dnl
+class __CPPNAME__`'_Class : public Glib::Interface_Class
+{
+public:
+ typedef __CPPNAME__ CppObjectType;
+ typedef __CNAME__ BaseObjectType;
+ typedef __CCLASS__ BaseClassType;
+ typedef __CPPPARENT__`'_Class CppClassParent;
+
+ friend class __CPPNAME__;
+
+ const Glib::Interface_Class& init();
+
+ static void iface_init_function(void* g_iface, void* iface_data);
+
+ static Glib::ObjectBase* wrap_new(GObject*);
+
+protected:
+
+#ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
+ //Callbacks (default signal handlers):
+ //These will call the *_impl member methods, which will then call the existing default signal callbacks, if any.
+ //You could prevent the original default signal handlers being called by overriding the *_impl method.
+_IMPORT(SECTION_PH_DEFAULT_SIGNAL_HANDLERS)
+#endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
+
+ //Callbacks (virtual functions):
+#ifdef GLIBMM_VFUNCS_ENABLED
+_IMPORT(SECTION_PH_VFUNCS)
+#endif //GLIBMM_VFUNCS_ENABLED
+};
+')
+
+
+dnl
+dnl
+dnl
+define(`_PCC_CLASS_IMPLEMENTATION_INTERFACE',`dnl
+const Glib::Interface_Class& __CPPNAME__`'_Class::init()
+{
+ if(!gtype_) // create the GType if necessary
+ {
+ // Glib::Interface_Class has to know the interface init function
+ // in order to add interfaces to implementing types.
+ class_init_func_ = &__CPPNAME__`'_Class::iface_init_function;
+
+ // We can not derive from another interface, and it is not necessary anyway.
+ gtype_ = _LOWER(__CCAST__)_get_type();
+ }
+
+ return *this;
+}
+
+void __CPPNAME__`'_Class::iface_init_function(void* g_iface, void*)
+{
+ BaseClassType *const klass = static_cast<BaseClassType*>(g_iface);
+
+ //This is just to avoid an "unused variable" warning when there are no vfuncs or signal handlers to connect.
+ //This is a temporary fix until I find out why I can not seem to derive a GtkFileChooser interface. murrayc
+ g_assert(klass != 0);
+
+#ifdef GLIBMM_VFUNCS_ENABLED
+_IMPORT(SECTION_PCC_CLASS_INIT_VFUNCS)
+#endif //GLIBMM_VFUNCS_ENABLED
+
+#ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
+_IMPORT(SECTION_PCC_CLASS_INIT_DEFAULT_SIGNAL_HANDLERS)
+#endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
+}
+
+#ifdef GLIBMM_VFUNCS_ENABLED
+_IMPORT(SECTION_PCC_VFUNCS)
+#endif //GLIBMM_VFUNCS_ENABLED
+
+#ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
+_IMPORT(SECTION_PCC_DEFAULT_SIGNAL_HANDLERS)
+#endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
+')
+
+
+dnl
+dnl _END_CLASS_INTERFACE()
+dnl denotes the end of a class
+dnl
+define(`_END_CLASS_INTERFACE',`
+_SECTION(SECTION_HEADER1)
+_STRUCT_PROTOTYPE()
+
+__NAMESPACE_BEGIN__ class __CPPNAME__`'_Class; __NAMESPACE_END__
+_SECTION(SECTION_HEADER3)
+
+ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
+',`dnl
+namespace Glib
+{
+ /** @relates __NAMESPACE__::__CPPNAME__
+ * @param object The C instance
+ * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref.
+ * @result A C++ instance that wraps this C instance.
+ */
+ Glib::RefPtr<__NAMESPACE__::__CPPNAME__> wrap(__CNAME__`'* object, bool take_copy = false);
+
+} // namespace Glib
+
+')dnl
+dnl
+dnl
+_SECTION(SECTION_PHEADER)
+
+#include <glibmm/private/interface_p.h>
+
+__NAMESPACE_BEGIN__
+
+_PH_CLASS_DECLARATION_INTERFACE()
+
+__NAMESPACE_END__
+
+_SECTION(SECTION_SRC_GENERATED)
+
+ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
+',`dnl else
+namespace Glib
+{
+
+Glib::RefPtr<__NAMESPACE__::__CPPNAME__> wrap(__CNAME__`'* object, bool take_copy)
+{
+ return Glib::RefPtr<__NAMESPACE__::__CPPNAME__>( dynamic_cast<__NAMESPACE__::__CPPNAME__*> (Glib::wrap_auto ((GObject*)(object), take_copy)) );
+ //We use dynamic_cast<> in case of multiple inheritance.
+}
+
+} // namespace Glib
+')dnl endif
+
+
+__NAMESPACE_BEGIN__
+
+
+/* The *_Class implementation: */
+
+_PCC_CLASS_IMPLEMENTATION_INTERFACE()
+
+Glib::ObjectBase* __CPPNAME__`'_Class::wrap_new(GObject* object)
+{
+ return new __CPPNAME__`'((__CNAME__*)`'(object));
+}
+
+
+/* The implementation: */
+
+__CPPNAME__::__CPPNAME__`'()
+:
+ Glib::Interface(__BASE__`'_class_.init())
+{}
+
+__CPPNAME__::__CPPNAME__`'(__CNAME__* castitem)
+:
+ __CPPPARENT__`'(__PCAST__`'(castitem))
+{}
+
+__CPPNAME__::~__CPPNAME__`'()
+{}
+
+// static
+void __CPPNAME__`'::add_interface(GType gtype_implementer)
+{
+ __BASE__`'_class_.init().add_interface(gtype_implementer);
+}
+
+_CC_CLASS_IMPLEMENTATION()
+
+__NAMESPACE_END__
+
+dnl
+dnl
+dnl
+dnl
+_POP()
+dnl
+dnl The actual class, e.g. Gtk::Widget, declaration:
+dnl _IMPORT(SECTION_H_SIGNALPROXIES_CUSTOM)
+
+_IMPORT(SECTION_CLASS1)
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+public:
+ typedef __CPPNAME__ CppObjectType;
+ typedef __CPPNAME__`'_Class CppClassType;
+ typedef __CNAME__ BaseObjectType;
+ typedef __CCLASS__ BaseClassType;
+
+private:
+ friend class __CPPNAME__`'_Class;
+ static CppClassType `'__BASE__`'_class_;
+
+ // noncopyable
+ __CPPNAME__`'(const __CPPNAME__&);
+ __CPPNAME__& operator=(const __CPPNAME__&);
+
+protected:
+ __CPPNAME__`'(); // you must derive from this class
+ explicit __CPPNAME__`'(__CNAME__* castitem);
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+public:
+ virtual ~__CPPNAME__`'();
+
+ static void add_interface(GType gtype_implementer);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ static GType get_type() G_GNUC_CONST;
+ static GType get_base_type() G_GNUC_CONST;
+#endif
+
+ ///Provides access to the underlying C GObject.
+ __CNAME__* gobj() { return reinterpret_cast<__CNAME__*>(gobject_); }
+
+ ///Provides access to the underlying C GObject.
+ const __CNAME__* gobj() const { return reinterpret_cast<__CNAME__*>(gobject_); }
+
+private:
+_IMPORT(SECTION_CLASS2)
+
+public:
+_H_VFUNCS_AND_SIGNALS()
+
+')
+
diff --git a/libs/glibmm2/tools/m4/class_opaque_copyable.m4 b/libs/glibmm2/tools/m4/class_opaque_copyable.m4
new file mode 100644
index 0000000000..0b8417fd95
--- /dev/null
+++ b/libs/glibmm2/tools/m4/class_opaque_copyable.m4
@@ -0,0 +1,181 @@
+dnl $Id: class_opaque_copyable.m4,v 1.2 2003/12/14 11:53:04 murrayc Exp $
+
+dnl
+dnl _CLASS_OPAQUE_COPYABLE(Region, GdkRegion, gdk_region_new, gdk_region_copy, gdk_region_destroy)
+dnl
+
+define(`_CLASS_OPAQUE_COPYABLE',`dnl
+_PUSH()
+dnl
+dnl Define the args for later macros
+define(`__CPPNAME__',`$1')
+define(`__CNAME__',`$2')
+define(`__OPAQUE_FUNC_NEW',`$3')
+define(`__OPAQUE_FUNC_COPY',`$4')
+define(`__OPAQUE_FUNC_FREE',`$5')
+
+define(`_CUSTOM_DEFAULT_CTOR',`dnl
+_PUSH()
+dnl Define this macro to be tested for later.
+define(`__BOOL_CUSTOM_DEFAULT_CTOR__',`$1')
+_POP()
+')
+
+_POP()
+_SECTION(SECTION_CLASS2)
+') dnl End of _CLASS_OPAQUE_COPYABLE.
+
+
+dnl
+dnl _END_CLASS_OPAQUE_COPYABLE()
+dnl denotes the end of a class
+dnl
+define(`_END_CLASS_OPAQUE_COPYABLE',`
+
+_SECTION(SECTION_HEADER3)
+
+ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
+',`dnl else
+namespace Glib
+{
+
+ /** @relates __NAMESPACE__::__CPPNAME__
+ * @param object The C instance
+ * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref.
+ * @result A C++ instance that wraps this C instance.
+ */
+__NAMESPACE__::__CPPNAME__ wrap(__CNAME__* object, bool take_copy = false);
+
+} // namespace Glib
+')dnl endif __BOOL_NO_WRAP_FUNCTION__
+
+_SECTION(SECTION_SRC_GENERATED)
+
+ifdef(`__BOOL_NO_WRAP_FUNCTION__',`dnl
+',`dnl else
+namespace Glib
+{
+
+__NAMESPACE__::__CPPNAME__ wrap(__CNAME__* object, bool take_copy /* = false */)
+{
+ return __NAMESPACE__::__CPPNAME__`'(object, take_copy);
+}
+
+} // namespace Glib
+')dnl endif
+
+
+__NAMESPACE_BEGIN__
+
+dnl
+dnl The implementation:
+dnl
+
+ifdef(`__BOOL_CUSTOM_DEFAULT_CTOR__',`dnl
+',`dnl else
+__CPPNAME__::__CPPNAME__`'()
+:
+ifelse(__OPAQUE_FUNC_NEW,NONE,`dnl
+ gobject_ (0) // Allows creation of invalid wrapper, e.g. for output arguments to methods.
+',`dnl else
+ gobject_ (__OPAQUE_FUNC_NEW`'())
+')dnl
+{}
+')dnl endif __BOOL_CUSTOM_DEFAULT_CTOR__
+
+__CPPNAME__::__CPPNAME__`'(const __CPPNAME__& src)
+:
+ gobject_ ((src.gobject_) ? __OPAQUE_FUNC_COPY`'(src.gobject_) : 0)
+{}
+
+__CPPNAME__::__CPPNAME__`'(__CNAME__* castitem, bool make_a_copy /* = false */)
+{
+ if(!make_a_copy)
+ {
+ // It was given to us by a function which has already made a copy for us to keep.
+ gobject_ = castitem;
+ }
+ else
+ {
+ // We are probably getting it via direct access to a struct,
+ // so we can not just take it - we have to take a copy of it.
+ if(castitem)
+ gobject_ = __OPAQUE_FUNC_COPY`'(castitem);
+ else
+ gobject_ = 0;
+ }
+}
+
+ifelse(__OPAQUE_FUNC_COPY,NONE,`dnl
+',`dnl else
+__CPPNAME__& __CPPNAME__::operator=(const __CPPNAME__`'& src)
+{
+ __CNAME__ *const new_gobject = (src.gobject_) ? __OPAQUE_FUNC_COPY`'(src.gobject_) : 0;
+
+ if(gobject_)
+ __OPAQUE_FUNC_FREE`'(gobject_);
+
+ gobject_ = new_gobject;
+
+ return *this;
+}
+')dnl
+
+__CPPNAME__::~__CPPNAME__`'()
+{
+ if(gobject_)
+ __OPAQUE_FUNC_FREE`'(gobject_);
+}
+
+__CNAME__* __CPPNAME__::gobj_copy() const
+{
+ return __OPAQUE_FUNC_COPY`'(gobject_);
+}
+
+_IMPORT(SECTION_CC)
+
+__NAMESPACE_END__
+
+
+dnl
+dnl
+dnl
+dnl
+_POP()
+dnl
+dnl
+dnl The actual class, e.g. Pango::FontDescription, declaration:
+dnl
+_IMPORT(SECTION_CLASS1)
+public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ typedef __CPPNAME__ CppObjectType;
+ typedef __CNAME__ BaseObjectType;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+ifdef(`__BOOL_CUSTOM_DEFAULT_CTOR__',`dnl
+',`dnl else
+ __CPPNAME__`'();
+')dnl
+
+ // Use make_a_copy=true when getting it directly from a struct.
+ explicit __CPPNAME__`'(__CNAME__* castitem, bool make_a_copy = false);
+
+ __CPPNAME__`'(const __CPPNAME__& src);
+ __CPPNAME__& operator=(const __CPPNAME__& src);
+
+ ~__CPPNAME__`'();
+
+ __CNAME__* gobj() { return gobject_; }
+ const __CNAME__* gobj() const { return gobject_; }
+
+ ///Provides access to the underlying C instance. The caller is responsible for freeing it. Use when directly setting fields in structs.
+ __CNAME__* gobj_copy() const;
+
+protected:
+ __CNAME__* gobject_;
+
+private:
+_IMPORT(SECTION_CLASS2)
+')
+
diff --git a/libs/glibmm2/tools/m4/class_opaque_refcounted.m4 b/libs/glibmm2/tools/m4/class_opaque_refcounted.m4
new file mode 100644
index 0000000000..e64b2647c1
--- /dev/null
+++ b/libs/glibmm2/tools/m4/class_opaque_refcounted.m4
@@ -0,0 +1,172 @@
+dnl $Id: class_opaque_refcounted.m4,v 1.3 2003/12/14 11:53:04 murrayc Exp $
+
+dnl
+dnl _CLASS_OPAQUE_REFCOUNTED(Coverage, PangoCoverage, pango_coverage_new, pango_coverage_ref, pango_coverage_unref)
+dnl
+
+define(`_CLASS_OPAQUE_REFCOUNTED',`dnl
+_PUSH()
+dnl
+dnl Define the args for later macros
+define(`__CPPNAME__',`$1')
+define(`__CNAME__',`$2')
+define(`__OPAQUE_FUNC_NEW',`$3')
+define(`__OPAQUE_FUNC_REF',`$4')
+define(`__OPAQUE_FUNC_UNREF',`$5')
+
+_POP()
+_SECTION(SECTION_CLASS2)
+')dnl End of _CLASS_OPAQUE_REFCOUNTED.
+
+
+dnl
+dnl _END_CLASS_OPAQUE_REFCOUNTED()
+dnl denotes the end of a class
+dnl
+define(`_END_CLASS_OPAQUE_REFCOUNTED',`
+
+_SECTION(SECTION_HEADER3)
+
+namespace Glib
+{
+
+ /** @relates __NAMESPACE__::__CPPNAME__
+ * @param object The C instance
+ * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref.
+ * @result A C++ instance that wraps this C instance.
+ */
+ Glib::RefPtr<__NAMESPACE__::__CPPNAME__> wrap(__CNAME__* object, bool take_copy = false);
+
+} // namespace Glib
+
+_SECTION(SECTION_SRC_GENERATED)
+
+/* Why reinterpret_cast<__CPPNAME__*>(gobject) is needed:
+ *
+ * A __CPPNAME__ instance is in fact always a __CNAME__ instance.
+ * Unfortunately, __CNAME__ cannot be a member of __CPPNAME__,
+ * because it is an opaque struct. Also, the C interface does not provide
+ * any hooks to install a destroy notification handler, thus we cannot
+ * wrap it dynamically either.
+ *
+ * The cast works because __CPPNAME__ does not have any member data, and
+ * it is impossible to derive from it. This is ensured by not implementing
+ * the (protected) default constructor. The ctor is protected rather than
+ * private just to avoid a compile warning.
+ */
+
+namespace Glib
+{
+
+Glib::RefPtr<__NAMESPACE__::__CPPNAME__> wrap(__CNAME__* object, bool take_copy)
+{
+ if(take_copy && object)
+ __OPAQUE_FUNC_REF`'(object);
+
+ // See the comment at the top of this file, if you want to know why the cast works.
+ return Glib::RefPtr<__NAMESPACE__::__CPPNAME__>(reinterpret_cast<__NAMESPACE__::__CPPNAME__*>(object));
+}
+
+} // namespace Glib
+
+
+__NAMESPACE_BEGIN__
+
+dnl
+dnl The implementation:
+dnl
+
+ifelse(__OPAQUE_FUNC_NEW,NONE,`dnl
+',`dnl else
+// static
+Glib::RefPtr<__CPPNAME__> __CPPNAME__::create()
+{
+ // See the comment at the top of this file, if you want to know why the cast works.
+ return Glib::RefPtr<__CPPNAME__>(reinterpret_cast<__CPPNAME__*>(__OPAQUE_FUNC_NEW`'()));
+}
+')dnl endif __OPAQUE_FUNC_NEW
+
+void __CPPNAME__::reference() const
+{
+ // See the comment at the top of this file, if you want to know why the cast works.
+ __OPAQUE_FUNC_REF`'(reinterpret_cast<__CNAME__*>(const_cast<__CPPNAME__*>(this)));
+}
+
+void __CPPNAME__::unreference() const
+{
+ // See the comment at the top of this file, if you want to know why the cast works.
+ __OPAQUE_FUNC_UNREF`'(reinterpret_cast<__CNAME__*>(const_cast<__CPPNAME__*>(this)));
+}
+
+__CNAME__* __CPPNAME__::gobj()
+{
+ // See the comment at the top of this file, if you want to know why the cast works.
+ return reinterpret_cast<__CNAME__*>(this);
+}
+
+const __CNAME__* __CPPNAME__::gobj() const
+{
+ // See the comment at the top of this file, if you want to know why the cast works.
+ return reinterpret_cast<const __CNAME__*>(this);
+}
+
+__CNAME__* __CPPNAME__::gobj_copy() const
+{
+ // See the comment at the top of this file, if you want to know why the cast works.
+ __CNAME__ *const gobject = reinterpret_cast<__CNAME__*>(const_cast<__CPPNAME__*>(this));
+ __OPAQUE_FUNC_REF`'(gobject);
+ return gobject;
+}
+
+_IMPORT(SECTION_CC)
+
+__NAMESPACE_END__
+
+
+dnl
+dnl
+dnl
+dnl
+_POP()
+dnl
+dnl
+dnl The actual class, e.g. Pango::FontDescription, declaration:
+dnl
+_IMPORT(SECTION_CLASS1)
+public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ typedef __CPPNAME__ CppObjectType;
+ typedef __CNAME__ BaseObjectType;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+ifelse(__OPAQUE_FUNC_NEW,NONE,`dnl
+',`dnl else
+ static Glib::RefPtr<__CPPNAME__> create();
+')dnl endif __OPAQUE_FUNC_NEW
+
+ // For use with Glib::RefPtr<> only.
+ void reference() const;
+ void unreference() const;
+
+ ///Provides access to the underlying C instance.
+ __CNAME__* gobj();
+
+ ///Provides access to the underlying C instance.
+ const __CNAME__* gobj() const;
+
+ ///Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs.
+ __CNAME__* gobj_copy() const;
+
+protected:
+ // Do not derive this. __NAMESPACE__::__CPPNAME__ can neither be constructed nor deleted.
+ __CPPNAME__`'();
+ void operator delete(void*, size_t);
+
+private:
+ // noncopyable
+ __CPPNAME__`'(const __CPPNAME__&);
+ __CPPNAME__& operator=(const __CPPNAME__&);
+
+_IMPORT(SECTION_CLASS2)
+')
+
diff --git a/libs/glibmm2/tools/m4/class_shared.m4 b/libs/glibmm2/tools/m4/class_shared.m4
new file mode 100644
index 0000000000..c96f6099ac
--- /dev/null
+++ b/libs/glibmm2/tools/m4/class_shared.m4
@@ -0,0 +1,221 @@
+dnl $Id: class_shared.m4,v 1.6 2006/09/19 20:07:30 murrayc Exp $
+
+define(`_CLASS_START',`dnl
+_PUSH(SECTION_CLASS1)
+')
+
+dnl
+dnl
+dnl
+define(`_H_VFUNCS_AND_SIGNALS',`dnl
+
+public:
+ //C++ methods used to invoke GTK+ virtual functions:
+#ifdef GLIBMM_VFUNCS_ENABLED
+_IMPORT(SECTION_H_VFUNCS_CPPWRAPPER)
+#endif //GLIBMM_VFUNCS_ENABLED
+
+protected:
+ //GTK+ Virtual Functions (override these to change behaviour):
+#ifdef GLIBMM_VFUNCS_ENABLED
+_IMPORT(SECTION_H_VFUNCS)
+#endif //GLIBMM_VFUNCS_ENABLED
+
+ //Default Signal Handlers::
+#ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
+_IMPORT(SECTION_H_DEFAULT_SIGNAL_HANDLERS)
+#endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
+')
+
+
+dnl
+dnl
+dnl
+define(`_IMPLEMENTS_INTERFACE_CC',`dnl
+_PUSH(SECTION_CC_IMPLEMENTS_INTERFACES)
+ifelse(`$2',,,`#ifdef $2'
+)dnl
+ $1`'::add_interface(get_type());
+ifelse(`$2',,,`
+#endif // $2
+')dnl
+_POP()
+')
+
+
+
+dnl
+dnl
+dnl
+define(`_PH_CLASS_DECLARATION',`dnl
+class __CPPNAME__`'_Class : public Glib::Class
+{
+public:
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ typedef __CPPNAME__ CppObjectType;
+ typedef __REAL_CNAME__ BaseObjectType;
+ifdef(`__BOOL_NO_DERIVED_CLASS__',`dnl
+',`dnl
+ typedef __REAL_CNAME__`'Class BaseClassType;
+ typedef __CPPPARENT__`'_Class CppClassParent;
+ typedef __REAL_CPARENT__`'Class BaseClassParent;
+')dnl
+
+ friend class __CPPNAME__;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+ const Glib::Class& init();
+
+ifdef(`__BOOL_NO_DERIVED_CLASS__',`dnl
+',`dnl
+ static void class_init_function(void* g_class, void* class_data);
+')dnl
+
+ static Glib::ObjectBase* wrap_new(GObject*);
+
+protected:
+
+#ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
+ //Callbacks (default signal handlers):
+ //These will call the *_impl member methods, which will then call the existing default signal callbacks, if any.
+ //You could prevent the original default signal handlers being called by overriding the *_impl method.
+_IMPORT(SECTION_PH_DEFAULT_SIGNAL_HANDLERS)
+#endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
+
+ //Callbacks (virtual functions):
+#ifdef GLIBMM_VFUNCS_ENABLED
+_IMPORT(SECTION_PH_VFUNCS)
+#endif //GLIBMM_VFUNCS_ENABLED
+};
+')
+
+
+dnl
+dnl
+dnl
+define(`_PCC_CLASS_IMPLEMENTATION',`dnl
+const Glib::Class& __CPPNAME__`'_Class::init()
+{
+ if(!gtype_) // create the GType if necessary
+ {
+ // Glib::Class has to know the class init function to clone custom types.
+ class_init_func_ = &__CPPNAME__`'_Class::class_init_function;
+
+ // This is actually just optimized away, apparently with no harm.
+ // Make sure that the parent type has been created.
+ //CppClassParent::CppObjectType::get_type();
+
+ // Create the wrapper type, with the same class/instance size as the base type.
+ register_derived_type(_LOWER(__CCAST__)_get_type());
+
+ // Add derived versions of interfaces, if the C type implements any interfaces:
+_IMPORT(SECTION_CC_IMPLEMENTS_INTERFACES)
+ }
+
+ return *this;
+}
+ifdef(`__BOOL_NO_DERIVED_CLASS__',`dnl
+',`dnl
+
+void __CPPNAME__`'_Class::class_init_function(void* g_class, void* class_data)
+{
+ BaseClassType *const klass = static_cast<BaseClassType*>(g_class);
+ CppClassParent::class_init_function(klass, class_data);
+
+#ifdef GLIBMM_VFUNCS_ENABLED
+_IMPORT(SECTION_PCC_CLASS_INIT_VFUNCS)
+#endif //GLIBMM_VFUNCS_ENABLED
+
+#ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
+_IMPORT(SECTION_PCC_CLASS_INIT_DEFAULT_SIGNAL_HANDLERS)
+#endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
+}
+')dnl
+
+#ifdef GLIBMM_VFUNCS_ENABLED
+_IMPORT(SECTION_PCC_VFUNCS)
+#endif //GLIBMM_VFUNCS_ENABLED
+
+#ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
+_IMPORT(SECTION_PCC_DEFAULT_SIGNAL_HANDLERS)
+#endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
+')
+
+
+
+dnl
+dnl
+dnl
+define(`_CC_CLASS_IMPLEMENTATION',`dnl
+__CPPNAME__::CppClassType __CPPNAME__::`'__BASE__`'_class_; // initialize static member
+
+GType __CPPNAME__::get_type()
+{
+ return __BASE__`'_class_.init().get_type();
+}
+
+GType __CPPNAME__::get_base_type()
+{
+ return _LOWER(__CCAST__)_get_type();
+}
+
+_IMPORT(SECTION_CC)
+
+dnl _IMPORT(SECTION_CC_SIGNALPROXIES_CUSTOM)
+
+_IMPORT(SECTION_CC_SIGNALPROXIES)
+
+_IMPORT(SECTION_CC_PROPERTYPROXIES)
+
+#ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
+_IMPORT(SECTION_CC_DEFAULT_SIGNAL_HANDLERS)
+#endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
+
+#ifdef GLIBMM_VFUNCS_ENABLED
+_IMPORT(SECTION_CC_VFUNCS)
+_IMPORT(SECTION_CC_VFUNCS_CPPWRAPPER)
+#endif //GLIBMM_VFUNCS_ENABLED
+')
+
+dnl _PARENT_GCLASS_FROM_OBJECT(object_instance_name)
+define(`_PARENT_GCLASS_FROM_OBJECT',`dnl
+g_type_class_peek_parent`'(G_OBJECT_GET_CLASS`'($1)) // Get the parent class of the object class (The original underlying C class).
+')
+
+dnl _IFACE_PARENT_FROM_OBJECT(object_instance_name)
+define(`_IFACE_PARENT_FROM_OBJECT',`dnl
+g_type_interface_peek_parent`'( // Get the parent interface of the interface (The original underlying C interface).
+g_type_interface_peek`'(G_OBJECT_GET_CLASS`'($1), CppObjectType::get_type`'()) // Get the interface.
+)dnl
+')
+
+dnl Bonobo doesn't use the "typedef struct _somestruct struct" system.
+define(`_STRUCT_NOT_HIDDEN',`dnl
+_PUSH()
+dnl Define this macro to be tested for later.
+define(`__BOOL_STRUCT_NOT_HIDDEN__',`$1')
+_POP()
+')
+
+dnl _STRUCT_PROTOTYPE()
+define(`_STRUCT_PROTOTYPE',`dnl
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+ifdef(`__BOOL_STRUCT_NOT_HIDDEN__',`dnl
+',`dnl
+typedef struct _`'__CNAME__ __CNAME__;
+typedef struct _`'__CNAME__`'Class __CNAME__`'Class;
+')dnl
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+')
+
+dnl _GTKMMPROC_WIN32_NO_WRAP
+dnl Just process it to remove it from the generated file.
+dnl generate_wrap_init.pl will look for this in the original .hg file.
+dnl
+define(`_GTKMMPROC_WIN32_NO_WRAP', dnl
+`//This is not available in on Win32.
+//This source file will not be compiled,
+//and the class will not be registered in wrap_init.h or wrap_init.cc
+')dnl
+
+
diff --git a/libs/glibmm2/tools/m4/compare.m4 b/libs/glibmm2/tools/m4/compare.m4
new file mode 100644
index 0000000000..c439700306
--- /dev/null
+++ b/libs/glibmm2/tools/m4/compare.m4
@@ -0,0 +1,118 @@
+dnl $Id: compare.m4,v 1.2 2003/12/14 11:53:04 murrayc Exp $
+
+define(`__OPERATOR_DECL',`dnl
+/** @relates __NAMESPACE__::__CPPNAME__
+ * @param lhs The left-hand side
+ * @param rhs The right-hand side
+ * @result The result
+ */
+bool operator`'$1`'(const __CPPNAME__& lhs, const __CPPNAME__& rhs);
+')
+
+define(`__OPERATOR_IMPL',`dnl
+bool operator`'$1`'(const __CPPNAME__& lhs, const __CPPNAME__& rhs)
+{'
+ifelse`'(`__UNCONST__',`unconst',`dnl
+ return ($2`'(const_cast<__CNAME__*>(lhs.gobj()), const_cast<__CNAME__*>(rhs.gobj())) $3);
+',`dnl else
+ return ($2`'(lhs.gobj(), rhs.gobj()) $3);
+')`dnl endif
+}
+')
+
+
+dnl
+dnl _WRAP_EQUAL(gdk_region_equal, unconst)
+dnl
+define(`_WRAP_EQUAL',`dnl
+pushdef(`__FUNC_EQUAL__',$1)dnl
+pushdef(`__UNCONST__',$2)dnl
+_PUSH(SECTION_HEADER3)
+
+__NAMESPACE_BEGIN__
+
+__OPERATOR_DECL(`==')
+__OPERATOR_DECL(`!=')
+
+__NAMESPACE_END__
+
+_SECTION(SECTION_CC)
+
+__OPERATOR_IMPL(`==', __FUNC_EQUAL__, `!= 0')
+__OPERATOR_IMPL(`!=', __FUNC_EQUAL__, `== 0')
+
+_POP()
+popdef(`__UNCONST__')dnl
+popdef(`__FUNC_EQUAL__')dnl
+')dnl enddef _WRAP_EQUAL
+
+
+dnl
+dnl _WRAP_COMPARE(gtk_tree_path_compare)
+dnl
+define(`_WRAP_COMPARE',`dnl
+pushdef(`__FUNC_COMPARE__',$1)dnl
+pushdef(`__UNCONST__',$2)dnl
+_PUSH(SECTION_HEADER3)
+
+__NAMESPACE_BEGIN__
+
+__OPERATOR_DECL(`==')
+__OPERATOR_DECL(`!=')
+__OPERATOR_DECL(`<')
+__OPERATOR_DECL(`>')
+__OPERATOR_DECL(`<=')
+__OPERATOR_DECL(`>=')
+
+__NAMESPACE_END__
+
+_SECTION(SECTION_CC)
+
+__OPERATOR_IMPL(`==', __FUNC_COMPARE__, `== 0')
+__OPERATOR_IMPL(`!=', __FUNC_COMPARE__, `!= 0')
+__OPERATOR_IMPL(`<', __FUNC_COMPARE__, `< 0')
+__OPERATOR_IMPL(`>', __FUNC_COMPARE__, `> 0')
+__OPERATOR_IMPL(`<=', __FUNC_COMPARE__, `<= 0')
+__OPERATOR_IMPL(`>=', __FUNC_COMPARE__, `>= 0')
+
+_POP()
+popdef(`__UNCONST__')dnl
+popdef(`__FUNC_COMPARE__')dnl
+')dnl enddef _WRAP_COMPARE
+
+
+dnl
+dnl _WRAP_EQUAL_AND_COMPARE(gtk_text_iter_equal, gtk_text_iter_compare)
+dnl
+define(`_WRAP_EQUAL_AND_COMPARE',`dnl
+pushdef(`__FUNC_EQUAL__',$1)dnl
+pushdef(`__FUNC_COMPARE__',$2)dnl
+pushdef(`__UNCONST__',$3)dnl
+_PUSH(SECTION_HEADER3)
+
+__NAMESPACE_BEGIN__
+
+__OPERATOR_DECL(`==')
+__OPERATOR_DECL(`!=')
+__OPERATOR_DECL(`<')
+__OPERATOR_DECL(`>')
+__OPERATOR_DECL(`<=')
+__OPERATOR_DECL(`>=')
+
+__NAMESPACE_END__
+
+_SECTION(SECTION_CC)
+
+__OPERATOR_IMPL(`==', __FUNC_EQUAL__, `!= 0')
+__OPERATOR_IMPL(`!=', __FUNC_EQUAL__, `== 0')
+__OPERATOR_IMPL(`<', __FUNC_COMPARE__, `< 0')
+__OPERATOR_IMPL(`>', __FUNC_COMPARE__, `> 0')
+__OPERATOR_IMPL(`<=', __FUNC_COMPARE__, `<= 0')
+__OPERATOR_IMPL(`>=', __FUNC_COMPARE__, `>= 0')
+
+_POP()
+popdef(`__UNCONST__')dnl
+popdef(`__FUNC_COMPARE__')dnl
+popdef(`__FUNC_EQUAL__')dnl
+')dnl enddef _WRAP_EQUAL_AND_COMPARE
+
diff --git a/libs/glibmm2/tools/m4/convert.m4 b/libs/glibmm2/tools/m4/convert.m4
new file mode 100644
index 0000000000..9057f5151a
--- /dev/null
+++ b/libs/glibmm2/tools/m4/convert.m4
@@ -0,0 +1,6 @@
+dnl $Id: convert.m4,v 1.1.1.1 2003/01/07 16:59:06 murrayc Exp $
+
+# Other libraries, such as libgnomeuimm, can provide their own convert.m4 files,
+# Maybe choosing to include the same files as this one.
+
+include(convert_gtkmm.m4)
diff --git a/libs/glibmm2/tools/m4/convert_atk.m4 b/libs/glibmm2/tools/m4/convert_atk.m4
new file mode 100644
index 0000000000..caea521396
--- /dev/null
+++ b/libs/glibmm2/tools/m4/convert_atk.m4
@@ -0,0 +1,34 @@
+include(convert_glib.m4)
+
+_EQUAL(State,AtkState)
+
+_CONV_ENUM(Atk,Role)
+_CONV_ENUM(Atk,Layer)
+_CONV_ENUM(Atk,RelationType)
+_CONV_ENUM(Atk,StateType)
+_CONV_ENUM(Atk,CoordType)
+_CONV_ENUM(Atk,TextBoundary)
+
+
+_CONVERSION(`AtkObject*',`Glib::RefPtr<Atk::Object>',Glib::wrap($3))
+_CONVERSION(`AtkObject*',`Glib::RefPtr<Object>',Glib::wrap($3))
+_CONVERSION(`AtkObject*',`Glib::RefPtr<Atk::Object>',Glib::wrap($3))
+_CONVERSION(`AtkObject*',`Glib::RefPtr<const Object>',Glib::wrap($3))
+_CONVERSION(`AtkObject*',`Glib::RefPtr<const Atk::Object>',Glib::wrap($3))
+_CONVERSION(`AtkObject*',`const Glib::RefPtr<Atk::Object>&',`Glib::wrap($3, true)')
+_CONVERSION(`const Glib::RefPtr<Object>&',`AtkObject*',`Glib::unwrap($3)')
+_CONVERSION(`const Glib::RefPtr<Atk::Object>&',`AtkObject*',`Glib::unwrap($3)')
+_CONVERSION(`Glib::RefPtr<Atk::Object>',`AtkObject*',`Glib::unwrap($3)')
+_CONVERSION(`Glib::RefPtr<Object>',`AtkObject*',`Glib::unwrap($3)')
+_CONVERSION(`AtkRelationSet*',`Glib::RefPtr<RelationSet>',Glib::wrap($3))
+_CONVERSION(`const Glib::RefPtr<Relation>&',`AtkRelation*',`Glib::unwrap($3)')
+_CONVERSION(`AtkRelation*',`Glib::RefPtr<Relation>',Glib::wrap($3))
+_CONVERSION(`AtkStateSet*',`Glib::RefPtr<StateSet>',Glib::wrap($3))
+_CONVERSION(`const Glib::RefPtr<StateSet>&',`AtkStateSet*',`Glib::unwrap($3)')
+
+_CONVERSION(`AtkGObjectAccessible*',`Glib::RefPtr<ObjectAccessible>',Glib::wrap($3))
+_CONVERSION(`AtkGObjectAccessible*',`Glib::RefPtr<const ObjectAccessible>',Glib::wrap($3))
+
+_CONVERSION(`AtkAttributeSet*', `AttributeSet', `AttributeSet($3, Glib::OWNERSHIP_DEEP)')
+_CONVERSION(`const AttributeSet&', `AtkAttributeSet*', `($3).data()')
+
diff --git a/libs/glibmm2/tools/m4/convert_base.m4 b/libs/glibmm2/tools/m4/convert_base.m4
new file mode 100644
index 0000000000..2d97d1ddd9
--- /dev/null
+++ b/libs/glibmm2/tools/m4/convert_base.m4
@@ -0,0 +1,71 @@
+dnl $Id: convert_base.m4,v 1.3 2006/05/16 19:42:36 murrayc Exp $
+
+#
+# Define a hashing for names
+#
+define(`__HASH',`__`'m4_translit(`$*',`ABCDEFGHIJKLMNOPQRSTUVWXYZ<>[]&*, ',`abcdefghijklmnopqrstuvwxyzVBNMRSC_')`'')
+define(`__EQUIV',`m4_ifdef(EV`'__HASH(`$1'),EV`'__HASH(`$1'),`$1')')
+
+define(`__HASH2',`dnl
+pushdef(`__E1',__EQUIV(`$1'))pushdef(`__E2',__EQUIV(`$2'))dnl
+m4_ifelse(__E1,__E2,`__EQ',__HASH(__E1)`'__HASH(__E2))`'dnl
+popdef(`__E1')popdef(`__E2')`'')
+
+define(`CF__EQ',`$3')
+
+#
+# _CONVERT(fromtype, totype, name, wrap_line)
+# Print the conversion from ctype to cpptype
+define(`_CONVERT',`dnl
+m4_ifelse(`$2',void,`$3',`dnl
+pushdef(`__COV',`CF`'__HASH2(`$1',`$2')')dnl
+m4_ifdef(__COV,`m4_indir(__COV,`$1',`$2',`$3')',`
+m4_errprint(`No conversion from $1 to $2 defined (line: $4, parameter name: $3)
+')
+m4_m4exit(1)
+')`'dnl
+')`'dnl
+')
+
+
+#
+# Functions for populating the tables.
+#
+define(`_CONVERSION',`
+m4_ifelse(`$3',,,`define(CF`'__HASH2(`$1',`$2'),`$3')')
+')
+
+define(`_EQUAL',`define(EV`'__HASH(`$1'),`$2')')
+
+/*******************************************************************/
+
+
+define(`__ARG3__',`$`'3')
+define(`_CONV_ENUM',`dnl
+_CONVERSION(`$1$2', `$2', (($2)(__ARG3__)))
+_CONVERSION(`$1$2', `$1::$2', (($1::$2)(__ARG3__)))
+_CONVERSION(`$2', `$1$2', (($1$2)(__ARG3__)))
+_CONVERSION(`$1::$2', `$1$2', (($1$2)(__ARG3__)))
+')dnl
+
+# e.g. Glib::RefPtr<Gdk::Something> to GdkSomething*
+define(`__CONVERT_REFPTR_TO_P',`Glib::unwrap($`'3)')
+
+# e.g. Glib::RefPtr<const Gdk::Something> to GdkSomething*
+#define(`__CONVERT_CONST_REFPTR_TO_P',`const_cast<$`'2>($`'3->gobj())')
+define(`__CONVERT_CONST_REFPTR_TO_P',`const_cast<$`'2>(Glib::unwrap($`'3))')
+
+# The Sun Forte compiler doesn't seem to be able to handle these, so we are using the altlernative, __CONVERT_CONST_REFPTR_TO_P_SUN.
+# The Sun compiler gives this error, for instance:
+#  "widget.cc", line 4463: Error: Overloading ambiguity between "Glib::unwrap<Gdk::Window>(const Glib::RefPtr<const Gdk::Window>&)" and
+# "Glib::unwrap<const Gdk::Window>(const Glib::RefPtr<const Gdk::Window>&)".
+#
+define(`__CONVERT_CONST_REFPTR_TO_P_SUN',`const_cast<$`'2>(Glib::unwrap<$1>($`'3))')
+
+
+include(convert_gtk.m4)
+include(convert_pango.m4)
+include(convert_gdk.m4)
+include(convert_atk.m4)
+include(convert_glib.m4)
+
diff --git a/libs/glibmm2/tools/m4/convert_gdk.m4 b/libs/glibmm2/tools/m4/convert_gdk.m4
new file mode 100644
index 0000000000..30bbb829f5
--- /dev/null
+++ b/libs/glibmm2/tools/m4/convert_gdk.m4
@@ -0,0 +1,231 @@
+include(convert_glib.m4)
+
+_EQUAL(gint8[],gint8*)
+_EQUAL(guchar,guint8)
+_EQUAL(guchar*,guint8*)
+_EQUAL(gfloat,float)
+
+# Enums
+_CONV_ENUM(Gdk,AxisUse)
+_CONV_ENUM(Gdk,ByteOrder)
+_CONV_ENUM(Gdk,CapStyle)
+_CONV_ENUM(Gdk,Colorspace)
+_CONV_ENUM(Gdk,CursorType)
+_CONV_ENUM(Gdk,DragAction)
+_CONV_ENUM(Gdk,DragProtocol)
+_CONV_ENUM(Gdk,EventMask)
+_CONV_ENUM(Gdk,EventType)
+_CONV_ENUM(Gdk,ExtensionMode)
+_CONV_ENUM(Gdk,Fill)
+_CONV_ENUM(Gdk,FillRule)
+_CONV_ENUM(Gdk,Function)
+_CONV_ENUM(Gdk,GCValuesMask)
+_CONV_ENUM(Gdk,Gravity)
+_CONV_ENUM(Gdk,ImageType)
+_CONV_ENUM(Gdk,InputCondition)
+_CONV_ENUM(Gdk,InputMode)
+_CONV_ENUM(Gdk,InterpType)
+_CONV_ENUM(Gdk,JoinStyle)
+_CONV_ENUM(Gdk,LineStyle)
+_CONV_ENUM(Gdk,ModifierType)
+_CONV_ENUM(Gdk,OverlapType)
+_CONV_ENUM(Gdk,PixbufAlphaMode)
+_CONV_ENUM(Gdk,RgbDither)
+_CONV_ENUM(Gdk,Status)
+_CONV_ENUM(Gdk,SubwindowMode)
+_CONV_ENUM(Gdk,VisualType)
+_CONV_ENUM(Gdk,WindowAttributesType)
+_CONV_ENUM(Gdk,WindowEdge)
+_CONV_ENUM(Gdk,WindowHints)
+_CONV_ENUM(Gdk,WindowState)
+_CONV_ENUM(Gdk,WindowType)
+_CONV_ENUM(Gdk,WindowTypeHint)
+_CONV_ENUM(Gdk,WMDecoration)
+_CONV_ENUM(Gdk,WMFunction)
+_CONV_ENUM(Gdk,GrabStatus)
+
+
+_CONVERSION(`Gdk::EventMask',`gint',`$3')
+_CONVERSION(`gint',`Gdk::EventMask',`static_cast<Gdk::EventMask>($3)')
+_CONVERSION(`ModifierType&',`GdkModifierType*',`(($2) &($3))')
+_CONVERSION(`WMDecoration&',`GdkWMDecoration*',`(($2) &($3))')
+_CONVERSION(`GdkDragProtocol&',`GdkDragProtocol*',`&($3)')
+
+_CONVERSION(`GdkRectangle&',`GdkRectangle*',`&$3',`*$3')
+_CONVERSION(`GdkRgbCmap&',`GdkRgbCmap*',`&$3',`*$3')
+
+# TODO: Remove this, and use Gdk::Device:
+_CONVERSION(`GdkDevice*',`const GdkDevice*',`$3')
+
+_CONVERSION(`GdkKeymap*',`const GdkKeymap*',`$3')
+
+
+
+
+# for GtkStyle public struct members
+_CONVERSION(`Gdk::Color',`GdkColor', `(*($3).gobj())')
+_CONVERSION(`GdkColor',`Gdk::Color', `Gdk::Color(const_cast<GdkColor*>(&($3)), true)')
+
+# Ref (gdkmm) -> Ptr (gtk+)
+_CONVERSION(`Color&',`GdkColor*',($3).gobj())
+_CONVERSION(`Rectangle&',`GdkRectangle*',($3).gobj())
+_CONVERSION(`Gdk::Rectangle&',`GdkRectangle*',($3).gobj())
+_CONVERSION(`Font&',`GdkFont*',($3).gobj())
+_CONVERSION(`Region&',`GdkRegion*',($3).gobj())
+
+_CONVERSION(`const Glib::RefPtr<Gdk::Colormap>&',`GdkColormap*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Gdk::Pixmap>&',`GdkPixmap*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Gdk::Window>&',`GdkWindow*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Window>&',`GdkWindow*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Pixmap>&',`GdkPixmap*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Gdk::Pixmap>&',`GdkPixmap*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Bitmap>&',`GdkBitmap*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Gdk::Bitmap>&',`GdkBitmap*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Colormap>&',`GdkColormap*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<const Colormap>&',`GdkColormap*',__CONVERT_CONST_REFPTR_TO_P_SUN(Colormap))
+_CONVERSION(`const Glib::RefPtr<GC>&',`GdkGC*',`Glib::unwrap<Gdk::GC>($3)')
+_CONVERSION(`const Glib::RefPtr<const GC>&',`GdkGC*',__CONVERT_CONST_REFPTR_TO_P_SUN(GC))
+_CONVERSION(`const Glib::RefPtr<Gdk::GC>&',`GdkGC*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Drawable>&',`GdkDrawable*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<const Drawable>&',`GdkDrawable*',__CONVERT_CONST_REFPTR_TO_P_SUN(Drawable))
+_CONVERSION(`const Glib::RefPtr<Image>&',`GdkImage*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<const Image>&',`GdkImage*',__CONVERT_CONST_REFPTR_TO_P_SUN(Image))
+_CONVERSION(`const Glib::RefPtr<Gdk::Image>&',`GdkImage*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Pixbuf>&',`GdkPixbuf*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<const Pixbuf>&',`GdkPixbuf*',__CONVERT_CONST_REFPTR_TO_P_SUN(Pixbuf))
+_CONVERSION(`const Glib::RefPtr<Gdk::Pixbuf>&',`GdkPixbuf*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`Glib::RefPtr<Gdk::Pixbuf>',`GdkPixbuf*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Gdk::PixbufAnimation>&',`GdkPixbufAnimation*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Gdk::PixbufAnimationIter>&',`GdkPixbufAnimationIter*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Gdk::DragContext>&',`GdkDragContext*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Display>&',`GdkDisplay*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Screen>&',`GdkScreen*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Gdk::Display>&',`GdkDisplay*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Gdk::Screen>&',`GdkScreen*',__CONVERT_REFPTR_TO_P)
+
+
+
+define(`__CFR2P',`const_cast<$`'2>($`'3.gobj())')
+_CONVERSION(const Font&,GdkFont*,__CFR2P)
+_CONVERSION(const Gdk::Color&,GdkColor*,__CFR2P)
+_CONVERSION(const Color&,GdkColor*,__CFR2P)
+_CONVERSION(const Gdk::Rectangle&,GdkRectangle*,__CFR2P)
+_CONVERSION(const Rectangle&,GdkRectangle*,__CFR2P)
+_CONVERSION(const Gdk::Geometry&,GdkGeometry*,const_cast<$2>(&($3)))
+_CONVERSION(const Geometry&,GdkGeometry*,const_cast<$2>(&($3)))
+_CONVERSION(const RgbCmap&,GdkRgbCmap*,__CFR2P)
+
+_CONVERSION(`Gdk::Rectangle*',`GdkRectangle*',`Glib::unwrap($3)')
+_CONVERSION(`const Gdk::Rectangle*',`GdkRectangle*',`Glib::unwrap(const_cast<Gdk::Rectangle*>($3))')
+_CONVERSION(`GdkRectangle*',`Gdk::Rectangle*',`&Glib::wrap($3)')
+_CONVERSION(`GdkRectangle*',`const Gdk::Rectangle*',`&Glib::wrap($3)')
+_CONVERSION(`GdkRectangle*',`const Gdk::Rectangle&',`Glib::wrap($3)')
+
+
+dnl TODO: Should this always be a copy?
+_CONVERSION(const Cursor&,GdkCursor*,($3).gobj_copy())
+
+# Special treatment for the Sun Forte compiler
+#_CONVERSION(const Glib::RefPtr<const Gdk::Pixmap>&,GdkPixmap*,__CONVERT_CONST_REFPTR_TO_P)
+#_CONVERSION(const Glib::RefPtr<const Gdk::Window>&,GdkWindow*,__CONVERT_CONST_REFPTR_TO_P)
+#_CONVERSION(const Glib::RefPtr<const Gdk::Colormap>&,GdkColormap*,__CONVERT_CONST_REFPTR_TO_P)
+#_CONVERSION(const Glib::RefPtr<const Gdk::Visual>&,GdkVisual*,__CONVERT_CONST_REFPTR_TO_P)
+#_CONVERSION(const Glib::RefPtr<const Gdk::Bitmap>&,GdkBitmap*,__CONVERT_CONST_REFPTR_TO_P)
+#_CONVERSION(const Glib::RefPtr<const Gdk::Image>&,GdkImage*,__CONVERT_CONST_REFPTR_TO_P)
+#_CONVERSION(const Glib::RefPtr<const Gdk::GC>&,GdkGC*,__CONVERT_CONST_REFPTR_TO_P)
+
+_CONVERSION(`const Glib::RefPtr<const Gdk::Pixmap>&', `GdkPixmap*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::Pixmap))
+_CONVERSION(`const Glib::RefPtr<const Gdk::Window>&', `GdkWindow*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::Window))
+_CONVERSION(`const Glib::RefPtr<const Window>&', `GdkWindow*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::Window))
+_CONVERSION(`const Glib::RefPtr<const Gdk::Colormap>&', `GdkColormap*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::Colormap))
+_CONVERSION(`const Glib::RefPtr<const Gdk::Visual>&', `GdkVisual*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::Visual))
+_CONVERSION(`const Glib::RefPtr<const Gdk::Bitmap>&', `GdkBitmap*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::Bitmap))
+_CONVERSION(`const Glib::RefPtr<const Gdk::Image>&', `GdkImage*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::Image))
+_CONVERSION(`const Glib::RefPtr<const Image>&', `GdkImage*',__CONVERT_CONST_REFPTR_TO_P_SUN(Image))
+_CONVERSION(`const Glib::RefPtr<const Gdk::GC>&', `GdkGC*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::GC))
+_CONVERSION(`const Glib::RefPtr<const GC>&', `GdkGC*',__CONVERT_CONST_REFPTR_TO_P_SUN(GC))
+#_CONVERSION(`const Glib::RefPtr<const Gdk::Drawable>&', `GdkDrawable*',__CONVERT_CONST_REFPTR_TO_P_SUN(Gdk::Drawable))
+#_CONVERSION(`const Glib::RefPtr<const Drawable>&', `GdkDrawable*',__CONVERT_CONST_REFPTR_TO_P_SUN(Drawable))
+#_CONVERSION(`const Glib::RefPtr<const Display>&', `GdkDrawable*',__CONVERT_CONST_REFPTR_TO_P_SUN(Drawable))
+
+
+_CONVERSION(`GdkWindow*',`Glib::RefPtr<Window>', `Glib::wrap((GdkWindowObject*)($3))')
+_CONVERSION(`GdkWindow*',`Glib::RefPtr<const Window>', `Glib::wrap((GdkWindowObject*)($3))')
+_CONVERSION(`GdkWindow*',`Glib::RefPtr<Gdk::Window>', `Glib::wrap((GdkWindowObject*)($3))')
+_CONVERSION(`GdkWindow*',`Glib::RefPtr<const Gdk::Window>', `Glib::wrap((GdkWindowObject*)($3))')
+_CONVERSION(`GdkWindow*',`const Glib::RefPtr<Gdk::Window>&', `Glib::wrap((GdkWindowObject*)($3), true)')
+_CONVERSION(`GdkPixmap*',`Glib::RefPtr<Pixmap>', `Glib::wrap((GdkPixmapObject*)($3))')
+_CONVERSION(`GdkPixmap*',`Glib::RefPtr<const Pixmap>', `Glib::wrap((GdkPixmapObject*)($3))')
+_CONVERSION(`GdkPixmap*',`Glib::RefPtr<const Gdk::Pixmap>', `Glib::wrap((GdkPixmapObject*)($3))')
+_CONVERSION(`GdkPixmap*',`Glib::RefPtr<Gdk::Pixmap>', `Glib::wrap((GdkPixmapObject*)($3))')
+_CONVERSION(`GdkColormap*',`Glib::RefPtr<Colormap>', `Glib::wrap($3)')
+_CONVERSION(`GdkColormap*',`Glib::RefPtr<const Colormap>', `Glib::wrap($3)')
+_CONVERSION(`GdkColormap*',`Glib::RefPtr<Gdk::Colormap>', `Glib::wrap($3)')
+_CONVERSION(`GdkVisual*',`Glib::RefPtr<Gdk::Visual>', `Glib::wrap($3)')
+_CONVERSION(`GdkVisual*',`Glib::RefPtr<Visual>', `Glib::wrap($3)')
+_CONVERSION(`GdkVisual*',`Glib::RefPtr<const Visual>', `Glib::wrap($3)')
+_CONVERSION(`GdkImage*',`Glib::RefPtr<Image>', `Glib::wrap($3)')
+_CONVERSION(`GdkPixbuf*',`Glib::RefPtr<Pixbuf>', `Glib::wrap($3)')
+_CONVERSION(`GdkPixbuf*',`Glib::RefPtr<Gdk::Pixbuf>', `Glib::wrap($3)')
+_CONVERSION(`GdkPixbufAnimationIter*',`Glib::RefPtr<PixbufAnimationIter>', `Glib::wrap($3)')
+_CONVERSION(`GdkPixbuf*',`Glib::RefPtr<Gdk::Pixbuf>', Glib::wrap($3))
+_CONVERSION(`GdkPixbufAnimation*',`Glib::RefPtr<Gdk::PixbufAnimation>', `Glib::wrap($3)')
+_CONVERSION(`GdkGC*',`Glib::RefPtr<Gdk::GC>', `Glib::wrap($3)')
+_CONVERSION(`GdkGC*',`Glib::RefPtr<const Gdk::GC>', `Glib::wrap($3)')
+
+_CONVERSION(`GdkDisplay*',`Glib::RefPtr<Display>', `Glib::wrap($3)')
+_CONVERSION(`GdkDisplay*',`Glib::RefPtr<const Display>', `Glib::wrap($3)')
+_CONVERSION(`GdkDisplay*',`Glib::RefPtr<Gdk::Display>', `Glib::wrap($3)')
+_CONVERSION(`GdkDisplay*',`Glib::RefPtr<const Gdk::Display>', `Glib::wrap($3)')
+
+_CONVERSION(`GdkDisplayManager*',`Glib::RefPtr<DisplayManager>', `Glib::wrap($3)')
+_CONVERSION(`GdkDisplayManager*',`Glib::RefPtr<const DisplayManager>', `Glib::wrap($3)')
+
+_CONVERSION(`GdkScreen*',`Glib::RefPtr<Screen>', `Glib::wrap($3)')
+_CONVERSION(`GdkScreen*',`Glib::RefPtr<const Screen>', `Glib::wrap($3)')
+_CONVERSION(`GdkScreen*',`Glib::RefPtr<Gdk::Screen>', `Glib::wrap($3)')
+_CONVERSION(`GdkScreen*',`Glib::RefPtr<const Gdk::Screen>', `Glib::wrap($3)')
+
+_CONVERSION(`GdkDevice*',`Glib::RefPtr<Device>', `Glib::wrap($3)')
+_CONVERSION(`GdkDevice*',`Glib::RefPtr<const Device>', `Glib::wrap($3)')
+
+
+
+
+
+
+
+# Glib::ListHandle<> (gdkmm) -> GList (gdk)
+_CONVERSION(`const Glib::ListHandle< Glib::RefPtr<Gdk::Pixbuf> >&',`GList*',`$3.data()')
+
+# GList (gdk) -> Glib::ListHandle<> (gdkmm)
+_CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Gdk::Pixbuf> >',`$2($3, Glib::OWNERSHIP_SHALLOW)')
+_CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Device> >',`$2($3, Glib::OWNERSHIP_DEEP)')
+_CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Visual> >',`$2($3, Glib::OWNERSHIP_SHALLOW)')
+_CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<Window> >',`$2($3, Glib::OWNERSHIP_SHALLOW)')
+_CONVERSION(`GSList*',`Glib::SListHandle< Glib::RefPtr<Display> >',`$2($3, Glib::OWNERSHIP_SHALLOW)')
+
+
+
+
+# XPM data
+_CONVERSION(`const char*const*',`const char**',`const_cast<const char**>($3)',`$3')
+
+
+_CONVERSION(GdkFont*, Gdk::Font, `Gdk::Font($3)')
+_CONVERSION(GdkEvent*, Event, `Event($3)')
+_CONVERSION(GdkRegion*, Region, `Region($3)')
+
+_CONVERSION(`GdkTimeCoord**&',`GdkTimeCoord***',`&($3)')
+
+dnl _CONVERSION(GdkPixmap*,Gdk::Pixmap&,`Glib::unwrap_boxed($3)',`$3')
+dnl _CONVERSION(GdkBitmap*,Gdk::Bitmap&,`Glib::unwrap_boxed($3)',`$3')
+
+
+
+# Used by signals:
+_CONVERSION(`GdkDragContext*',`const Glib::RefPtr<Gdk::DragContext>&',Glib::wrap($3, true))
+_CONVERSION(`GdkPixbuf*',`const Glib::RefPtr<Gdk::Pixbuf>&', Glib::wrap($3, true))
+_CONVERSION(`GdkDragContext*',`Glib::RefPtr<Gdk::DragContext>',Glib::wrap($3, true))
+_CONVERSION(`GdkDisplay*',`const Glib::RefPtr<Display>&', Glib::wrap($3, true))
+
diff --git a/libs/glibmm2/tools/m4/convert_glib.m4 b/libs/glibmm2/tools/m4/convert_glib.m4
new file mode 100644
index 0000000000..990b664894
--- /dev/null
+++ b/libs/glibmm2/tools/m4/convert_glib.m4
@@ -0,0 +1,64 @@
+dnl
+dnl Glib C names have prefix 'G' but C++ namespace Glib
+dnl
+define(`_CONV_GLIB_ENUM',`dnl
+_CONVERSION(`G$1', `$1', (($1)(__ARG3__)))
+_CONVERSION(`G$1', `Glib::$1', ((Glib::$1)(__ARG3__)))
+_CONVERSION(`$1', `G$1', ((G$1)(__ARG3__)))
+_CONVERSION(`Glib::$1', `G$1', ((G$1)(__ARG3__)))
+')dnl
+
+_EQUAL(gchar,char)
+_EQUAL(gchar*,char*)
+_EQUAL(gchar**,char**)
+_EQUAL(gint**,int**)
+_EQUAL(gchar**,char*[])
+_EQUAL(const gchar*,const char*)
+_EQUAL(const-gchar*,const char*)
+_EQUAL(gpointer*,void**)
+
+_CONV_GLIB_ENUM(IOStatus)
+_CONV_GLIB_ENUM(IOFlags)
+_CONV_GLIB_ENUM(IOCondition)
+_CONV_GLIB_ENUM(SeekType)
+_CONV_GLIB_ENUM(OptionArg)
+_CONV_GLIB_ENUM(KeyFileFlags)
+
+_CONVERSION(`gunichar&',`gunichar*',`&($3)')
+_CONVERSION(`gsize&',`gsize*',`&($3)')
+
+
+# Strings:
+define(`__GCHARP_TO_USTRING',`Glib::convert_const_gchar_ptr_to_ustring($`'3)')
+define(`__GCHARP_TO_STDSTRING',`Glib::convert_const_gchar_ptr_to_stdstring($`'3)')
+
+_CONVERSION(`const Glib::ustring&',`const char*',`$3.c_str()')
+_CONVERSION(`const std::string&',`const char*',`$3.c_str()')
+_CONVERSION(`const Glib::ustring&',`gchar*',`const_cast<gchar*>($3.c_str())')
+_CONVERSION(`gchar*',`Glib::ustring',__GCHARP_TO_USTRING)
+_CONVERSION(`const-gchar*',`Glib::ustring',__GCHARP_TO_USTRING)
+_CONVERSION(`const gchar*',`Glib::ustring',__GCHARP_TO_USTRING)
+_CONVERSION(`const char*',`Glib::ustring',__GCHARP_TO_USTRING)
+_CONVERSION(`const char*',`std::string',__GCHARP_TO_STDSTRING)
+_CONVERSION(`const gchar*',`const Glib::ustring&',__GCHARP_TO_USTRING)
+_CONVERSION(`const char*',`const-gchar*',`$3')
+_CONVERSION(`const-gchar*',`const char*',`$3')
+
+_CONVERSION(`return-gchar*',`Glib::ustring',`Glib::convert_return_gchar_ptr_to_ustring($3)')
+_CONVERSION(`return-gchar*',`std::string',`Glib::convert_return_gchar_ptr_to_stdstring($3)')
+_CONVERSION(`return-char*',`Glib::ustring',`Glib::convert_return_gchar_ptr_to_ustring($3)')
+
+_CONVERSION(`const Glib::RefPtr<Glib::Object>&',`GObject*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<const Glib::Object>&',`GObject*',__CONVERT_CONST_REFPTR_TO_P_SUN(Glib::Object))
+_CONVERSION(`GObject*',`Glib::RefPtr<Glib::Object>',`Glib::wrap($3)')
+_CONVERSION(`GObject*',`Glib::RefPtr<const Glib::Object>',`Glib::wrap($3)')
+
+_CONVERSION(`Glib::ValueBase&',`GValue*',`($3).gobj()')
+_CONVERSION(`const Glib::ValueBase&',`const GValue*',`($3).gobj()')
+_CONVERSION(`const Glib::ValueBase&',`GValue*',`const_cast<GValue*>(($3).gobj())')
+_CONVERSION(`GValue*', `Glib::ValueBase&', `*reinterpret_cast<Glib::ValueBase*>($3)')
+_CONVERSION(`const GValue*', `const Glib::ValueBase&', `*reinterpret_cast<const Glib::ValueBase*>($3)')
+
+_CONVERSION(`OptionGroup&',`GOptionGroup*',`($3).gobj()')
+#_CONVERSION(`GOptionGroup*',`OptionGroup',`Glib::wrap(($3), true /* take_copy */)')
+
diff --git a/libs/glibmm2/tools/m4/convert_gtk.m4 b/libs/glibmm2/tools/m4/convert_gtk.m4
new file mode 100644
index 0000000000..d44e64f701
--- /dev/null
+++ b/libs/glibmm2/tools/m4/convert_gtk.m4
@@ -0,0 +1,394 @@
+dnl $Id: convert_gtk.m4,v 1.2 2003/05/02 16:07:24 murrayc Exp $
+
+include(convert_glib.m4)
+
+#
+# Table of widgets
+#
+
+_EQUAL(gboolean,int)
+_EQUAL(gint,int)
+_EQUAL(gint*,int*)
+_EQUAL(gint&,int&)
+_EQUAL(guint,unsigned int)
+_EQUAL(guint*,unsigned int*)
+_EQUAL(guint&,unsigned int&)
+_EQUAL(gdouble,double)
+_EQUAL(gdouble*,double*)
+_EQUAL(gfloat, float)
+_EQUAL(float*,gfloat[])
+
+_EQUAL(GdkAtom,Gdk::Atom)
+_EQUAL(const-char*,const-gchar*)
+_EQUAL(return-char*,return-gchar*)
+_EQUAL(gpointer,void*)
+_EQUAL(gconstpointer,const void*)
+#
+# Basic Types
+_CONVERSION(`int',`bool',`$3')
+_CONVERSION(`bool',`int',`static_cast<int>($3)')
+_CONVERSION(`unsigned int',`bool',`$3')
+_CONVERSION(`bool',`unsigned int',`static_cast<unsigned int>($3)')
+_CONVERSION(`int&',`gint*',`&($3)')
+_CONVERSION(`gint*',`int&',`*($3)')
+_CONVERSION(`guint&',`guint*',`&($3)')
+_CONVERSION(`double&',`gdouble*',`&($3)')
+_CONVERSION(`float&',`gfloat*',`&($3)')
+_CONVERSION(`gchar**',`char**',`$3')
+_CONVERSION(`char**',`gchar**',`$3')
+_CONVERSION(`gpointer&',`gpointer*',`&($3)')
+_CONVERSION(`void*&',`gpointer*',`&($3)')
+
+_CONVERSION(`GError*&',`GError**',`&($3)')
+
+
+
+# Enums:
+_CONV_ENUM(Gtk,AccelFlags)
+_CONV_ENUM(Gtk,ArrowType)
+_CONV_ENUM(Gtk,AttachOptions)
+_CONV_ENUM(Gtk,ButtonBoxStyle)
+_CONV_ENUM(Gtk,ButtonsType)
+_CONV_ENUM(Gtk,CalendarDisplayOptions)
+_CONV_ENUM(Gtk,CellRendererMode)
+_CONV_ENUM(Gtk,CellRendererState)
+_CONV_ENUM(Gtk,CornerType)
+_CONV_ENUM(Gtk,CurveType)
+_CONV_ENUM(Gtk,DeleteType)
+_CONV_ENUM(Gtk,DestDefaults)
+_CONV_ENUM(Gtk,DirectionType)
+_CONV_ENUM(Gtk,ExpanderStyle)
+_CONV_ENUM(Gtk,ImageType)
+_CONV_ENUM(Gtk,Justification)
+_CONV_ENUM(Gtk,MenuDirectionType)
+_CONV_ENUM(Gtk,MessageType)
+_CONV_ENUM(Gtk,MetricType)
+_CONV_ENUM(Gtk,MovementStep)
+_CONV_ENUM(Gtk,NotebookTab)
+_CONV_ENUM(Gtk,Orientation)
+_CONV_ENUM(Gtk,PackType)
+_CONV_ENUM(Gtk,PolicyType)
+_CONV_ENUM(Gtk,PositionType)
+_CONV_ENUM(Gtk,PreviewType)
+_CONV_ENUM(Gtk,ProgressBarOrientation)
+_CONV_ENUM(Gtk,ProgressBarStyle)
+_CONV_ENUM(Gtk,ReliefStyle)
+_CONV_ENUM(Gtk,ResizeMode)
+_CONV_ENUM(Gtk,ScrollType)
+_CONV_ENUM(Gtk,SelectionMode)
+_CONV_ENUM(Gtk,ShadowType)
+_CONV_ENUM(Gtk,SizeGroupMode)
+_CONV_ENUM(Gtk,SortType)
+_CONV_ENUM(Gtk,SpinButtonUpdatePolicy)
+_CONV_ENUM(Gtk,SpinType)
+_CONV_ENUM(Gtk,StateType)
+_CONV_ENUM(Gtk,TextDirection)
+_CONV_ENUM(Gtk,TextSearchFlags)
+_CONV_ENUM(Gtk,TextWindowType)
+_CONV_ENUM(Gtk,ToolbarChildType)
+_CONV_ENUM(Gtk,ToolbarStyle)
+_CONV_ENUM(Gtk,TreeModelFlags)
+_CONV_ENUM(Gtk,TreeViewColumnSizing)
+_CONV_ENUM(Gtk,TreeViewDropPosition)
+_CONV_ENUM(Gtk,UpdateType)
+_CONV_ENUM(Gtk,Visibility)
+_CONV_ENUM(Gtk,WidgetHelpType)
+_CONV_ENUM(Gtk,WindowPosition)
+_CONV_ENUM(Gtk,WindowType)
+_CONV_ENUM(Gtk,WrapMode)
+
+_CONVERSION(`GtkIconSize',`IconSize',`IconSize(static_cast<int>($3))')
+_CONVERSION(`GtkIconSize',`Gtk::IconSize',`Gtk::IconSize(static_cast<int>($3))')
+_CONVERSION(`IconSize',`GtkIconSize',`static_cast<GtkIconSize>(int($3))')
+_CONVERSION(`Gtk::IconSize',`GtkIconSize',`static_cast<GtkIconSize>(int($3))')
+include(convert_atk.m4)
+include(convert_pango.m4)
+include(convert_gdk.m4)
+
+_CONVERSION(`guint',`WindowType',`static_cast<WindowType>($3)')
+_CONVERSION(`PolicyType&',`GtkPolicyType*',`(($2) &($3))')
+_CONVERSION(`SortType&',`GtkSortType*',`(($2) &($3))')
+_CONVERSION(`SortType*',`GtkSortType*',`(($2) ($3))')
+_CONVERSION(`GtkSortType*',`SortType*',`(($2) ($3))')
+_CONVERSION(`guint8',`Gtk::StateType',`static_cast<StateType>($3)')
+
+
+
+# StockID:
+_CONVERSION(`const Gtk::StockID&',`const char*',`($3).get_c_str()')
+_CONVERSION(`char*',`StockID',`StockID($3)') # the StockID ctor handles 0
+
+#
+# Ptr (gtk+) -> Ptr (gtkmm)
+define(`__FP2P',`($`'2)Glib::unwrap($`'3)')
+define(`__RP2P',`Glib::wrap($`'3)')
+define(`__RP2PD',`Glib::wrap((tran`'slit($`'2,:,))($`'3))')
+define(`__RP2CPD',`Glib::wrap((tran`'slit(pat`'subst($`'2,^const ,),:,))($`'3))')
+
+_CONVERSION(`GtkAdjustment*',`Gtk::Adjustment*',__RP2P)
+_CONVERSION(`GtkAdjustment*',`Adjustment*',__RP2P)
+_CONVERSION(`GtkWidget*',`Gtk::Widget*',__RP2P)
+_CONVERSION(`GtkWidget*',`Widget*',__RP2P)
+_CONVERSION(`GtkWindow*',`Window*',__RP2P)
+_CONVERSION(`GtkMenu*',`Menu*',__RP2P)
+
+# Ptr (gtk+) -> const Ptr (gtkmm)
+_CONVERSION(`GtkAdjustment*',`const Gtk::Adjustment*',__RP2P)
+_CONVERSION(`GtkAdjustment*',`const Adjustment*',__RP2P)
+_CONVERSION(`GtkWidget*',`const Gtk::Widget*',__RP2P)
+_CONVERSION(`GtkWidget*',`const Widget*',__RP2P)
+_CONVERSION(`GtkWindow*',`const Window*',__RP2P)
+
+# Style:
+_CONVERSION(`GtkStyle*',`Glib::RefPtr<Style>',`Glib::wrap($3)')
+_CONVERSION(`GtkStyle*',`Glib::RefPtr<const Style>',`Glib::wrap($3)')
+_CONVERSION(`const Glib::RefPtr<Style>&',`GtkStyle*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`Glib::RefPtr<Style>',`GtkStyle*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`GtkRcStyle*',`Glib::RefPtr<RcStyle>',`Glib::wrap($3)')
+_CONVERSION(`GtkRcStyle*',`Glib::RefPtr<const RcStyle>',`Glib::wrap($3)')
+_CONVERSION(`const Glib::RefPtr<RcStyle>&',`GtkRcStyle*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`Glib::RefPtr<RcStyle>',`GtkRcStyle*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`GtkRcStyle*',`const Glib::RefPtr<RcStyle>&',`Glib::wrap($3)')
+
+# AccelGroup:
+_CONVERSION(`GtkAccelGroup*',`Glib::RefPtr<AccelGroup>',`Glib::wrap($3)')
+_CONVERSION(`GtkAccelGroup*',`Glib::RefPtr<const AccelGroup>',`Glib::wrap($3)')
+_CONVERSION(`const Glib::RefPtr<AccelGroup>&',`GtkAccelGroup*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`Gtk::Object&',`GObject*', `($3).Glib::Object::gobj()')
+
+#
+# Ptr (Gtkmm) -> Ptr (gtk+)
+_CONVERSION(`Gtk::Adjustment*',`GtkAdjustment*',__FP2P)
+_CONVERSION(`Adjustment*',`GtkAdjustment*',__FP2P)
+_CONVERSION(`Gtk::Widget*',`GtkWidget*',__FP2P)
+_CONVERSION(`Widget*',`GtkWidget*',__FP2P)
+_CONVERSION(`Menu*',`GtkMenu*',__FP2P)
+
+#
+# Ptr (gtk+) -> Ptr (gtkmm) (downcast)
+_CONVERSION(`GtkWidget*',`Button*',`Glib::wrap((GtkButton*)($3))')
+_CONVERSION(`GtkWidget*',`Box*',`Glib::wrap((GtkBox*)($3))')
+_CONVERSION(`GtkWidget*',`HBox*',`Glib::wrap((GtkHBox*)($3))')
+_CONVERSION(`GtkWidget*',`VBox*',`Glib::wrap((GtkVBox*)($3))')
+_CONVERSION(`GtkWidget*',`ColorSelection*',`Glib::wrap((GtkColorSelection*)($3))')
+_CONVERSION(`GtkWidget*',`Gtk::CheckButton*',__RP2PD)
+_CONVERSION(`GtkWidget*',`Entry*',`Glib::wrap((GtkEntry*)($3))')
+_CONVERSION(`GtkWidget*',`FontSelection*',`Glib::wrap((GtkFontSelection*)($3))')
+_CONVERSION(`GtkWidget*',`Label*',`Glib::wrap((GtkLabel*)($3))')
+_CONVERSION(`GtkWidget*',`Menu*',`Glib::wrap((GtkMenu*)($3))')
+_CONVERSION(`GtkWidget*',`MenuItem*',`Glib::wrap((GtkMenuItem*)($3))')
+_CONVERSION(`GtkWidget*',`OptionMenu*',`Glib::wrap((GtkOptionMenu*)($3))')
+_CONVERSION(`GtkWidget*',`RadioButton*',`Glib::wrap((GtkRadioButton*)($3))')
+_CONVERSION(`GtkWidget*',`Gtk::Scrollbar*',__RP2PD)
+_CONVERSION(`GtkWidget*',`Gtk::HScrollbar*',__RP2PD)
+_CONVERSION(`GtkWidget*',`Gtk::VScrollbar*',__RP2PD)
+_CONVERSION(`GtkWidget*',`Table*',`Glib::wrap((GtkTable*)($3))')
+_CONVERSION(`GtkWidget*',`Gtk::Tree*',__RP2PD)
+_CONVERSION(`GtkWidget*',`ScrolledWindow*',`Glib::wrap((GtkScrolledWindow*)($3))')
+_CONVERSION(`GtkWidget*',`Window*',`Glib::wrap((GtkWindow*)($3))')
+_CONVERSION(`GtkWidget*',`TreeView*',`Glib::wrap((GtkTreeView*)($3))')
+_CONVERSION(`GtkWidget*',`HButtonBox*',`Glib::wrap((GtkHButtonBox*)($3))')
+_CONVERSION(`GtkWidget*',`ComboDropDown*',`Glib::wrap((GtkList*)($3))')
+
+# Ptr (gtk+) -> const Ptr (gtkmm) (downcast)
+_CONVERSION(`GtkWidget*',`const Button*',`Glib::wrap((GtkButton*)($3))')
+_CONVERSION(`GtkWidget*',`const Box*',`Glib::wrap((GtkBox*)($3))')
+_CONVERSION(`GtkWidget*',`const HBox*',`Glib::wrap((GtkHBox*)($3))')
+_CONVERSION(`GtkWidget*',`const VBox*',`Glib::wrap((GtkVBox*)($3))')
+_CONVERSION(`GtkWidget*',`const ColorSelection*',`Glib::wrap((GtkColorSelection*)($3))')
+_CONVERSION(`GtkWidget*',`const Gtk::CheckButton*',__RP2CPD)
+_CONVERSION(`GtkWidget*',`const Entry*',`Glib::wrap((GtkEntry*)($3))')
+_CONVERSION(`GtkWidget*',`const FontSelection*',`Glib::wrap((GtkFontSelection*)($3))')
+_CONVERSION(`GtkWidget*',`const Label*',`Glib::wrap((GtkLabel*)($3))')
+_CONVERSION(`GtkWidget*',`const Menu*',`Glib::wrap((GtkMenu*)($3))')
+_CONVERSION(`GtkWidget*',`const MenuItem*',`Glib::wrap((GtkMenuItem*)($3))')
+_CONVERSION(`GtkWidget*',`const OptionMenu*',`Glib::wrap((GtkOptionMenu*)($3))')
+_CONVERSION(`GtkWidget*',`const RadioButton*',`Glib::wrap((GtkRadioButton*)($3))')
+_CONVERSION(`GtkWidget*',`const Gtk::Scrollbar*',__RP2CPD)
+_CONVERSION(`GtkWidget*',`const Gtk::HScrollbar*',__RP2CPD)
+_CONVERSION(`GtkWidget*',`const Gtk::VScrollbar*',__RP2CPD)
+_CONVERSION(`GtkWidget*',`const Table*',`Glib::wrap((GtkTable*)($3))')
+_CONVERSION(`GtkWidget*',`const Gtk::Tree*',__RP2CPD)
+_CONVERSION(`GtkWidget*',`const ScrolledWindow*',`Glib::wrap((GtkScrolledWindow*)($3))')
+_CONVERSION(`GtkWidget*',`const Window*',`Glib::wrap((GtkWindow*)($3))')
+_CONVERSION(`GtkWidget*',`const TreeView*',`Glib::wrap((GtkTreeView*)($3))')
+_CONVERSION(`GtkWidget*',`const HButtonBox*',`Glib::wrap((GtkHButtonBox*)($3))')
+_CONVERSION(`GtkWidget*',`const ComboDropDown*',`Glib::wrap((GtkList*)($3))')
+
+# Ptr (gtk+) -> Ref (Gtkmm)
+_CONVERSION(`GtkWidget*', `Widget&', `*Glib::wrap($3)')
+
+# Ref (Gtkmm) -> GtkWidget* Ptr (gtk+)
+define(`__FR2PD',`($`'3).Gtk::Widget::gobj()')
+_CONVERSION(`MenuShell&',`GtkWidget*',__FR2PD)
+_CONVERSION(`MenuItem&',`GtkWidget*',__FR2PD)
+_CONVERSION(`Menu&',`GtkWidget*',__FR2PD)
+_CONVERSION(`Gtk::TreeItem&',`GtkWidget*',__FR2PD)
+
+# Ref (Gtkmm) -> Ptr (gtk+)
+define(`__FR2P',`($`'3).gobj()')
+define(`__FCR2P',`const_cast<$`'2>(($`'3).gobj())')
+_CONVERSION(`Gtk::Adjustment&',`GtkAdjustment*',__FR2P)
+_CONVERSION(`Adjustment&',`GtkAdjustment*',__FR2P)
+_CONVERSION(`Gtk::Style&',`GtkStyle*',__FR2P)
+_CONVERSION(`Gtk::Widget&',`GtkWidget*',__FR2P)
+_CONVERSION(`Widget&',`GtkWidget*',__FR2P)
+_CONVERSION(`Window&',`GtkWindow*',__FR2P)
+_CONVERSION(`CellRenderer&',`GtkCellRenderer*',__FR2P)
+
+# Glib::ListHandle<> (gtkmm) -> GList (gtk+)
+_CONVERSION(`const Glib::ListHandle<Glib::ustring>&',`GList*',`$3.data()')
+_CONVERSION(`const Glib::ListHandle<Widget*>&',`GList*',`$3.data()')
+_CONVERSION(`const Glib::ListHandle<const Widget*>&',`GList*',`$3.data()')
+_CONVERSION(`const Glib::ListHandle<Window*>&',`GList*',`$3.data()')
+
+# GList (gtk+) -> Glib::ListHandle<> (gtkmm)
+define(`__FL2H_SHALLOW',`$`'2($`'3, Glib::OWNERSHIP_SHALLOW)')
+_CONVERSION(`GList*',`Glib::ListHandle<Widget*>',__FL2H_SHALLOW)
+_CONVERSION(`GList*',`Glib::ListHandle<const Widget*>',__FL2H_SHALLOW)
+_CONVERSION(`GList*',`Glib::ListHandle<Window*>',__FL2H_SHALLOW)
+_CONVERSION(`GList*',`Glib::ListHandle<TreeViewColumn*>',__FL2H_SHALLOW)
+_CONVERSION(`GList*',`Glib::ListHandle<const TreeViewColumn*>',__FL2H_SHALLOW)
+_CONVERSION(`GList*',`Glib::ListHandle<CellRenderer*>',__FL2H_SHALLOW)
+_CONVERSION(`GList*',`Glib::ListHandle<const CellRenderer*>',__FL2H_SHALLOW)
+_CONVERSION(`GList*',`Glib::ListHandle<TreeModel::Row>',__FL2H_SHALLOW)
+_CONVERSION(`GList*',`Glib::ListHandle<const TreeModel::Row>',__FL2H_SHALLOW)
+_CONVERSION(`GSList*',`Glib::SListHandle< Glib::RefPtr<Tag> >',__FL2H_SHALLOW)
+_CONVERSION(`GSList*',`Glib::SListHandle< Glib::RefPtr<TextTag> >',__FL2H_SHALLOW)
+_CONVERSION(`GSList*',`Glib::SListHandle< Glib::RefPtr<TextMark> >',__FL2H_SHALLOW)
+_CONVERSION(`GSList*',`Glib::SListHandle< Glib::RefPtr<TextBuffer::Mark> >',__FL2H_SHALLOW)
+
+
+_CONVERSION(`const Widget&',`GtkWidget*',__FCR2P)
+
+_CONVERSION(`int&',`int*',`&$3',`*$3')
+
+dnl
+dnl # These are for fixmegtkconst
+_CONVERSION(`gdouble*',`const gdouble*',`const_cast<const gdouble*>($3)',`$3')
+_CONVERSION(`const double*',`gdouble*',`const_cast<gdouble*>($3)',`$3')
+_CONVERSION(`const guchar*',`guchar*',`const_cast<guchar*>($3)',`$3')
+
+#_CONVERSION(`GSList*',`const Group&',`Group($3)')
+_CONVERSION(`GSList*',`Group',`Group($3)')
+_CONVERSION(`Group&',`GSList*',`$3.group_')
+_CONVERSION(`Group',`GSList*',`$3.group_')
+
+_CONVERSION(`Gtk::Item&',`GtkItem*',__FR2P)
+_CONVERSION(Gtk::Notebook_Helpers::Page*,GtkNotebookPage*,`($1)((void*)($3))',`($2)((void*)($3))')
+
+_CONVERSION(`GtkSettings*',`Glib::RefPtr<Settings>', Glib::wrap($3))
+
+_CONVERSION(`IconSet&',`GtkIconSet*',__FR2P)
+_CONVERSION(`const IconSet&',`GtkIconSet*',`const_cast<GtkIconSet*>(($3).gobj())')
+_CONVERSION(`GtkIconSet*',`IconSet',`Glib::wrap($3)')
+_CONVERSION(`IconSource&',`GtkIconSource*',__FR2P)
+_CONVERSION(`const IconSource&',`const GtkIconSource*',__FR2P)
+_CONVERSION(`const GtkIconSource*',`const IconSource&',`Glib::wrap(const_cast<GtkIconSource*>($3), true)')
+
+# gpointer conversions:
+# There's doesn't seem to be a way to tell g_signal_new that it's a pointer to a gint, for instance:
+#_CONVERSION(`int*',`gpointer',`($1)$3')
+#_CONVERSION(`gpointer',`int*',`($1)$3')
+
+
+# Text:
+_CONVERSION(`GtkTextTagTable*',`Glib::RefPtr<TextTagTable>',`Glib::wrap($3)')
+_CONVERSION(`GtkTextTagTable*',`Glib::RefPtr<TagTable>',`Glib::wrap($3)')
+_CONVERSION(`GtkTextTagTable*',`Glib::RefPtr<TextBuffer::TagTable>',`Glib::wrap($3)')
+_CONVERSION(`GtkTextTagTable*',`Glib::RefPtr<const TextBuffer::TagTable>',`Glib::wrap($3)')
+_CONVERSION(`GtkTextMark*',`Glib::RefPtr<Mark>',`Glib::wrap($3)')
+_CONVERSION(`GtkTextMark*',`Glib::RefPtr<TextBuffer::Mark>',`Glib::wrap($3)')
+_CONVERSION(`GtkTextMark*',`Glib::RefPtr<const TextBuffer::Mark>',`Glib::wrap($3)')
+_CONVERSION(`const Glib::RefPtr<Mark>&',`GtkTextMark*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<TextBuffer::Mark>&',`GtkTextMark*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`GtkTextTag*',`Glib::RefPtr<TextTag>',`Glib::wrap($3)')
+_CONVERSION(`GtkTextTag*',`Glib::RefPtr<const TextTag>',`Glib::wrap($3)')
+_CONVERSION(`const Glib::RefPtr<TextTag>&',`GtkTextTag*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Tag>&',`GtkTextTag*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<TextBuffer::Tag>&',`GtkTextTag*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`GtkTextBuffer*',`Glib::RefPtr<TextBuffer>',`Glib::wrap($3)')
+_CONVERSION(`GtkTextBuffer*',`Glib::RefPtr<const TextBuffer>',`Glib::wrap($3)')
+_CONVERSION(`TextIter&',`GtkTextIter*',__FR2P)
+_CONVERSION(`TextBuffer::iterator&',`GtkTextIter*',__FR2P)
+_CONVERSION(`iterator&',`GtkTextIter*',__FR2P)
+_CONVERSION(`const TextIter&',`const GtkTextIter*',__FR2P)
+_CONVERSION(`const TextBuffer::iterator&',`const GtkTextIter*',__FR2P)
+_CONVERSION(`const iterator&',`const GtkTextIter*',__FR2P)
+_CONVERSION(`TextAttributes&',`GtkTextAttributes*',__FR2P)
+_CONVERSION(`GtkTextAttributes*',`TextAttributes',TextAttributes($3))
+_CONVERSION(`const Glib::RefPtr<TextTagTable>&',`GtkTextTagTable*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<TextBuffer>&',`GtkTextBuffer*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<TextChildAnchor>&',`GtkTextChildAnchor*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`GtkTextChildAnchor*',`Glib::RefPtr<TextChildAnchor>',`Glib::wrap($3)')
+
+# Tree:
+_CONVERSION(`const TreeIter&',`const GtkTreeIter*',__FR2P)
+_CONVERSION(`const iterator&',`const GtkTreeIter*',__FR2P)
+_CONVERSION(`const TreeIter&',`GtkTreeIter*',__FCR2P)
+_CONVERSION(`const iterator&',`GtkTreeIter*',__FCR2P)
+_CONVERSION(`const TreeModel::Row&',`GtkTreeIter*',__FCR2P)
+_CONVERSION(`iterator&',`GtkTreeIter*',__FR2P)
+_CONVERSION(`const TreeModel::iterator&',`GtkTreeIter*',__FCR2P)
+_CONVERSION(`TreeViewColumn&',`GtkTreeViewColumn*',__FR2P)
+_CONVERSION(`GtkTreeViewColumn*',`TreeViewColumn*',`Glib::wrap($3)')
+_CONVERSION(`GtkTreeViewColumn*',`const TreeViewColumn*',`Glib::wrap($3)')
+_CONVERSION(`TreePath&',`GtkTreePath*',__FR2P)
+_CONVERSION(`const TreePath&',`const GtkTreePath*',__FR2P)
+_CONVERSION(`const TreePath&',`GtkTreePath*',__FCR2P)
+_CONVERSION(`const Path&',`GtkTreePath*',__FCR2P)
+_CONVERSION(`const TreeModel::Path&',`GtkTreePath*',__FCR2P)
+_CONVERSION(`GtkTreeView*',`TreeView*',`Glib::wrap($3)')
+_CONVERSION(`GtkTreeView*',`const TreeView*',`Glib::wrap($3)')
+_CONVERSION(`GtkTreeModel*',`Glib::RefPtr<TreeModel>',`Glib::wrap($3)')
+_CONVERSION(`GtkTreeModel*',`Glib::RefPtr<const TreeModel>',`Glib::wrap($3)')
+_CONVERSION(`const Glib::RefPtr<TreeModel>&',`GtkTreeModel*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`GtkTreeSelection*',`Glib::RefPtr<TreeSelection>',`Glib::wrap($3)')
+_CONVERSION(`GtkTreeSelection*',`Glib::RefPtr<const TreeSelection>',`Glib::wrap($3)')
+_CONVERSION(`const TreeModelColumnBase&',`int',`($3).index`'()')
+_CONVERSION(`GtkTreePath*',`TreePath', `Gtk::TreePath($3, false)')
+_CONVERSION(`GtkTreePath*',`Path', `Gtk::TreePath($3, false)')
+_CONVERSION(`GtkTreePath*',`TreeModel::Path', `Gtk::TreePath($3, false)')
+_CONVERSION(`GtkIconSet*&',`GtkIconSet**',`&($3)')
+_CONVERSION(`GtkIconSize&',`GtkIconSize*',`&($3)')
+_CONVERSION(`GtkCellEditable*',`CellEditable*',`dynamic_cast<$2>(Glib::wrap_auto((GObject*)($3), false))')
+_CONVERSION(`CellEditable*',`GtkCellEditable*',`Glib::unwrap($3)')
+
+
+
+#_CONVERSION(`Clipboard&',`GtkClipboard*',`($3).gobj()')
+_CONVERSION(`GtkClipboard*',`Glib::RefPtr<Clipboard>',`Glib::wrap($3)')
+_CONVERSION(`GtkClipboard*',`Glib::RefPtr<const Clipboard>',`Glib::wrap($3)')
+_CONVERSION(`const Glib::RefPtr<Clipboard>&',`GtkClipboard*',__CONVERT_REFPTR_TO_P($3))
+#_CONVERSION(`GtkClipboard*',`Gtk::Clipboard&',`Glib::wrap($3, true)')
+
+_CONVERSION(`SelectionData',`GtkSelectionData*', `($3).gobj()')
+_CONVERSION(`const SelectionData&',`GtkSelectionData*', __FCR2P)
+_CONVERSION(`SelectionData&',`GtkSelectionData*', __FR2P)
+#_CONVERSION(`GtkSelectionData*',`SelectionData', `Gtk::SelectionData(($3), true)')
+
+
+# Used by Signals:
+_CONVERSION(`GtkTextIter*',`const TextIter&',Glib::wrap($3))
+_CONVERSION(`GtkTextIter*',`const TextBuffer::iterator&',Glib::wrap($3))
+_CONVERSION(`const GtkTextIter*',`const TextIter&',Glib::wrap($3))
+_CONVERSION(`const GtkTextIter*',`const TextBuffer::iterator&',Glib::wrap($3))
+_CONVERSION(`const TextIter&',`GtkTextIter*',__FCR2P)
+_CONVERSION(`const TextBuffer::iterator&',`GtkTextIter*',__FCR2P)
+_CONVERSION(`GtkTextChildAnchor*',`const Glib::RefPtr<TextChildAnchor>&',`Glib::wrap($3, true)')
+_CONVERSION(`GtkTextMark*',`const Glib::RefPtr<Mark>&',`Glib::wrap($3, true)')
+_CONVERSION(`GtkTextMark*',`const Glib::RefPtr<TextBuffer::Mark>&',`Glib::wrap($3, true)')
+_CONVERSION(`GtkTextTag*',`const Glib::RefPtr<TextTag>&',`Glib::wrap($3, true)')
+_CONVERSION(`GtkTextTag*',`const Glib::RefPtr<TextBuffer::Tag>&',`Glib::wrap($3, true)')
+_CONVERSION(`GObject*',`const Glib::RefPtr<Glib::Object>&',`Glib::wrap($3, true)')
+_CONVERSION(`GtkTreePath*',`const TreeModel::Path&',`Gtk::TreePath($3, true)')
+_CONVERSION(`GtkTreePath*',`const Path&',`Gtk::TreePath($3, true)')
+_CONVERSION(`TreeViewColumn*',`GtkTreeViewColumn*',__FP2P)
+_CONVERSION(`GtkStyle*',`const Glib::RefPtr<Style>&',`Glib::wrap($3, true)')
+
+
+
+_CONVERSION(`AlignmentEnum',`float',`_gtkmm_align_float_from_enum($3)')
+
+
+
diff --git a/libs/glibmm2/tools/m4/convert_gtkmm.m4 b/libs/glibmm2/tools/m4/convert_gtkmm.m4
new file mode 100644
index 0000000000..f59910a075
--- /dev/null
+++ b/libs/glibmm2/tools/m4/convert_gtkmm.m4
@@ -0,0 +1,8 @@
+dnl $Id: convert_gtkmm.m4,v 1.1.1.1 2003/01/07 16:59:08 murrayc Exp $
+
+include(convert_base.m4)
+include(convert_gtk.m4)
+include(convert_pango.m4)
+include(convert_gdk.m4)
+include(convert_atk.m4)
+include(convert_glib.m4)
diff --git a/libs/glibmm2/tools/m4/convert_pango.m4 b/libs/glibmm2/tools/m4/convert_pango.m4
new file mode 100644
index 0000000000..645db7a2f7
--- /dev/null
+++ b/libs/glibmm2/tools/m4/convert_pango.m4
@@ -0,0 +1,137 @@
+
+# Enums:
+_CONV_ENUM(Pango,AttrType)
+_CONV_ENUM(Pango,Underline)
+_CONV_ENUM(Pango,Direction)
+_CONV_ENUM(Pango,CoverageLevel)
+_CONV_ENUM(Pango,Style)
+_CONV_ENUM(Pango,Variant)
+_CONV_ENUM(Pango,Stretch)
+_CONV_ENUM(Pango,Weight)
+_CONV_ENUM(Pango,FontMask)
+_CONV_ENUM(Pango,Alignment)
+_CONV_ENUM(Pango,WrapMode)
+_CONV_ENUM(Pango,TabAlign)
+
+
+# General conversions:
+_CONVERSION(`gchar*',`const char*',`($3)')
+_CONVERSION(`guchar*&',`guchar**',`&($3)')
+_CONVERSION(`int*&',`int**',`&($3)')
+
+
+# Wrapper type conversions:
+_CONVERSION(`PangoLanguage*',`Language',`Language($3)')
+_CONVERSION(`PangoLanguage*',`Pango::Language',`Pango::Language($3)')
+_CONVERSION(`const Language&',`const PangoLanguage*',`($3).gobj()')
+_CONVERSION(`const Language&',`PangoLanguage*',`const_cast<PangoLanguage*>(`($3).gobj()')')
+
+_CONVERSION(`Rectangle&',`PangoRectangle*',`($3).gobj()')
+_CONVERSION(`Rectangle',`PangoRectangle',`*($3).gobj()')
+_CONVERSION(`PangoRectangle',`Rectangle',`Rectangle(&($3))')
+
+_CONVERSION(`Color&',`PangoColor*',`($3).gobj()')
+_CONVERSION(`const Color&',`const PangoColor*',`($3).gobj()')
+_CONVERSION(`Color',`PangoColor',`*($3).gobj()')
+_CONVERSION(`PangoColor',`Color',`Color(&($3))')
+
+_CONVERSION(`PangoFontDescription*',`FontDescription',`FontDescription(($3))')
+_CONVERSION(`Pango::FontDescription&',`PangoFontDescription*',`($3).gobj()')
+_CONVERSION(`FontDescription&',`PangoFontDescription*',`($3).gobj()')
+_CONVERSION(`const FontDescription&',`const PangoFontDescription*',`($3).gobj()')
+_CONVERSION(`const Pango::FontDescription&',`PangoFontDescription*',`const_cast<PangoFontDescription*>(`($3).gobj()')')
+_CONVERSION(`const FontDescription&',`PangoFontDescription*',`const_cast<PangoFontDescription*>(`($3).gobj()')')
+
+_CONVERSION(`PangoFontMetrics*',`FontMetrics',`FontMetrics(($3))')
+
+_CONVERSION(`PangoAttribute*',`Attribute',`Attribute(($3))')
+_CONVERSION(`Attribute&',`PangoAttribute*',`($3).gobj()')
+_CONVERSION(`const Attribute&',`const PangoAttribute*',`($3).gobj()')
+
+_CONVERSION(`PangoAttrList*',`AttrList',`AttrList(($3))')
+_CONVERSION(`PangoAttrList*',`Pango::AttrList',`Pango::AttrList(($3))')
+_CONVERSION(`AttrList&',`PangoAttrList*',`($3).gobj()')
+_CONVERSION(`Pango::AttrList&',`PangoAttrList*',`($3).gobj()')
+
+_CONVERSION(`PangoAttrIterator*',`AttrIter',`Glib::wrap(($3))')
+
+_CONVERSION(`PangoAnalysis',`Analysis',`Analysis(&($3))')
+_CONVERSION(`PangoAnalysis',`const Analysis',`Analysis(&($3))')
+_CONVERSION(`Analysis&',`PangoAnalysis*',`($3).gobj()')
+_CONVERSION(`const Analysis&',`const PangoAnalysis*',`($3).gobj()')
+_CONVERSION(`const Analysis&',`PangoAnalysis*',`const_cast<PangoAnalysis*>(($3).gobj())')
+
+_CONVERSION(`PangoItem*',`Item',`Item(($3))')
+_CONVERSION(`PangoItem*',`const Item',`Item(($3))')
+_CONVERSION(`Item&',`PangoItem*',`($3).gobj()')
+_CONVERSION(`const Item&',`const PangoItem*',`($3).gobj()')
+
+_EQUAL(`PangoGlyph',`Glyph')
+_EQUAL(`PangoGlyphUnit',`GlyphUnit')
+_EQUAL(`PangoGlyphVisAttr',`GlyphVisAttr')
+#_CONVERSION(`PangoGlyphVisAttr',`GlyphVisAttr',`GlyphVisAttr(&($3))')
+#_CONVERSION(`GlyphVisAttr',`PangoGlyphVisAttr',`*($3).gobj()')
+_CONVERSION(`PangoGlyphGeometry',`GlyphGeometry',`GlyphGeometry(&($3))')
+_CONVERSION(`GlyphGeometry',`PangoGlyphGeometry',`*($3).gobj()')
+
+_CONVERSION(`PangoGlyphString*',`GlyphString',`GlyphString(($3))')
+_CONVERSION(`PangoGlyphString*',`const GlyphString',`GlyphString(($3))')
+
+_CONVERSION(`PangoFont*',`Glib::RefPtr<Font>',Glib::wrap($3))
+_CONVERSION(`PangoFont*',`Glib::RefPtr<Pango::Font>',Glib::wrap($3))
+_CONVERSION(`PangoFont*',`Glib::RefPtr<const Font>',Glib::wrap($3))
+_CONVERSION(`PangoFont*',`Glib::RefPtr<const Pango::Font>',Glib::wrap($3))
+_CONVERSION(`const Glib::RefPtr<Font>&',`PangoFont*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Pango::Font>&',`PangoFont*',__CONVERT_REFPTR_TO_P)
+# Special treatment for the Sun Forte compiler
+#_CONVERSION(const Glib::RefPtr<const Font>&,`PangoFont*',__CONVERT_CONST_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<const Font>&',`PangoFont*',__CONVERT_CONST_REFPTR_TO_P_SUN(Font))
+#_CONVERSION(`const Glib::RefPtr<const Font>&',`PangoFont*',__CONVERT_CONST_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<const Pango::Font>&',`PangoFont*',__CONVERT_CONST_REFPTR_TO_P_SUN(Pango::Font))
+
+_CONVERSION(`PangoFontMap*',`Glib::RefPtr<FontMap>',Glib::wrap($3))
+_CONVERSION(`const Glib::RefPtr<FontMap>&',`PangoFontMap*',__CONVERT_REFPTR_TO_P)
+
+_CONVERSION(`PangoFontSet*',`Glib::RefPtr<FontSet>',Glib::wrap($3))
+_CONVERSION(`const Glib::RefPtr<FontSet>&',`PangoFontSet*',__CONVERT_REFPTR_TO_P)
+
+_CONVERSION(`PangoContext*',`Glib::RefPtr<Pango::Context>',Glib::wrap($3))
+_CONVERSION(`PangoContext*',`Glib::RefPtr<Context>',Glib::wrap($3))
+_CONVERSION(`const Glib::RefPtr<Context>&',`PangoContext*',__CONVERT_REFPTR_TO_P)
+
+_CONVERSION(`PangoLayout*',`Glib::RefPtr<Pango::Layout>',Glib::wrap($3))
+_CONVERSION(`PangoLayout*',`Glib::RefPtr<const Pango::Layout>',Glib::wrap($3))
+_CONVERSION(`PangoLayout*',`Glib::RefPtr<Layout>',Glib::wrap($3))
+_CONVERSION(`PangoLayout*',`const Glib::RefPtr<Pango::Layout>&',Glib::wrap($3))
+_CONVERSION(`const Glib::RefPtr<Layout>&',`PangoLayout*',__CONVERT_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<Pango::Layout>&',`PangoLayout*',__CONVERT_REFPTR_TO_P)
+# Special treatment for the Sun Forte compiler
+_CONVERSION(`const Glib::RefPtr<const Pango::Layout>&',`PangoLayout*',__CONVERT_CONST_REFPTR_TO_P_SUN(Pango::Layout))
+_CONVERSION(`const Glib::RefPtr<const Layout>&',`PangoLayout*',__CONVERT_CONST_REFPTR_TO_P_SUN(Layout))
+
+_CONVERSION(`PangoLayoutLine*',`Glib::RefPtr<Pango::LayoutLine>',`Glib::wrap($3)')
+_CONVERSION(`PangoLayoutLine*',`Glib::RefPtr<LayoutLine>',`Glib::wrap($3)')
+_CONVERSION(`const Glib::RefPtr<Pango::LayoutLine>&',`PangoLayoutLine*',__CONVERT_REFPTR_TO_P)
+# Special treatment for the Sun Forte compiler
+_CONVERSION(`const Glib::RefPtr<const Pango::LayoutLine>&',`PangoLayoutLine*',__CONVERT_CONST_REFPTR_TO_P_SUN(Pango::LayoutLine))
+_CONVERSION(`const Glib::RefPtr<const LayoutLine>&',`PangoLayoutLine*',__CONVERT_CONST_REFPTR_TO_P_SUN(LayoutLine))
+
+_CONVERSION(`PangoLayoutRun*',`LayoutRun',Glib::wrap($3))
+
+_CONVERSION(`PangoLayoutIter*',`LayoutIter',`LayoutIter($3)')
+
+_CONVERSION(`PangoCoverage*',`Glib::RefPtr<Coverage>',`Glib::wrap($3)')
+_CONVERSION(`const Glib::RefPtr<Coverage>&',`PangoCoverage*',`Glib::unwrap($3)')
+
+_CONVERSION(`PangoTabArray*',`Pango::TabArray',`Pango::TabArray(($3))')
+_CONVERSION(`PangoTabArray*',`TabArray',`TabArray(($3))')
+_CONVERSION(`Pango::TabArray&',`PangoTabArray*',($3).gobj())
+_CONVERSION(`TabArray&',`PangoTabArray*',($3).gobj())
+
+_CONVERSION(`PangoTabAlign&',`PangoTabAlign*',`&$3',`*$3')
+_CONVERSION(`Pango::TabAlign&',`PangoTabAlign*',`((PangoTabAlign*) &($3))')
+_CONVERSION(`TabAlign&',`PangoTabAlign*',`((PangoTabAlign*) &($3))')
+
+define(`__FL2H_SHALLOW',`$`'2($`'3, Glib::OWNERSHIP_SHALLOW)')
+_CONVERSION(`GSList*',`SListHandle_LayoutLine',__FL2H_SHALLOW)
+
diff --git a/libs/glibmm2/tools/m4/ctor.m4 b/libs/glibmm2/tools/m4/ctor.m4
new file mode 100644
index 0000000000..9c00433aa1
--- /dev/null
+++ b/libs/glibmm2/tools/m4/ctor.m4
@@ -0,0 +1,64 @@
+dnl $Id: ctor.m4,v 1.1.1.1 2003/01/07 16:59:09 murrayc Exp $
+
+dnl
+dnl
+dnl Code generation sections for making a constructor.
+dnl
+dnl
+
+dnl
+dnl Declares and implements the default constructor
+dnl
+define(`_CTOR_DEFAULT',`dnl
+__CPPNAME__`'();
+_PUSH(SECTION_CC)
+__CPPNAME__::__CPPNAME__`'()
+:
+ Glib::ObjectBase(0), //Mark this class as gtkmmproc-generated, rather than a custom class, to allow vfunc optimisations.
+ __CPPPARENT__`'(Glib::ConstructParams(__BASE__`'_class_.init()))
+{
+ _IMPORT(SECTION_CC_INITIALIZE_CLASS_EXTRA)
+}
+
+_POP()')
+
+
+dnl
+dnl Constructors for _new functions.
+dnl $1 $2 $3 $4
+dnl _CTOR_IMPL(cppname,cname,cppargs,c_varargs)
+define(`_CTOR_IMPL',`dnl
+_PUSH(SECTION_CC)
+__CPPNAME__::$1`'($3)
+:
+ Glib::ObjectBase(0), //Mark this class as gtkmmproc-generated, rather than a custom class, to allow vfunc optimisations.
+ __CPPPARENT__`'(Glib::ConstructParams(__BASE__`'_class_.init()`'ifelse(`$4',,,`, $4')`', (char*) 0))
+{
+ _IMPORT(SECTION_CC_INITIALIZE_CLASS_EXTRA)
+}
+
+_POP()')
+
+define(`_CONSTRUCT',`dnl
+Glib::ObjectBase(0), //Mark this class as gtkmmproc-generated, rather than a custom class, to allow vfunc optimisations.
+ __CPPPARENT__`'(Glib::ConstructParams(__BASE__`'_class_.init()ifelse(`$1',,,`, $@'), (char*) 0))dnl
+')dnl
+
+dnl _CONSTRUCT() does not deal with multiple class definitions in one file.
+dnl If necessary, _CONSTRUCT_SPECIFIC(BaseClass, Class) must be used instead.
+dnl
+define(`_CONSTRUCT_SPECIFIC',`dnl
+Glib::ObjectBase(0), //Mark this class as gtkmmproc-generated, rather than a custom class, to allow vfunc optimisations.
+ $1`'(Glib::ConstructParams(_LOWER($2)_class_.init()ifelse(`$3',,,`, shift(shift($@))'), (char*) 0))dnl
+')dnl
+
+
+dnl
+dnl Extra code for initialize_class.
+dnl Not commonly used.
+dnl
+define(`_INITIALIZE_CLASS_EXTRA',`dnl
+_PUSH(SECTION_CC_INITIALIZE_CLASS_EXTRA)
+$1
+_POP()')
+
diff --git a/libs/glibmm2/tools/m4/doc.m4 b/libs/glibmm2/tools/m4/doc.m4
new file mode 100644
index 0000000000..9bc055159d
--- /dev/null
+++ b/libs/glibmm2/tools/m4/doc.m4
@@ -0,0 +1,3 @@
+dnl $Id: doc.m4,v 1.1.1.1 2003/01/07 16:59:09 murrayc Exp $
+
+divert(-1)
diff --git a/libs/glibmm2/tools/m4/enum.m4 b/libs/glibmm2/tools/m4/enum.m4
new file mode 100644
index 0000000000..bb5cabcd59
--- /dev/null
+++ b/libs/glibmm2/tools/m4/enum.m4
@@ -0,0 +1,101 @@
+
+dnl
+dnl _ENUM(cpp_type, c_type, value_suffix, `element_list', `flags', `optional_refdoc_comment', 'get_type_function_name')
+dnl
+m4_define(`_ENUM',`dnl
+_PUSH()
+
+m4_define(`__ENUM_CPPNAME__',`$1')
+m4_define(`__ENUM_CNAME__',`$2')
+m4_define(`__ENUM_VALUE_BASE__',`Glib::Value_$3<__NAMESPACE__::__ENUM_CPPNAME__>')
+
+_POP()
+dnl
+dnl // Define a new Doxygen group if this is the first enum in the file.
+dnl
+m4_ifdef(`__DOCGROUP_'__MODULE_CANONICAL__`_ENUMS__',,`dnl else
+m4_define(`__DOCGROUP_'__MODULE_CANONICAL__`_ENUMS__')dnl
+/** @addtogroup '__MODULE_CANONICAL__`Enums Enums and Flags */
+
+')dnl endif
+dnl
+dnl
+/**$6
+ * @ingroup __MODULE_CANONICAL__`'Enums
+m4_ifelse($3,Flags,`dnl
+ * @par Bitwise operators:
+ * <tt>%__ENUM_CPPNAME__ operator|(__ENUM_CPPNAME__, __ENUM_CPPNAME__)</tt><br>
+ * <tt>%__ENUM_CPPNAME__ operator&(__ENUM_CPPNAME__, __ENUM_CPPNAME__)</tt><br>
+ * <tt>%__ENUM_CPPNAME__ operator^(__ENUM_CPPNAME__, __ENUM_CPPNAME__)</tt><br>
+ * <tt>%__ENUM_CPPNAME__ operator~(__ENUM_CPPNAME__)</tt><br>
+ * <tt>%__ENUM_CPPNAME__& operator|=(__ENUM_CPPNAME__&, __ENUM_CPPNAME__)</tt><br>
+ * <tt>%__ENUM_CPPNAME__& operator&=(__ENUM_CPPNAME__&, __ENUM_CPPNAME__)</tt><br>
+ * <tt>%__ENUM_CPPNAME__& operator^=(__ENUM_CPPNAME__&, __ENUM_CPPNAME__)</tt><br>
+')dnl endif
+ */
+enum __ENUM_CPPNAME__
+{
+$4
+};
+m4_ifelse($3,Flags,`dnl
+
+/** @ingroup __MODULE_CANONICAL__`'Enums */
+inline __ENUM_CPPNAME__ operator|(__ENUM_CPPNAME__ lhs, __ENUM_CPPNAME__ rhs)
+ { return static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); }
+
+/** @ingroup __MODULE_CANONICAL__`'Enums */
+inline __ENUM_CPPNAME__ operator&(__ENUM_CPPNAME__ lhs, __ENUM_CPPNAME__ rhs)
+ { return static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); }
+
+/** @ingroup __MODULE_CANONICAL__`'Enums */
+inline __ENUM_CPPNAME__ operator^(__ENUM_CPPNAME__ lhs, __ENUM_CPPNAME__ rhs)
+ { return static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); }
+
+/** @ingroup __MODULE_CANONICAL__`'Enums */
+inline __ENUM_CPPNAME__ operator~(__ENUM_CPPNAME__ flags)
+ { return static_cast<__ENUM_CPPNAME__>(~static_cast<unsigned>(flags)); }
+
+/** @ingroup __MODULE_CANONICAL__`'Enums */
+inline __ENUM_CPPNAME__& operator|=(__ENUM_CPPNAME__& lhs, __ENUM_CPPNAME__ rhs)
+ { return (lhs = static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs))); }
+
+/** @ingroup __MODULE_CANONICAL__`'Enums */
+inline __ENUM_CPPNAME__& operator&=(__ENUM_CPPNAME__& lhs, __ENUM_CPPNAME__ rhs)
+ { return (lhs = static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs))); }
+
+/** @ingroup __MODULE_CANONICAL__`'Enums */
+inline __ENUM_CPPNAME__& operator^=(__ENUM_CPPNAME__& lhs, __ENUM_CPPNAME__ rhs)
+ { return (lhs = static_cast<__ENUM_CPPNAME__>(static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs))); }
+')dnl endif Flags
+
+m4_ifelse($5,`NO_GTYPE',,`dnl else
+__NAMESPACE_END__
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+namespace Glib
+{
+
+template <>
+class Value<__NAMESPACE__::__ENUM_CPPNAME__> : public __ENUM_VALUE_BASE__
+{
+public:
+ static GType value_type() G_GNUC_CONST;
+};
+
+} // namespace Glib
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+
+__NAMESPACE_BEGIN__
+_PUSH(SECTION_SRC_GENERATED)
+// static
+GType Glib::Value<__NAMESPACE__::__ENUM_CPPNAME__>::value_type()
+{
+ return _GET_TYPE_FUNC(__ENUM_CNAME__);
+}
+
+_POP()
+')dnl endif !NO_GTYPE
+')dnl enddef _ENUM
+
diff --git a/libs/glibmm2/tools/m4/gerror.m4 b/libs/glibmm2/tools/m4/gerror.m4
new file mode 100644
index 0000000000..12f166f138
--- /dev/null
+++ b/libs/glibmm2/tools/m4/gerror.m4
@@ -0,0 +1,102 @@
+dnl $Id: gerror.m4,v 1.2 2006/05/12 08:08:45 murrayc Exp $
+
+dnl
+dnl _GERROR(PixbufError,GdkPixbufError,GDK_PIXBUF_ERROR,`<enum_value_list>',[NO_GTYPE])
+dnl
+
+m4_define(`_GERROR',`dnl
+_PUSH()
+dnl
+dnl Define the args for later macros
+m4_define(`__CPPNAME__',`$1')
+m4_define(`__CNAME__',`$2')
+m4_define(`__CQUARK__',`$3')
+m4_define(`__VALUE_BASE__',`Glib::Value_Enum<__NAMESPACE__::__CPPNAME__::Code>')
+_POP()
+class __CPPNAME__ : public Glib::Error
+{
+public:
+ enum Code
+ {
+$4
+ };
+
+ __CPPNAME__`'(Code error_code, const Glib::ustring& error_message);
+ explicit __CPPNAME__`'(GError* gobject);
+ Code code() const;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+private:
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ static void throw_func(GError* gobject);
+#else
+ //When not using exceptions, we just pass the Exception object around without throwing it:
+ static std::auto_ptr<Glib::Error> throw_func(GError* gobject);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+ friend void wrap_init(); // uses throw_func()
+#endif
+};
+
+m4_ifelse($5,`NO_GTYPE',,`dnl else
+__NAMESPACE_END__
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+namespace Glib
+{
+
+template <>
+class Value<__NAMESPACE__::__CPPNAME__::Code> : public __VALUE_BASE__
+{
+public:
+ static GType value_type() G_GNUC_CONST;
+};
+
+} // namespace Glib
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+
+__NAMESPACE_BEGIN__
+')dnl endif !NO_GTYPE
+_PUSH(SECTION_SRC_GENERATED)
+
+__NAMESPACE__::__CPPNAME__::__CPPNAME__`'(__NAMESPACE__::__CPPNAME__::Code error_code, const Glib::ustring& error_message)
+:
+ Glib::Error (__CQUARK__, error_code, error_message)
+{}
+
+__NAMESPACE__::__CPPNAME__::__CPPNAME__`'(GError* gobject)
+:
+ Glib::Error (gobject)
+{}
+
+__NAMESPACE__::__CPPNAME__::Code __NAMESPACE__::__CPPNAME__::code() const
+{
+ return static_cast<Code>(Glib::Error::code());
+}
+
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+void __NAMESPACE__::__CPPNAME__::throw_func(GError* gobject)
+{
+ throw __NAMESPACE__::__CPPNAME__`'(gobject);
+}
+#else
+//When not using exceptions, we just pass the Exception object around without throwing it:
+std::auto_ptr<Glib::Error> __NAMESPACE__::__CPPNAME__::throw_func(GError* gobject)
+{
+ return std::auto_ptr<Glib::Error>(new __NAMESPACE__::__CPPNAME__`'(gobject));
+}
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+
+m4_ifelse($5,`NO_GTYPE',,`dnl else
+// static
+GType Glib::Value<__NAMESPACE__::__CPPNAME__::Code>::value_type()
+{
+ return _GET_TYPE_FUNC(__CNAME__);
+}
+
+')dnl endif !NO_GTYPE
+_POP()
+') dnl enddef _GERROR
+
diff --git a/libs/glibmm2/tools/m4/list.m4 b/libs/glibmm2/tools/m4/list.m4
new file mode 100644
index 0000000000..c92b13df65
--- /dev/null
+++ b/libs/glibmm2/tools/m4/list.m4
@@ -0,0 +1,230 @@
+_PUSH()
+
+dnl
+dnl These variables affect the generation of the list
+dnl
+define(GP_LIST_HELPER_NAMESPACE,`define(`__LIST_NAMESPACE__',$1)')
+define(GP_LIST_ELEM,`define(`__LISTELEM__',`$*')')
+define(GP_LIST_ITER,`define(`__LISTITER__',`$*')')
+define(GP_LIST_NOINSERT,`define(`__LISTEO__')')
+
+dnl
+dnl GP_LIST(ListName, ParentCppType, ParentCType, ChildCppType, FieldNameC)
+dnl
+dnl In the .ccg file, you'll need to implement:
+dnl iterator insert(iterator position, element_type& e);
+dnl
+dnl Fieldname assumed to be children if not specified
+define(GP_LIST,`
+_PUSH()
+
+define(`__LISTNAME__',$1)
+define(`__LISTPARENT__',$2)
+define(`__LISTPARENT_G__',$3)
+define(`__LISTTYPE__',$4)
+define(`__LISTELEM__',const Element)
+define(`__LISTITER__',Glib::List_Iterator< __LISTTYPE__ >)
+define(`__LIST_NAMESPACE__',$2_Helpers)
+#define(`__LISTFIELD__',ifelse($5,,children,$5))
+define(`__LISTFIELD__',$5)
+
+_SECTION(SECTION_USR)
+')
+
+dnl
+dnl GP_LIST_END()
+dnl
+dnl Closes a list
+define(GP_LIST_END,`dnl
+_POP()
+
+class __LISTNAME__ : public Glib::HelperList< __LISTTYPE__, __LISTELEM__, __LISTITER__ >
+{
+public:
+ __LISTNAME__`'();
+ explicit __LISTNAME__`'(__LISTPARENT_G__* gparent);
+ __LISTNAME__`'(const __LISTNAME__& src);
+ virtual ~__LISTNAME__`'() {}
+
+ __LISTNAME__& operator=(const __LISTNAME__& src);
+
+ typedef Glib::HelperList< __LISTTYPE__, __LISTELEM__, __LISTITER__ > type_base;
+
+ __LISTPARENT_G__* gparent();
+ const __LISTPARENT_G__* gparent() const;
+
+ virtual GList*& glist() const; // front of list
+
+ virtual void erase(iterator start, iterator stop);
+ virtual iterator erase(iterator); //Implented as custom or by LIST_CONTAINER_REMOVE
+ virtual void remove(const_reference); //Implented as custom or by LIST_CONTAINER_REMOVE
+
+ /// This is order n. (use at own risk)
+ reference operator[](size_type l) const;
+
+ifdef(`__LISTEO__',`dnl
+protected:
+ //Hide these because it's read-only:
+ iterator insert(iterator position, element_type& e);
+
+ inline void pop_front();
+ inline void pop_back();
+,`dnl
+public:
+ iterator insert(iterator position, element_type& e); //custom-implemented.
+
+ template <class InputIterator>
+ inline void insert(iterator position, InputIterator first, InputIterator last)
+ {
+ for(;first != last; ++first)
+ position = insert(position, *first);
+ }
+
+ inline void push_front(element_type& e)
+ { insert(begin(), e); }
+ inline void push_back(element_type& e)
+ { insert(end(), e); }
+')dnl
+
+_IMPORT(SECTION_USR)
+};
+
+_PUSH(SECTION_CC)
+
+namespace __LIST_NAMESPACE__
+{
+
+__LISTNAME__::__LISTNAME__`'()
+{}
+
+__LISTNAME__::__LISTNAME__`'(__LISTPARENT_G__* gparent)
+: type_base((GObject*)gparent)
+{}
+
+__LISTNAME__::__LISTNAME__`'(const __LISTNAME__& src)
+:
+ type_base(src)
+{}
+
+__LISTNAME__& __LISTNAME__::operator=(const __LISTNAME__& src)
+{
+ type_base::operator=(src);
+ return *this;
+}
+
+ifelse(__LISTFIELD__,CUSTOM,`dnl
+',`dnl else
+GList*& __LISTNAME__::glist() const
+{
+ return ((__LISTPARENT_G__*)gparent_)->__LISTFIELD__;
+}
+')dnl endif
+
+void __LISTNAME__::erase(iterator start, iterator stop)
+{
+ type_base::erase(start, stop);
+}
+
+__LISTPARENT_G__* __LISTNAME__::gparent()
+{
+ return (__LISTPARENT_G__*)type_base::gparent();
+}
+
+const __LISTPARENT_G__* __LISTNAME__::gparent() const
+{
+ return (__LISTPARENT_G__*)type_base::gparent();
+}
+
+__LISTNAME__::reference __LISTNAME__::operator[](size_type l) const
+{
+ return type_base::operator[](l);
+}
+
+} /* namespace __LIST_NAMESPACE__ */
+
+undefine(`__LISTNAME__')dnl
+undefine(`__LISTTYPE__')dnl
+undefine(`__LISTPARENT__')dnl
+undefine(`__LISTELEM__')dnl
+undefine(`__LISTFIELD__')dnl
+_POP()
+')
+
+dnl
+dnl GP_LIST_FIND(access_method)
+dnl
+dnl Defines find(containertype) and find(Widget&)
+dnl access_method is the name of method returning a Widget*
+define(GP_LIST_FIND,`
+ iterator find(const_reference c);
+ iterator find(Widget&);
+_PUSH(SECTION_CC)
+
+namespace __LIST_NAMESPACE__
+{
+
+__LISTNAME__::iterator __LISTNAME__::find(const_reference w)
+{
+ iterator i = begin();
+ for(i = begin(); i != end() && (i->ifelse($1,,,$1()->)gobj() != w.ifelse($1,,,$1()->)gobj()); i++);
+ return i;
+}
+
+__LISTNAME__::iterator __LISTNAME__::find(Widget& w)
+{
+ iterator i;
+ for(i = begin(); i != end() && ((GtkWidget*)i->ifelse($1,,,$1()->)gobj() != w.gobj()); i++);
+ return i;
+}
+
+} /* namespace __LIST_NAMESPACE__ */
+
+_POP()
+')
+
+dnl
+dnl GP_LIST_CONTAINER_REMOVE(access_method)
+dnl
+dnl Implements remove(const_reference), erase(iterator)
+dnl and defines remove(Widget&)
+dnl (assumes that the widget uses gtk+ container methods).
+dnl access_method is the name of the method returning a Widget*
+define(GP_LIST_CONTAINER_REMOVE,`
+virtual void remove(Widget& w); //Implented as custom or by LIST_CONTAINER_REMOVE
+_PUSH(SECTION_CC)
+
+namespace __LIST_NAMESPACE__
+{
+
+void __LISTNAME__::remove(const_reference child)
+{
+ gtk_container_remove(GTK_CONTAINER(gparent_),
+ (GtkWidget*)(child.ifelse($1,,,$1()->)gobj()));
+}
+
+void __LISTNAME__::remove(Widget& widget)
+{
+ gtk_container_remove(GTK_CONTAINER(gparent_), (GtkWidget*)(widget.gobj()));
+}
+
+__LISTNAME__::iterator __LISTNAME__::erase(iterator position)
+{
+ //Check that it is a valid iterator, to a real item:
+ if ( !position.node_|| (position == end()) )
+ return end();
+
+ //Get an iterator the the next item, to return:
+ iterator next = position;
+ next++;
+
+ //Use GTK+ C function to remove it, by providing the GtkWidget*:
+ gtk_container_remove( GTK_CONTAINER(gparent_), (GtkWidget*)(position->ifelse($1,,,$1()->)gobj()) );
+ return next;
+}
+
+} /* namespace __LIST_NAMESPACE__ */
+
+_POP()
+')
+
+_POP()dnl
diff --git a/libs/glibmm2/tools/m4/member.m4 b/libs/glibmm2/tools/m4/member.m4
new file mode 100644
index 0000000000..ed144cdd5e
--- /dev/null
+++ b/libs/glibmm2/tools/m4/member.m4
@@ -0,0 +1,132 @@
+dnl
+dnl --------------------------- Accessors ----------------------------
+dnl
+
+
+dnl Get:
+
+
+dnl Creates accessors for simple types:
+dnl _MEMBER_GET(cpp_name, c_name, cpp_type, c_type, deprecated (optional))
+define(`_MEMBER_GET',`dnl
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
+$3 get_$1() const;
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
+_PUSH(SECTION_CC)
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
+$3 __CPPNAME__::get_$1() const
+{
+ return _CONVERT($4,$3,`gobj()->$2');
+}
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
+
+_POP()')
+
+dnl Creates two accessors for pointer types, one const and one non-const:
+define(`_MEMBER_GET_PTR',`dnl
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
+$3 get_$1();
+ const $3 get_$1() const;
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
+_PUSH(SECTION_CC)
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
+$3 __CPPNAME__::get_$1()
+{
+ return _CONVERT($4,$3,`gobj()->$2');
+}
+
+const $3 __CPPNAME__::get_$1() const
+{
+ return _CONVERT($4,const $3,`gobj()->$2');
+}
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
+
+_POP()')
+
+dnl Creates accessors for GObject-derived types that must be ref()ed.
+define(`_MEMBER_GET_GOBJECT',`dnl
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
+Glib::RefPtr<$3> get_$1();
+ Glib::RefPtr<const $3> get_$1() const;
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
+_PUSH(SECTION_CC)
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
+Glib::RefPtr<$3> __CPPNAME__::get_$1()
+{
+ Glib::RefPtr<$3> ref_ptr(_CONVERT($4,Glib::RefPtr<$3>,`gobj()->$2'));
+
+dnl We could use the bool with Glib::wrap(), but we want to share the m4 type-conversion map.
+ if(ref_ptr)
+ ref_ptr->reference();
+
+ return ref_ptr;
+}
+
+Glib::RefPtr<const $3> __CPPNAME__::get_$1() const
+{
+ Glib::RefPtr<const $3> ref_ptr(_CONVERT($4,Glib::RefPtr<const $3>,`gobj()->$2'));
+
+dnl We could use the bool with Glib::wrap(), but we want to share the m4 type-conversion map.
+ if(ref_ptr)
+ ref_ptr->reference();
+
+ return ref_ptr;
+}
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
+
+_POP()')
+
+
+dnl Set:
+
+dnl Creates accessors for simple types:
+define(`_MEMBER_SET',`dnl
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
+void set_$1(const $3`'& value);
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
+_PUSH(SECTION_CC)
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
+void __CPPNAME__::set_$1(const $3`'& value)
+{
+ gobj()->$2 = _CONVERT($3,$4,`value');
+}
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
+
+_POP()')
+
+dnl Creates accessors for pointer types:
+define(`_MEMBER_SET_PTR',`dnl
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
+void set_$1($3 value);
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
+_PUSH(SECTION_CC)
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
+void __CPPNAME__::set_$1($3 value)
+{
+ gobj()->$2 = _CONVERT($3,$4,`value');
+}
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
+
+_POP()')
+
+dnl Creates accessors for GObject-derived types that must be ref()ed.
+define(`_MEMBER_SET_GOBJECT',`dnl
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
+void set_$1(const Glib::RefPtr<$3>& value);
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
+_PUSH(SECTION_CC)
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_START ') dnl
+void __CPPNAME__::set_$1(const Glib::RefPtr<$3>& value)
+{
+ Glib::RefPtr<$3> valueOld(_CONVERT($4,Glib::RefPtr<$3>,`gobj()->$2')); //Take possession of the old one, unref-ing it in the destructor.
+
+ if(value)
+ value->reference(); //Ref once for the recipient.
+
+ gobj()->$2 = _CONVERT(const Glib::RefPtr<$3>&,$4,`value');
+}
+ifelse(`$5',`deprecated',`_DEPRECATE_IFDEF_END ') dnl
+
+_POP()')
+
+
diff --git a/libs/glibmm2/tools/m4/method.m4 b/libs/glibmm2/tools/m4/method.m4
new file mode 100644
index 0000000000..b6b5eeca08
--- /dev/null
+++ b/libs/glibmm2/tools/m4/method.m4
@@ -0,0 +1,108 @@
+dnl $Id: method.m4,v 1.10 2006/09/19 20:07:30 murrayc Exp $
+
+dnl
+dnl
+dnl Code generation sections for making a method.
+dnl
+dnl
+
+
+dnl
+dnl method
+dnl $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14
+dnl _METHOD(cppname,cname,cpprettype,crettype,arglist,cargs,const,refreturn,errthrow,deprecated,constversion,ifdef, arglist_without_types)
+define(`_METHOD',`dnl
+_PUSH(SECTION_CC)
+ifelse(`$10',,,`_DEPRECATE_IFDEF_START
+')dnl
+ifelse(`$13',,,`#ifdef $13'
+)dnl
+ifelse(`$9',,,`#ifdef GLIBMM_EXCEPTIONS_ENABLED'
+)dnl
+$3 __CPPNAME__::$1`'($5)ifelse(`$7',1,` const')
+ifelse(`$9',,,`#else
+$3 __CPPNAME__::$1`'(`'$5`'ifelse(($5),(),`',`, ')std::auto_ptr<Glib::Error>& error)ifelse(`$7',1,` const')
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+')dnl
+{
+ifelse(`$11',,dnl
+`ifelse(`$8'`$9',,dnl If it is not errthrow or refreturn
+`ifelse(`$3',void,dnl If it returns voids:
+`$2(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'ifelse(`$6',,,`, ')$6);' dnl It it returns non-void:
+,` return _CONVERT($4,$3,`$2`'(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'ifelse(`$6',,,`, ')$6)');')'dnl End if it returns voids.
+,dnl If is errthrow or refreturn
+`ifelse(`$9',,,` GError* gerror = 0;')
+ ifelse(`$3',void,,``$3' retvalue = ')_CONVERT($4,$3,`$2`'(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'ifelse(`$6',,,`, ')$6)');dnl
+ifelse(`$9',,,`
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+')
+ifelse(`$8',,,`dnl
+ if(retvalue)
+ retvalue->reference(); //The function does not do a ref for us.
+')dnl
+ifelse(`$3',void,,` return retvalue;')
+')dnl End errthrow/refreturn
+',` return const_cast<__CPPNAME__*>(this)->$1($12);')
+}
+
+ifelse(`$13',,,`
+#endif // $13
+')dnl
+ifelse(`$10',,,`_DEPRECATE_IFDEF_END
+')dnl
+_POP()')
+
+dnl
+dnl static method
+dnl $1 $2 $3 $4 $5 $6 $7 $8 $9 $10
+dnl _STATIC_METHOD(cppname,cname,cpprettype,crettype,arglist,cargs,refreturn,errthrow,deprecated,ifdef))
+define(`_STATIC_METHOD',`dnl
+_PUSH(SECTION_CC)
+ifelse(`$9',,,`_DEPRECATE_IFDEF_START
+')dnl
+ifelse(`$10',,,`#ifdef $10'
+)dnl
+ifelse(`$8',,,`#ifdef GLIBMM_EXCEPTIONS_ENABLED
+')dnl
+$3 __CPPNAME__::$1($5)
+ifelse(`$8',,,`#else
+$3 __CPPNAME__::$1(`'$5`'ifelse(($5),(),`',`, ')std::auto_ptr<Glib::Error>& error)
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+')dnl
+{
+ifelse(`$7'`$8',,dnl
+`ifelse(`$3',void,,` return ')_CONVERT($4,$3,`$2`'($6)');
+',dnl
+`ifelse(`$8',,,` GError* gerror = 0;')
+ ifelse(`$3',void,,``$3' retvalue = ')_CONVERT($4,$3,`$2`'($6)');
+ifelse(`$8',,,`
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+ if(gerror)
+ ::Glib::Error::throw_exception(gerror);
+#else
+ if(gerror)
+ error = ::Glib::Error::throw_exception(gerror);
+#endif //GLIBMM_EXCEPTIONS_ENABLED
+')
+ifelse(`$7',,,`dnl
+ if(retvalue)
+ retvalue->reference(); //The function does not do a ref for us.
+')dnl
+ifelse(`$3',void,,` return retvalue;')
+')dnl
+}
+
+ifelse(`$10',,,`
+#endif // $10
+')dnl
+ifelse(`$9',,,`_DEPRECATE_IFDEF_END
+')
+_POP()')
+
+
diff --git a/libs/glibmm2/tools/m4/property.m4 b/libs/glibmm2/tools/m4/property.m4
new file mode 100644
index 0000000000..a031ff4eeb
--- /dev/null
+++ b/libs/glibmm2/tools/m4/property.m4
@@ -0,0 +1,40 @@
+dnl $Id: property.m4,v 1.6 2006/05/12 08:08:45 murrayc Exp $
+
+dnl
+dnl
+dnl Code generation sections for properties
+dnl
+dnl
+
+dnl
+dnl _PROPERTY_PROXY(name, name_underscored, cpp_type, proxy_suffix, docs)
+dnl proxy_suffix could be "_WriteOnly" or "_ReadOnly"
+dnl The method will be const if the propertyproxy is _ReadOnly.
+dnl
+define(`_PROPERTY_PROXY',`dnl
+dnl
+dnl Put spaces around the template parameter if necessary.
+pushdef(`__PROXY_TYPE__',`dnl
+Glib::PropertyProxy$4<'ifelse(regexp(_QUOTE($3),`>$'),`-1',_QUOTE($3),` '_QUOTE($3)` ')`>'dnl
+)dnl
+#ifdef GLIBMM_PROPERTIES_ENABLED
+/** $5
+ *
+ * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
+ * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
+ * the value of the property changes.
+ */
+ __PROXY_TYPE__ property_$2`'() ifelse($4,_ReadOnly, const,);
+#endif //#GLIBMM_PROPERTIES_ENABLED
+_PUSH(SECTION_CC_PROPERTYPROXIES)
+#ifdef GLIBMM_PROPERTIES_ENABLED
+__PROXY_TYPE__ __CPPNAME__::property_$2`'() ifelse($4,_ReadOnly, const,)
+{
+ return __PROXY_TYPE__`'(this, "$1");
+}
+#endif //GLIBMM_PROPERTIES_ENABLED
+
+_POP()
+popdef(`__PROXY_TYPE__')dnl
+')dnl
+
diff --git a/libs/glibmm2/tools/m4/signal.m4 b/libs/glibmm2/tools/m4/signal.m4
new file mode 100644
index 0000000000..952975f5d0
--- /dev/null
+++ b/libs/glibmm2/tools/m4/signal.m4
@@ -0,0 +1,267 @@
+
+#
+# --------------------------- Signal Decl----------------------------
+#
+
+dnl _SIGNAL_PROXY($1 = c_signal_name,
+dnl $2 = c_return_type,
+dnl $3 = `<c_arg_types_and_names>',
+dnl $4 = cpp_signal_name,
+dnl $5 = cpp_return_type,
+dnl $6 = `<cpp_arg_types>',
+dnl $7 = `<c_args_to_cpp>',
+dnl $8 = `custom_c_callback (boolean)',
+dnl $9 = `refdoc_comment',
+dnl $10 = ifdef)
+
+define(`_SIGNAL_PROXY',`
+$9
+
+ifelse(`$10',,,`#ifdef $10'
+)dnl
+ Glib::SignalProxy`'_NUM($6)< $5`'_COMMA_PREFIX($6) > signal_$4`'();
+ifelse(`$10',,,`#endif // $10
+')dnl
+dnl
+_PUSH(SECTION_ANONYMOUS_NAMESPACE)
+
+ifelse(`$10',,,`#ifdef $10'
+)dnl
+dnl
+ifelse($2`'_NUM($3)`'$5`'_NUM($6),`void0void0',`dnl
+dnl
+dnl Use predefined callback for SignalProxy0<void>, to reduce code size.
+
+static const Glib::SignalProxyInfo __CPPNAME__`'_signal_$4_info =
+{
+ "$1",
+ (GCallback) &Glib::SignalProxyNormal::slot0_void_callback,
+ (GCallback) &Glib::SignalProxyNormal::slot0_void_callback
+};
+',`dnl else
+
+ifelse($8,`1',,`dnl Do not generate the implementation if it should be custom:
+static $2 __CPPNAME__`'_signal_$4_callback`'(__CNAME__`'* self, _COMMA_SUFFIX($3)`'void* data)
+{
+ using namespace __NAMESPACE__;
+ typedef sigc::slot< $5`'_COMMA_PREFIX($6) > SlotType;
+
+ // Do not try to call a signal on a disassociated wrapper.
+ if(Glib::ObjectBase::_get_current_wrapper((GObject*) self))
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ if(sigc::slot_base *const slot = Glib::SignalProxyNormal::data_to_slot`'(data))
+ifelse(`$2',void,`dnl
+ (*static_cast<SlotType*>(slot))($7);
+',`dnl else
+ return _CONVERT($5,$2,`(*static_cast<SlotType*>(slot))($7)');
+')dnl endif
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+ifelse($2,void,,`dnl else
+
+ typedef $2 RType;
+ return RType`'();
+')dnl
+}
+ifelse($2,void,,`dnl else
+
+static $2 __CPPNAME__`'_signal_$4_notify_callback`'(__CNAME__`'* self, _COMMA_SUFFIX($3)`' void* data)
+{
+ using namespace __NAMESPACE__;
+ typedef sigc::slot< void`'_COMMA_PREFIX($6) > SlotType;
+
+ // Do not try to call a signal on a disassociated wrapper.
+ if(Glib::ObjectBase::_get_current_wrapper((GObject*) self))
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ if(sigc::slot_base *const slot = Glib::SignalProxyNormal::data_to_slot`'(data))
+ (*static_cast<SlotType*>(slot))($7);
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+
+ typedef $2 RType;
+ return RType`'();
+}
+')dnl endif
+')dnl endif
+
+static const Glib::SignalProxyInfo __CPPNAME__`'_signal_$4_info =
+{
+ "$1",
+ (GCallback) &__CPPNAME__`'_signal_$4_callback,
+ (GCallback) &__CPPNAME__`'_signal_$4_`'ifelse($2,void,,notify_)`'callback
+};
+')dnl endif
+
+ifelse(`$10',,,`#endif // $10
+')dnl
+
+_SECTION(SECTION_CC_SIGNALPROXIES)
+
+ifelse(`$10',,,`#ifdef $10'
+)dnl
+Glib::SignalProxy`'_NUM($6)< $5`'_COMMA_PREFIX($6) > __CPPNAME__::signal_$4`'()
+{
+ return Glib::SignalProxy`'_NUM($6)< $5`'_COMMA_PREFIX($6) >(this, &__CPPNAME__`'_signal_$4_info);
+}
+ifelse(`$10',,,`#endif // $10
+')dnl
+
+_POP()')
+
+
+dnl
+dnl _SIGNAL_PH(gname, crettype, cargs and names)
+dnl Create a callback and set it in our derived G*Class.
+dnl
+define(`_SIGNAL_PH',`dnl
+_PUSH(SECTION_PCC_CLASS_INIT_DEFAULT_SIGNAL_HANDLERS)
+ifelse(`$4',,,`#ifdef $4'
+)dnl
+ klass->$1 = `&'$1_callback;
+ifelse(`$4',,,`#endif // $4
+')dnl
+_SECTION(SECTION_PH_DEFAULT_SIGNAL_HANDLERS)
+ifelse(`$4',,,`#ifdef $4'
+)dnl
+ static $2 $1_callback`'($3);
+ifelse(`$4',,,`#endif // $4
+')dnl
+_POP()')
+
+
+
+dnl $1 $2 $3 $4
+dnl _SIGNAL_PCC(cppname,gname,cpprettype,crettype,
+dnl $5 $6 $7 $8 $9
+dnl `<cargs and names>',`<cnames>',`<cpparg names>', firstarg, <ifndef>)
+dnl
+define(`_SIGNAL_PCC',`dnl
+_PUSH(SECTION_PCC_DEFAULT_SIGNAL_HANDLERS)
+ifelse(`$9',,,`#ifdef $9'
+)dnl
+$4 __CPPNAME__`'_Class::$2_callback`'($5)
+{
+dnl We cast twice to allow for multiple-inheritance casts, which might
+dnl change the value. We have to use a dynamic_cast because we do not
+dnl know the actual type from which to cast up.
+ CppObjectType *const obj = dynamic_cast<CppObjectType*>(
+ Glib::ObjectBase::_get_current_wrapper`'((GObject*)$8));
+
+_IMPORT(SECTION_CHECK)
+ // Non-gtkmmproc-generated custom classes implicitly call the default
+ // Glib::ObjectBase constructor, which sets is_derived_. But gtkmmproc-
+ // generated classes can use this optimisation, which avoids the unnecessary
+ // parameter conversions if there is no possibility of the virtual function
+ // being overridden:
+ if(obj && obj->is_derived_())
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try // Trap C++ exceptions which would normally be lost because this is a C callback.
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ // Call the virtual member method, which derived classes might override.
+ifelse($4,void,`dnl
+ obj->on_$1`'($7);
+',`dnl
+ return _CONVERT($3,$4,`obj->on_$1`'($7)');
+')dnl
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke`'();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+ else
+ {
+ BaseClassType *const base = static_cast<BaseClassType*>(
+ifdef(`__BOOL_IS_INTERFACE__',`dnl
+ _IFACE_PARENT_FROM_OBJECT($8)dnl
+',`dnl
+ _PARENT_GCLASS_FROM_OBJECT($8)dnl
+') );
+dnl g_assert(base != 0);
+
+ // Call the original underlying C function:
+ if(base && base->$2)
+ ifelse($4,void,,`return ')(*base->$2)`'($6);
+ }
+ifelse($4,void,,`dnl
+
+ typedef $4 RType;
+ return RType`'();
+')dnl
+}
+ifelse(`$9',,,`#endif // $9
+')dnl
+_POP()')
+
+
+dnl $1 $2 $3 $4
+dnl _SIGNAL_H(signame, rettype, `<cppargs>', <ifdef>)
+dnl
+define(`_SIGNAL_H',`dnl
+_PUSH(SECTION_H_DEFAULT_SIGNAL_HANDLERS)
+ifelse(`$4',,,`#ifdef $4'
+)dnl
+ virtual $2 on_$1`'($3);
+ifelse(`$4',,,`#endif // $4
+')dnl
+_POP()')
+
+dnl $1 $2 $3 $4 $5 $6 $7 $8 $9
+dnl _SIGNAL_CC(signame,gname,rettype,crettype,`<cppargs>',`<carg_names>', const, refreturn, <ifdef>)
+dnl
+define(`_SIGNAL_CC',`dnl
+_PUSH(SECTION_CC_DEFAULT_SIGNAL_HANDLERS)
+ifelse(`$9',,,`#ifdef $9'
+)dnl
+$3 __NAMESPACE__::__CPPNAME__::on_$1`'($5)
+{
+ BaseClassType *const base = static_cast<BaseClassType*>(
+ifdef(`__BOOL_IS_INTERFACE__',`dnl
+ _IFACE_PARENT_FROM_OBJECT(gobject_)dnl
+',`dnl
+ _PARENT_GCLASS_FROM_OBJECT(gobject_)dnl
+') );
+dnl g_assert(base != 0);
+
+ if(base && base->$2)
+ifelse($3,void,`dnl
+ (*base->$2)`'(gobj`'()`'_COMMA_PREFIX($6));
+',`dnl
+ifelse($8,refreturn,`dnl Assume Glib::wrap() is correct if refreturn is requested.
+ return Glib::wrap((*base->$2)`'(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'_COMMA_PREFIX($6)), true);
+',`dnl
+ return _CONVERT($4,$3,`(*base->$2)`'(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'_COMMA_PREFIX($6))');
+')dnl
+
+ typedef $3 RType;
+ return RType`'();
+')dnl
+}
+ifelse(`$9',,,`#endif // $9
+')dnl
+_POP()')
+
diff --git a/libs/glibmm2/tools/m4/vfunc.m4 b/libs/glibmm2/tools/m4/vfunc.m4
new file mode 100644
index 0000000000..dc3eba10d2
--- /dev/null
+++ b/libs/glibmm2/tools/m4/vfunc.m4
@@ -0,0 +1,145 @@
+dnl
+dnl _VFUNC_PH(gtkname, crettype, cargs and names)
+dnl Create a callback and set it in our derived G*Class.
+dnl
+define(`_VFUNC_PH',`dnl
+_PUSH(SECTION_PCC_CLASS_INIT_VFUNCS)
+ifelse(`$4',,,`#ifdef $4'
+)dnl
+ klass->$1 = `&'$1_vfunc_callback;
+ifelse(`$4',,,`#endif // $4
+')dnl
+_SECTION(SECTION_PH_VFUNCS)
+ifelse(`$4',,,`#ifdef $4'
+)dnl
+ static $2 $1_vfunc_callback`'($3);
+ifelse(`$4',,,`#endif // $4
+')dnl
+_POP()')
+
+
+dnl $1 $2 $3 $4
+dnl _VFUNC_PCC(cppname,gtkname,cpprettype,crettype,
+dnl $5 $6 $7 $8 $9 $10
+dnl `<cargs and names>',`<cnames>',`<cpparg names>',firstarg, refreturn_ctype, ifdef)
+dnl
+define(`_VFUNC_PCC',`dnl
+_PUSH(SECTION_PCC_VFUNCS)
+ifelse(`$10',,,`#ifdef $10'
+)dnl
+$4 __CPPNAME__`'_Class::$2_vfunc_callback`'($5)
+{
+dnl We cast twice to allow for multiple-inheritance casts, which might
+dnl change the value. We have to use a dynamic_cast because we do not
+dnl know the actual type from which to cast up.
+ CppObjectType *const obj = dynamic_cast<CppObjectType*>(
+ Glib::ObjectBase::_get_current_wrapper`'((GObject*)$8));
+
+_IMPORT(SECTION_CHECK)
+ // Non-gtkmmproc-generated custom classes implicitly call the default
+ // Glib::ObjectBase constructor, which sets is_derived_. But gtkmmproc-
+ // generated classes can use this optimisation, which avoids the unnecessary
+ // parameter conversions if there is no possibility of the virtual function
+ // being overridden:
+ if(obj && obj->is_derived_())
+ {
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ try // Trap C++ exceptions which would normally be lost because this is a C callback.
+ {
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ // Call the virtual member method, which derived classes might override.
+ifelse($4,void,`dnl
+ obj->$1`'($7);
+',`dnl
+ifelse($9,refreturn_ctype,`dnl Assume Glib::unwrap_copy() is correct if refreturn_ctype is requested.
+ return Glib::unwrap_copy`'(`obj->$1'($7));
+',`dnl
+ return _CONVERT($3,$4,`obj->$1`'($7)');
+')dnl
+')dnl
+ #ifdef GLIBMM_EXCEPTIONS_ENABLED
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke`'();
+ }
+ #endif //GLIBMM_EXCEPTIONS_ENABLED
+ }
+ else
+ {
+ BaseClassType *const base = static_cast<BaseClassType*>(
+ifdef(`__BOOL_IS_INTERFACE__',`dnl
+ _IFACE_PARENT_FROM_OBJECT($8)dnl
+',`dnl
+ _PARENT_GCLASS_FROM_OBJECT($8)dnl
+') );
+dnl g_assert(base != 0);
+
+ // Call the original underlying C function:
+ if(base && base->$2)
+ ifelse($4,void,,`return ')(*base->$2)`'($6);
+ }
+ifelse($4,void,,`dnl
+
+ typedef $4 RType;
+ return RType`'();
+')dnl
+}
+ifelse(`$10',,,`#endif // $10
+')dnl
+_POP()')
+
+# $1 $2 $3 $4 $5 $6 $7 $8 $9
+# _VFUNC_CC(vfunc_name, gtkname, cpp_rettype, c_rettype, `<cppargs>', `<carg_names>', is_const, refreturn, $ifdef)
+#
+define(`_VFUNC_CC',`dnl
+_PUSH(SECTION_CC_VFUNCS)
+ifelse(`$9',,,`#ifdef $9'
+)dnl
+$3 __NAMESPACE__::__CPPNAME__::$1`'($5) ifelse($7,1,const,)
+{
+ BaseClassType *const base = static_cast<BaseClassType*>(
+ifdef(`__BOOL_IS_INTERFACE__',`dnl
+ _IFACE_PARENT_FROM_OBJECT(gobject_)dnl
+',`dnl
+ _PARENT_GCLASS_FROM_OBJECT(gobject_)dnl
+') );
+dnl g_assert(base != 0);
+
+ if(base && base->$2)
+ifelse($3,void,`dnl
+ (*base->$2)`'(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'_COMMA_PREFIX($6));
+',`dnl
+ifelse($8,refreturn,`dnl Assume Glib::wrap() is correct if refreturn is requested.
+ return Glib::wrap((*base->$2)`'(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'_COMMA_PREFIX($6)), true);
+',`dnl
+ return _CONVERT($4,$3,`(*base->$2)`'(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'_COMMA_PREFIX($6))');
+')dnl
+
+ typedef $3 RType;
+ return RType`'();
+')dnl
+}
+ifelse(`$9',,,`#endif // $9
+')dnl
+_POP()')
+
+
+# $1 $2 $3 $4 $5
+# _VFUNC_H(vfunc_name, rettype, `<cppargs>', is_const, ifndef)
+# Only used for custom vfuncs.
+#
+define(`_VFUNC_H',`dnl
+_PUSH(SECTION_H_VFUNCS)
+ifelse(`$5',,,`#ifdef $5'
+)dnl
+ifelse($4,`1',`dnl
+virtual $2 $1`'($3) const;
+',`dnl
+virtual $2 $1`'($3);
+')
+ifelse(`$5',,,`#endif // $5
+')dnl
+_POP()')
+
+
diff --git a/libs/glibmm2/tools/pm/DocsParser.pm b/libs/glibmm2/tools/pm/DocsParser.pm
new file mode 100644
index 0000000000..62ff6e718f
--- /dev/null
+++ b/libs/glibmm2/tools/pm/DocsParser.pm
@@ -0,0 +1,490 @@
+# gtkmm - DocsParser module
+#
+# Copyright 2001 Free Software Foundation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+#
+
+# Based on XML::Parser tutorial found at http://www.devshed.com/Server_Side/Perl/PerlXML/PerlXML1/page1.html
+# This module isn't properly Object Orientated because the XML Parser needs global callbacks.
+
+package DocsParser;
+use XML::Parser;
+use strict;
+use warnings;
+
+# use Util;
+use Function;
+use GtkDefs;
+use Object;
+
+BEGIN {
+ use Exporter ();
+ our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
+
+ # set the version for version checking
+ $VERSION = 1.00;
+
+ @ISA = qw(Exporter);
+ @EXPORT = ( );
+ %EXPORT_TAGS = ( );
+
+ # your exported package globals go here,
+ # as well as any optionally exported functions
+ @EXPORT_OK = ( );
+}
+our @EXPORT_OK;
+
+#####################################
+
+use strict;
+use warnings;
+
+#####################################
+
+$DocsParser::CurrentFile = "";
+
+$DocsParser::refAppendTo = undef; # string reference to store the data into
+$DocsParser::currentParam = undef;
+
+$DocsParser::objCurrentFunction = undef; #Function
+%DocsParser::hasharrayFunctions = (); #Function elements
+#~ $DocsParser::bOverride = 0; #First we parse the C docs, then we parse the C++ override docs.
+
+$DocsParser::commentStart = " /** ";
+$DocsParser::commentMiddleStart = " * ";
+$DocsParser::commentEnd = " */";
+
+sub read_defs($$$)
+{
+ my ($path, $filename, $filename_override) = @_;
+
+ my $objParser = new XML::Parser(ErrorContext => 0);
+ $objParser->setHandlers(Start => \&parse_on_start, End => \&parse_on_end, Char => \&parse_on_cdata);
+
+ # C documentation:
+ $DocsParser::CurrentFile = "$path/$filename";
+ if ( ! -r $DocsParser::CurrentFile)
+ {
+ print "DocsParser.pm: Warning: Can't read file \"" . $DocsParser::CurrentFile . "\".\n";
+ return;
+ }
+ # Parse
+ eval { $objParser->parsefile($DocsParser::CurrentFile) };
+ if( $@ )
+ {
+ $@ =~ s/at \/.*?$//s;
+ print "\nError in \"" . $DocsParser::CurrentFile . "\":$@\n";
+ return;
+ }
+
+ # C++ overide documentation:
+ $DocsParser::CurrentFile = "$path/$filename_override";
+ if ( ! -r $DocsParser::CurrentFile)
+ {
+ print "DocsParser.pm: Warning: Can't read file \"" . $DocsParser::CurrentFile . "\".\n";
+ return;
+ }
+ # Parse
+ eval { $objParser->parsefile($DocsParser::CurrentFile) };
+ if( $@ )
+ {
+ $@ =~ s/at \/.*?$//s;
+ print "\nError in \"" . $DocsParser::CurrentFile . "\":$@";
+ return;
+ }
+}
+
+sub parse_on_start($$%)
+{
+ my ($objParser, $tag, %attr) = @_;
+
+ $tag = lc($tag);
+
+ if($tag eq "function")
+ {
+ if(defined $DocsParser::objCurrentFunction)
+ {
+ $objParser->xpcroak("\nClose a function tag before you open another one.");
+ }
+
+ my $functionName = $attr{name};
+
+ #Reuse existing Function, if it exists:
+ #(For instance, if this is the override parse)
+ $DocsParser::objCurrentFunction = $DocsParser::hasharrayFunctions{$functionName};
+ if(!$DocsParser::objCurrentFunction)
+ {
+ #Make a new one if necessary:
+ $DocsParser::objCurrentFunction = Function::new_empty();
+ # The idea is to change the policy a bit:
+ # If a function is redefined in a later parsing run only values which are redefined
+ # will be overwritten. For the name this is trivial. The description is simply rewritten.
+ # Same goes for the return description and the class mapping. Only exception is the
+ # parameter list. Everytime we enter a <parameters> tag the list is emptied again.
+ $$DocsParser::objCurrentFunction{name} = $functionName;
+ $$DocsParser::objCurrentFunction{description} = "";
+ $$DocsParser::objCurrentFunction{param_names} = [];
+ $$DocsParser::objCurrentFunction{param_descriptions} = ();
+ $$DocsParser::objCurrentFunction{return_description} = "";
+ $$DocsParser::objCurrentFunction{mapped_class} = "";
+ # We don't need this any more, the only reference to this field is commented
+ # $$DocsParser::objCurrentFunction{description_overridden} = $DocsParser::bOverride;
+ }
+ }
+ elsif($tag eq "parameters")
+ {
+ $$DocsParser::objCurrentFunction{param_names} = [];
+ $$DocsParser::objCurrentFunction{param_descriptions} = ();
+ }
+ elsif($tag eq "parameter")
+ {
+ $DocsParser::currentParam = $attr{name};
+ $$DocsParser::objCurrentFunction{param_descriptions}->{$DocsParser::currentParam} = "";
+ }
+ elsif($tag eq "description")
+ {
+ $$DocsParser::objCurrentFunction{description} = "";
+ # Set destination for parse_on_cdata().
+ $DocsParser::refAppendTo = \$$DocsParser::objCurrentFunction{description};
+ }
+ elsif($tag eq "parameter_description")
+ {
+ # Set destination for parse_on_cdata().
+ my $param_desc = \$$DocsParser::objCurrentFunction{param_descriptions};
+ $DocsParser::refAppendTo = \$$param_desc->{$DocsParser::currentParam};
+ }
+ elsif($tag eq "return")
+ {
+ $$DocsParser::objCurrentFunction{return_description} = "";
+ # Set destination for parse_on_cdata().
+ $DocsParser::refAppendTo = \$$DocsParser::objCurrentFunction{return_description};
+ }
+ elsif($tag eq "mapping")
+ {
+ $$DocsParser::objCurrentFunction{mapped_class} = $attr{class};
+ }
+ elsif($tag ne "root")
+ {
+ $objParser->xpcroak("\nUnknown tag \"$tag\".");
+ }
+}
+
+
+sub parse_on_end($$)
+{
+ my ($parser, $tag) = @_;
+
+ # Clear destination for parse_on_cdata().
+ $DocsParser::refAppendTo = undef;
+
+ $tag = lc($tag);
+
+ if($tag eq "function")
+ {
+ # Store the Function structure in the array:
+ my $functionName = $$DocsParser::objCurrentFunction{name};
+ $DocsParser::hasharrayFunctions{$functionName} = $DocsParser::objCurrentFunction;
+ $DocsParser::objCurrentFunction = undef;
+ }
+ elsif($tag eq "parameter")
+ {
+ # <parameter name="returns"> and <return> means the same.
+ if($DocsParser::currentParam eq "returns")
+ {
+ my $param_descriptions = \$$DocsParser::objCurrentFunction{param_descriptions};
+ my $return_description = \$$DocsParser::objCurrentFunction{return_description};
+ $$return_description = delete $$param_descriptions->{"returns"};
+ }
+ else
+ {
+ # Append to list of parameters.
+ push(@{$$DocsParser::objCurrentFunction{param_names}}, $DocsParser::currentParam);
+ }
+
+ $DocsParser::currentParam = undef;
+ }
+}
+
+
+sub parse_on_cdata($$)
+{
+ my ($parser, $data) = @_;
+
+ if(defined $DocsParser::refAppendTo)
+ {
+ # Dispatch $data to the current destination string.
+ $$DocsParser::refAppendTo .= $data;
+ }
+}
+
+
+# $strCommentBlock lookup_documentation($strFunctionName)
+sub lookup_documentation($$)
+{
+ my ($functionName, $deprecation_docs) = @_;
+
+ my $objFunction = $DocsParser::hasharrayFunctions{$functionName};
+ if(!$objFunction)
+ {
+ #print "DocsParser.pm: Warning: function not found: $functionName\n";
+ return ""
+ }
+
+ my $text = $$objFunction{description};
+
+ if(length($text) eq 0)
+ {
+ print "DocsParser.pm: Warning: No C docs for function: \"$functionName\"\n";
+ }
+
+
+ DocsParser::convert_docs_to_cpp($objFunction, \$text);
+
+ #Add note about deprecation if we have specified that in our _WRAP_METHOD() call:
+ if($deprecation_docs ne "")
+ {
+ $text .= "\n\@deprecated $deprecation_docs";
+ }
+
+ DocsParser::append_parameter_docs($objFunction, \$text);
+ DocsParser::append_return_docs($objFunction, \$text);
+
+
+ # Escape the space after "i.e." or "e.g." in the brief description.
+ $text =~ s/^([^.]*\b(?:i\.e\.|e\.g\.))\s/$1\\ /;
+
+ # Convert to Doxygen-style comment.
+ $text =~ s/\n/\n${DocsParser::commentMiddleStart}/g;
+ $text = $DocsParser::commentStart . $text;
+ $text .= "\n${DocsParser::commentEnd}\n";
+
+ return $text;
+}
+
+
+sub append_parameter_docs($$)
+{
+ my ($obj_function, $text) = @_;
+
+ my @param_names = @{$$obj_function{param_names}};
+ my $param_descriptions = \$$obj_function{param_descriptions};
+
+ # Strip first parameter if this is a method.
+ my $defs_method = GtkDefs::lookup_method_dont_mark($$obj_function{name});
+ # the second alternative is for use with method-mappings meaning:
+ # this function is mapped into this Gtk::class
+ shift(@param_names) if(($defs_method && $$defs_method{class} ne "") ||
+ ($$obj_function{mapped_class} ne ""));
+
+ foreach my $param (@param_names)
+ {
+ my $desc = $$param_descriptions->{$param};
+
+ $param =~ s/([a-zA-Z0-9]*(_[a-zA-Z0-9]+)*)_?/$1/g;
+ DocsParser::convert_docs_to_cpp($obj_function, \$desc);
+ if(length($desc) > 0)
+ {
+ $desc .= '.' unless($desc =~ /(?:^|\.)$/);
+ $$text .= "\n\@param ${param} \u${desc}";
+ }
+ }
+}
+
+
+sub append_return_docs($$)
+{
+ my ($obj_function, $text) = @_;
+
+ my $desc = $$obj_function{return_description};
+ DocsParser::convert_docs_to_cpp($obj_function, \$desc);
+
+ $desc =~ s/\.$//;
+ $$text .= "\n\@return \u${desc}." unless($desc eq "");
+}
+
+
+sub convert_docs_to_cpp($$)
+{
+ my ($obj_function, $text) = @_;
+
+ # Chop off leading and trailing whitespace.
+ $$text =~ s/^\s+//;
+ $$text =~ s/\s+$//;
+# HagenM: this is the only reference to $$obj_function{description_overridden}
+# and it seems not to be in use.
+# if(!$$obj_function{description_overridden})
+# {
+ # Convert C documentation to C++.
+ DocsParser::convert_tags_to_doxygen($text);
+ DocsParser::substitute_identifiers($$obj_function{name}, $text);
+
+ $$text =~ s/\bX\s+Window\b/X&nbsp;\%Window/g;
+ $$text =~ s/\bWindow\s+manager/\%Window manager/g;
+# }
+}
+
+
+sub convert_tags_to_doxygen($)
+{
+ my ($text) = @_;
+
+ for($$text)
+ {
+ # Replace format tags.
+ s"&lt;(/?)emphasis&gt;"<$1em>"g;
+ s"&lt;(/?)literal&gt;"<$1tt>"g;
+ s"&lt;(/?)function&gt;"<$1tt>"g;
+
+ # Some argument names are suffixed by "_" -- strip this.
+ # gtk-doc uses @thearg, but doxygen uses @a thearg.
+ s" ?\@([a-zA-Z0-9]*(_[a-zA-Z0-9]+)*)_?\b" \@a $1 "g;
+ s"^Note ?\d?: "\@note "mg;
+
+ s"&lt;/?programlisting&gt;""g;
+ s"&lt;informalexample&gt;"\@code"g;
+ s"&lt;/informalexample&gt;"\@endcode"g;
+ s"&lt;!&gt;""g;
+
+ # Remove all link tags.
+ s"&lt;/?u?link[^&]*&gt;""g;
+
+ # Remove all para tags (from tmpl sgml files).
+ s"&lt;/?para&gt;""g;
+
+ # Use our doxgen since/newin tags:
+ # TODO: Do this generically, regardless of the number:
+ s"Since: 2\.2"\@newin2p2"mg;
+ s"Since: 2\.4"\@newin2p4"mg;
+ s"Since: 2\.6"\@newin2p6"mg;
+ s"Since: 2\.8"\@newin2p8"mg;
+ s"Since: 2\.10"\@newin2p10"mg;
+
+ s"\b-&gt;\b"->"g;
+
+ # Doxygen is too dumb to handle &mdash;
+ s"&mdash;" \@htmlonly&mdash;\@endhtmlonly "g;
+
+ s"\%?FALSE\b"<tt>false</tt>"g;
+ s"\%?TRUE\b"<tt>true</tt>"g;
+ s"\%?NULL\b"<tt>0</tt>"g;
+
+ s"#?\bgboolean\b"<tt>bool</tt>"g;
+ s"#?\bg(int|short|long)\b"<tt>$1</tt>"g;
+ s"#?\bgu(int|short|long)\b"<tt>unsigned $1</tt>"g;
+
+ # For Gtk::TextIter.
+ s"(\\[rn])\b"<tt>\\$1</tt>"g;
+ }
+}
+
+
+sub substitute_identifiers($$)
+{
+ my ($doc_func, $text) = @_;
+
+ for($$text)
+ {
+ # TODO: handle more than one namespace
+
+ s/[#%]([A-Z][a-z]*)([A-Z][A-Za-z]+)\b/$1::$2/g; # type names
+
+ s/[#%]([A-Z])([A-Z]*)_([A-Z\d_]+)\b/$1\L$2\E::$3/g; # enum values
+
+ # Undo wrong substitutions.
+ s/\bHas::/HAS_/g;
+ s/\bNo::/NO_/g;
+
+ # Replace C function names with C++ counterparts.
+ s/\b([a-z]+_[a-z][a-z\d_]+) ?\(\)/&DocsParser::substitute_function($doc_func, $1)/eg;
+ }
+}
+
+
+sub substitute_function($$)
+{
+ my ($doc_func, $name) = @_;
+
+ if(my $defs_method = GtkDefs::lookup_method_dont_mark($name))
+ {
+ if(my $defs_object = DocsParser::lookup_object_of_method($$defs_method{class}, $name))
+ {
+ my $module = $$defs_object{module};
+ my $class = $$defs_object{name};
+
+ DocsParser::build_method_name($doc_func, $module, $class, \$name);
+ }
+ }
+ else
+ {
+ # Not perfect, but better than nothing.
+ $name =~ s/^g_/Glib::/;
+ }
+
+ return $name . "()";
+}
+
+
+sub lookup_object_of_method($$)
+{
+ my ($object, $name) = @_;
+
+ if($object ne "")
+ {
+ # We already know the C object name, because $name is a non-static method.
+ return GtkDefs::lookup_object($object);
+ }
+
+ my @parts = split(/_/, $name);
+ pop(@parts);
+
+ # (gtk, foo, bar) -> (Gtk, Foo, Bar)
+ foreach(@parts) { $_ = (length > 2) ? ucfirst : uc; }
+
+ # Do a bit of try'n'error.
+ while(scalar(@parts) > 1)
+ {
+ my $try = join("", @parts);
+
+ if(my $defs_object = GtkDefs::lookup_object($try))
+ { return $defs_object; }
+
+ pop(@parts);
+ }
+
+ return undef;
+}
+
+
+sub build_method_name($$$$)
+{
+ my ($doc_func, $module, $class, $name) = @_;
+
+ my $prefix = $module . $class;
+
+ $prefix =~ s/([a-z])([A-Z])/$1_$2/g;
+ $prefix = lc($prefix) . '_';
+
+ if($$name =~ /^$prefix/)
+ {
+ my $scope = "";
+ $scope = "${module}::${class}::" unless($doc_func =~ /^$prefix/);
+
+ substr($$name, 0, length($prefix)) = $scope;
+ }
+}
+
+
+1; # indicate proper module load.
diff --git a/libs/glibmm2/tools/pm/Enum.pm b/libs/glibmm2/tools/pm/Enum.pm
new file mode 100644
index 0000000000..47485e152a
--- /dev/null
+++ b/libs/glibmm2/tools/pm/Enum.pm
@@ -0,0 +1,246 @@
+package Enum;
+
+use strict;
+use warnings;
+
+BEGIN {
+ use Exporter ();
+ our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
+
+ # set the version for version checking
+ $VERSION = 1.00;
+ @ISA = qw(Exporter);
+ @EXPORT = ( );
+ %EXPORT_TAGS = ( );
+ # your exported package globals go here,
+ # as well as any optionally exported functions
+ @EXPORT_OK = ( );
+ }
+our @EXPORT_OK;
+
+# class Enum
+# {
+# bool flags;
+# string type;
+# string module;
+# string c_type;
+#
+# string array elem_names;
+# string array elem_values;
+#
+# bool mark;
+# }
+
+
+sub new
+{
+ my ($def) = @_;
+ my $self = {};
+ bless $self;
+
+ $def =~ s/^\(//;
+ $def =~ s/\)$//;
+
+ $$self{mark} = 0;
+ $$self{flags} = 0;
+
+ $$self{elem_names} = [];
+ $$self{elem_values} = [];
+
+ # snarf down the fields
+
+ if($def =~ s/^define-(enum|flags)-extended (\S+)//)
+ {
+ $$self{type} = $2;
+ $$self{flags} = 1 if($1 eq "flags");
+ }
+
+ $$self{module} = $1 if($def =~ s/\(in-module "(\S+)"\)//);
+ $$self{c_type} = $1 if($def =~ s/\(c-name "(\S+)"\)//);
+
+ # values are compound lisp statement
+ if($def =~ s/\(values((?: '\("\S+" "\S+" "[^"]+"\))*) \)//)
+ {
+ $self->parse_values($1);
+ }
+
+ if($def !~ /^\s*$/)
+ {
+ GtkDefs::error("Unhandled enum def ($def) in $$self{module}\::$$self{type}\n")
+ }
+
+ # this should never happen
+ warn if(scalar(@{$$self{elem_names}}) != scalar(@{$$self{elem_values}}));
+
+ return $self;
+}
+
+sub parse_values($$)
+{
+ my ($self, $value) = @_;
+
+ my $elem_names = [];
+ my $elem_values = [];
+ my $common_prefix = undef;
+
+ # break up the value statements
+ foreach(split(/\s*'*[()]\s*/, $value))
+ {
+ next if($_ eq "");
+
+ if(/^"\S+" "(\S+)" "([^"]+)"$/)
+ {
+ my ($name, $value) = ($1, $2);
+
+ # detect whether there is module prefix common to all names, e.g. GTK_
+ my $prefix = $1 if ($name =~ /^([^_]+_)/);
+
+ if (not defined($common_prefix))
+ {
+ $common_prefix = $prefix;
+ }
+ elsif ($prefix ne $common_prefix)
+ {
+ $common_prefix = "";
+ }
+
+ push(@$elem_names, $name);
+ push(@$elem_values, $value);
+ }
+ else
+ {
+ GtkDefs::error("Unknown value statement ($_) in $$self{c_type}\n");
+ }
+ }
+
+ if ($common_prefix)
+ {
+ # cut off the module prefix, e.g. GTK_
+ s/^$common_prefix// foreach (@$elem_names);
+ }
+
+ $$self{elem_names} = $elem_names;
+ $$self{elem_values} = $elem_values;
+}
+
+sub beautify_values($)
+{
+ my ($self) = @_;
+
+ return if($$self{flags});
+
+ my $elem_names = $$self{elem_names};
+ my $elem_values = $$self{elem_values};
+
+ my $num_elements = scalar(@$elem_values);
+ return if($num_elements == 0);
+
+ my $first = $$elem_values[0];
+ return if($first !~ /^-?[0-9]+$/);
+
+ my $prev = $first;
+
+ # Continuous? (Aliases to prior enum values are allowed.)
+ foreach my $value (@$elem_values)
+ {
+ return if(($value < $first) || ($value > $prev + 1));
+ $prev = $value;
+ }
+
+ # This point is reached only if the values are a continuous range.
+ # 1) Let's kill all the superfluous values, for better readability.
+ # 2) Substitute aliases to prior enum values.
+
+ my %aliases = ();
+
+ for(my $i = 0; $i < $num_elements; ++$i)
+ {
+ my $value = \$$elem_values[$i];
+ my $alias = \$aliases{$$value};
+
+ if(defined($$alias))
+ {
+ $$value = $$alias;
+ }
+ else
+ {
+ $$alias = $$elem_names[$i];
+ $$value = "" unless($first != 0 && $$value == $first);
+ }
+ }
+}
+
+sub build_element_list($$$$)
+{
+ my ($self, $ref_flags, $ref_no_gtype, $indent) = @_;
+
+ my @subst_in = [];
+ my @subst_out = [];
+
+ # Build a list of custom substitutions, and recognize some flags too.
+
+ foreach(@$ref_flags)
+ {
+ if(/^\s*(NO_GTYPE)\s*$/)
+ {
+ $$ref_no_gtype = $1;
+ }
+ elsif(/^\s*(get_type_func=)(\s*)\s*$/)
+ {
+ my $part1 = $1;
+ my $part2 = $2;
+ }
+ elsif(/^\s*s#([^#]+)#([^#]*)#\s*$/)
+ {
+ push(@subst_in, $1);
+ push(@subst_out, $2);
+ }
+ elsif($_ !~ /^\s*$/)
+ {
+ return undef;
+ }
+ }
+
+ my $elem_names = $$self{elem_names};
+ my $elem_values = $$self{elem_values};
+
+ my $num_elements = scalar(@$elem_names);
+ my $elements = "";
+
+ for(my $i = 0; $i < $num_elements; ++$i)
+ {
+ my $name = $$elem_names[$i];
+ my $value = $$elem_values[$i];
+
+ for(my $ii = 0; $ii < scalar(@subst_in); ++$ii)
+ {
+ $name =~ s/${subst_in[$ii]}/${subst_out[$ii]}/;
+ $value =~ s/${subst_in[$ii]}/${subst_out[$ii]}/;
+ }
+
+ $elements .= "${indent}${name}";
+ $elements .= " = ${value}" if($value ne "");
+ $elements .= ",\n" if($i < $num_elements - 1);
+ }
+
+ return $elements;
+}
+
+sub dump($)
+{
+ my ($self) = @_;
+
+ print "<enum module=\"$$self{module}\" type=\"$$self{type}\" flags=$$self{flags}>\n";
+
+ my $elem_names = $$self{elem_names};
+ my $elem_values = $$self{elem_values};
+
+ for(my $i = 0; $i < scalar(@$elem_names); ++$i)
+ {
+ print " <element name=\"$$elem_names[$i]\" value=\"$$elem_values[$i]\"/>\n";
+ }
+
+ print "</enum>\n\n";
+}
+
+1; # indicate proper module load.
diff --git a/libs/glibmm2/tools/pm/Function.pm b/libs/glibmm2/tools/pm/Function.pm
new file mode 100644
index 0000000000..93cf596542
--- /dev/null
+++ b/libs/glibmm2/tools/pm/Function.pm
@@ -0,0 +1,351 @@
+package Function;
+
+use strict;
+use warnings;
+use Util;
+use FunctionBase;
+
+BEGIN {
+ use Exporter ();
+ our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
+
+ # set the version for version checking
+ $VERSION = 1.00;
+ @ISA = qw(FunctionBase);
+ @EXPORT = qw(&func1 &func2 &func4);
+ %EXPORT_TAGS = ( );
+ # your exported package globals go here,
+ # as well as any optionally exported functions
+ @EXPORT_OK = qw($Var1 %Hashit &func3);
+ }
+our @EXPORT_OK;
+
+##################################################
+### Function
+# Commonly used algorithm for parsing a function declaration into
+# its component pieces
+#
+# class Function : FunctionBase
+# {
+# string rettype;
+# bool const;
+# bool static;
+# string name; e.g. gtk_accelerator_valid
+# string c_name;
+# string array param_type;
+# string array param_name;
+# string array param_default_value;
+# string in_module; e.g. Gtk
+# string signal_when. e.g. first, last, or both.
+# string class e.g. GtkButton ( == of-object. Useful for signal because their names are not unique.
+# string entity_type. e.g. method or signal
+# }
+
+sub new_empty()
+{
+ my $self = {};
+ bless $self;
+
+ return $self;
+}
+
+# $objFunction new($function_declaration, $objWrapParser)
+sub new($$)
+{
+ #Parse a function/method declaration.
+ #e.g. guint gtk_something_set_thing(guint a, const gchar* something)
+
+ my ($line, $objWrapParser) = @_;
+
+ my $self = {};
+ bless $self;
+
+ #Initialize member data:
+ $$self{rettype} = "";
+ $$self{rettype_needs_ref} = 0; #Often the gtk function doesn't do an extra ref for the receiver.
+ $$self{const} = 0;
+ $$self{name} = "";
+ $$self{param_types} = [];
+ $$self{param_names} = [];
+ $$self{param_default_values} = [];
+ $$self{in_module} = "";
+ $$self{class} = "";
+ $$self{entity_type} = "method";
+
+ $line =~ s/^\s+//; # Remove leading whitespace.
+ $line =~ s/\s+/ /g; # Compress white space.
+
+ if ($line =~ /^static\s+([^()]+)\s+(\S+)\s*\((.*)\)\s*$/)
+ {
+ $$self{rettype} = $1;
+ $$self{name} = $2;
+ $$self{c_name} = $2;
+ $self->parse_param($3);
+ $$self{static} = 1;
+ }
+ elsif ($line =~ /^([^()]+)\s+(\S+)\s*\((.*)\)\s*(const)*$/)
+ {
+ no warnings qw(uninitialized); # disable the uninitialize warning for $4
+ $$self{rettype} = $1;
+ $$self{name} = $2;
+ $$self{c_name} = $2;
+ $self->parse_param($3);
+ $$self{const} = ($4 eq "const");
+ }
+ else
+ {
+ $objWrapParser->error("fail to parse $line\n");
+ }
+
+ return $self;
+}
+
+
+# $objFunction new_ctor($function_declaration, $objWrapParser)
+# Like new(), but the function_declaration doesn't need a return type.
+sub new_ctor($$)
+{
+ #Parse a function/method declaration.
+ #e.g. guint gtk_something_set_thing(guint a, const gchar* something)
+
+ my ($line, $objWrapParser) = @_;
+
+ my $self = {};
+ bless $self;
+
+ #Initialize member data:
+ $$self{rettype} = "";
+ $$self{rettype_needs_ref} = 0;
+ $$self{const} = 0;
+ $$self{name} = "";
+ $$self{param_types} = [];
+ $$self{param_names} = [];
+ $$self{param_default_values} = [];
+ $$self{in_module} = "";
+ $$self{class} = "";
+ $$self{entity_type} = "method";
+
+ $line =~ s/^\s+//; # Remove leading whitespace.
+ $line =~ s/\s+/ /g; # Compress white space.
+
+ if ($line =~ /^(\S+)\s*\((.*)\)\s*/)
+ {
+ $$self{name} = $1;
+ $$self{c_name} = $2;
+ $self->parse_param($2);
+ }
+ else
+ {
+ $objWrapParser->error("fail to parse $line\n");
+ }
+
+ return $self;
+}
+
+# $num num_args()
+sub num_args #($)
+{
+ my ($self) = @_;
+ my $param_types = $$self{param_types};
+ return $#$param_types+1;
+}
+
+# parses C++ parameter lists.
+# forms a list of types, names, and initial values
+# (we don't currently use values)
+sub parse_param($$)
+{
+ my ($self, $line) = @_;
+
+
+ my $type = "";
+ my $name = "";
+ my $value = "";
+ my $id = 0;
+ my $has_value = 0;
+
+ my $param_types = $$self{param_types};
+ my $param_names = $$self{param_names};
+ my $param_default_values = $$self{param_default_values};
+
+ # clean up space and handle empty case
+ $line = string_trim($line);
+ $line =~ s/\s+/ /g; # Compress whitespace.
+ return if ($line =~ /^$/);
+
+ # parse through argument list
+ my @str = ();
+ my $par = 0;
+ foreach (split(/(const )|([,=&*()])|(<[^,]*>)|(\s+)/, $line)) #special characters OR <something> OR whitespace.
+ {
+ next if ( !defined($_) or $_ eq "" );
+
+ if ( $_ eq "(" ) #Detect the opening bracket.
+ {
+ push(@str, $_);
+ $par++; #Increment the number of parameters.
+ next;
+ }
+ elsif ( $_ eq ")" )
+ {
+ push(@str, $_);
+ $par--; #Decrement the number of parameters.
+ next;
+ }
+ elsif ( $par || /^(const )|(<[^,]*>)|([*&])|(\s+)/ ) #TODO: What's happening here?
+ {
+ push(@str, $_); #This looks like part of the type, so we store it.
+ next;
+ }
+ elsif ( $_ eq "=" ) #Default value
+ {
+ $type = join("", @str); #The type is everything before the = character.
+ @str = (); #Wipe it so that it will only contain the default value, which comes next.
+ $has_value = 1;
+ next;
+ }
+ elsif ( $_ eq "," ) #The end of one parameter:
+ {
+ if ($has_value)
+ {
+ $value = join("", @str); # If there's a default value, then it's the part before the next ",".
+ }
+ else
+ {
+ $type = join("", @str);
+ }
+
+ if ($name eq "")
+ {
+ $name = sprintf("p%s", $#$param_types + 2)
+ }
+
+ $type = string_trim($type);
+
+ push(@$param_types, $type);
+ push(@$param_names, $name);
+ push(@$param_default_values, $value);
+
+ #Clear variables, ready for the next parameter.
+ @str = ();
+ $type= "";
+ $value = "";
+ $has_value = 0;
+ $name = "";
+
+ $id = 0;
+
+ next;
+ }
+
+ if ($has_value)
+ {
+ push(@str, $_);
+ next;
+ }
+
+ $id++;
+ $name = $_ if ($id == 2);
+ push(@str, $_) if ($id == 1);
+
+ if ($id > 2)
+ {
+ print STDERR "Can't parse $line.\n";
+ print STDERR " arg type so far: $type\n";
+ print STDERR " arg name so far: $name\n";
+ print STDERR " arg default value so far: $value\n";
+ }
+ }
+
+ # handle last argument (There's no , at the end.)
+ if ($has_value)
+ {
+ $value = join("", @str);
+ }
+ else
+ {
+ $type = join("", @str);
+ }
+
+ if ($name eq "")
+ {
+ $name = sprintf("p%s", $#$param_types + 2)
+ }
+
+ $type = string_trim($type);
+
+ push(@$param_types, $type);
+ push(@$param_names, $name);
+ push(@$param_default_values, $value);
+}
+
+# add_parameter_autoname($, $type, $name)
+# Adds e.g "sometype somename"
+sub add_parameter_autoname($$)
+{
+ my ($self, $type) = @_;
+
+ add_parameter($self, $type, "");
+}
+
+# add_parameter($, $type, $name)
+# Adds e.g GtkSomething* p1"
+sub add_parameter($$$)
+{
+ my ($self, $type, $name) = @_;
+ $type = string_unquote($type);
+ $type =~ s/-/ /g;
+
+ my $param_names = $$self{param_names};
+
+ if ($name eq "")
+ {
+ $name = sprintf("p%s", $#$param_names + 2);
+ }
+
+ push(@$param_names, $name);
+
+ my $param_types = $$self{param_types};
+
+ push(@$param_types, $type);
+
+ return $self;
+}
+
+# $string get_refdoc_comment()
+# Generate a readable prototype for signals.
+sub get_refdoc_comment($)
+{
+ my ($self) = @_;
+
+ my $str = " /**\n";
+
+ $str .= " * \@par Prototype:\n";
+ $str .= " * <tt>$$self{rettype} \%$$self{name}(";
+
+ my $param_names = $$self{param_names};
+ my $param_types = $$self{param_types};
+ my $num_params = scalar(@$param_types);
+
+ # List the parameters:
+ for(my $i = 0; $i < $num_params; ++$i)
+ {
+ $str .= $$param_types[$i] . ' ' . $$param_names[$i];
+ $str .= ", " if($i < $num_params - 1);
+ }
+
+ $str .= ")</tt>\n";
+ $str .= " */";
+
+ return $str;
+}
+
+sub get_is_const($)
+{
+ my ($self) = @_;
+
+ return $$self{const};
+}
+
+1; # indicate proper module load.
+
diff --git a/libs/glibmm2/tools/pm/FunctionBase.pm b/libs/glibmm2/tools/pm/FunctionBase.pm
new file mode 100644
index 0000000000..00c1c05183
--- /dev/null
+++ b/libs/glibmm2/tools/pm/FunctionBase.pm
@@ -0,0 +1,217 @@
+package FunctionBase;
+
+use strict;
+use warnings;
+use Util;
+
+BEGIN {
+ use Exporter ();
+ our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
+
+ # set the version for version checking
+ $VERSION = 1.00;
+ @ISA = qw(Exporter);
+ @EXPORT = qw(&func1 &func2 &func4);
+ %EXPORT_TAGS = ( );
+ # your exported package globals go here,
+ # as well as any optionally exported functions
+ @EXPORT_OK = qw($Var1 %Hashit &func3);
+ }
+our @EXPORT_OK;
+
+##################################################
+### FunctionBase
+# Contains data and methods used by both Function (C++ declarations) and GtkDefs::Function (C defs descriptions)
+# Note that GtkDefs::Signal inherits from GtkDefs::Function so it get these methods too.
+#
+# class Function : FunctionBase
+# {
+# string array param_types;
+# string array param_names;
+# string array param_documentation;
+# string return_documention;
+# }
+
+
+# $string args_types_only($)
+# comma-delimited argument types.
+sub args_types_only($)
+{
+ my ($self) = @_;
+
+ my $param_types = $$self{param_types};
+ return join(", ", @$param_types);
+}
+
+# $string args_names_only($)
+sub args_names_only($)
+{
+ my ($self) = @_;
+
+ my $param_names = $$self{param_names};
+ return join(", ", @$param_names);
+}
+
+# $string args_types_and_names($)
+sub args_types_and_names($)
+{
+ my ($self) = @_;
+
+ my $i;
+
+ my $param_names = $$self{param_names};
+ my $param_types = $$self{param_types};
+ my @out;
+
+ #debugging:
+ #if($#$param_types)
+ #{
+ # return "NOARGS";
+ #}
+
+ for ($i = 0; $i < $#$param_types + 1; $i++)
+ {
+ my $str = sprintf("%s %s", $$param_types[$i], $$param_names[$i]);
+ push(@out, $str);
+ }
+
+ my $result = join(", ", @out);
+ return $result;
+}
+
+# $string args_names_only_without_object($)
+sub args_names_only_without_object2($)
+{
+ my ($self) = @_;
+
+ my $param_names = $$self{param_names};
+
+ my $result = "";
+ my $bInclude = 0; #Ignore the first (object) arg.
+ foreach (@{$param_names})
+ {
+ # Add comma if there was an arg before this one:
+ if( $result ne "")
+ {
+ $result .= ", ";
+ }
+
+ # Append this arg if it's not the first one:
+ if($bInclude)
+ {
+ $result .= $_;
+ }
+
+ $bInclude = 1;
+ }
+
+ return $result;
+}
+
+# $string args_types_and_names_without_object($)
+sub args_types_and_names_without_object($)
+{
+ my ($self) = @_;
+
+ my $param_names = $$self{param_names};
+ my $param_types = $$self{param_types};
+ my $i = 0;
+ my @out;
+
+ for ($i = 1; $i < $#$param_types + 1; $i++) #Ignore the first arg.
+ {
+ my $str = sprintf("%s %s", $$param_types[$i], $$param_names[$i]);
+ push(@out, $str);
+ }
+
+ return join(", ", @out);
+}
+
+# $string args_names_only_without_object($)
+sub args_names_only_without_object($)
+{
+ my ($self) = @_;
+
+ my $param_names = $$self{param_names};
+
+ my $result = "";
+ my $bInclude = 0; #Ignore the first (object) arg.
+ foreach (@{$param_names})
+ {
+ # Add comma if there was an arg before this one:
+ if( $result ne "")
+ {
+ $result .= ", ";
+ }
+
+ # Append this arg if it's not the first one:
+ if($bInclude)
+ {
+ $result .= $_;
+ }
+
+ $bInclude = 1;
+ }
+
+ return $result;
+}
+
+sub dump($)
+{
+ my ($self) = @_;
+
+ my $param_types = $$self{param_types};
+ my $param_names = $$self{param_names};
+
+ print "<function>\n";
+ foreach (keys %$self)
+ {
+ print " <$_ value=\"$$self{$_}\"/>\n" if (!ref $$self{$_} && $$self{$_} ne "");
+ }
+
+ if (scalar(@$param_types)>0)
+ {
+ print " <parameters>\n";
+
+ for (my $i = 0; $i < scalar(@$param_types); $i++)
+ {
+ print " \"$$param_types[$i]\" \"$$param_names[$i]\" \n";
+ }
+
+ print " </parameters>\n";
+ }
+
+ print "</function>\n\n";
+}
+
+sub args_types_and_names_with_default_values($)
+{
+ my ($self) = @_;
+
+ my $i;
+
+ my $param_names = $$self{param_names};
+ my $param_types = $$self{param_types};
+ my $param_default_values = $$self{param_default_values};
+ my @out;
+
+ for ($i = 0; $i < $#$param_types + 1; $i++)
+ {
+ my $str = sprintf("%s %s", $$param_types[$i], $$param_names[$i]);
+
+ if(defined($$param_default_values[$i]))
+ {
+ if($$param_default_values[$i] ne "")
+ {
+ $str .= " = " . $$param_default_values[$i];
+ }
+ }
+
+ push(@out, $str);
+ }
+
+ return join(", ", @out);
+}
+
+1; # indicate proper module load.
+
diff --git a/libs/glibmm2/tools/pm/GtkDefs.pm b/libs/glibmm2/tools/pm/GtkDefs.pm
new file mode 100644
index 0000000000..fbe1d1c276
--- /dev/null
+++ b/libs/glibmm2/tools/pm/GtkDefs.pm
@@ -0,0 +1,635 @@
+# gtkmm - GtkDefs module
+#
+# Copyright 2001 Free Software Foundation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+#
+package GtkDefs;
+use strict;
+use warnings;
+
+use Util;
+use Enum;
+use Object;
+use Property;
+use FunctionBase;
+
+#
+# Public functions
+# read_defs(path, file)
+#
+# @ get_methods()
+# @ get_signals()
+# @ get_properties()
+#
+# $ lookup_enum(c_type)
+# $ lookup_object(c_name)
+# $ lookup_method(c_name)
+# $ lookup_function(c_name)
+# $ lookup_property(object, c_name)
+# $ lookup_signal(object, c_name)
+#
+
+BEGIN {
+ use Exporter ();
+ our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
+
+ # set the version for version checking
+ $VERSION = 1.00;
+
+ @ISA = qw(Exporter);
+ @EXPORT = ( );
+ %EXPORT_TAGS = ( );
+
+ # your exported package globals go here,
+# # as well as any optionally exported functions
+ @EXPORT_OK = ( );
+}
+our @EXPORT_OK;
+
+#####################################
+
+use strict;
+use warnings;
+
+#####################################
+
+%GtkDefs::enums = (); #Enum
+%GtkDefs::objects = (); #Object
+%GtkDefs::methods = (); #GtkDefs::Function
+%GtkDefs::signals = (); #GtkDefs::Signal
+%GtkDefs::properties = (); #Property
+
+@GtkDefs::read = ();
+@GtkDefs::file = ();
+
+
+#####################################
+#prototype to get rid of warning
+sub read_defs($$;$);
+
+sub read_defs($$;$)
+{
+ my ($path, $filename, $restrict) = @_;
+ $restrict = "" if ($#_ < 2);
+
+ # check that the file is there.
+ if ( ! -r "$path/$filename")
+ {
+ print "Error: can't read defs file $filename\n";
+ return;
+ }
+
+ # break the tokens into lisp phrases up to three levels deep.
+ # WARNING: reading the following perl statement may induce seizures,
+ # please flush eyes with water immediately, and consult a mortician.
+ my @tokens = split(
+ m/(
+ \(
+ (?:
+ [^()]*
+ \(
+ (?:
+ [^()]*
+ \(
+ [^()]*
+ \)
+ )*
+ [^()]*
+ \)
+ )*
+ [^()]*
+ \)
+ )/x,
+ read_file($path, $filename));
+
+ # scan through top level tokens
+ while ($#tokens > -1)
+ {
+ my $token = shift @tokens;
+ next if ($token =~ /^\s*$/);
+
+ if ($token =~ /\(include (\S+)\)/)
+ {
+ read_defs($path,$1,$restrict);
+ next;
+ }
+ elsif ($token =~ /^\(define-flags-extended.*\)$/)
+ { on_enum($token); }
+ elsif ($token =~ /^\(define-enum-extended.*\)$/)
+ { on_enum($token); }
+ elsif ($token =~ /^\(define-flags.*\)$/)
+ { }
+ elsif ($token =~ /^\(define-enum.*\)$/)
+ { }
+ elsif ($token =~ /^\(define-object.*\)$/)
+ { on_object($token); }
+ elsif ($token =~ /^\(define-function.*\)$/)
+ { on_function($token); }
+ elsif ($token =~ /^\(define-method.*\)$/)
+ { on_method($token); }
+ elsif ($token =~ /^\(define-property.*\)$/)
+ { on_property($token); }
+ elsif ($token =~ /^\(define-signal.*\)$/)
+ { on_signal($token); }
+ elsif ($token =~ /^\(define-vfunc.*\)$/)
+ { on_vfunc($token); }
+ else
+ {
+ if ( $token =~ /^\(define-(\S+) (\S+)/)
+ {
+ # FIXME need to figure out the line number.
+ print STDERR "Broken lisp definition for $1 $2.\n";
+ }
+ else
+ {
+ print "unknown token $token \n";
+ }
+ }
+ }
+}
+
+
+sub read_file($$)
+{
+ my ($path, $filename)=@_;
+ my @buf = ();
+
+ # don't read a file twice
+ foreach (@GtkDefs::read)
+ {
+ return "" if ($_ eq "$path/$filename");
+ }
+ push @GtkDefs::read, "$path/$filename";
+
+ # read file while stripping comments
+ open(FILE, "$path/$filename");
+ while (<FILE>)
+ {
+ s/^;.*$//; # remove comments
+ chop; # remove new lines
+ push(@buf, $_);
+ }
+ close(FILE);
+
+ $_ = join("", @buf);
+ s/\s+/ /g;
+ return $_;
+}
+
+
+sub on_enum($)
+{
+ my $thing = Enum::new(shift(@_));
+ $GtkDefs::enums{$$thing{c_type}} = $thing;
+}
+
+sub on_object($)
+{
+ my $thing = Object::new(shift(@_));
+ $GtkDefs::objects{$$thing{c_name}} = $thing;
+}
+
+sub on_function($)
+{
+ my $thing = GtkDefs::Function::new(shift(@_));
+ $GtkDefs::methods{$$thing{c_name}} = $thing;
+}
+
+sub on_method($)
+{
+ my $thing = GtkDefs::Function::new(shift(@_));
+ $GtkDefs::methods{$$thing{c_name}} = $thing if ($thing);
+}
+
+sub on_property($)
+{
+ my $thing = Property::new(shift(@_));
+ $GtkDefs::properties{"$$thing{class}::$$thing{name}"} = $thing;
+}
+
+sub on_signal($)
+{
+ my $thing = GtkDefs::Signal::new(shift(@_));
+ $GtkDefs::signals{"$$thing{class}::$$thing{name}"} = $thing;
+}
+
+sub on_vfunc($)
+{
+ my $thing = GtkDefs::Signal::new(shift(@_));
+ $GtkDefs::signals{"$$thing{class}::$$thing{name}"} = $thing;
+}
+
+##########################
+
+sub get_enums
+{
+ return sort {$$a{c_type} cmp $$b{c_type}} values %GtkDefs::enums;
+}
+sub get_methods
+{
+ return sort {$$a{c_name} cmp $$b{c_name}} values %GtkDefs::methods;
+}
+sub get_signals
+{
+ return sort {$$a{name} cmp $$b{name}} values %GtkDefs::signals;
+}
+sub get_properties
+{
+ return sort {$$a{name} cmp $$b{name}} values %GtkDefs::properties;
+}
+
+sub get_marked
+{
+ no warnings;
+ return grep {$$_{mark}==1} values %GtkDefs::methods;
+}
+
+# This searches for items wrapped by this file and then tries to locate
+# other functions/signal/properties which may have been left unmarked.
+sub get_unwrapped
+{
+ # find methods which were used in for a _WRAP
+ my @targets;
+ push @targets,grep {$$_{entity_type} eq "method" && $$_{mark}==1} values %GtkDefs::methods;
+ push @targets,grep {$$_{mark}==1} values %GtkDefs::signals;
+ push @targets,grep {$$_{mark}==1} values %GtkDefs::properties;
+
+ # find the classes which used them.
+ my @classes = join(" ", unique(map { $$_{class} } @targets));
+
+ # find methods which are in those classes which didn't get marked.
+ my @unwrapped;
+ my $class;
+ foreach $class (@classes)
+ {
+ push @unwrapped, grep {$$_{class} eq $class && $$_{mark}==0} values %GtkDefs::methods;
+ push @unwrapped, grep {$$_{class} eq $class && $$_{mark}==0} values %GtkDefs::properties;
+ push @unwrapped, grep {$$_{class} eq $class && $$_{mark}==0} values %GtkDefs::signals;
+ }
+
+ return @unwrapped;
+}
+
+##########################
+
+sub lookup_enum($)
+{
+ no warnings;
+ my ($c_type) = @_;
+ my $obj = $GtkDefs::enums{$c_type};
+ return 0 if(!$obj);
+ $$obj{mark} = 1;
+ return $obj;
+}
+
+sub lookup_object($)
+{
+ no warnings;
+ return $GtkDefs::objects{$_[0]};
+}
+
+# $objProperty lookup_property($name, $parent_object_name)
+sub lookup_property($$)
+{
+ no warnings;
+ my ($parent_object_name, $name) = @_;
+ $name =~ s/-/_/g;
+ my $obj = $GtkDefs::properties{"${parent_object_name}::${name}"};
+ return 0 if ($obj eq "");
+ $$obj{mark} = 1;
+ return $obj;
+}
+
+sub lookup_method_dont_mark($)
+{
+ no warnings;
+ my ($c_name) = @_;
+ $c_name =~ s/-/_/g;
+
+ my $obj = $GtkDefs::methods{$c_name};
+ return 0 if ($obj eq "");
+
+ return $obj;
+}
+
+sub lookup_method($)
+{
+ my $obj = lookup_method_dont_mark($_);
+
+ $$obj{mark} = 1 if($obj);
+ return $obj;
+}
+
+sub lookup_function($)
+{
+ return lookup_method($_[0]);
+}
+
+sub lookup_signal($$)
+{
+ no warnings;
+ my ($parent_object_name, $name) = @_;
+
+ $name =~ s/-/_/g;
+ my $obj = $GtkDefs::signals{"${parent_object_name}::${name}"};
+ return 0 if ($obj eq "");
+ $$obj{mark} = 1;
+ return $obj;
+}
+
+sub error
+{
+ my $format = shift @_;
+ printf STDERR "GtkDefs.pm: $format\n", @_;
+}
+
+
+########################################################################
+package GtkDefs::Function;
+BEGIN { @GtkDefs::Function::ISA=qw(FunctionBase); }
+
+# class Function : FunctionBase
+#
+# {
+# string name; e.g. gtk_accelerator_valid
+# string c_name;
+# string class e.g. GtkButton
+#
+# string rettype;
+# string array param_types;
+# string array param_names;
+#
+# string entity_type. e.g. method or signal
+#
+# bool varargs;
+# bool mark;
+#
+# }
+
+# "new" can't have prototype
+sub new
+{
+ my ($def) = @_;
+ my $whole = $def;
+ my $self = {};
+ bless $self;
+
+ $def =~ s/^\(//;
+ $def =~ s/\)$//;
+ $def =~ s/^\s*define-(\S+)\s+(\S+)\s*//;
+ $$self{entity_type} = $1;
+ $$self{name} = $2;
+ $$self{name} =~ s/-/_/g; # change - to _
+
+ # init variables
+ $$self{mark} = 0;
+ $$self{rettype} = "none";
+ $$self{param_types} = [];
+ $$self{param_names} = [];
+ $$self{class} = "";
+
+ # snarf down lisp fields
+ $$self{c_name} = $1 if ($def=~s/\(c-name "(\S+)"\)//);
+ $$self{class} = $1 if ($def=~s/\(of-object "(\S+)"\)//);
+
+ if ($def =~ s/\(return-type "(\S+)"\)//)
+ {
+ $$self{rettype} = $1;
+ $$self{rettype} =~ s/-/ /g; #e.g. replace const-gchar* with const gchar*. Otherwise it will be used in code.
+ }
+
+ $$self{varargs} = 1 if ($def=~s/\(varargs\s+#t\)//);
+ $$self{rettype} = "void" if ($$self{rettype} eq "none");
+
+ # methods have a parameter not stated in the defs file
+ if ($$self{entity_type} eq "method")
+ {
+ push( @{$$self{param_types}}, "$$self{class}*" );
+ push( @{$$self{param_names}}, "self" );
+ }
+
+ # parameters are compound lisp statement
+ if ($def =~ s/\(parameters(( '\("\S+" "\S+"\))*) \)//)
+ {
+ $self->parse_param($1);
+ }
+
+ # is-constructor-of:
+ if ($def =~ s/\(is-constructor-of "(\S+)"\)//)
+ {
+ #Ignore them.
+ }
+
+ # of-object
+ if ($def =~ s/\(of-object "(\S+)"\)//)
+ {
+ #Ignore them.
+ }
+
+ GtkDefs::error("Unhandled function parameter ($def) in $$self{c_name}\n")
+ if ($def !~ /^\s*$/);
+
+ return $self;
+}
+
+sub parse_param($$)
+{
+ my ($self, $param) = @_;
+
+ # break up the parameter statements
+ foreach (split(/\s*'*[()]\s*/, $param))
+ {
+ next if ($_ eq "");
+ if (/^"(\S+)" "(\S+)"$/)
+ {
+ my ($p1, $p2) = ($1,$2);
+ $p1 =~ s/-/ /;
+ push( @{$$self{param_types}}, $p1);
+ push( @{$$self{param_names}}, $p2);
+ }
+ else
+ {
+ GtkDefs::error("Unknown parameter statement ($_) in $$self{c_name}\n");
+ }
+ }
+}
+
+
+# $string get_return_type_for_methods().
+# Changes gchar* (not const-gchar*) to return-gchar* so that _CONVERT knows that it needs to be freed.
+sub get_return_type_for_methods($)
+{
+ my ($self) = @_;
+
+ my $rettype = $$self{rettype};
+ if($rettype eq "gchar*" || $rettype eq "char*")
+ {
+ $rettype = "return-" . $rettype;
+ }
+
+ return $rettype;
+}
+
+sub get_param_names
+{
+ my ($self) = @_;
+ return @$self{param_names};
+}
+
+######################################################################
+package GtkDefs::Signal;
+BEGIN { @GtkDefs::Signal::ISA=qw(GtkDefs::Function); }
+
+# class Signal : Function
+# {
+# string name; e.g. gtk_accelerator_valid
+# string class e.g. GtkButton ( == of-object.)
+#
+# string rettype;
+#
+# string when. e.g. first, last, or both.
+# string entity_type. e.g. method or signal
+# }
+
+# "new" can't have prototype
+sub new
+{
+ my ($def) = @_;
+
+ my $whole = $def;
+ my $self = {};
+ bless $self;
+
+ #Remove first and last braces:
+ $def =~ s/^\(//;
+ $def =~ s/\)$//;
+
+ $def =~ s/^\s*define-(\S+)\s+(\S+)\s*//;
+ $$self{entity_type} = $1;
+ $$self{name} = $2;
+ $$self{name} =~ s/-/_/g; #change - to _
+
+ # init variables
+ $$self{mark}=0;
+ $$self{rettype} = "none";
+ $$self{param_types} = [];
+ $$self{param_names} = [];
+ $$self{when} = "";
+ $$self{class} = "";
+
+ # snarf down lisp fields
+ if($def =~ s/\(of-object "(\S+)"\)//)
+ {
+ $$self{class} = $1;
+ }
+ else
+ {
+ GtkDefs::error("define-signal/define-vfunc without of-object (entity type: $$self{entity_type}): $whole");
+ }
+
+ if($def =~ s/\(return-type "(\S+)"\)//)
+ {
+ $$self{rettype} = $1;
+ $$self{rettype} =~ s/-/ /g; #e.g. replace const-gchar* with const gchar*. Otherwise it will be used in code.
+ }
+
+ if($def =~ s/\(when "(\S+)"\)//)
+ {
+ $$self{when} = $1;
+ }
+
+ if($$self{rettype} eq "none")
+ {
+ $$self{rettype} = "void"
+ }
+
+ # signals always have a parameter
+ push(@{$$self{param_types}}, "$$self{class}*");
+ push(@{$$self{param_names}}, "self");
+
+ # parameters are compound lisp statement
+ if ($def =~ s/\(parameters(( '\("\S+" "\S+"\))+) \)//)
+ {
+ $self->parse_param($1);
+ }
+
+ if ($def!~/^\s*$/)
+ {
+ GtkDefs::error("Unhandled signal/vfunc def ($def) in $$self{class}::$$self{name}");
+ }
+
+ return $self;
+}
+
+# bool has_same_types($objFunction)
+# Compares return types and argument types
+sub has_same_types($$)
+{
+ my ($self, $objFuncOther) = @_;
+
+ #Compare return types:
+ if($self->types_are_equal($$self{rettype}, $$objFuncOther{rettype}) ne 1)
+ {
+ # printf("debug: different return types: %s, %s\n", $$self{rettype}, $$objFuncOther{rettype});
+ return 0; #Different types found.
+ }
+
+ #Compare arguement types:
+ my $i = 0;
+ my $param_types = $$self{param_types};
+ my $param_types_other = $$objFuncOther{param_types};
+ for ($i = 1; $i < $#$param_types + 1; $i++)
+ {
+ my $type_a = $$param_types[$i];
+ my $type_b = $$param_types_other[$i-1];
+
+ if($self->types_are_equal($type_a, $type_b) ne 1)
+ {
+ # printf("debug: different arg types: %s, %s\n", $type_a, $type_b);
+ return 0; #Different types found.
+ }
+ }
+
+ return 1; #They must all be the same for it to get this far.
+}
+
+# bool types_are_equal($a, $b)
+# Compares types, ignoring gint/int differences, etc.
+sub types_are_equal($$$)
+{
+ #TODO: Proper method of getting a normalized type name.
+
+ my ($self, $type_a, $type_b) = @_;
+
+ if($type_a ne $type_b)
+ {
+ #Try adding g to one of them:
+ if( ("g" . $type_a) ne $type_b )
+ {
+ #Try adding g to the other one:
+ if( $type_a ne ("g" . $type_b) )
+ {
+ #After all these checks it's still not equal:
+ return 0; #not equal.
+ }
+ }
+ }
+
+ # printf("DEBUG: types are equal: %s, %s\n", $$type_a, $$type_b);
+ return 1; #They must be the same for it to get this far.
+}
+
+1; # indicate proper module load.
diff --git a/libs/glibmm2/tools/pm/Makefile b/libs/glibmm2/tools/pm/Makefile
new file mode 100644
index 0000000000..42d9ec01b0
--- /dev/null
+++ b/libs/glibmm2/tools/pm/Makefile
@@ -0,0 +1,434 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# tools/pm/Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+srcdir = .
+top_srcdir = ../..
+
+pkgdatadir = $(datadir)/glibmm
+pkglibdir = $(libdir)/glibmm
+pkgincludedir = $(includedir)/glibmm
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = i686-pc-linux-gnu
+host_triplet = i686-pc-linux-gnu
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(tools_pm_include_HEADERS) \
+ $(top_srcdir)/tools/pm/Makefile_list_of_sources.am_fragment
+subdir = tools/pm
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/scripts/cxx.m4 \
+ $(top_srcdir)/scripts/cxx_std.m4 \
+ $(top_srcdir)/scripts/docgen.m4 \
+ $(top_srcdir)/scripts/glibmm_check_perl.m4 \
+ $(top_srcdir)/scripts/macros.m4 \
+ $(top_srcdir)/scripts/reduced.m4 $(top_srcdir)/scripts/sun.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h \
+ $(top_builddir)/glib/glibmmconfig.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(tools_pm_includedir)"
+tools_pm_includeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(tools_pm_include_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run aclocal-1.9 -I ./scripts
+AMDEP_FALSE = #
+AMDEP_TRUE =
+AMTAR = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run tar
+AR = ar
+AS = as
+AUTOCONF = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run autoconf
+AUTOHEADER = :
+AUTOMAKE = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS =
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2 -Wall -Wno-long-long
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DISABLE_DEPRECATED_API_CFLAGS =
+DISABLE_DEPRECATED_CFLAGS =
+DLLTOOL = dlltool
+ECHO = echo
+ECHO_C =
+ECHO_N = -n
+ECHO_T =
+EGREP = grep -E
+EXEEXT =
+F77 =
+FFLAGS =
+GLIBMM_CFLAGS = -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+GLIBMM_LIBS = -Wl,--export-dynamic -lsigc-2.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
+GLIBMM_MAJOR_VERSION = 2
+GLIBMM_MICRO_VERSION = 3
+GLIBMM_MINOR_VERSION = 13
+GLIBMM_RELEASE = 2.13
+GLIBMM_VERSION = 2.13.3
+GTHREAD_CFLAGS = -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+GTHREAD_LIBS = -pthread -lgthread-2.0 -lrt -lglib-2.0
+GTKMMPROC_MERGECDOCS =
+GTKMM_DOXYGEN_INPUT = /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/glib/glibmm/
+GTKMM_FALSE_FALSE =
+GTKMM_FALSE_TRUE = #
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =
+LIBGLIBMM_SO_VERSION = 1:24:0
+LIBOBJS =
+LIBS =
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS =
+M4 = m4
+MAINT = #
+MAINTAINER_MODE_FALSE =
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/missing --run makeinfo
+OBJDUMP = objdump
+OBJEXT = o
+OS_WIN32_FALSE =
+OS_WIN32_TRUE = #
+PACKAGE = glibmm
+PACKAGE_BUGREPORT =
+PACKAGE_NAME =
+PACKAGE_STRING =
+PACKAGE_TARNAME =
+PACKAGE_VERSION =
+PATH_SEPARATOR = :
+PERL_PATH = /usr/bin/perl
+PKG_CONFIG = /usr/bin/pkg-config
+PLATFORM_WIN32_FALSE =
+PLATFORM_WIN32_TRUE = #
+RANLIB = ranlib
+SET_MAKE =
+SHELL = /bin/bash
+STRIP = strip
+VERSION = 2.13.3
+ac_ct_AR = ar
+ac_ct_AS =
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DLLTOOL =
+ac_ct_F77 =
+ac_ct_OBJDUMP =
+ac_ct_RANLIB = ranlib
+ac_ct_STRIP = strip
+ac_pt_PKG_CONFIG = /usr/bin/pkg-config
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE =
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE =
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = i686-pc-linux-gnu
+build_alias =
+build_cpu = i686
+build_os = linux-gnu
+build_vendor = pc
+datadir = ${prefix}/share
+exec_prefix = ${prefix}
+host = i686-pc-linux-gnu
+host_alias =
+host_cpu = i686
+host_os = linux-gnu
+host_vendor = pc
+includedir = ${prefix}/include
+infodir = ${prefix}/info
+install_sh = /home/carl/mnt/hg/ardour.org/trunk/libs/glibmm2/scripts/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localstatedir = ${prefix}/var
+mandir = ${prefix}/man
+mkdir_p = mkdir -p --
+oldincludedir = /usr/include
+prefix = /usr/local
+program_transform_name = s,x,x,
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias =
+files_tools_pm = DocsParser.pm GtkDefs.pm Enum.pm Function.pm FunctionBase.pm Object.pm Output.pm Property.pm Util.pm WrapParser.pm
+EXTRA_DIST = Makefile_list_of_sources.am_fragment $(files_tools_pm)
+
+# Install the .pm, files:
+tools_pm_includedir = $(libdir)/glibmm-2.4/proc/pm
+tools_pm_include_HEADERS = $(files_tools_pm)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(top_srcdir)/tools/pm/Makefile_list_of_sources.am_fragment $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/pm/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tools/pm/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-tools_pm_includeHEADERS: $(tools_pm_include_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(tools_pm_includedir)" || $(mkdir_p) "$(DESTDIR)$(tools_pm_includedir)"
+ @list='$(tools_pm_include_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(tools_pm_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(tools_pm_includedir)/$$f'"; \
+ $(tools_pm_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(tools_pm_includedir)/$$f"; \
+ done
+
+uninstall-tools_pm_includeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(tools_pm_include_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(tools_pm_includedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(tools_pm_includedir)/$$f"; \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/../../tools/pm
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+ for dir in "$(DESTDIR)$(tools_pm_includedir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-tools_pm_includeHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-tools_pm_includeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool ctags distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-strip \
+ install-tools_pm_includeHEADERS installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+ ps ps-am tags uninstall uninstall-am uninstall-info-am \
+ uninstall-tools_pm_includeHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libs/glibmm2/tools/pm/Makefile.am b/libs/glibmm2/tools/pm/Makefile.am
new file mode 100644
index 0000000000..a4796c0491
--- /dev/null
+++ b/libs/glibmm2/tools/pm/Makefile.am
@@ -0,0 +1,10 @@
+
+include $(top_srcdir)/tools/pm/Makefile_list_of_sources.am_fragment
+
+EXTRA_DIST = Makefile_list_of_sources.am_fragment $(files_tools_pm)
+
+# Install the .pm, files:
+
+tools_pm_includedir = $(libdir)/glibmm-2.4/proc/pm
+tools_pm_include_HEADERS = $(files_tools_pm)
+
diff --git a/libs/glibmm2/tools/pm/Makefile.in b/libs/glibmm2/tools/pm/Makefile.in
new file mode 100644
index 0000000000..040a1e7021
--- /dev/null
+++ b/libs/glibmm2/tools/pm/Makefile.in
@@ -0,0 +1,434 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(tools_pm_include_HEADERS) \
+ $(top_srcdir)/tools/pm/Makefile_list_of_sources.am_fragment
+subdir = tools/pm
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/scripts/cxx.m4 \
+ $(top_srcdir)/scripts/cxx_std.m4 \
+ $(top_srcdir)/scripts/docgen.m4 \
+ $(top_srcdir)/scripts/glibmm_check_perl.m4 \
+ $(top_srcdir)/scripts/macros.m4 \
+ $(top_srcdir)/scripts/reduced.m4 $(top_srcdir)/scripts/sun.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h \
+ $(top_builddir)/glib/glibmmconfig.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(tools_pm_includedir)"
+tools_pm_includeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(tools_pm_include_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISABLE_DEPRECATED_API_CFLAGS = @DISABLE_DEPRECATED_API_CFLAGS@
+DISABLE_DEPRECATED_CFLAGS = @DISABLE_DEPRECATED_CFLAGS@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GLIBMM_CFLAGS = @GLIBMM_CFLAGS@
+GLIBMM_LIBS = @GLIBMM_LIBS@
+GLIBMM_MAJOR_VERSION = @GLIBMM_MAJOR_VERSION@
+GLIBMM_MICRO_VERSION = @GLIBMM_MICRO_VERSION@
+GLIBMM_MINOR_VERSION = @GLIBMM_MINOR_VERSION@
+GLIBMM_RELEASE = @GLIBMM_RELEASE@
+GLIBMM_VERSION = @GLIBMM_VERSION@
+GTHREAD_CFLAGS = @GTHREAD_CFLAGS@
+GTHREAD_LIBS = @GTHREAD_LIBS@
+GTKMMPROC_MERGECDOCS = @GTKMMPROC_MERGECDOCS@
+GTKMM_DOXYGEN_INPUT = @GTKMM_DOXYGEN_INPUT@
+GTKMM_FALSE_FALSE = @GTKMM_FALSE_FALSE@
+GTKMM_FALSE_TRUE = @GTKMM_FALSE_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBGLIBMM_SO_VERSION = @LIBGLIBMM_SO_VERSION@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+M4 = @M4@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS_WIN32_FALSE = @OS_WIN32_FALSE@
+OS_WIN32_TRUE = @OS_WIN32_TRUE@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL_PATH = @PERL_PATH@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM_WIN32_FALSE = @PLATFORM_WIN32_FALSE@
+PLATFORM_WIN32_TRUE = @PLATFORM_WIN32_TRUE@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_AS = @ac_ct_AS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+files_tools_pm = DocsParser.pm GtkDefs.pm Enum.pm Function.pm FunctionBase.pm Object.pm Output.pm Property.pm Util.pm WrapParser.pm
+EXTRA_DIST = Makefile_list_of_sources.am_fragment $(files_tools_pm)
+
+# Install the .pm, files:
+tools_pm_includedir = $(libdir)/glibmm-2.4/proc/pm
+tools_pm_include_HEADERS = $(files_tools_pm)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/tools/pm/Makefile_list_of_sources.am_fragment $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/pm/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu tools/pm/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-tools_pm_includeHEADERS: $(tools_pm_include_HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(tools_pm_includedir)" || $(mkdir_p) "$(DESTDIR)$(tools_pm_includedir)"
+ @list='$(tools_pm_include_HEADERS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(tools_pm_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(tools_pm_includedir)/$$f'"; \
+ $(tools_pm_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(tools_pm_includedir)/$$f"; \
+ done
+
+uninstall-tools_pm_includeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(tools_pm_include_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(tools_pm_includedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(tools_pm_includedir)/$$f"; \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/../../tools/pm
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+ for dir in "$(DESTDIR)$(tools_pm_includedir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-tools_pm_includeHEADERS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-tools_pm_includeHEADERS
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool ctags distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-exec install-exec-am install-info \
+ install-info-am install-man install-strip \
+ install-tools_pm_includeHEADERS installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+ ps ps-am tags uninstall uninstall-am uninstall-info-am \
+ uninstall-tools_pm_includeHEADERS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libs/glibmm2/tools/pm/Makefile_list_of_sources.am_fragment b/libs/glibmm2/tools/pm/Makefile_list_of_sources.am_fragment
new file mode 100644
index 0000000000..e8df8f447e
--- /dev/null
+++ b/libs/glibmm2/tools/pm/Makefile_list_of_sources.am_fragment
@@ -0,0 +1,2 @@
+files_tools_pm = DocsParser.pm GtkDefs.pm Enum.pm Function.pm FunctionBase.pm Object.pm Output.pm Property.pm Util.pm WrapParser.pm
+
diff --git a/libs/glibmm2/tools/pm/Object.pm b/libs/glibmm2/tools/pm/Object.pm
new file mode 100644
index 0000000000..aef72c3953
--- /dev/null
+++ b/libs/glibmm2/tools/pm/Object.pm
@@ -0,0 +1,72 @@
+package Object;
+
+use strict;
+use warnings;
+
+BEGIN {
+ use Exporter ();
+ our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
+
+ # set the version for version checking
+ $VERSION = 1.00;
+
+ @ISA = qw(Exporter);
+ @EXPORT = ( );
+ %EXPORT_TAGS = ( );
+
+ # your exported package globals go here,
+ # as well as any optionally exported functions
+ @EXPORT_OK = ( );
+}
+our @EXPORT_OK;
+
+# class Object
+# {
+# string name;
+# string module;
+# string parent;
+# string c_name;
+# string gtype_id;
+# }
+
+
+sub new
+{
+ my ($def) = @_;
+
+ my $self = {};
+ bless $self;
+
+ $def =~ s/^\(//;
+ $def =~ s/\)$//;
+
+ # snarf down the fields
+ $$self{name} = $1 if($def =~ s/^define-object (\S+)//);
+ $$self{module} = $1 if($def =~ s/\(in-module "(\S+)"\)//);
+ $$self{parent} = $1 if($def =~ s/\(parent "(\S+)"\)//);
+ $$self{c_name} = $1 if($def =~ s/\(c-name "(\S+)"\)//);
+ $$self{gtype_id} = $1 if($def =~ s/\(gtype-id "(\S+)"\)//);
+
+ if($def !~ /^\s*$/)
+ {
+ GtkDefs::error("Unhandled object def ($def) in $$self{module}\::$$self{name}\n")
+ }
+
+ return $self;
+}
+
+
+sub dump($)
+{
+ my ($self) = @_;
+
+ print "<object>\n";
+
+ foreach(keys %$self)
+ { print " <$_ value=\"$$self{$_}\"/>\n"; }
+
+ print "</object>\n\n";
+}
+
+
+1; # indicate proper module load.
diff --git a/libs/glibmm2/tools/pm/Output.pm b/libs/glibmm2/tools/pm/Output.pm
new file mode 100644
index 0000000000..6b4a475f1d
--- /dev/null
+++ b/libs/glibmm2/tools/pm/Output.pm
@@ -0,0 +1,928 @@
+# Gtkmmproc Output module
+#
+# Copyright 2001 Free Software Foundation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+#
+package Output;
+use strict;
+BEGIN { @Namespace::ISA=qw(main); }
+
+# $objOutputter new()
+sub new
+{
+ my ($m4path, $macrodirs) = @_;
+ my $self = {};
+ bless $self;
+
+ $$self{out} = [];
+
+ $$self{source} = "";
+ $$self{tmpdir} = "/tmp";
+ $$self{destdir} = "";
+ $$self{objDefsParser} = undef; # It will be set in set_defsparser()
+
+ $$self{m4path} = $m4path;
+ $$self{m4args} = "-I";
+ $$self{m4args} .= join(" -I", @$macrodirs);
+
+ return $self;
+}
+
+sub set_defsparser($$)
+{
+ my ($self, $objDefsParser) = @_;
+
+ $$self{objDefsParser} = $objDefsParser; #Remember it so that we can use it in our output methods.
+}
+
+sub m4args_append($$)
+{
+ my ($self, $str) = @_;
+ $$self{m4args} .= $str;
+}
+
+sub append($$)
+{
+ my ($self, $str) = @_;
+
+ push(@{$$self{out}}, $str);
+}
+
+# void output_wrap_failed($cname, $error)
+# Puts a comment in the header about the error during code-generation.
+sub output_wrap_failed($$$)
+{
+ my ($self, $cname, $error) = @_;
+
+ my $str = sprintf("//gtkmmproc error: %s : %s", $cname, $error);
+ print STDERR "Output.pm: $cname : $error\n";
+ $self->append($str);
+}
+
+sub error
+{
+ my $format=shift @_;
+ printf STDERR "Output.pm: $format",@_;
+}
+
+sub ifdef($$)
+{
+ my ($self, $ifdef) = @_;
+ if ($ifdef)
+ {
+ $self->append("\n#ifdef $ifdef\n");
+ }
+}
+
+sub endif($$)
+{
+ my ($self, $ifdef) = @_;
+ if ($ifdef)
+ {
+ $self->append("\n#endif // $ifdef\n");
+ }
+}
+
+### Convert _WRAP to a virtual
+# _VFUNC_H(signame,rettype,`<cppargs>')
+# _VFUNC_PH(gtkname,crettype,cargs and names)
+# void output_wrap_vfunc_h($filename, $line_num, $objCppfunc, $objCDefsFunc)
+sub output_wrap_vfunc_h($$$$$$)
+{
+ my ($self, $filename, $line_num, $objCppfunc, $objCDefsFunc, $ifdef) = @_;
+
+#Old code. We removed _VFUNC_H from the .m4 file
+# my $str = sprintf("_VFUNC_H(%s,%s,\`%s\',%s)dnl\n",
+# $$objCppfunc{name},
+# $$objCppfunc{rettype},
+# $objCppfunc->args_types_and_names(),
+# $objCppfunc->get_is_const()
+# );
+# $self->append($str);
+
+ my $cppVfuncDecl = "virtual " . $$objCppfunc{rettype} . " " . $$objCppfunc{name} . "(" . $objCppfunc->args_types_and_names() . ")";
+ if($objCppfunc->get_is_const())
+ {
+ $cppVfuncDecl .= " const";
+ }
+
+ $self->append("#ifdef GLIBMM_VFUNCS_ENABLED\n");
+ $self->ifdef($ifdef);
+ $self->append(" $cppVfuncDecl;\n");
+ $self->endif($ifdef);
+ $self->append("#endif //GLIBMM_VFUNCS_ENABLED\n");
+
+ #The default callback, which will call *_vfunc, which will then call the base default callback.
+ #Declares the callback in the private *Class class and sets it in the class_init function.
+
+ my $str = sprintf("_VFUNC_PH(%s,%s,\`%s\',%s)dnl\n",
+ $$objCDefsFunc{name},
+ $$objCDefsFunc{rettype},
+ $objCDefsFunc->args_types_and_names(),
+ $ifdef
+ );
+ $self->append($str);
+}
+
+# _VFUNC_CC(signame,gtkname,rettype,crettype,`<cppargs>',`<cargs>')
+sub output_wrap_vfunc_cc($$$$$$$)
+{
+ my ($self, $filename, $line_num, $objCppfunc, $objDefsSignal, $ifdef) = @_;
+
+ my $cname = $$objDefsSignal{name};
+
+ # e.g. Gtk::Button::draw_indicator:
+
+ #Use a different macro for Interfaces, to generate an extra convenience method.
+
+ my $refreturn = "";
+ $refreturn = "refreturn" if($$objCppfunc{rettype_needs_ref});
+
+ my $str = sprintf("_VFUNC_CC(%s,%s,%s,%s,\`%s\',\`%s\',%s,%s,%s)dnl\n",
+ $$objCppfunc{name},
+ $cname,
+ $$objCppfunc{rettype},
+ $$objDefsSignal{rettype},
+ $objCppfunc->args_types_and_names(),
+ convert_args_cpp_to_c($objCppfunc, $objDefsSignal, 0, $line_num), #$objCppfunc->args_names_only(),
+ $objCppfunc->get_is_const(),
+ $refreturn,
+ $ifdef);
+
+ $self->append($str);
+
+ # e.g. Gtk::ButtonClass::draw_indicator():
+
+ my $refreturn_ctype = "";
+ $refreturn_ctype = "refreturn_ctype" if($$objDefsSignal{rettype_needs_ref});
+
+ my $str = sprintf("_VFUNC_PCC(%s,%s,%s,%s,\`%s\',\`%s\',\`%s\',%s,%s,%s)dnl\n",
+ $$objCppfunc{name},
+ $cname,
+ $$objCppfunc{rettype},
+ $$objDefsSignal{rettype},
+ $objDefsSignal->args_types_and_names(),
+ $objDefsSignal->args_names_only(),
+ convert_args_c_to_cpp($objDefsSignal, $objCppfunc, $line_num),
+ ${$objDefsSignal->get_param_names()}[0],
+ $refreturn_ctype,
+ $ifdef);
+
+ $self->append($str);
+}
+
+### Convert _WRAP to a virtual
+# _SIGNAL_H(signame,rettype, ifdef, `<cppargs>')
+# _SIGNAL_PH(gtkname,crettype, ifdef, cargs and names)
+# void output_wrap_default_signal_handler_h($filename, $line_num, $objCppfunc, $objCDefsFunc, $ifdef. @args)
+sub output_wrap_default_signal_handler_h($$$$$$$)
+{
+ my ($self, $filename, $line_num, $objCppfunc, $objCDefsFunc, $ifdef) = @_;
+
+ my $str = sprintf("_SIGNAL_H(%s,%s,\`%s\',%s)dnl\n",
+ $$objCppfunc{name},
+ $$objCppfunc{rettype},
+ $objCppfunc->args_types_and_names(),
+ $ifdef
+ );
+ $self->append($str);
+
+
+ #The default callback, which will call *_impl, which will then call the base default callback.
+ #Declares the callback in the private *Class class and sets it in the class_init function.
+
+ $str = sprintf("_SIGNAL_PH(%s,%s,\`%s\',%s)dnl\n",
+ $$objCDefsFunc{name},
+ $$objCDefsFunc{rettype},
+ $objCDefsFunc->args_types_and_names(),
+ $ifdef
+ );
+ $self->append($str);
+}
+
+# _SIGNAL_CC(signame, gtkname, rettype, crettype,`<cppargs>',`<cargs>')
+sub output_wrap_default_signal_handler_cc($$$$$$$$$)
+{
+ my ($self, $filename, $line_num, $objCppfunc, $objDefsSignal, $bImplement, $bCustomCCallback, $bRefreturn, $ifdef) = @_;
+ my $cname = $$objDefsSignal{name};
+ # $cname = $1 if ($args[3] =~ /"(.*)"/); #TODO: What's this about?
+
+ # e.g. Gtk::Button::on_clicked:
+ if($bImplement eq 1)
+ {
+ my $refreturn = "";
+ $refreturn = "refreturn" if($bRefreturn eq 1);
+
+ my $str = sprintf("_SIGNAL_CC(%s,%s,%s,%s,\`%s\',\`%s\',%s,%s,%s)dnl\n",
+ $$objCppfunc{name},
+ $cname,
+ $$objCppfunc{rettype},
+ $$objDefsSignal{rettype},
+ $objCppfunc->args_types_and_names(),
+ convert_args_cpp_to_c($objCppfunc, $objDefsSignal, 0, $line_num), #$objCppfunc->args_names_only(),
+ $$objCppfunc{const},
+ $refreturn,
+ $ifdef);
+ $self->append($str);
+ }
+
+
+ # e.g. Gtk::ButtonClass::on_clicked():
+
+ #Callbacks always take the object instance as the first argument:
+# my $arglist_names = "object";
+# my $arglist_names_extra = $objDefsSignal->args_names_only();
+# if ($arglist_names_extra)
+# {
+# $arglist_names .= ", ";
+# $arglist_names .= $arglist_names_extra;
+# }
+
+ if($bCustomCCallback ne 1)
+ {
+ my $str = sprintf("_SIGNAL_PCC(%s,%s,%s,%s,\`%s\',\`%s\',\`%s\',\`%s\',%s)dnl\n",
+ $$objCppfunc{name},
+ $cname,
+ $$objCppfunc{rettype},
+ $$objDefsSignal{rettype},
+ $objDefsSignal->args_types_and_names(),
+ $objDefsSignal->args_names_only(),
+ convert_args_c_to_cpp($objDefsSignal, $objCppfunc, $line_num),
+ ${$objDefsSignal->get_param_names()}[0],
+ $ifdef);
+ $self->append($str);
+ }
+}
+
+### Convert _WRAP to a method
+# _METHOD(cppname,cname,cpprettype,crettype,arglist,cargs,const)
+# void output_wrap_meth($filename, $line_num, $objCppFunc, $objCDefsFunc, $cppMethodDecl, $documentation, $ifdef)
+sub output_wrap_meth($$$$$$$)
+{
+ my ($self, $filename, $line_num, $objCppfunc, $objCDefsFunc, $cppMethodDecl, $documentation, $ifdef) = @_;
+ my $objDefsParser = $$self{objDefsParser};
+
+ # Allow the generated .h/.cc code to have an #ifndef around it, and add deprecation docs to the generated documentation.
+ my $deprecated = "";
+ if($$objCDefsFunc{deprecated})
+ {
+ $deprecated = "deprecated";
+ }
+
+ #Declaration:
+ if($deprecated ne "")
+ {
+ $self->append("\n_DEPRECATE_IFDEF_START");
+ }
+
+ # Doxygen documentation before the method declaration:
+ $self->output_wrap_meth_docs_only($filename, $line_num, $documentation);
+
+ $self->ifdef($ifdef);
+
+ if($$objCDefsFunc{throw_any_errors})
+ {
+ $self->append("#ifdef GLIBMM_EXCEPTIONS_ENABLED\n");
+ }
+
+ $self->append(" ${cppMethodDecl};");
+
+ if($$objCDefsFunc{throw_any_errors})
+ {
+ $self->append("\n#else\n");
+
+ # #Add an error argument, by searching for ) at the end and replacing it:
+ # my $declWithErrorArg = ${cppMethodDecl};
+ # $declWithErrorArg =~ s/\)$/, std::auto_ptr<Glib::Error>& error\)/g;
+
+ #Recreate the declaration, to remove the default values, which we can't have as well as an error parameter at the end:
+ my $declWithErrorArg = $$objCppfunc{rettype} . " " . $$objCppfunc{name} . "(" . $objCppfunc->args_types_and_names() . ", std::auto_ptr<Glib::Error>& error)";
+
+ if($$objCppfunc{static})
+ {
+ $declWithErrorArg = "static " . $declWithErrorArg;
+ }
+
+ if($objCppfunc->get_is_const() eq 1)
+ {
+ if($$objCppfunc{static} ne 1) #It can't be const and static at the same time.
+ {
+ $declWithErrorArg = $declWithErrorArg . " const";
+ }
+ }
+
+ #remove any superfluous ,:
+ $declWithErrorArg =~ s/\(, /\(/g;
+
+ $self->append(" ${declWithErrorArg};");
+
+ $self->append("\n#endif //GLIBMM_EXCEPTIONS_ENABLED\n");
+ }
+
+ $self->endif($ifdef);
+
+
+ if($deprecated ne "")
+ {
+ $self->append("\n_DEPRECATE_IFDEF_END\n");
+ }
+
+ my $refneeded = "";
+ if($$objCDefsFunc{rettype_needs_ref})
+ {
+ $refneeded = "refreturn"
+ }
+
+ my $errthrow = "";
+ if($$objCDefsFunc{throw_any_errors})
+ {
+ $errthrow = "errthrow"
+ }
+
+ my $constversion = ""; #Whether it is just a const overload (so it can reuse code)
+ if($$objCDefsFunc{constversion})
+ {
+ $constversion = "constversion"
+ }
+
+ #Implementation:
+ my $str;
+ if ($$objCppfunc{static}) {
+ $str = sprintf("_STATIC_METHOD(%s,%s,%s,%s,\`%s\',\`%s\',%s,%s,%s,%s)dnl\n",
+ $$objCppfunc{name},
+ $$objCDefsFunc{c_name},
+ $$objCppfunc{rettype},
+ $objCDefsFunc->get_return_type_for_methods(),
+ $objCppfunc->args_types_and_names(),
+ convert_args_cpp_to_c($objCppfunc, $objCDefsFunc, 1, $line_num, $errthrow), #1 means it's static, so it has 'object'.
+ $refneeded,
+ $errthrow,
+ $deprecated,
+ $ifdef);
+ } else {
+ $str = sprintf("_METHOD(%s,%s,%s,%s,\`%s\',\`%s\',%s,%s,%s,%s,%s,\`%s\',%s)dnl\n",
+ $$objCppfunc{name},
+ $$objCDefsFunc{c_name},
+ $$objCppfunc{rettype},
+ $objCDefsFunc->get_return_type_for_methods(),
+ $objCppfunc->args_types_and_names(),
+ convert_args_cpp_to_c($objCppfunc, $objCDefsFunc, 0, $line_num, $errthrow),
+ $$objCppfunc{const},
+ $refneeded,
+ $errthrow,
+ $deprecated,
+ $constversion,
+ $objCppfunc->args_names_only(),
+ $ifdef
+ );
+ }
+ $self->append($str);
+}
+
+### Convert _WRAP to a method
+# _METHOD(cppname,cname,cpprettype,crettype,arglist,cargs,const)
+# void output_wrap_meth($filename, $line_num, $documentation)
+sub output_wrap_meth_docs_only($$$$)
+{
+ my ($self, $filename, $line_num, $documentation) = @_;
+ my $objDefsParser = $$self{objDefsParser};
+
+ # Doxygen documentation before the method declaration:
+ $self->append("\n${documentation}");
+}
+
+### Convert _WRAP_CTOR to a ctor
+# _METHOD(cppname,cname,cpprettype,crettype,arglist,cargs,const)
+# void output_wrap_ctor($filename, $line_num, $objCppFunc, $objCDefsFunc, $cppMethodDecl)
+sub output_wrap_ctor($$$$$)
+{
+ my ($self, $filename, $line_num, $objCppfunc, $objCDefsFunc, $cppMethodDecl) = @_;
+ my $objDefsParser = $$self{objDefsParser};
+
+ #Ctor Declaration:
+ #TODO: Add explicit.
+ $self->append("explicit " . $cppMethodDecl . ";");
+
+ #Implementation:
+ my $str = sprintf("_CTOR_IMPL(%s,%s,\`%s\',\`%s\')dnl\n",
+ $$objCppfunc{name},
+ $$objCDefsFunc{c_name},
+ $objCppfunc->args_types_and_names(),
+ get_ctor_properties($objCppfunc, $objCDefsFunc, $line_num)
+ );
+
+ $self->append($str);
+}
+
+sub output_wrap_create($$$)
+{
+ my ($self, $args_type_and_name_with_default_values, $objWrapParser) = @_;
+
+ #Re-use Function in a very hacky way, to separate the argument types_and_names.
+ my $fake_decl = "void fake_func(" . $args_type_and_name_with_default_values . ")";
+
+ my $objFunction = &Function::new($fake_decl, $objWrapParser);
+ my $args_names_only = $objFunction->args_names_only();
+ my $args_type_and_name_hpp = $objFunction->args_types_and_names_with_default_values();
+ my $args_type_and_name_cpp = $objFunction->args_types_and_names();
+
+ my $str = sprintf("_CREATE_METHOD(\`%s\',\`%s\',\`%s\')dnl\n",
+ $args_type_and_name_hpp, , $args_type_and_name_cpp, $args_names_only);
+
+ $self->append($str)
+}
+
+# void output_wrap_sig_decl($filename, $line_num, $objCSignal, $objCppfunc, $signal_name, $bCustomCCallback)
+# custom_signalproxy_name is "" when no type conversion is required - a normal templates SignalProxy will be used instead.
+sub output_wrap_sig_decl($$$$$$$)
+{
+ my ($self, $filename, $line_num, $objCSignal, $objCppfunc, $signal_name, $bCustomCCallback, $ifdef) = @_;
+
+# _SIGNAL_PROXY(c_signal_name, c_return_type, `<c_arg_types_and_names>',
+# cpp_signal_name, cpp_return_type, `<cpp_arg_types>',`<c_args_to_cpp>',
+# refdoc_comment)
+
+ my $str = sprintf("_SIGNAL_PROXY(%s,%s,\`%s\',%s,%s,\`%s\',\`%s\',\`%s\',%s,%s)dnl\n",
+ $signal_name,
+ $$objCSignal{rettype},
+ $objCSignal->args_types_and_names_without_object(),
+ $$objCppfunc{name},
+ $$objCppfunc{rettype},
+ $objCppfunc->args_types_only(),
+ convert_args_c_to_cpp($objCSignal, $objCppfunc, $line_num),
+ $bCustomCCallback, #When this is true, it will not write the *_callback implementation for you.
+ $objCppfunc->get_refdoc_comment(),
+ $ifdef
+ );
+
+ $self->append($str);
+}
+
+# void output_wrap_enum($filename, $line_num, $cpp_type, $c_type, $comment, @flags)
+sub output_wrap_enum($$$$$$$)
+{
+ my ($self, $filename, $line_num, $cpp_type, $c_type, $comment, @flags) = @_;
+
+ my $objEnum = GtkDefs::lookup_enum($c_type);
+ if(!$objEnum)
+ {
+ $self->output_wrap_failed($c_type, "enum defs lookup failed.");
+ return;
+ }
+
+ $objEnum->beautify_values();
+
+ my $no_gtype = "";
+ my $elements = $objEnum->build_element_list(\@flags, \$no_gtype, " ");
+
+ if(!$elements)
+ {
+ $self->output_wrap_failed($c_type, "unknown _WRAP_ENUM() flag");
+ return;
+ }
+
+ my $value_suffix = "Enum";
+ $value_suffix = "Flags" if($$objEnum{flags});
+
+ my $str = sprintf("_ENUM(%s,%s,%s,\`%s\',\`%s\',\`%s\')dnl\n",
+ $cpp_type,
+ $c_type,
+ $value_suffix,
+ $elements,
+ $no_gtype,
+ $comment
+ );
+
+ $self->append($str);
+}
+
+# void output_wrap_gerror($filename, $line_num, $cpp_type, $c_enum, $domain, @flags)
+sub output_wrap_gerror($$$$$$$)
+{
+ my ($self, $filename, $line_num, $cpp_type, $c_enum, $domain, @flags) = @_;
+
+ my $objDefsParser = $$self{objDefsParser};
+
+ my $objEnum = GtkDefs::lookup_enum($c_enum);
+ if(!$objEnum)
+ {
+ $self->output_wrap_failed($c_enum, "enum defs lookup failed.");
+ return;
+ }
+
+ # Shouldn't happen, and if it does, I'd like to know that.
+ warn if($$objEnum{flags});
+
+ $objEnum->beautify_values();
+
+ # cut off the module prefix, e.g. GDK_
+ my $prefix = $domain;
+ $prefix =~ s/^[^_]+_//;
+
+ # Chop off the domain prefix, because we put the enum into the class.
+ unshift(@flags, "s#^${prefix}_##");
+
+ my $no_gtype = "";
+ my $elements = $objEnum->build_element_list(\@flags, \$no_gtype, " ");
+
+ my $str = sprintf("_GERROR(%s,%s,%s,\`%s\',%s)dnl\n",
+ $cpp_type,
+ $c_enum,
+ $domain,
+ $elements,
+ $no_gtype
+ );
+
+ $self->append($str);
+}
+
+# _PROPERTY_PROXY(name, cpp_type)
+# void output_wrap_property($filename, $line_num, $name, $cpp_type)
+sub output_wrap_property($$$$$$)
+{
+ my ($self, $filename, $line_num, $name, $cpp_type, $c_class) = @_;
+
+ my $objDefsParser = $$self{objDefsParser};
+
+ my $objProperty = GtkDefs::lookup_property($c_class, $name);
+ if($objProperty eq 0) #If the lookup failed:
+ {
+ $self->output_wrap_failed($name, "property defs lookup failed.");
+ }
+ else
+ {
+ # We use a suffix to specify a particular Glib::PropertyProxy* class.
+ my $proxy_suffix = "";
+
+ # Read/Write:
+ if($objProperty->get_construct_only() eq 1)
+ {
+ # construct-only functions can be read, but not written.
+ $proxy_suffix = "_ReadOnly";
+ }
+ elsif($objProperty->get_readable() ne 1)
+ {
+ $proxy_suffix = "_WriteOnly";
+ }
+ elsif($objProperty->get_writable() ne 1)
+ {
+ $proxy_suffix = "_ReadOnly";
+ }
+
+ # Convert - to _ so we can use it in C++ method and variable names:
+ my $name_underscored = $name;
+ $name_underscored =~ s/-/_/g;
+
+ my $str = sprintf("_PROPERTY_PROXY(%s,%s,%s,%s,%s)dnl\n",
+ $name,
+ $name_underscored,
+ $cpp_type,
+ $proxy_suffix,
+ $objProperty->get_docs()
+ );
+ $self->append($str);
+ $self->append("\n");
+
+ # If the property is not already read-only, and the property can be read, then add a second const accessor for a read-only propertyproxy:
+ if( ($proxy_suffix ne "_ReadOnly") && ($objProperty->get_readable()) )
+ {
+ my $str = sprintf("_PROPERTY_PROXY(%s,%s,%s,%s,%s)dnl\n",
+ $name,
+ $name_underscored,
+ $cpp_type,
+ "_ReadOnly",
+ $objProperty->get_docs()
+ );
+ $self->append($str);
+ }
+
+
+ }
+}
+
+# vpod output_temp_g1($filename, $section) e.g. output_temp_g1(button, gtk)
+sub output_temp_g1($$)
+{
+ my ($self, $section) = @_;
+
+ # Write out *.g1 temporary file
+ open(FILE, '>', "$$self{tmpdir}/gtkmmproc_$$.g1"); # $$ is the Process ID
+
+ print FILE "include(base.m4)dnl\n";
+
+ my $module = $section;
+ my $module_canonical = Util::string_canonical($module); #In case there is a / character in the module.
+ print FILE "_START($$self{source},$module,$module_canonical)dnl\n";
+ print FILE join("", @{$$self{out}});
+ print FILE "_END()\n";
+ close(FILE);
+}
+
+sub make_g2_from_g1($)
+{
+ my ($self) = @_;
+
+ # Execute m4 to get *.g2 file:
+ system("$$self{m4path} $$self{m4args} '$$self{tmpdir}/gtkmmproc_$$.g1' > '$$self{tmpdir}/gtkmmproc_$$.g2'");
+ return ($? >> 8);
+}
+
+# void write_sections_to_files()
+# This is where we snip the /tmp/gtkmmproc*.g2 file into sections (,h, .cc, _private.h)
+sub write_sections_to_files()
+{
+ my ($self) = @_;
+
+ my $fname_h = "$$self{destdir}/$$self{source}.h";
+ my $fname_ph = "$$self{destdir}/private/$$self{source}_p.h";
+ my $fname_cc = "$$self{destdir}/$$self{source}.cc";
+
+ open(INPUT, '<', "$$self{tmpdir}/gtkmmproc_$$.g2"); # $$ is the process ID.
+
+ # open tempory file for each section
+ open(OUTPUT_H, '>', "$fname_h.tmp");
+ open(OUTPUT_PH, '>', "$fname_ph.tmp");
+ open(OUTPUT_CC, '>', "$fname_cc.tmp");
+
+ my $oldfh = select(OUTPUT_H);
+ my $blank = 0;
+
+ while(<INPUT>)
+ {
+ # section switching
+ if(/^#S 0/) { select(OUTPUT_H); next; }
+ if(/^#S 1/) { select(OUTPUT_PH); next; }
+ if(/^#S 2/) { select(OUTPUT_CC); next; }
+
+ # get rid of bogus blank lines
+ if(/^\s*$/) { ++$blank; } else { $blank = 0; }
+ next if($blank > 2);
+
+ print $_;
+ }
+
+ select($oldfh);
+ close(INPUT);
+ close(OUTPUT_H);
+ close(OUTPUT_PH);
+ close(OUTPUT_CC);
+
+ foreach($fname_h, $fname_ph, $fname_cc)
+ {
+ # overwrite the source file only if it has actually changed
+ system("cmp -s '$_.tmp' '$_' || cp '$_.tmp' '$_' ; rm -f '$_.tmp'");
+ }
+}
+
+
+sub remove_temp_files($)
+{
+ my ($self) = @_;
+
+ system("rm -f \"$$self{tmpdir}/gtkmmproc_$$.g1\"");
+ system("rm -f \"$$self{tmpdir}/gtkmmproc_$$.g2\"");
+}
+
+
+
+# procedure for generating CONVERT macros
+# $string convert_args_cpp_to_c($objCppfunc, $objCDefsFunc, $static, $wrap_line_number,$automatic_error)
+sub convert_args_cpp_to_c($$$$;$)
+{
+ my ($objCppfunc, $objCDefsFunc, $static, $wrap_line_number, $automatic_error) = @_;
+
+ $automatic_error = "" unless defined $automatic_error;
+
+ my $cpp_param_names = $$objCppfunc{param_names};
+ my $cpp_param_types = $$objCppfunc{param_types};
+ my $c_param_types = $$objCDefsFunc{param_types};
+
+ my @result;
+
+ my $num_c_args_expected = scalar(@{$c_param_types});
+ if( !($static) ) { $num_c_args_expected--; } #The cpp method will need an Object* paramater at the start.
+
+ my $num_cpp_args = scalar(@{$cpp_param_types});
+
+ # add implicit last error parameter;
+ if ( $automatic_error ne "" &&
+ $num_cpp_args == ($num_c_args_expected - 1) &&
+ ${$c_param_types}[-1] eq "GError**" )
+ {
+ $num_cpp_args++;
+ $cpp_param_names = [@{$cpp_param_names},"gerror"];
+ $cpp_param_types = [@{$cpp_param_types},"GError*&"];
+ }
+
+ if ( $num_cpp_args != $num_c_args_expected )
+ {
+ Output::error( "convert_args_cpp_to_c(): Incorrect number of arguments. (%d != %d)\n",
+ $num_cpp_args,
+ $num_c_args_expected );
+ $objCppfunc->dump();
+ $objCDefsFunc->dump();
+
+ return "";
+ }
+
+
+ # Loop through the cpp parameters:
+ my $i;
+ my $cpp_param_max = $num_cpp_args;
+ # if( !($static) ) { $cpp_param_max++; }
+
+ for ($i = 0; $i < $cpp_param_max; $i++)
+ {
+ #index of C parameter:
+ my $iCParam = $i;
+ if( !($static) ) { $iCParam++; }
+
+ my $cppParamType = $$cpp_param_types[$i];
+ $cppParamType =~ s/ &/&/g; #Remove space between type and &
+ $cppParamType =~ s/ \*/*/g; #Remove space between type and *
+
+ my $cppParamName = $$cpp_param_names[$i];
+ my $cParamType = $$c_param_types[$iCParam];
+
+ if ($cppParamType ne $cParamType) #If a type conversion is needed.
+ {
+
+
+ push(@result, sprintf("_CONVERT(%s,%s,%s,%s)",
+ $cppParamType,
+ $cParamType,
+ $cppParamName,
+ $wrap_line_number) );
+ }
+ else
+ {
+ push(@result, $cppParamName);
+ }
+ }
+
+ return join(", ", @result);
+}
+
+# procedure for generating CONVERT macros
+# Ignores the first C 'self' argument.
+# $string convert_args_c_to_cpp($objCDefsFunc, $objCppFunc, $wrap_line_number)
+sub convert_args_c_to_cpp($$$)
+{
+ my ($objCDefsFunc, $objCppfunc, $wrap_line_number) = @_;
+
+ my $cpp_param_types = $$objCppfunc{param_types};
+ my $c_param_types = $$objCDefsFunc{param_types};
+ my $c_param_names = $$objCDefsFunc{param_names};
+
+ my @result;
+
+ my $num_c_args = scalar(@{$c_param_types});
+
+ my $num_cpp_args = scalar(@{$cpp_param_types});
+
+ if ( ($num_cpp_args + 1) != $num_c_args )
+ {
+ Output::error( "convert_args_c_to_cpp(): Incorrect number of arguments. (%d != %d)\n",
+ $num_cpp_args + 1,
+ $num_c_args);
+ $objCppfunc->dump();
+ $objCDefsFunc->dump();
+
+ return "";
+ }
+
+
+ # Loop through the c parameters:
+ my $i;
+ my $c_param_max = $num_c_args;
+
+ for ($i = 1; $i < $c_param_max; $i++)
+ {
+ #index of C parameter:
+ my $iCppParam = $i - 1;
+
+ my $cppParamType = $$cpp_param_types[$iCppParam];
+ $cppParamType =~ s/ &/&/g; #Remove space between type and &.
+ $cppParamType =~ s/ \*/*/g; #Remove space between type and *
+
+ my $cParamName = $$c_param_names[$i];
+ my $cParamType = $$c_param_types[$i];
+
+ if ($cParamType ne $cppParamType) #If a type conversion is needed.
+ {
+ push(@result, sprintf("_CONVERT(%s,%s,%s,%s)\n",
+ $cParamType,
+ $cppParamType,
+ $cParamName,
+ $wrap_line_number) );
+ }
+ else
+ {
+ push(@result, $cParamName);
+ }
+ }
+
+ return join(", ",@result);
+}
+
+
+# generates the XXX in g_object_new(get_type(), XXX): A list of property names and values.
+# Uses the cpp arg name as the property name.
+# $string get_ctor_properties($objCppfunc, $objCDefsFunc, $wrap_line_number)
+sub get_ctor_properties($$$$)
+{
+ my ($objCppfunc, $objCDefsFunc, $wrap_line_number) = @_;
+
+ my $cpp_param_names = $$objCppfunc{param_names};
+ my $cpp_param_types = $$objCppfunc{param_types};
+ my $c_param_types = $$objCDefsFunc{param_types};
+
+ my @result;
+
+ my $num_args = scalar(@{$c_param_types});
+
+ my $num_cpp_args = scalar(@{$cpp_param_types});
+ if ( $num_cpp_args != $num_args )
+ {
+ Output::error("get_ctor_properties(): Incorrect number of arguments. (%d != %d)\n",
+ $num_cpp_args,
+ $num_args );
+ return "";
+ }
+
+
+ # Loop through the cpp parameters:
+ my $i = 0;
+
+ for ($i = 0; $i < $num_args; $i++)
+ {
+ my $cppParamType = $$cpp_param_types[$i];
+ $cppParamType =~ s/ &/&/g; #Remove space between type and &
+ $cppParamType =~ s/ \*/*/g; #Remove space between type and *
+
+ my $cppParamName = $$cpp_param_names[$i];
+ my $cParamType = $$c_param_types[$i];
+
+ # Property name:
+ push(@result, "\"" . $cppParamName . "\"");
+
+ # C property value:
+ if ($cppParamType ne $cParamType) #If a type conversion is needed.
+ {
+ push(@result, sprintf("_CONVERT(%s,%s,%s,%s)",
+ $cppParamType,
+ $cParamType,
+ $cppParamName,
+ $wrap_line_number) );
+ }
+ else
+ {
+ push(@result, $cppParamName);
+ }
+ }
+
+ return join(", ", @result);
+}
+
+### Convert _WRAP to a corba method
+# _CORBA_METHOD(retype, method_name,args, arg_names_only) - implemented in libbonobomm.
+# void output_wrap_corba_method($filename, $line_num, $objCppFunc)
+sub output_wrap_corba_method($$$$)
+{
+ my ($self, $filename, $line_num, $objCppfunc) = @_;
+
+ my $str = sprintf("_CORBA_METHOD(%s,%s,\`%s\',\`%s\')dnl\n",
+ $$objCppfunc{rettype},
+ $$objCppfunc{name},
+ $objCppfunc->args_types_and_names(),
+ $objCppfunc->args_names_only()
+ );
+
+ $self->append($str);
+}
+
+sub output_implements_interface($$)
+{
+ my ($self, $interface, $ifdef) = @_;
+
+ my $str = sprintf("_IMPLEMENTS_INTERFACE_CC(%s, %s)dnl\n",
+ $interface,
+ $ifdef);
+
+ $self->append($str);
+}
+
+1; # indicate proper module load.
diff --git a/libs/glibmm2/tools/pm/Property.pm b/libs/glibmm2/tools/pm/Property.pm
new file mode 100644
index 0000000000..703cfdccff
--- /dev/null
+++ b/libs/glibmm2/tools/pm/Property.pm
@@ -0,0 +1,119 @@
+package Property;
+
+use strict;
+use warnings;
+
+BEGIN {
+ use Exporter ();
+ our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
+
+ # set the version for version checking
+ $VERSION = 1.00;
+ @ISA = qw(Exporter);
+ @EXPORT = qw(&func1 &func2 &func4);
+ %EXPORT_TAGS = ( );
+ # your exported package globals go here,
+ # as well as any optionally exported functions
+ @EXPORT_OK = qw($Var1 %Hashit &func3);
+ }
+our @EXPORT_OK;
+
+# class Property
+# {
+# string name;
+# string class;
+# string type;
+# bool readable;
+# bool writable;
+# bool construct_only;
+# string docs;
+# }
+
+
+sub new
+{
+ my ($def) = @_;
+ my $self = {};
+ bless $self;
+
+ $def=~s/^\(//;
+ $def=~s/\)$//;
+ # snarf down the fields
+ $$self{mark} = 0;
+ $$self{name} = $1 if ($def =~ s/^define-property (\S+)//);
+ $$self{class} = $1 if ($def =~ s/\(of-object "(\S+)"\)//);
+ $$self{type} = $1 if ($def =~ s/\(prop-type "(\S+)"\)//);
+ $$self{readable} = ($1 eq "#t") if ($def =~ s/\(readable (\S+)\)//);
+ $$self{writable} = ($1 eq "#t") if ($def =~ s/\(writable (\S+)\)//);
+ $$self{construct_only} = ($1 eq "#t") if ($def =~ s/\(construct-only (\S+)\)//);
+
+ # Property documentation:
+ my $propertydocs = $1 if ($def =~ s/\(docs "([^"]*)"\)//);
+ # Add a full-stop if there is not one already:
+ if(defined($propertydocs))
+ {
+ my $docslen = length($propertydocs);
+ if($docslen)
+ {
+ if( !(substr($propertydocs, $docslen - 1, 1) eq ".") )
+ {
+ $propertydocs = $propertydocs . ".";
+ }
+ }
+ }
+
+ $$self{docs} = $propertydocs;
+
+
+ $$self{name} =~ s/-/_/g; # change - to _
+
+ GtkDefs::error("Unhandled property def ($def) in $$self{class}\::$$self{name}\n")
+ if ($def !~ /^\s*$/);
+
+ return $self;
+}
+
+sub dump($)
+{
+ my ($self) = @_;
+
+ print "<property>\n";
+
+ foreach (keys %$self)
+ { print " <$_ value=\"$$self{$_}\"/>\n"; }
+
+ print "</property>\n\n";
+}
+
+sub get_construct_only($)
+{
+ my ($self) = @_;
+ return $$self{construct_only};
+}
+
+sub get_type($)
+{
+ my ($self) = @_;
+ return $$self{type};
+}
+
+sub get_readable($)
+{
+ my ($self) = @_;
+ return $$self{readable};
+}
+
+sub get_writable($)
+{
+ my ($self) = @_;
+ return $$self{writable};
+}
+
+sub get_docs($)
+{
+ my ($self) = @_;
+ return $$self{docs};
+}
+
+
+1; # indicate proper module load.
diff --git a/libs/glibmm2/tools/pm/Util.pm b/libs/glibmm2/tools/pm/Util.pm
new file mode 100644
index 0000000000..c3076b4e8c
--- /dev/null
+++ b/libs/glibmm2/tools/pm/Util.pm
@@ -0,0 +1,113 @@
+# gtkmm - Util module
+#
+# Copyright 2001 Free Software Foundation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# # but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+#
+#
+# This file holds basic functions used throughout gtkmmproc modules.
+# Functions in this module are exported so there is no need to
+# request them by module name.
+#
+package Util;
+use strict;
+use warnings;
+
+BEGIN {
+ use Exporter ();
+ our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
+
+ # set the version for version checking
+ $VERSION = 1.00;
+ @ISA = qw(Exporter);
+ @EXPORT = qw(&string_unquote &string_trim &string_canonical
+ &trace &unique);
+ %EXPORT_TAGS = ( );
+
+ # your exported package globals go here,
+ # as well as any optionally exported functions
+ #@EXPORT_OK = qw($Var1 %Hashit &func3);
+ }
+our @EXPORT_OK;
+
+
+#$ string_unquote($string)
+# Removes leading and trailing quotes.
+sub string_unquote($)
+{
+ my ($str) = @_;
+
+ $str =~ s/^['`"]// ;
+ $str =~ s/['`"]$// ;
+
+ return $str;
+}
+
+# $ string_trim($string)
+# Removes leading and trailing white space.
+sub string_trim($)
+{
+ ($_) = @_;
+ s/^\s+//;
+ s/\s+$//;
+ return $_;
+}
+
+# $ string_canonical($string)
+# Convert - to _.
+sub string_canonical($)
+{
+ ($_) = @_;
+ s/-/_/g ; # g means 'replace all'
+ s/\//_/g ; # g means 'replace all'
+ return $_;
+}
+
+#
+# Back tracing utility.
+# Prints the call stack.
+#
+# void trace()
+sub trace()
+{
+ my ($package, $filename, $line, $subroutine, $hasargs,
+ $wantarray, $evaltext, $is_require, $hints, $bitmask) = caller(1);
+
+ no warnings qw(uninitialized);
+
+ my $i = 2;
+ print "Trace on ${subroutine} called from ${filename}:${line}\n";
+ while (1)
+ {
+ ($package, $filename, $line, $subroutine) = caller($i);
+ $i++;
+ next if ($line eq "");
+ print " From ${subroutine} call from ${filename}:${line}\n";
+ }
+}
+
+sub unique(@)
+{
+ my %hash;
+ foreach (@_)
+ {
+ $hash{$_}=1;
+ }
+
+ return keys %hash;
+}
+
+1; # indicate proper module load.
+
diff --git a/libs/glibmm2/tools/pm/WrapParser.pm b/libs/glibmm2/tools/pm/WrapParser.pm
new file mode 100644
index 0000000000..fb156e33ce
--- /dev/null
+++ b/libs/glibmm2/tools/pm/WrapParser.pm
@@ -0,0 +1,1343 @@
+# gtkmm - WrapParser module
+#
+# Copyright 2001 Free Software Foundation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+#
+package WrapParser;
+use strict;
+use warnings;
+use Util;
+use GtkDefs;
+use Function;
+use DocsParser;
+
+BEGIN {
+ use Exporter ();
+ our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
+
+ # set the version for version checking
+ $VERSION = 1.00;
+ @ISA = qw(Exporter);
+ @EXPORT = ( );
+ %EXPORT_TAGS = ( );
+ # your exported package globals go here,
+ # as well as any optionally exported functions
+ @EXPORT_OK = ( );
+ }
+our @EXPORT_OK;
+
+############################################################################
+
+my @tokens = ();
+
+# $objWrapParser new($objOutputter)
+sub new($)
+{
+ my ($objOutputter) = @_;
+
+ my $self = {};
+ bless $self;
+
+ #Initialize member data:
+ $$self{objOutputter} = $objOutputter;
+ $$self{filename} = "(none)";
+ $$self{line_num} = 0;
+
+ $$self{level} = 0;
+ $$self{class} = "";
+ $$self{c_class} = "";
+ $$self{in_class} = 0;
+ $$self{first_namespace} = 1;
+ $$self{namespace} = [];
+ $$self{in_namespace} = [];
+
+ $$self{defsdir} = ".";
+
+ $$self{module} = ""; #e.g. "gtkmm"
+
+ $$self{type} = "GTKOBJECT"; # or "BOXEDTYPE", or "GOBJECT" - wrapped differently.
+
+ return $self;
+}
+
+# void parse_and_build_output()
+sub parse_and_build_output($)
+{
+ my ($self) = @_;
+
+ my $objOutputter = $$self{objOutputter};
+
+ # Parse the tokens.
+ my $token;
+ while ( scalar(@tokens) )
+ {
+ $token = $self->extract_token();
+ my $bAppend = 1;
+
+ # we need to monitor the depth of braces
+ if ($token eq '{') { $self->on_open_brace(); }
+ if ($token eq '}') { $self->on_close_brace(); $bAppend = 0;}
+
+ # protect `' from the source file from m4
+ if ($token eq "`") { $objOutputter->append("`'__BT__`'"); next; }
+ if ($token eq "'") { $objOutputter->append("`'__FT__`'"); next; }
+
+ if ($token eq '"') { $objOutputter->append($self->on_string_literal()); next; }
+ if ($token eq '//') { $objOutputter->append($self->on_comment_cpp()); next; }
+ if ($token eq '/*') { $objOutputter->append($self->on_comment_c()); next; }
+
+ # handle #m4begin ... #m4end
+ if ($token eq "#m4begin") { $objOutputter->append($self->on_m4_section()); next;}
+
+ # handle #m4 ... \n
+ if ($token eq "#m4") { $objOutputter->append($self->on_m4_line()); next;}
+
+ if ($token eq "_DEFS") { $self->on_defs(); next;} #Read the defs file.
+ if ($token eq "_IGNORE") { $self->on_ignore(); next;} #Ignore a function.
+ if ($token eq "_IGNORE_SIGNAL") { $self->on_ignore_signal(); next;} #Ignore a signal.
+ if ($token eq "_WRAP_METHOD") { $self->on_wrap_method(); next;}
+ if ($token eq "_WRAP_METHOD_DOCS_ONLY") { $self->on_wrap_method_docs_only(); next;}
+ if ($token eq "_WRAP_CORBA_METHOD") { $self->on_wrap_corba_method(); next;} #Used in libbonobo*mm.
+ if ($token eq "_WRAP_SIGNAL") { $self->on_wrap_signal(); next;}
+ if ($token eq "_WRAP_PROPERTY") { $self->on_wrap_property(); next;}
+ if ($token eq "_WRAP_VFUNC") { $self->on_wrap_vfunc(); next;}
+ if ($token eq "_WRAP_CTOR") { $self->on_wrap_ctor(); next;}
+ if ($token eq "_WRAP_CREATE") { $self->on_wrap_create(); next;}
+
+ if ($token eq "_WRAP_ENUM") { $self->on_wrap_enum(); next;}
+ if ($token eq "_WRAP_GERROR") { $self->on_wrap_gerror(); next;}
+ if ($token eq "_IMPLEMENTS_INTERFACE") { $self->on_implements_interface(); next;}
+
+ my $prefix_class = "_CLASS_"; # e.g. _CLASS_GTKOBJECT
+ my $token_prefix = substr($token, 0, length($prefix_class));
+ if ($token_prefix eq $prefix_class)
+ {
+ $self->on_class($token);
+ next;
+
+ # e.g.:
+ # _CLASS_GENERIC
+ # _CLASS_GOBJECT
+ # _CLASS_GTKOBJECT
+ # _CLASS_BOXEDTYPE
+ # _CLASS_BOXEDTYPE_STATIC
+ # _CLASS_INTERFACE
+ # _CLASS_OPAQUE_COPYABLE
+ # _CLASS_OPAQUE_REFCOUNTED
+ }
+
+ if ($token eq "namespace") { $self->on_namespace() };
+
+ # After all token manipulations
+ if($bAppend)
+ {
+ $objOutputter->append($token);
+ }
+ }
+}
+
+sub error($$)
+{
+ my ($self, $format) = @_;
+
+ $format = "$$self{filename}:$$self{line_num}: $format";
+ printf STDERR $format,@_;
+}
+
+######################################################################
+##### 1.1 parser subroutines
+
+########################################
+### returns the next token, ignoring some stuff.
+# $string extract_token()
+sub extract_token($)
+{
+ my ($self) = @_;
+
+ while ( scalar(@tokens) )
+ {
+ $_ = shift @tokens;
+
+ # skip empty tokens
+ next if ( !defined($_) or $_ eq "" );
+
+ # eat line statements. TODO: e.g.?
+ if ( /^#l (\S+)\n/)
+ {
+ $$self{line_num} = $1;
+ next;
+ }
+
+ # eat file statements. TODO: e.g.?
+ if ( /^#f (\S+)\n/)
+ {
+ $$self{filename} = $1;
+ next;
+ }
+
+ return $_;
+ }
+
+ return "";
+}
+
+# bool tokens_remaining()
+sub tokens_remaining($)
+{
+ my ($self) = @_;
+ return scalar(@tokens)!=0;
+}
+
+
+########################################
+### we pass strings literally with quote substitution
+# void on_string_literal()
+sub on_string_literal($)
+{
+ my ($self) = @_;
+
+ my @out;
+ push (@out, '"');
+ while ( scalar(@tokens) )
+ {
+ $_ = $self->extract_token();
+ if ($_ eq "`") { push(@out, "`'__BT__`'"); next; }
+ if ($_ eq "'") { push(@out, "`'__FT__`'"); next; }
+ push (@out, $_);
+
+ return join("",@out) if ($_ eq '"');
+ }
+
+ my $line_num = $$self{line_num};
+ my $filename = $$self{filename};
+ print STDERR "$filename:$line_num: Hit eof while in string\n";
+}
+
+
+########################################
+### we pass comments literally with quote substitution
+# void on_comment_cpp()
+sub on_comment_cpp($)
+{
+ my ($self) = @_;
+
+ my @out;
+ push (@out,"//\`");
+ while ( scalar(@tokens) )
+ {
+ $_ = $self->extract_token();
+ if ($_ eq "`") { push(@out,"\'__BT__\`"); next; }
+ if ($_ eq "'") { push(@out,"\'__FT__\`"); next; }
+ if ($_ eq "\n")
+ {
+ push (@out,"\'\n");
+ return join("",@out)
+ }
+
+ if ($_ =~ /^_[A-Z]+$/) {$_="_$_";} # wipe out potential macros
+
+ push (@out,$_);
+ }
+}
+
+
+########################################
+### we pass C comments literally with quote substitution
+# void on_comment_c()
+sub on_comment_c($)
+{
+ my ($self) = @_;
+
+ my @out;
+ push (@out,"/*\`");
+ while ( scalar(@tokens) )
+ {
+ $_ = $self->extract_token();
+ if ($_ eq "`") { push(@out,"\'__BT__\`"); next; }
+ if ($_ eq "'") { push(@out,"\'__FT__\`"); next; }
+ if ($_ eq "*/")
+ {
+ push (@out,"\'*/");
+ return join("",@out)
+ }
+
+ push (@out,$_);
+ }
+}
+
+
+########################################
+### handle #m4begin ... #m4end
+# we don't substitute ` or ' in #m4begin
+# void on_m4_section()
+sub on_m4_section($)
+{
+ my ($self) = @_;
+
+ my @value;
+ my $token;
+
+ while ( scalar(@tokens) )
+ {
+ $token = $self->extract_token();
+ return join("", @value) if ($token eq "#m4end");
+ push(@value, $token);
+ }
+
+ my $line_num = $$self{line_num};
+ my $filename = $$self{filename};
+ print STDERR "$filename:$line_num: Hit eof looking for #m4end\n";
+ next;
+}
+
+
+########################################
+### handle #m4 ... /n
+# we don't substitute ` or ' in #m4
+# void on_m4_line()
+sub on_m4_line ($)
+{
+ my ($self) = @_;
+
+ my @value;
+ my $token;
+ while ( scalar(@tokens) )
+ {
+ $token = $self->extract_token();
+ push(@value,$token); # push first, so we don't eat the newline
+ return join("",@value) if ($token eq "\n");
+ }
+}
+
+
+########################################
+# m4 needs to know when we entered a namespace
+# void on_namespace()
+sub on_namespace($)
+{
+ my ($self) = @_;
+ my $objOutputter = $$self{objOutputter};
+
+ my $number = 0;
+ my $token;
+ my $arg;
+
+ # we need to peek ahead to figure out what type of namespace
+ # declaration this is.
+ while ( $number < scalar(@tokens) )
+ {
+ $token = $tokens[$number];
+ $number++;
+ next if (!defined($token) or $token eq "");
+# print "> $token\n";
+
+ if ($token eq '{')
+ {
+ $arg = string_trim($arg);
+
+ if ($$self{first_namespace})
+ {
+ $objOutputter->append("_SECTION(SECTION_HEADER2)\n");
+ $$self{first_namespace} = 0;
+ }
+
+ $objOutputter->append("_NAMESPACE($arg)");
+ unshift(@{$$self{namespace}}, $arg);
+ unshift(@{$$self{in_namespace}}, $$self{level}+1);
+ return;
+ }
+
+ next if ( $token =~ /^#[lf] \S+\n/);
+ return if ($token eq ';');
+
+ $arg .= $token; #concatenate
+ }
+}
+
+
+########################################
+### we don't want to report every petty function as unwrapped
+# void on_ignore($)
+sub on_ignore($)
+{
+ my ($self) = @_;
+ my $str = $self->extract_bracketed_text();
+ my @args = split(/\s+|,/,$str);
+ foreach (@args)
+ {
+ next if ($_ eq "");
+ GtkDefs::lookup_function($_); #Pretend that we've used it.
+ }
+}
+
+sub on_ignore_signal($)
+{
+ my ($self) = @_;
+ my $str = $self->extract_bracketed_text();
+ $str = string_trim($str);
+ $str = string_unquote($str);
+ my @args = split(/\s+|,/,$str);
+ foreach (@args)
+ {
+ next if ($_ eq "");
+ GtkDefs::lookup_signal($$self{c_class}, $_); #Pretend that we've used it.
+ }
+}
+
+########################################
+### we have certain macros we need to insert at end of statements
+# void on_class($, $strClassCommand)
+sub on_class($$)
+{
+ my ($self, $class_command) = @_;
+
+ my $objOutputter = $$self{objOutputter};
+
+ $$self{in_class} = $$self{level};
+
+ #Remember the type of wrapper required, so that we can append the correct _END_CLASS_* macro later.
+ {
+ my $str = $class_command;
+ $str =~ s/^_CLASS_//;
+ $$self{type} = $str;
+ }
+
+ my $str = $self->extract_bracketed_text();
+ my ($class, $c_class) = split(',',$str);
+ $class = string_trim($class);
+ $c_class = string_trim($c_class);
+
+ $$self{class} = $class;
+ $$self{c_class} = $c_class;
+
+ my @back;
+ push(@back, $class_command);
+ push(@back, "($str)");
+
+ # When we hit _CLASS, we walk backwards through the output to find "class"
+ my $token;
+ while ( scalar(@{$$objOutputter{out}}) > 0)
+ {
+ $token = pop @{$$objOutputter{out}};
+ unshift(@back, $token);
+ if ($token eq "class")
+ {
+ $objOutputter->append("_CLASS_START()");
+
+ my $strBack = join("", @back);
+
+ $objOutputter->append($strBack);
+ return;
+ }
+ }
+
+ $self->error("$class_command outside of class.\n");
+ exit(-1);
+}
+
+
+# order to read the defs file
+# void on_defs()
+sub on_defs($)
+{
+ my ($self) = @_;
+
+ my $str = $self->extract_bracketed_text();
+ my ($module, $defsfile) = split(/,/, $str); #e.g. _DEFS(gtkmm,gtk), where gtkmm is the module name, and gtk is the defs file name.
+ # $$self{section} = $section; #Save it so that we can reuse it in read_defs_included.
+ $$self{module} = $module; #Use it later in call to output_temp_g1().
+
+ GtkDefs::read_defs("$$self{defsdir}", "$defsfile.defs");
+
+ #Read the documentation too, so that we can merge it into the generated C++ code:
+ my $docs_filename = $defsfile . "_docs.xml";
+ my $docs_filename_override = $defsfile . "_docs_override.xml";
+ DocsParser::read_defs("$$self{defsdir}", $docs_filename, $docs_filename_override);
+}
+
+# void on_open_brace()
+sub on_open_brace($)
+{
+ my ($self) = @_;
+
+ $$self{level}++;
+}
+
+# void on_close_brace($)
+sub on_close_brace($)
+{
+ my ($self) = @_;
+ my $objOutputter = $$self{objOutputter};
+
+ #push(@out, "($$self{level})");
+
+ $self->on_end_class()
+ if ($$self{in_class} && $$self{in_class} == $$self{level});
+
+ $objOutputter->append("}"); #We append it here instead of after we return, so that we can end the namespace after it.
+
+ $self->on_end_namespace()
+ if ( (scalar(@{$$self{in_namespace}}) > 0) && (@{$$self{in_namespace}}[0] == $$self{level}) );
+
+ $$self{level}--;
+}
+
+
+########################################
+### denote the end of a class
+# void on_end_class($)
+sub on_end_class($)
+{
+ my ($self) = @_;
+ my $objOutputter = $$self{objOutputter};
+
+ # Examine $$self{type}, which was set in on_class()
+ # And append the _END_CLASS_* macro, which will, in turn, output the m4 code.
+ {
+ my $str = $$self{type};
+ $objOutputter->append("`'_END_CLASS_$str()\n");
+ }
+
+ $$self{class} = "";
+ $$self{c_class} = "";
+ $$self{in_class} = 0;
+}
+
+
+########################################
+###
+# void on_end_namespace($)
+sub on_end_namespace($)
+{
+ my ($self) = @_;
+ my $objOutputter = $$self{objOutputter};
+
+ $objOutputter->append("`'_END_NAMESPACE()");
+ shift( @{$$self{namespace}} );
+ shift( @{$$self{in_namespace}} );
+}
+
+
+######################################################################
+##### some utility subroutines
+
+########################################
+### takes (\S+) from the tokens (smart)
+# $string extract_bracketed_text()
+sub extract_bracketed_text($)
+{
+ my ($self) = @_;
+
+ my $level = 1;
+ my $str = "";
+
+ # Move to the first "(":
+ while ( scalar(@tokens) )
+ {
+ my $t = $self->extract_token();
+ last if ($t eq "(");
+ }
+
+ # Concatenate until the corresponding ")":
+ while ( scalar(@tokens) )
+ {
+ my $t = $self->extract_token();
+ $level++ if ($t eq "(");
+ $level-- if ($t eq ")");
+
+ return $str if (!$level);
+ $str .= $t;
+ }
+
+ return "";
+}
+
+
+########################################
+### breaks up a string by commas (smart)
+# @strings string_split_commas($string)
+sub string_split_commas($)
+{
+ my ($in) = @_;
+
+ my @out;
+ my $level = 0;
+ my $str = "";
+ my @in = split(/([,()])/, $in);
+
+ while ($#in > -1)
+ {
+ my $t = shift @in;
+
+ next if ($t eq "");
+ $level++ if ($t eq "(");
+ $level-- if ($t eq ")");
+
+ # skip , inside functions Ie. void (*)(int,int)
+ if ( ($t eq ",") && !$level)
+ {
+ push(@out, $str);
+ $str="";
+ next;
+ }
+
+ $str .= $t;
+ }
+
+ push(@out,$str);
+ return @out;
+}
+
+
+########################################
+### reads in the preprocessor files
+# we insert line and file directives for later stages
+# void read_file()
+sub read_file($$$)
+{
+ my ($self, $srcdir, $source) = @_;
+
+ my $line;
+ my @in;
+
+ if ( ! -r "${srcdir}/${source}.hg")
+ {
+ print "Unable to find header file $srcdir/$source.hg\n";
+ exit(-1);
+ }
+
+ # Read header file:
+ open(FILE, "${srcdir}/${source}.hg");
+# push(@in, "#f ${source}.hg\n"); #TODO: What does #f do?
+ $line = 1;
+ while (<FILE>)
+ {
+# push(@in, "#l $line\n"); #TODO: What does #l do?
+ push(@in, $_);
+ $line++;
+ }
+ close(FILE);
+ push(@in, "\n_SECTION(SECTION_SRC_CUSTOM)\n");
+
+ # Source file is optional.
+ if ( -r "${srcdir}/${source}.ccg")
+ {
+ open(FILE, "${srcdir}/${source}.ccg");
+ $line = 1;
+# push(@in, "#f ${source}.ccg\n"); #TODO: What does #f do?
+ while (<FILE>)
+ {
+# push(@in, "#l $line\n"); #TODO: What does #l do?
+ push(@in, $_);
+ $line++;
+ }
+ close(FILE);
+ }
+
+ my $strIn = join("", @in);
+
+ # Break the file into tokens. Token is
+ # any group of #, A to z, 0 to 9, _
+ # /*
+ # *.
+ # //
+ # any char proceeded by \
+ # symbols ;{}"`'()
+ # newline
+ @tokens = split(/(\#[lf] \S+\n)|([#A-Za-z0-9_]+)|(\/\*)|(\*\/)|(\/\/)|(\\.)|([;{}"'`()])|(\n)/,
+ $strIn);
+}
+
+
+sub class_prefix($)
+{
+ my ($self) = @_;
+
+ my $str = $$self{class};
+ $str =~ s/([a-z])([A-Z])/$1_$2/g;
+ $str =~ tr/A-Z/a-z/;
+ return $str;
+}
+
+
+######################################################################
+##### 2.1 subroutines for _WRAP
+
+########################################
+
+# $bool check_for_eof()
+sub check_for_eof($)
+{
+ my ($self) = @_;
+
+ my $filename = $$self{filename};
+ my $line_num = $$self{line_num};
+
+ if (!(scalar(@tokens)))
+ {
+ print STDERR "$filename:$line_num:hit eof in _WRAP\n";
+ return 0; #EOF
+ }
+
+ return 1; # No EOF
+}
+
+# void on_wrap_method()
+sub on_wrap_method($)
+{
+ my ($self) = @_;
+ my $objOutputter = $$self{objOutputter};
+
+ if( !($self->check_for_eof()) )
+ {
+ return;
+ }
+
+ my $filename = $$self{filename};
+ my $line_num = $$self{line_num};
+
+ my $str = $self->extract_bracketed_text();
+ my @args = string_split_commas($str);
+
+ my $entity_type = "method";
+
+ if (!$$self{in_class})
+ {
+ print STDERR "$filename:$line_num:_WRAP macro encountered outside class\n";
+ return;
+ }
+
+ my $objCfunc;
+ my $objCppfunc;
+
+ # handle first argument
+ my $argCppMethodDecl = $args[0];
+ if ($argCppMethodDecl =~ /^\S+$/ ) #Checks that it's not empty and that it contains no whitespace.
+ {
+ print STDERR "$filename:$line_num:_WRAP can't handle unspecified method $argCppMethodDecl\n";
+ return;
+ }
+ else
+ {
+ #Parse the method decaration and build an object that holds the details:
+ $objCppfunc = &Function::new($argCppMethodDecl, $self);
+ }
+
+
+ # handle second argument:
+
+ my $argCFunctionName = $args[1];
+ $argCFunctionName = string_trim($argCFunctionName);
+
+ #Get the c function's details:
+
+ #Checks that it's not empty and that it contains no whitespace.
+ if ($argCFunctionName =~ /^\S+$/ )
+ {
+ #c-name. e.g. gtk_clist_set_column_title
+ $objCfunc = GtkDefs::lookup_function($argCFunctionName);
+
+ if(!$objCfunc) #If the lookup failed:
+ {
+ $objOutputter->output_wrap_failed($argCFunctionName, "method defs lookup failed (1)");
+ return;
+ }
+ }
+
+ # Extra stuff needed?
+ $$objCfunc{deprecated} = "";
+ my $deprecation_docs = "";
+ my $ifdef;
+ while(scalar(@args) > 2) # If the optional ref/err/deprecated arguments are there.
+ {
+ my $argRef = string_trim(pop @args);
+ #print "debug arg=$argRef\n";
+ if($argRef eq "refreturn")
+ {
+ $$objCfunc{rettype_needs_ref} = 1;
+ }
+ elsif($argRef eq "errthrow")
+ {
+ $$objCfunc{throw_any_errors} = 1;
+ }
+ elsif($argRef eq "constversion")
+ {
+ $$objCfunc{constversion} = 1;
+ }
+ elsif($argRef =~ /^deprecated(.*)/) #If deprecated is at the start.
+ {
+ $$objCfunc{deprecated} = "deprecated";
+
+ if($1 ne "")
+ {
+ $deprecation_docs = string_unquote(string_trim($1));
+ }
+ }
+ elsif($argRef =~ /^ifdef(.*)/) #If ifdef is at the start.
+ {
+ $ifdef = $1;
+ }
+ }
+
+ my $commentblock = "";
+ $commentblock = DocsParser::lookup_documentation($argCFunctionName, $deprecation_docs);
+
+ $objOutputter->output_wrap_meth($filename, $line_num, $objCppfunc, $objCfunc, $argCppMethodDecl, $commentblock, $ifdef);
+}
+
+# void on_wrap_method_docs_only()
+sub on_wrap_method_docs_only($)
+{
+ my ($self) = @_;
+ my $objOutputter = $$self{objOutputter};
+
+ if( !($self->check_for_eof()) )
+ {
+ return;
+ }
+
+ my $filename = $$self{filename};
+ my $line_num = $$self{line_num};
+
+ my $str = $self->extract_bracketed_text();
+ my @args = string_split_commas($str);
+
+ my $entity_type = "method";
+
+ if (!$$self{in_class})
+ {
+ print STDERR "$filename:$line_num:_WRAP macro encountered outside class\n";
+ return;
+ }
+
+ my $objCfunc;
+
+ # handle first argument
+ my $argCFunctionName = $args[0];
+ $argCFunctionName = string_trim($argCFunctionName);
+
+ #Get the c function's details:
+
+ #Checks that it's not empty and that it contains no whitespace.
+ if ($argCFunctionName =~ /^\S+$/ )
+ {
+ #c-name. e.g. gtk_clist_set_column_title
+ $objCfunc = GtkDefs::lookup_function($argCFunctionName);
+
+ if(!$objCfunc) #If the lookup failed:
+ {
+ $objOutputter->output_wrap_failed($argCFunctionName, "method defs lookup failed (1)");
+ return;
+ }
+ }
+
+ # Extra ref needed?
+ while(scalar(@args) > 1) # If the optional ref/err arguments are there.
+ {
+ my $argRef = string_trim(pop @args);
+ if($argRef eq "errthrow")
+ {
+ $$objCfunc{throw_any_errors} = 1;
+ }
+ }
+
+ my $commentblock = "";
+ $commentblock = DocsParser::lookup_documentation($argCFunctionName, "");
+
+ $objOutputter->output_wrap_meth_docs_only($filename, $line_num, $commentblock);
+}
+
+sub on_wrap_ctor($)
+{
+ my ($self) = @_;
+ my $objOutputter = $$self{objOutputter};
+
+ if( !($self->check_for_eof()) )
+ {
+ return;
+ }
+
+ my $filename = $$self{filename};
+ my $line_num = $$self{line_num};
+
+ my $str = $self->extract_bracketed_text();
+ my @args = string_split_commas($str);
+
+ my $entity_type = "method";
+
+ if (!$$self{in_class})
+ {
+ print STDERR "$filename:$line_num:_WRAP_CTOR macro encountered outside class\n";
+ return;
+ }
+
+ my $objCfunc;
+ my $objCppfunc;
+
+ # handle first argument
+ my $argCppMethodDecl = $args[0];
+ if ($argCppMethodDecl =~ /^\S+$/ ) #Checks that it's not empty and that it contains no whitespace.
+ {
+ print STDERR "$filename:$line_num:_WRAP_CTOR can't handle unspecified method $argCppMethodDecl\n";
+ return;
+ }
+ else
+ {
+ #Parse the method decaration and build an object that holds the details:
+ $objCppfunc = &Function::new_ctor($argCppMethodDecl, $self);
+ }
+
+
+ # handle second argument:
+
+ my $argCFunctionName = $args[1];
+ $argCFunctionName = string_trim($argCFunctionName);
+
+ #Get the c function's details:
+ if ($argCFunctionName =~ /^\S+$/ ) #Checks that it's not empty and that it contains no whitespace.
+ {
+ $objCfunc = GtkDefs::lookup_function($argCFunctionName); #c-name. e.g. gtk_clist_set_column_title
+ if(!$objCfunc) #If the lookup failed:
+ {
+ $objOutputter->output_wrap_failed($argCFunctionName, "ctor defs lookup failed (2)");
+ return;
+ }
+ }
+
+ $objOutputter->output_wrap_ctor($filename, $line_num, $objCppfunc, $objCfunc, $argCppMethodDecl);
+}
+
+sub on_implements_interface($$)
+{
+ my ($self) = @_;
+
+ if( !($self->check_for_eof()) )
+ {
+ return;
+ }
+
+ my $filename = $$self{filename};
+ my $line_num = $$self{line_num};
+
+ my $str = $self->extract_bracketed_text();
+ my @args = string_split_commas($str);
+
+ # handle first argument
+ my $interface = $args[0];
+
+ # Extra stuff needed?
+ my $ifdef;
+ while(scalar(@args) > 1) # If the optional ref/err/deprecated arguments are there.
+ {
+ my $argRef = string_trim(pop @args);
+ if($argRef =~ /^ifdef(.*)/) #If ifdef is at the start.
+ {
+ $ifdef = $1;
+ }
+ }
+ my $objOutputter = $$self{objOutputter};
+ $objOutputter->output_implements_interface($interface, $ifdef);
+}
+
+sub on_wrap_create($)
+{
+ my ($self) = @_;
+
+ if( !($self->check_for_eof()) )
+ {
+ return;
+ }
+
+ my $str = $self->extract_bracketed_text();
+
+ my $objOutputter = $$self{objOutputter};
+ $objOutputter->output_wrap_create($str, $self);
+}
+
+sub on_wrap_signal($)
+{
+ my ($self) = @_;
+
+ if( !($self->check_for_eof()) )
+ {
+ return;
+ }
+
+ my $str = $self->extract_bracketed_text();
+ my @args = string_split_commas($str);
+
+ #Get the arguments:
+ my $argCppDecl = $args[0];
+ my $argCName = $args[1];
+ $argCName = string_trim($argCName);
+ $argCName = string_unquote($argCName);
+
+ my $bCustomDefaultHandler = 0;
+ my $bNoDefaultHandler = 0;
+ my $bCustomCCallback = 0;
+ my $bRefreturn = 0;
+ my $ifdef;
+
+ while(scalar(@args) > 2) # If optional arguments are there.
+ {
+ my $argRef = string_trim(pop @args);
+ if($argRef eq "custom_default_handler")
+ {
+ $bCustomDefaultHandler = 1;
+ }
+
+ if($argRef eq "no_default_handler")
+ {
+ $bNoDefaultHandler = 1;
+ }
+
+ if($argRef eq "custom_c_callback")
+ {
+ $bCustomCCallback = 1;
+ }
+
+ if($argRef eq "refreturn")
+ {
+ $bRefreturn = 1;
+ }
+
+ elsif($argRef =~ /^ifdef(.*)/) #If ifdef is at the start.
+ {
+ $ifdef = $1;
+ }
+ }
+
+
+ $self->output_wrap_signal( $argCppDecl, $argCName, $$self{filename}, $$self{line_num}, $bCustomDefaultHandler, $bNoDefaultHandler, $bCustomCCallback, $bRefreturn, $ifdef);
+}
+
+# void on_wrap_vfunc()
+sub on_wrap_vfunc($)
+{
+ my ($self) = @_;
+
+ if( !($self->check_for_eof()) )
+ {
+ return;
+ }
+
+ my $str = $self->extract_bracketed_text();
+ my @args = string_split_commas($str);
+
+ #Get the arguments:
+ my $argCppDecl = $args[0];
+ my $argCName = $args[1];
+ $argCName = string_trim($argCName);
+ $argCName = string_unquote($argCName);
+
+ my $refreturn = 0;
+ my $refreturn_ctype = 0;
+ my $ifdef = "";
+
+ # Extra ref needed?
+ while(scalar(@args) > 2) # If the optional ref/err arguments are there.
+ {
+ my $argRef = string_trim(pop @args);
+
+ if($argRef eq "refreturn")
+ { $refreturn = 1; }
+ elsif($argRef eq "refreturn_ctype")
+ { $refreturn_ctype = 1; }
+ elsif($argRef =~ /^ifdef(.*)/) #If ifdef is at the start.
+ {
+ $ifdef = $1;
+ }
+ }
+
+ $self->output_wrap_vfunc($argCppDecl, $argCName, $refreturn, $refreturn_ctype,
+ $$self{filename}, $$self{line_num}, $ifdef);
+}
+
+sub on_wrap_enum($)
+{
+ my ($self) = @_;
+
+ return if(!$self->check_for_eof());
+
+ my $outputter = $$self{objOutputter};
+ my $out = \@{$$outputter{out}};
+
+ # Look back for a Doxygen comment for this _WRAP_ENUM. If there is one,
+ # remove it from the output and pass it to the m4 _ENUM macro instead.
+ my $comment = "";
+
+ if(scalar(@$out) >= 2)
+ {
+ # steal the last two tokens
+ my @back = splice(@$out, -2);
+ local $_ = $back[0];
+
+ # Check for /*[*!] ... */ or //[/!] comments. The closing */ _must_
+ # be the last token of the previous line. Apart from this restriction,
+ # anything else should work, including multi-line comments.
+
+ if($back[1] eq "\n" && (m#^/\*`[*!](.+)'\*/#s || m#^//`[/!](.+)'$#))
+ {
+ $comment = $1;
+ $comment =~ s/\s+$//;
+ }
+ else
+ {
+ # restore stolen tokens
+ push(@$out, @back);
+ }
+ }
+
+ # get the arguments
+ my @args = string_split_commas($self->extract_bracketed_text());
+
+ my $cpp_type = string_trim(shift(@args));
+ my $c_type = string_trim(shift(@args));
+
+ # The remaining elements in @args could be flags or s#^FOO_## substitutions.
+
+ $outputter->output_wrap_enum(
+ $$self{filename}, $$self{line_num}, $cpp_type, $c_type, $comment, @args);
+}
+
+sub on_wrap_gerror($)
+{
+ my ($self) = @_;
+
+ return if(!$self->check_for_eof());
+
+ # get the arguments
+ my @args = string_split_commas($self->extract_bracketed_text());
+
+ my $cpp_type = string_trim(shift(@args));
+ my $c_enum = string_trim(shift(@args));
+ my $domain = string_trim(shift(@args));
+
+ # The remaining elements in @args could be flags or s#^FOO_## substitutions.
+
+ $$self{objOutputter}->output_wrap_gerror(
+ $$self{filename}, $$self{line_num}, $cpp_type, $c_enum, $domain, @args);
+}
+
+sub on_wrap_property($)
+{
+ my ($self) = @_;
+ my $objOutputter = $$self{objOutputter};
+
+ if( !($self->check_for_eof()) )
+ {
+ return;
+ }
+
+ my $str = $self->extract_bracketed_text();
+ my @args = string_split_commas($str);
+
+ #Get the arguments:
+ my $argPropertyName = $args[0];
+ $argPropertyName = string_trim($argPropertyName);
+ $argPropertyName = string_unquote($argPropertyName);
+
+ #Convert the property name to a canonical form, as it is inside gobject.
+ #Otherwise, gobject might not recognise the name,
+ #and we will not recognise the property name when we get notification that the value changes.
+ $argPropertyName =~ s/_/-/g; #g means replace all.
+
+ my $argCppType = $args[1];
+ $argCppType = string_trim($argCppType);
+ $argCppType = string_unquote($argCppType);
+
+ my $filename = $$self{filename};
+ my $line_num = $$self{line_num};
+
+ $objOutputter->output_wrap_property($filename, $line_num, $argPropertyName, $argCppType, $$self{c_class});
+}
+
+
+sub output_wrap_check($$$$$$)
+{
+ my ($self, $CppDecl, $signal_name, $filename, $line_num, $macro_name) = @_;
+
+ #Some checks:
+
+
+ if (!$$self{in_class})
+ {
+ print STDERR "$filename:$line_num: $macro_name macro encountered outside class\n";
+ return;
+ }
+
+ if ($CppDecl =~ /^\S+$/ ) #If it's not empty and it contains no whitespace.
+ {
+ print STDERR "$filename:$line_num:$macro_name can't handle unspecified entity $CppDecl\n";
+ return;
+ }
+
+
+}
+
+# void output_wrap($CppDecl, $signal_name, $filename, $line_num, $bCustomDefaultHandler, $bNoDefaultHandler, $bCustomCCallback, $bRefreturn)
+# Also used for vfunc.
+sub output_wrap_signal($$$$$$$$)
+{
+ my ($self, $CppDecl, $signal_name, $filename, $line_num, $bCustomDefaultHandler, $bNoDefaultHandler, $bCustomCCallback, $bRefreturn, $ifdef) = @_;
+
+ #Some checks:
+ $self->output_wrap_check($CppDecl, $signal_name, $filename, $line_num, "WRAP_SIGNAL");
+
+ # handle first argument
+
+ #Parse the method decaration and build an object that holds the details:
+ my $objCppSignal = &Function::new($CppDecl, $self);
+ $$objCppSignal{class} = $$self{class}; #Remember the class name for use in Outputter::output_wrap_signal().
+
+
+ # handle second argument:
+ my $objCSignal = undef;
+
+ my $objOutputter = $$self{objOutputter};
+
+ #Get the c function's details:
+ if ($signal_name ne "" ) #If it's not empty and it contains no whitespace.
+ {
+ $objCSignal = GtkDefs::lookup_signal($$self{c_class}, $signal_name);
+
+ # Check for failed lookup.
+ if($objCSignal eq 0)
+ {
+ print STDERR "$signal_name\n";
+ $objOutputter->output_wrap_failed($signal_name,
+ " signal defs lookup failed");
+ return;
+ }
+ }
+
+ $objOutputter->output_wrap_sig_decl($filename, $line_num, $objCSignal, $objCppSignal, $signal_name, $bCustomCCallback, $ifdef);
+
+ if($bNoDefaultHandler eq 0)
+ {
+ $objOutputter->output_wrap_default_signal_handler_h($filename, $line_num, $objCppSignal, $objCSignal, $ifdef);
+
+ my $bImplement = 1;
+ if($bCustomDefaultHandler) { $bImplement = 0; }
+ $objOutputter->output_wrap_default_signal_handler_cc($filename, $line_num, $objCppSignal, $objCSignal, $bImplement, $bCustomCCallback, $bRefreturn, $ifdef);
+ }
+}
+
+# void output_wrap($CppDecl, $signal_name, $filename, $line_num)
+# Also used for vfunc.
+sub output_wrap_vfunc($$$$$$$$)
+{
+ my ($self, $CppDecl, $vfunc_name, $refreturn, $refreturn_ctype, $filename, $line_num, $ifdef) = @_;
+
+ #Some checks:
+ $self->output_wrap_check($CppDecl, $vfunc_name, $filename, $line_num, "VFUNC");
+
+ # handle first argument
+
+ #Parse the method decaration and build an object that holds the details:
+ my $objCppVfunc = &Function::new($CppDecl, $self);
+
+
+ # handle second argument:
+ my $objCVfunc = undef;
+
+ my $objOutputter = $$self{objOutputter};
+
+ #Get the c function's details:
+ if ($vfunc_name =~ /^\S+$/ ) #If it's not empty and it contains no whitespace.
+ {
+ $objCVfunc = GtkDefs::lookup_signal($$self{c_class},$vfunc_name);
+ if(!$objCVfunc) #If the lookup failed:
+ {
+ $objOutputter->output_wrap_failed($vfunc_name, " vfunc defs lookup failed");
+ return;
+ }
+ }
+
+ # Write out the appropriate macros.
+ # These macros are defined in vfunc.m4:
+
+ $$objCppVfunc{rettype_needs_ref} = $refreturn;
+ $$objCppVfunc{name} .= "_vfunc"; #All vfuncs should have the "_vfunc" prefix, and a separate easily-named invoker method.
+
+ $$objCVfunc{rettype_needs_ref} = $refreturn_ctype;
+
+ $objOutputter->output_wrap_vfunc_h($filename, $line_num, $objCppVfunc, $objCVfunc,$ifdef);
+ $objOutputter->output_wrap_vfunc_cc($filename, $line_num, $objCppVfunc, $objCVfunc, $ifdef);
+}
+
+# give some sort of weights to sorting attibutes
+sub byattrib()
+{
+ my %attrib_value = (
+ "virtual_impl" ,1,
+ "virtual_decl" ,2,
+ # "sig_impl" ,3,
+ "sig_decl" ,4,
+ "meth" ,5
+ );
+
+ # $a and $b are hidden parameters to a sorting function
+ return $attrib_value{$b} <=> $attrib_value{$a};
+}
+
+
+# void on_wrap_corba_method()
+sub on_wrap_corba_method($)
+{
+ my ($self) = @_;
+ my $objOutputter = $$self{objOutputter};
+
+ if( !($self->check_for_eof()) )
+ {
+ return;
+ }
+
+ my $filename = $$self{filename};
+ my $line_num = $$self{line_num};
+
+ my $str = $self->extract_bracketed_text();
+ my @args = string_split_commas($str);
+
+ my $entity_type = "method";
+
+ if (!$$self{in_class})
+ {
+ print STDERR "$filename:$line_num:_WRAP macro encountered outside class\n";
+ return;
+ }
+
+ my $objCfunc;
+ my $objCppfunc;
+
+ # handle first argument
+ my $argCppMethodDecl = $args[0];
+ if ($argCppMethodDecl =~ /^\S+$/ ) #Checks that it's not empty and that it contains no whitespace.
+ {
+ print STDERR "$filename:$line_num:_WRAP can't handle unspecified method $argCppMethodDecl\n";
+ return;
+ }
+ else
+ {
+ #Parse the method decaration and build an object that holds the details:
+ $objCppfunc = &Function::new($argCppMethodDecl, $self);
+ }
+
+ $objOutputter->output_wrap_corba_method($filename, $line_num, $objCppfunc);
+}
+
+
+1; # return package loaded okay.